1. 程式人生 > >代理服務器搭建文檔

代理服務器搭建文檔

proxy

前言:檢測到jayproxy使用的squid作為代理服務器,固我們也使用此軟件來搭建代理服務器

翻墻分析:Squid是很好的代理服務器,但它不能直接翻墻,因為在連接到Squid的過程中,就已經被墻了。所以得把傳輸的數據先進行加密再傳輸,這樣等於是繞過了防火墻,這裏就需要使用Stunnel來傳輸加密數據。

服務器需求:

1、一臺可以正常訪問互聯網的服務器,代號A(國外的)

2、一臺可以正常訪問服務器A的國內服務器,代號B

訪問過程:

1、用戶設置代理指向B服務器的Stunnel服務監聽的端口,訪問網站

2、訪問國外網站時在彈出框輸入ldap用戶信息,認證通過即可訪問國外網站

3、這時B服務器的Stunnel會將信息做加密處理,然後發送到A服務器的Stunnel服務上

4、A服務器的Stunnel會將加密的信息做解密處理,然後發送給A服務器的Squid服務上

5、A服務器的Squid會向目標網站請求數據,然後將信息返回。

實施步驟:

一、在服務器A上安裝Squid和Stunnel

1、安裝Squid

//安裝

yum -y install squid

//初始化squid

squid -z

//啟動squid

service squid start

如果什麽配置都不做修改,那默認的商品號為3128,這時候,可以打開你的瀏覽器,設置代理,填上A服務器的IP和3128端口號,訪問baidu,輸入ip看ip地址是不是代理服務器的ip,如果是,說明Squid已經能正常使用了,不過還不能翻墻。

2、安裝Stunnel

//下載軟件包

$wget http://www.stunnel.org/downloads/stunnel-5.01.tar.gz

//解壓

$tar -zvxf stunnel-5.01.tar.gz

//進入軟件包

$cd stunnel-5.01

//編譯安裝

$./configure

$make

$make install

配置Stunnel:

Stunnel比Squid要麻煩一些,因為Squid如果你什麽都設置,同樣能運行,而Stunnel就不行。它需要一個配置文件,還需要一個簽名證書。

//先進到目錄

cd /etc/stunnel/

$openssl req -new -x509 -days 365 -nodes -out stunnel.pem -keyout stunnel.pem

這樣會在/etc/sutnnel/裏生成密鑰文件stunnel.pem

接著給它生成Diffie-Hellman部分:

$openssl gendh 512>> stunnel.pem

網絡上說這是4.X版本必須要做的,但我使用的5.01也這麽做了。

設置配置文件:

在/etc/stunnel/目錄下有一個stunnel.conf.simple文件(好像是這樣的),可以cp一份為stunnel.conf或是新建一個stunnel.conf,這裏使用新建

$vim stunnel.conf

將以下內容復制進去

cert =/etc/stunnel/stunnel.pem

CAfile =/etc/stunnel/stunnel.pem

socket = l:TCP_NODELAY=1

socket = r:TCP_NODELAY=1

;;;chroot = /var/run/stunnel

pid = /tmp/stunnel.pid

verify = 3

;;; CApath = certs

;;; CRLpath = crls

;;; CRLfile = crls.pem

setuid = stunnel

setgid = stunnel

;;; client=yes

compression = zlib

;;; taskbar = no

delay = no

;;; failover = rr

;;; failover = prio

sslVersion = TLSv1

fips=no

debug = 7

syslog = no

output = stunnel.log

[sproxy]

accept = 34567

connect = 127.0.0.1:3128

這裏有幾個設置要說明一下:

第一行和二行是密鑰文件的位置,如果按前面的做法,這裏肯定是正確的。

setuid = stunnel

setgid = stunnel

是設置用戶和用戶組,都為stunnel,一般情況下是不會有它們的,所以要新建用戶和用戶組:

$groupadd -g 122 stunnel

$useradd -c stunnel -d /nonexistent -m -g 122 -u 122 stunnel

accept = 34567 是監聽的端口號,也就是B服務器要指向的位置

