首頁 > 電腦教學 > 在Win7中利用ptproxy和obfs4proxy混肴Shadowsocks連線

在Win7中利用ptproxy和obfs4proxy混肴Shadowsocks連線

沒在大陸生活中上網的人絕對不會想像要上個Facebook、Google查資料、收發GMail是件多麼痛苦的事,儘管最近比較流行的翻牆工具Shadowsocks仍舊可用,但是時不時就給你斷一下,真的很煩!
所以那些電腦程式設計比較強的大陸工程師就又想了一個辦法,把Shadowsocks通訊加上外衣,本來Shadowsocks就已經有混肴了一次,所以我們又再加一次,這樣就可以瞞過大陸的GFW防火牆。
網路混肴功能在很多年前就已經有了,但是遇到大陸的國家級防火牆照樣被封,所以在這我們用最新版本的obfs4來處理!至於obfs4是什麼,自己上Google查吧!

以下的內容必須要有系統設定的基礎,如果是不懂電腦的人,還是不要自己操作。

一、需求

伺服器:笨笨包今天試驗了一整天發現OpenVZ的VPS根本不能用,所以我們需要一個KVM架構的VPS。
客戶端:自己的Windows 7。如果你要用其它不同的Windows版本,我沒試過,如果有問題我沒法幫忙。
在你的電腦中下載Tor Browser for Windows ,目前最新版是5.0.3,什麼語言版本都無所謂。
其實Tor Browser for Windows也是個翻牆的工具,但是只能使用他們的瀏覽器,而且,使用還必須要再利用外部的proxy取得橋接的訊息,這並不符合我們的需要。
下載後的Tor Browser for Windows實際上只是個免安裝的壓縮檔,你執行後會出現一個Tor Browser資料夾,我們需要\Tor Browser\Browser\TorBrowser\Tor\PluggableTransports裡面的一個叫做obfs4proxy.exe的檔案,把這個檔案複製到Windows的ptproxy資料夾裡面。

二、設定伺服器

笨笨包習慣使用Debian 7,如果是其它的系統,暫時我也不懂。記得Shadowsocks要先裝好!

  1. 安裝git、python3

    apt-get install git python3

  2. 下載Debian專用obfs4proxy,可以從這個網站選擇下載適合的deb安裝包,然後使用 dpkg -i 安裝。
  3. 複製 https://github.com/gumblex/ptproxy.git 副本到伺服器上

    git clone https://github.com/gumblex/ptproxy.git

  4. 下載後,用文字編輯器打開example.json,修改一下以下內容,然後另儲存為server.json(檔名可隨意設)。

    {
    “role”: “server”,
    //指定工作模式為server”local”: “127.0.0.1:12345″,
    //12345通訊埠改為你的shadowsocks服務通訊埠。”server”: “伺服器IP:通訊埠”,
    //指定收发混淆数据的监听端口”ptargs”: “cert=AAAAAAAAAAAA;iat-mode=1”,
    //只要修改iat-mode參數為1或者2即可,cert不需要修改//其它的內容要保留,但是別修改
    }

  5. 執行伺服端

    python3 ptproxy.py -s server.json

    執行後畫面會出現以下訊息

    2015-10-02 18:16:49 Starting PT…
    ===== Server information =====
    “server”: “xxx.xxx.xxx.xxx:xxxxx”,
    “ptname”: “obfs4”,
    “ptargs”: “cert=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx;iat-mode=1”,
    ==============================
    2015-10-02 18:16:49 PT started successfully.

    而第一次執行後,ptproxy資料夾會產生obfs4_bridgeline.txt、obfs4_state.json、obfs4proxy.log三個檔案。

    如果出現iat-mode=0,停止剛剛執行的指令,然後修改obfs4_state.json裡面,將obfs4_state.json裡面的iat-mode=0修改為iat-mode=1或者iat-mode=2。
    修改完畢再重新執行一次,如果畫面中iat-mode=0始終出現,那就必須好好的檢查看看哪邊出現問題。
    注意:在哪個資料夾下執行程式很重要,因為obfs4_state.json等三個檔案會出現在執行程式位置所在的資料夾目錄中,如果是使用rc.local開機自動執行的話,obfs4_state.json會在根目錄 / 下產生。因為在不同的執行目錄所產生的密鑰是不一樣的。

