SSH隧道+Polipo+Pac文件打造翻牆GFW的共用平台

美博園2012年8月31日】自認翻X牆高手,卻與同事交流的時候敗下陣來,我最初還口口聲聲說 幾條命令 就能搞定,絕對米問題.
結果,俺發現,這玩意還是有點技術含量的… 不過,經過我不斷提煉,最後是十幾條命令搞定(關鍵語句僅3條,即啟動3個進程),哦也!!

需求基本上是這樣:
客戶端只需要配置一下代理伺服器,就能做到需要翻牆就翻牆,不需要就走普通渠道.

最初,我的想法
1. 直接SSH隧道 — 只有部分程序支持sockt5代理
2. squid+ssh隧道 — squid壓根不支持sockt5的後端代理,我靠
3. squid+Polipo+ssh隧道 — 有點靠譜了,我差點就狠心學一下squid惡心的配置文件
4. nginx+Polipo+ssh隧道 — 代理https有點問題,我一直沒解決

1. 在本地一台Linux伺服器,創建用proxy,創建sshkey並上傳到國外的vps:

SHELL
#添加用戶
adduser proxy
#切換到proxy用戶
su proxy
#創建ssh密鑰,一路回車
ssh-keygen
#將剛剛生成的key,上傳到國外vps,以便進行無密碼登錄
ssh-copy-id -i ~/.ssh/id_rsa.pub root@nutz.cn

2. 創建SSH隧道:

SHELL

ssh -D 127.0.0.1:7070 -N -c blowfish -C -4 -2 root@nutz.cn &
#解釋:
# -D 127.0.0.1:7070 監聽本地7070連線埠,轉發到遠程伺服器
# -N 不啟動shell
# -c blowfish 採用blowfish加密,更快更安全
# -C 壓縮數據
# -4 強制ipv4
# -2 強制使用SSH2協議

3. 編譯並啟動Polipo

SHELL

#如果有git客戶端
git clone git://git.wifi.pps.jussieu.fr/polipo --depth=0
#如果木有,則下載壓縮檔
wget -O polipo.zip --no-check-certificate https://github.com/jech/polipo/zipball/master
unzip polipo.zip
cd polipo #或者是unzip出來的資料夾
#編譯
make
#啟動Polipo
./polipo socksParentProxy=localhost:7070 daemonise=true proxyAddress=192.168.9.100 proxyPort=8080
#這裡的7070,就是SSH隧道所監聽的地址

4. 下載並對外提供pac文件

SHELL

wget -O proxy.pac https://autoproxy2pac-charlie.appspot.com/proxy/192.168.9.100/8080?download
#這裡的ip及連線埠,需要對應Polipo的設置哦
#用Python來啟動一個簡單的http伺服器,用於對外提供pac
python -m SimpleHTTPServer 8000

這樣,就大功告成了,只需要在IE中設置一下自動代理腳本的URL,就能自動判斷是否走代理了:

TXT
https://192.168.2.100:8000/proxy.pac

擴展設置:

CONFIG
#防ssh短線,在伺服器端的/etc/ssh/sshd_config
ClientAliveInterval 60
ClientAliveCountMax 10000000

還需要解決的問題:
1. Polipo崩潰後自動重啟 — 一個監護進程
2. SSH隧道短線自動重連 — 同上
3. 流量控制 — 加個nginx?squid來控制?
4. 限制視頻,下載 — 同上
5. 用戶過濾 — 同上, 我想到了偉大的nginx-lua模組

轉載自:https://wendal.net/383.html

原文鏈接:https://allinfa.com/zh-tw/ssh-polipo-pac-gfw.html
原文標題:SSH隧道+Polipo+Pac文件打造翻牆GFW的共用平台 - 美博園
美博園文章均為「原創 - 首發」,請尊重辛勞撰寫,轉載請以上面完整鏈接註明來源!
軟體著作權歸原作者!個別轉載文,本站會註明為轉載。

這裡是你留言評論的地方


請留言


5 + 0 =
【您可以使用 Ctrl+Enter 快速發送】
Copyright © 2007 - 2026 , Design by 美博園. 著作權所有. 若有著作權問題請留言通知本站管理員. 【回到頂部】