connect = 127.0.0.1:3128 是本服務器,也就是A服務器Squid監聽的端口號,也就是3128啦。

保存退出後,就可以試著啟動stunnel了

$stunnel

如果正常是沒有輸出任何內容的,如果有問題,它會給出問題所在,仔細排查,基本上不會有什麽問題。

檢查是否正常運行:

$ps -ef | grep stunnel

如果看到stunnel用戶運行的stunnel,說明已經成功運行了。

這樣A服務器的Squid和Stunnel都配置完成了,接下來配置國內B服務器的Stunnel。B服務器不需要Squid,所以只需要配置Stunnel

二、在服務器B上安裝配置Stunnel

安裝同A,密鑰不要再生成了,從服務器A上拷過來

登錄服務器A,進到/etc/stunnel/目錄,向服務器B的/etc/stunnel/目錄裏拷貝stunnel.pem密鑰:

$cd /etc/stunnel/

$scp stunnel.pem [email protected]:/etc/stunnel/

接著登錄服務器B,設置配置文件,同服務器A,可以cp一個,也可以新建,這裏同樣新建:

$cd /etc/stunnel/

$vim stunnel.conf

將下面的內容復制到裏面:

cert =/etc/stunnel/stunnel.pem

socket = l:TCP_NODELAY=1

socket = r:TCP_NODELAY=1

verify = 2

CAfile =/etc/stunnel/stunnel.pem

client=yes

compression = zlib

ciphers = AES256-SHA

delay = no

failover = prio

sslVersion = TLSv1

fips = no

[sproxy]

accept = 0.0.0.0:7071

connect = 服務器A的IP:34567

這裏要說明的是:

accept = 0.0.0.0:7071 中的7071是用戶需要設置的代理端口,可以隨意設置,只要大於500就好。0.0.0.0是為了讓外網能使用,如果只是內部使用,改成127.0.0.1即可。

connect = 服務器A的IP:34567,很顯然這裏要填什麽,34567是服務器A的Stunnel監聽的端口號,保持和它一至就對了。

保存退出後,就可以啟動Stunnel了

$stunnel

如果沒有意外,整個代理就正常運行了,打開瀏覽器,將代理設置服務器B的IP+7071端口號,此時即可訪問國外網站。

三、配置squid服務器使用LDAP認證

1、安裝ldap客戶端

yum -y install openldap-clients nss-pam-ldapd openldap

添加ldap服務器信息

vim /etc/openldap/ldap.conf

添加以下2行

BASE dc=shuyun,dc=com

URI ldap://ldap.shuyun.com:389

重啟nslcd服務

/etc/init.d/nslcd restart

測試與ldap服務器連通性

ldapsearch -x

2、配置squid與ldap通信

執行此條命令測試squid是否能與ldap連通

/usr/lib64/squid/squid_ldap_auth -u -cn -f "uid=%s" -b "ou=people,dc=shuyun,dc=com" -D "cn=user,ou=people,dc=shuyun,dc=com" -w "password" -H ldap://ldap.shuyun.com

執行時需要輸入用戶和密碼,連通後會顯示ok

連通後請編輯/etc/squid/squid.conf文件

註釋掉所有以http_access開頭的內容,在最後面添加以下4行

auth_param basic program /usr/lib64/squid/squid_ldap_auth -u -cn -f "uid=%s" -b "ou=people,dc=shuyun,dc=com" -D "cn=user,ou=people,dc=shuyun,dc=com" -w "password" -H ldap://ldap.shuyun.com

acl ldapauth proxy_auth REQUIRED

http_access allow ldapauth

http_access deny all

重啟squid

/etc/init.d/squid/restart

打開網站看是否會彈出對話框要求輸入用戶名和密碼

四、生成PAC文件,定義白名單翻墻網站

可以下載shadowsocks軟件運行,然後提取裏面的本地pac文件

然後把pac文件裏面服務器的地址改成B服務器的地址

var proxy = "PROXY B服務器地址:7071; DIRECT;";

pac文件保存好後,下載到本地然後在瀏覽器代理設置使用這個pac文件即可實現翻墻的域名走國外服務器線路。


代理服務器搭建文檔