2016年4月7日 星期四

搭建stunnel配合tinyproxy,輕鬆翻過防火長城

搭建stunnel配合tinyproxy,輕鬆翻過防火長城

stunnel是一個老牌加密ssl wrapper,它能把客戶與服務器端的通訊加密,tinyproxy是一個輕量級的http代理,它也支援CONNECT的方式,能夠處理https的連線,而且使用的資源很少,服務器啟動只使用2M左右的記憶體,而且速度飛快


以下為部署過程,安裝在最為低階的NAT IPv4 share VPS,128M/128M vSwap OpenVZ虛擬方案,系統是Ubuntu 14.04 LTS 32bit

1) 登錄vps,以root執行apt-get update -y && apt-get upgrade -y , 確保系統軟件為最新版本
2) 執行apt-get install tinyproxy -y
3) 編輯/etc/tinyproxy.conf
    a) 找到Port 8888 ,可以改成你喜歡的端口或者不改動,我沒有改動的
    b) 往下找到#Listen 192.168.0.1 ,在其下面新增一行Listen 127.0.0.1,
        因為我們只需監聽本地通訊
    c) 再往下找看到Timeout 600,可以改成300,這個隨你喜歡
    d) 往下找到LogLevel Info,改成LogLevel Connect,避免看到頭痛
    e) 往下找到MaxClients 100,因應需要可改或不改動,我設為150
    f) 繼續往下,看到MinSpareServers 5和MaxSpareServers 20,可因應需要改動,
        我用預設的值
    g) StartServers 10和MaxRequestsPerChild 0建議使用預設的值可以了
    h) 檢查Allow 127.0.0.1前面是否有#,如有把它去掉,預設只能是本地通訊
    i) 儲存文件,並重啟服務,執行service tinyproxy restart
至此已配置好了tinyproxy,接下來安裝stunnel4和配置協同工作

安裝stunnel4的流程如下

1) 執行 apt-get install stunnel4
2) 生成私鑰,執行openssl genrsa -out privatekey.pem 2048
3) 生成公鑰,執行openssl req -new -x509 -key privatekey.pem -out publickey.pem -days 3650
    它會詢問一些資料如地區,那些亂填就好,到第四項組織和CN(Common Name)填入
     vps公網IPv4 ,電郵地址直接enter鍵,自簽名證書已製作好
4) 合併證書,cat privatekey.pem publickey.pem >> /etc/stunnel/stunnel.pem
5) 新建一個配置文件,/etc/stunnel/stunnel.conf ,內容如下

client = no
debug = 7
output = /var/log/stunnel4/stunnel.log
[tinyproxy]
accept = 16920
connect = 127.0.0.1:8888
cert = /etc/stunnel/stunnel.pem

其中accept = 16920 是stunnel4對外監聽連接端口,改成你喜歡的,而
connect = 127.0.0.1:8888 必須和tinyproxy監聽的本地端口一致

其它的設定如降低權限,請參考 http://www.arda.homeunix.net/stunnel-setup/

6) 編輯/etc/default/stunnel4 ;把 ENABLED=0 改為 1,儲存離開
7) 執行service stunnel4 restart

stunnel4 和 tinyproxy 已經協同工作,再下來配置客戶端,以Chromium為例

1) 執行cat publickey.pem > publickey.crt
2) 把publickey.crt複製到本地電腦,以linux可以 scp -P vps_ssh_port root@vps_ip:~/publickey.crt .
3) 打開設定->顯示進階設定->管理憑證->選"授權單位"->按"滙入"->把publickey.crt導入即可
4) 下載SwitchyOmega,新建一個情景模式,選代理協議為HTTPS,代理伺服器填入vps的IPv4,
     代理埠填入stunnel4的監聽端口,儲存完成
5) 切換到代理模式,打開 http://whatismyproxy.com 看看是否IP變了

雜項

如要分流,請參考 https://github.com/FelisCatus/SwitchyOmega/wiki/GFWList ,
iOS的Surge的設置自行google

如果出現問題,可以在/var/log/找到相關訊息,或者執行netstat -nlp看看是否服務器都在監聽中

:)

5 則留言:

  1. 電腦任何系統的chromium,chrome.火狐或支援https代理的都可以

    回覆刪除
  2. 首先要有一个 VPS 是吧?只有一台 windows 10 笔记本,怎么翻墙?

    回覆刪除
  3. 在VPS上配置了stunnel和tinyproxy,Window上设置了SwitchyOmega代理,发现不能成功翻墙啊?配置步骤有误?

    回覆刪除