代理服務器搭建文檔
前言:檢測到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文件即可實現翻墻的域名走國外服務器線路。
代理服務器搭建文檔