(轉)多台電腦如何共享翻牆通道
★引子
元旦前後,俺寫了《如何隱藏你的蹤跡,避免跨省追捕》系列的第6、7篇——《用虛擬機隱匿公網IP》。之後有不少網友到部落格留言,詢問如何讓不同虛擬機的軟體共享翻牆代理。
所以,俺今天就來聊一聊"多台電腦共享翻牆通道"這個話題。今天介紹的招數,既可以在不同虛擬機之間共享翻牆通道,也可以在不同的實體機(包括PC、平板、手機)之間共享翻牆通道。
順便說一下:在《用虛擬機隱匿公網IP(配置圖解)》一文的末尾,俺又補充了一個章節——"驗証虛擬機的隔離性"。那些使用虛擬機方案隱匿公網IP的同學,為了保險起見,要記得驗証一下隔離性。
★準備工作
考量到俺部落格的讀者,有很多人不是 IT 技術人員。所以,俺先通俗地掃盲若干基礎知識。
◇什麼是"翻牆"
如果你對"翻牆"還不太了解,建議你先看看俺寫的《如何翻牆》一文。這篇掃盲教程可以說是面面俱到,很適合翻牆方面的新手入門。
◇什麼是"代理"
"代理"好比是一個中轉站,可以中轉你的上網數據流量,以此來避開 GFW 這堵牆。
翻牆代理通常包括兩部分:代理軟體,代理伺服器。代理軟體安裝在你的電腦上,代理伺服器通常都位於牆外(也就是境外)。當你通過代理上網時,你的瀏覽器並不是直接連到目標網站。而是通過如下幾個步驟:
1. 瀏覽器發送數據到代理軟體
2. 代理軟體把你的數據發送到牆外的代理伺服器
3. 代理伺服器發送數據到目標網站
◇什麼是"監聽連線埠"
代理軟體要正常工作,通常都需要開啟一個"監聽連線埠"。瀏覽器通過這個"監聽連線埠"來跟代理軟體建立連接。只有建立了連接,瀏覽器才能把數據發送到代理軟體上。連線埠號是一個數字,範圍在 1 - 65535 之間。
◇如何看本機開啟的監聽連線埠
對於 Windows 系統,在命令行窗口(先運行 cmd 就會出現命令行窗口)運行如下命令,可以看到本機開啟的所有監聽連線埠。
netstat -an | find "LISTEN"
剛才有讀者在留言中提問,俺再補充一下。用 netstat 的 o 選項可以看到每個監聽連線埠分別是哪個進程開啟的。命令如下
netstat -ano | find "LISTEN"
◇什麼是監聽連線埠的"綁定地址"
以俺手頭的虛擬機為例,執行剛才那個命令後,會顯示如下
TCP 127.0.0.1:8118 0.0.0.0:0 LISTENING
其中的 127.0.0.1 表示這個監聽連線埠綁定的網卡地址,而 8118 表示監聽的連線埠號。所謂的"綁定地址",意思就是說,這個監聽連線埠只接受來自該網卡的連接。
因為 127.0.0.1 表示本機網卡地址;所以,綁定在 127.0.0.1 表示該監聽連線埠只接受來自本機的連接。
如果要讓某個監聽連線埠接受任意連接(包括外部電腦的連接),可以把綁定地址設置為 0.0.0.0
◇小心防火牆的配置
在《用虛擬機隱匿公網IP》一文,俺就特別用紅字,提醒大伙兒要小心防火牆的設置。結果還是有很多人因為防火牆的問題而中招,功虧一簣。
俺再啰嗦一下:
要特別小心作業系統中防火牆的設置。很多人是因為防火牆沒設好,導致代理無法連通。
★如何共享翻牆的代理?
◇問題
大部分翻牆代理都會提供一個 HTTP 的代理連線埠(就是剛才說的"監聽連線埠")。問題在於:很多翻牆代理的代理連線埠都綁定在 127.0.0.1 上。也就是說,這個代理只能被本機的軟體使用,外部電腦的軟體無法連接到該連線埠。
◇解決方案之 "修改配置"
最簡單的解決方案,就是修改翻牆軟體的配置,讓代理連線埠綁定到 0.0.0.0 上。
自由門
到它的設置界面,點"更多設置",然後勾選"用自由門做伺服器",可以把監聽連線埠綁定到 0.0.0.0
GoAgent
GoAgent 的配置信息存儲在 proxy.ini 文件中。打開該文件找到 [listen] 欄位,然後把該欄位下面的 127.0.0.1 改為 0.0.0.0 即可。
可惜的是,很多翻牆軟體都沒有提供配置文件讓你修改監聽連線埠綁定的地址。所以,俺下面傳授一個通用的招數,無需修改配置文件,可以搞定任何翻牆代理,讓它的監聽連線埠被外部電腦使用。
◇解決方案之 "連線埠轉發"
所謂的"連線埠轉發",通俗地說就是讓 A 監聽連線埠的數據轉發到 B 監聽連線埠。
B 監聽連線埠就是你的翻牆軟體原先開啟的連線埠
A 監聽連線埠是新開的,而且綁定地址是 0.0.0.0
如此一來,外部電腦就可以用 A 連線埠作為代理的連線埠,數據都發給 A 連線埠,然後利用"連線埠轉發"功能,把數據轉向 B 連線埠(也就是翻牆工具自身的連線埠)
★如何搞連線埠轉發?
連線埠轉發是本文的重點,所以俺單獨開一個章節詳細說。
用來搞連線埠轉發的工具有很多,如果你去 Google 一下 "TCP proxy" 或 "TCP redirection",應該能找到一大堆軟體和解決方案。考量到很多讀者是菜鳥,俺挑選兩種最簡單的辦法。
◇利用 Windows 自帶的 netsh
準備工作
對於 Vista 以及更新版本的 Windows (比如 Win7 Win8 ...)可以直接使用該方案。
對於 Vista 之前的 Windows(比如 WinXP、Win2003),需要先安裝 IPv6 協議棧。具體步驟如下:
1. 以管理員身份登錄,進入"控制台"下面的"網路連接"
2. 選中本地連接,點右鍵,在右鍵菜單選"屬性"
3. 彈出"屬性"對話框,點"安裝"按鈕
4. 彈出"選擇網路組件類型"對話框,選"協議",再點"添加"
5. 在彈出的對話框中選"IPv6",點"確定"
命令詳解
(以下命令需要管理員身份才能執行)
添加連線埠轉發的命令
netsh interface portproxy add v4tov4 listenport=新開的監聽連線埠 listenaddress=新開連線埠的綁定地址 connectaddress=要轉發的地址 connectport=要轉發的連線埠 protocol=tcp
刪除連線埠轉發的命令
netsh interface portproxy delete v4tov4 listenport=新開的監聽連線埠 listenaddress=新開連線埠的綁定地址
命令舉例
比方說,俺本地已經運行了 tor,連線埠是 8118,綁定在 127.0.0.1
如果俺希望建立一個新的連線埠,連線埠號是 12345(這個連線埠號是俺隨手編的,你也可以用其它連線埠號),綁定在 0.0.0.0
那麼就執行如下命令。然後,發往 12345 連線埠的數據流就會被轉發到 8118 連線埠。
netsh interface portproxy add v4tov4 listenport=12345 listenaddress=0.0.0.0 connectaddress=127.0.0.1 connectport=8118 protocol=tcp
為了保險起見,再用前面介紹的 netstat 命令,看一下本機開啟的連線埠。如果正常的話,你就可以看到如下一行
TCP 0.0.0.0:12345 0.0.0.0:0 LISTENING
如果要刪除該連線埠轉發,就執行如下命令
netsh interface portproxy delete v4tov4 listenport=12345 listenaddress=0.0.0.0
刪除之後,再用 netstat 命令查一下,這個 12345 的監聽連線埠就看不到了
優點
無需安裝任何第三方軟體
一旦設置好就會持續有效——即使系統重新啟動也沒關係。
缺點
需要以管理員身份登錄,才能執行上述命令。
該方法只能用於 Windows 系統。
◇利用 rinetd
獲取軟體
rinetd 是一個很小巧的、跨平台的、開源的工具,它能提供 TCP 連線埠轉發的功能。它的官網在"這裡",上面提供了 Linux 平台和 Windows 平台的軟體包。考量到大多數同學用的是 Windows,俺針對 Windows 的使用介紹一下。
把那個 rinetd.zip 下載到本地,解壓出來,裡面有好幾個文件(包括原始碼)。你只需取出其中的 rinetd.exe 其它文件不需要。
編寫配置文件
rinetd 的配置文件很簡單,就是一個普通的純文字檔案,每一行對應一條轉發規則。每一條轉發規則包含4個欄位,分別如下,欄位之間用空格分開。
綁定地址 監聽連線埠 轉發的地址 轉發的連線埠
配置文件舉例
比方說,俺本地已經運行了 TOR,連線埠是 8118,綁定在 127.0.0.1
如果俺希望通過 rinetd 建立一個新的連線埠,連線埠號是 12345(這個連線埠號是俺隨手編的,你也可以用其它連線埠號),綁定在 0.0.0.0
那麼,轉發規則就這麼寫
0.0.0.0 12345 127.0.0.1 8118
運行
把剛才寫好的配置文件保存成 config.txt(俺只是舉例,你也可以用其它文件名),把該文件跟 rinetd.exe 放到同一個目錄。
運行 cmd 進入 Windows 的命令行窗口,然後進入 rinetd.exe 所在的目錄,執行如下命令
rinetd.exe -c config.txt
為了保險起見,再用前面介紹的 netstat 命令,看一下本機開啟的連線埠。如果正常的話,你就可以看到如下一行
TCP 0.0.0.0:12345 0.0.0.0:0 LISTENING
優點
該軟體很小巧(整個下載包才 100 多 KB),而且是綠色軟體。幾乎不佔用啥系統資源
無需管理員即可運行
跨平台
缺點
每次你關機或用戶註銷,rinetd 就退出了,下次要重新運行(為了方便,你可以把 rinetd 的啟動命令加入 Windows 的啟動項)
★如何共享翻牆的VPN?
◇問題
用 VPN 翻牆,雖然可以讓本機的所有網路軟體自動通過 VPN 伺服器中轉。但是其它電腦的軟體無法使用本機的 VPN 網路。
◇解決方案之 "Privoxy"
"VPN 翻牆" 跟 "代理翻牆" 的技術原理不同——VPN 軟體本身是不開啟監聽連線埠的。所以剛才介紹的連線埠轉發,對於 VPN 軟體是無效滴!
不過沒關係,咱們可以在本機運行 Web 代理或 SOCKS 代理,把監聽連線埠綁定到 0.0.0.0,就可以讓其它電腦的軟體通過本機的 VPN 翻牆。考量到大部分人翻牆都是為了瀏覽網頁,俺重點介紹一下 Privoxy 這個工具。
獲取軟體
Privoxy 是一個老牌的、跨平台的,開源的 Web 代理軟體,官網在"這裡"。
在官網上有 exe 安裝包,也有 zip 的壓縮檔(免安裝)。下哪個看你自己的喜好(俺喜歡免安裝的,比較綠色)。
修改配置文件
Privoxy 默認的監聽連線埠是8118,綁定在 127.0.0.1 上。為了讓其它電腦能連上來,需要修改綁定的地址。
Privoxy 的配置文件是 config.txt 。打開它,搜尋 listen-address 會看到如下一行
listen-address 127.0.0.1:8118
修改為
listen-address 0.0.0.0:8118
即可
運行
直接雙擊 Privoxy.exe
為了保險起見,再用前面介紹的 netstat 命令,看一下本機開啟的連線埠。如果正常的話,你就可以看到如下一行
TCP 0.0.0.0:8118 0.0.0.0:0 LISTENING
★如何共享虛擬機中的翻牆軟體
(還不了解虛擬機的同學,可以先看俺寫的《掃盲作業系統虛擬機》系列教程)
有些網友(包括俺)會單獨開一個虛擬機(Guest OS),專門用來安裝翻牆工具。在這個虛擬機上,除了翻牆工具,不放其它任何東西。這樣做的好處之一是:即使某些翻牆工具有後門,也不會威脅到真實系統(Host OS)的安全。
那麼,如何把虛擬機中的翻牆工具共享給其它電腦(Host OS 之外的系統)用捏?
◇步驟1
首先,你還是需要參照前面介紹的方法:
如果用代理翻牆,就搞連線埠轉發;
如果用 VPN 翻牆,就新開一個 Web 代理。
◇步驟2
配置虛擬機的網卡模式,可以有兩種搞法。
對於 NAT 模式的網卡
你需要添加連線埠映射。主流的虛擬機軟體(包括 VMware 和 VirtualBox)都有此功能。
該功能類似於剛才提到的連線埠轉發,其原理是:把 Host OS 上的某個連線埠映射到某個虛擬機的 NAT 網卡上的另一個連線埠。
該方法配置稍嫌麻煩。如果你對網路和虛擬機不太熟悉,俺不推薦用這種搞法,還是改用 Bridge 模式比較省事兒。
對於 Bridge 模式的網卡
如果網卡是 Bridge 模式,那就簡單了,無需任何額外設置。
因為這種模式的虛擬網卡,對於 Host OS 之外的網路是可見的。也就是說,(Host OS 之外的)其它電腦可以直接訪問到此網卡——因此其它電腦的軟體就能直接連上虛擬機中的代理連線埠。
★結尾
暫且寫到這裡。如果列位看官針對此話題有啥疑問,或者在實踐過程中碰到啥困難,可以到本文留言,俺會盡量解答。
轉載:作者編程隨想
本文鏈接:(轉)多台電腦如何共享翻牆通道
美博園文章均為「原創 - 首發」,請尊重辛勞撰寫,轉載請以上面完整鏈接註明來源!
軟體著作權歸原作者!個別轉載文,本站會註明為轉載。
這裡是你留言評論的地方