三、在windows7設定obfs4客户端

  1. 下載安裝Windows版的python https://www.python.org/downloads/windows/,千萬不要下載2.7.10版,一定要下載3.5.0版,兩個版本的作用是不一樣的!安裝過程中記得環境變數的選項要打勾(忘記是什麼內容了),否則會很麻煩的。
  2. 同樣將 https://github.com/gumblex/ptproxy.git 副本複製到你要放的資料夾裡面,如果不知道怎麼複製,你可以將伺服器上的ptproxy資料夾給下載回來!
    ptproxy
  3. 用文字編輯器打開example.json,修改一下以下內容,然後另儲存為client.json(檔名可隨意設)。

    {
    “role”: “client”,
    //指定工作模式為client
    “local”: “127.0.0.1:12345″,
    //12345通訊埠改為你電腦上的shadowsocks連線的通訊埠。”server”: “伺服器IP:通訊埠”,
    //與Server端設定的內容一樣”ptargs”: “cert=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx;iat-mode=1”,
    “ptargs”: “cert=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx;iat-mode=1”,
    //將Server端執行後所顯示的ptargs參數內容完整的複製到這裡,一定要和server端設定完全一樣,不然無法對接。//其它的內容要保留,但是別修改
    }

    打開命令提示字元,然後執行

    python ptproxy.py -c client.json

    安裝後的python有兩個程式python.exe與pythonw.exe,有什麼差別我也不是很清楚,但是笨笨包試驗的結果是兩個都可以用!

四、設定Shadowsocks

將Shadowsocks的服務器設定為client.json的內容,也就是服務器:127.0.0.1,端口:12345,密碼仍舊是原來的Shadowsocks密碼。
如果不懂怎麼設定Shadowsocks,還是那句話,上Google查吧!

五、設定Debian開機自動啟動ptproxy

只要在/etc/rc.local裡面新增這句即可

python3 /你所存放的資料夾/ptproxy.py -s /你所存放的資料夾/server.json

再次提醒,經由/etc/rc.local開機自動啟動ptproxy,obfs4_state.json會在根目錄 / 下產生。

六、設定Windows開機自動啟動ptproxy

這是笨笨包的做法,或許其他人有更好的選擇。

在ptproxy資料夾裡面建立一個client.vbs文字檔,內容如下:

Set ws = CreateObject(“Wscript.Shell”)
ws.run “cmd /c pythonw ptproxy.py -c client.json”,vbhide

儲存後,再製作一個client.vbs的捷徑,然後將這個捷徑放在左下角的開始 – 所有程式 – 啟動裡面即可!

七、錯誤分析

當你全部都設定好了之後,開始上網瀏覽,卻發現怎麼都無法連線,這時候我們就必須打開ptproxy資料夾裡面的obfs4proxy.log檔案看看記錄的內容。

經過笨笨包測試後出現了幾種不同的狀況:

  1. handshake failed: handshake: MAC mismatch
    這出現在與OpenVZ的VPS的對接,以及網路被干擾的時候會出現,目前無解。
  2. handshake failed: WSARecv: i/o timeout
    出現在Shadowsocks斷線,有可能是server端的Shadowsocks停止服務,也有可能是Windows的Shadowsocks關閉了。偶爾出現代表網路狀況不好就會出現,如果這個出現次數太多時好時壞,估計GWF已經開始干擾了!
  3. outgoing connection failed: dial: ConnectEx tcp: No connection could be made because the target machine actively refused it.
    無法向server連線
  4. handshake failed: EOF
    Shadowsocks密碼錯誤,客戶端的”ptargs”: “cert=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx;iat-mode=1″參數與Server端不匹配。
  5. invalid arguments: failed to decode cert: illegal base64 data at input byte 70
    Shadowsocks密碼錯誤
  6. server端執行後顯示iat-mode=0
    笨笨包有兩種經歷:
    a. 必須移除net-speeder
    b. obfs4_state.json未修改預設值

八、感想

當笨笨包試驗了之後,被干擾的情形少很多了,但是斷線情況仍舊會發生,因為大陸的GWF防火牆已經進化到不需要了解網路封包的傳遞內容,你對海外的某一個IP進行一定數量的連線,GWF防火牆就會主動懷疑你是用了翻牆工具,然後動不動就禁止你一下。反正習慣就好了,我翻牆大多是查資料用,其它的功能我也用不到啊~

發表留言

您的電子郵件地址將不會被公開標記為必填欄位 *

*

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料