前言:檢測到j(luò)ayproxy使用的squid作為代理服務(wù)器,固我們也使用此軟件來搭建代理服務(wù)器。
成都創(chuàng)新互聯(lián)公司是網(wǎng)站建設(shè)技術(shù)企業(yè),為成都企業(yè)提供專業(yè)的網(wǎng)站設(shè)計制作、成都網(wǎng)站制作,網(wǎng)站設(shè)計,網(wǎng)站制作,網(wǎng)站改版等技術(shù)服務(wù)。擁有10多年豐富建站經(jīng)驗和眾多成功案例,為您定制適合企業(yè)的網(wǎng)站。10多年品質(zhì),值得信賴!
×××分析:Squid是很好的代理服務(wù)器,但它不能直接×××,因為在連接到Squid的過程中,就已經(jīng)被墻了。所以得把傳輸?shù)臄?shù)據(jù)先進(jìn)行加密再傳輸,這樣等于是繞過了防火墻,這里就需要使用Stunnel來傳輸加密數(shù)據(jù)。
1、一臺可以正常訪問互聯(lián)網(wǎng)的服務(wù)器,代號A(國外的)
2、一臺可以正常訪問服務(wù)器A的國內(nèi)服務(wù)器,代號B
1、用戶設(shè)置代理指向B服務(wù)器的Stunnel服務(wù)監(jiān)聽的端口,訪問網(wǎng)站
2、訪問國外網(wǎng)站時在彈出框輸入ldap用戶信息,認(rèn)證通過即可訪問國外網(wǎng)站
3、這時B服務(wù)器的Stunnel會將信息做加密處理,然后發(fā)送到A服務(wù)器的Stunnel服務(wù)上
4、A服務(wù)器的Stunnel會將加密的信息做解密處理,然后發(fā)送給A服務(wù)器的Squid服務(wù)上
5、A服務(wù)器的Squid會向目標(biāo)網(wǎng)站請求數(shù)據(jù),然后將信息返回。
1、安裝Squid
//安裝
yum -y install squid
//初始化squid
squid -z
//啟動squid
service squid start
如果什么配置都不做修改,那默認(rèn)的商品號為3128,這時候,可以打開你的瀏覽器,設(shè)置代理,填上A服務(wù)器的IP和3128端口號,訪問baidu,輸入ip看ip地址是不是代理服務(wù)器的ip,如果是,說明Squid已經(jīng)能正常使用了,不過還不能×××。
2、安裝Stunnel
//下載軟件包
$wget http://www.stunnel.org/downloads/stunnel-5.01.tar.gz
//解壓
$tar -zvxf stunnel-5.01.tar.gz
//進(jìn)入軟件包
$cd stunnel-5.01
//編譯安裝
$./configure
$make
$make install
配置Stunnel:
Stunnel比Squid要麻煩一些,因為Squid如果你什么都設(shè)置,同樣能運行,而Stunnel就不行。它需要一個配置文件,還需要一個簽名證書。
//先進(jìn)到目錄
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
網(wǎng)絡(luò)上說這是4.X版本必須要做的,但我使用的5.01也這么做了。
設(shè)置配置文件:
在/etc/stunnel/目錄下有一個stunnel.conf.simple文件(好像是這樣的),可以cp一份為stunnel.conf或是新建一個stunnel.conf,這里使用新建
$vim stunnel.conf
將以下內(nèi)容復(fù)制進(jìn)去
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
這里有幾個設(shè)置要說明一下:
第一行和二行是密鑰文件的位置,如果按前面的做法,這里肯定是正確的。
setuid = stunnel
setgid = stunnel
是設(shè)置用戶和用戶組,都為stunnel,一般情況下是不會有它們的,所以要新建用戶和用戶組:
$groupadd -g 122 stunnel
$useradd -c stunnel -d /nonexistent -m -g 122 -u 122 stunnel
accept = 34567 是監(jiān)聽的端口號,也就是B服務(wù)器要指向的位置
connect = 127.0.0.1:3128 是本服務(wù)器,也就是A服務(wù)器Squid監(jiān)聽的端口號,也就是3128啦。
保存退出后,就可以試著啟動stunnel了
$stunnel
如果正常是沒有輸出任何內(nèi)容的,如果有問題,它會給出問題所在,仔細(xì)排查,基本上不會有什么問題。
檢查是否正常運行:
$ps -ef | grep stunnel
如果看到stunnel用戶運行的stunnel,說明已經(jīng)成功運行了。
這樣A服務(wù)器的Squid和Stunnel都配置完成了,接下來配置國內(nèi)B服務(wù)器的Stunnel。B服務(wù)器不需要Squid,所以只需要配置Stunnel
安裝同A,密鑰不要再生成了,從服務(wù)器A上拷過來
登錄服務(wù)器A,進(jìn)到/etc/stunnel/目錄,向服務(wù)器B的/etc/stunnel/目錄里拷貝stunnel.pem密鑰:
$cd /etc/stunnel/
$scp stunnel.pem root@服務(wù)器B的IP:/etc/stunnel/
接著登錄服務(wù)器B,設(shè)置配置文件,同服務(wù)器A,可以cp一個,也可以新建,這里同樣新建:
$cd /etc/stunnel/
$vim stunnel.conf
將下面的內(nèi)容復(fù)制到里面:
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 = 服務(wù)器A的IP:34567
這里要說明的是:
accept = 0.0.0.0:7071 中的7071是用戶需要設(shè)置的代理端口,可以隨意設(shè)置,只要大于500就好。0.0.0.0是為了讓外網(wǎng)能使用,如果只是內(nèi)部使用,改成127.0.0.1即可。
connect = 服務(wù)器A的IP:34567,很顯然這里要填什么,34567是服務(wù)器A的Stunnel監(jiān)聽的端口號,保持和它一至就對了。
保存退出后,就可以啟動Stunnel了
$stunnel
如果沒有意外,整個代理就正常運行了,打開瀏覽器,將代理設(shè)置服務(wù)器B的IP+7071端口號,此時即可訪問國外網(wǎng)站。
1、安裝ldap客戶端
yum -y install openldap-clients nss-pam-ldapd openldap
添加ldap服務(wù)器信息
vim /etc/openldap/ldap.conf
添加以下2行
BASE dc=shuyun,dc=com
URI ldap://ldap.shuyun.com:389
重啟nslcd服務(wù)
/etc/init.d/nslcd restart
測試與ldap服務(wù)器連通性
ldapsearch -x
2、配置squid與ldap通信
執(zhí)行此條命令測試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
執(zhí)行時需要輸入用戶和密碼,連通后會顯示ok
連通后請編輯/etc/squid/squid.conf文件
注釋掉所有以http_access開頭的內(nèi)容,在最后面添加以下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
打開網(wǎng)站看是否會彈出對話框要求輸入用戶名和密碼
可以下載shadowsocks軟件運行,然后提取里面的本地pac文件
然后把pac文件里面服務(wù)器的地址改成B服務(wù)器的地址
var proxy = "PROXY B服務(wù)器地址:7071; DIRECT;";
pac文件保存好后,下載到本地然后在瀏覽器代理設(shè)置使用這個pac文件即可實現(xiàn)×××的域名走國外服務(wù)器線路。