開啟網路蟲洞穿越時空,活用 SSH Tunnel VPN
最近去了一趟上海考察,尋找創業發展的機會,但機會暫且不論,此行確實深深體會在中國的網路世界非常不一般。中國和諧的社會實在不容許影響善良風俗的事情存在,許多外來的邪惡,一一被偉大的長城擋在外面。不過,道高一尺魔高一丈,很多人很聰明,懂得翻牆方法,進出自如,多數人使用 Reverse SSH Tunnel(有興趣可參考筆者舊文『Reverse SSH Tunnel 反向打洞實錄』)建立一個臨時的 Proxy Server,讓網頁連線繞道而行。
不過,使用 Proxy Server 的方式只能讓特定的通訊協定能夠不受防火牆的阻擋,如果說要全面性的逃脫網路限制和監控,就要靠 VPN(Virtual Private Network)的方式。VPN 是什麼?簡而言之,就是與遠端的網路環境建立通道,使電腦彷彿真實身處於遠端的內部網路一般。所以 VPN 一旦建立成功,除了可以存取遠方的內部網路,當然亦可以將遠端網路當為中繼站再連到網際網路,換言之,就是可繞過防火牆的一切限制。至於 VPN 的建立方法有很多種, 但都不在本文範疇,這邊要說明的是如何用 SSH Tunnel 建立 VPN。
設定必要的環境變數後,直接執行以下的 Script,就可以和遠端 Server 建立 VPN 連線:
註一:如果不能正確建立連線,請先確認 SSH Port(22) 是否已被防火牆阻擋。
註二:記得修改 /etc/resolv.conf 的 DNS 設定,有些網路是直接在名稱解析做阻擋(如:在中國的網路)。
後記
SSH 有高度的安全性,透過 SSH 建立 VPN,也可以多少避免網路被當下的網路提供者竊聽。
不過,使用 Proxy Server 的方式只能讓特定的通訊協定能夠不受防火牆的阻擋,如果說要全面性的逃脫網路限制和監控,就要靠 VPN(Virtual Private Network)的方式。VPN 是什麼?簡而言之,就是與遠端的網路環境建立通道,使電腦彷彿真實身處於遠端的內部網路一般。所以 VPN 一旦建立成功,除了可以存取遠方的內部網路,當然亦可以將遠端網路當為中繼站再連到網際網路,換言之,就是可繞過防火牆的一切限制。至於 VPN 的建立方法有很多種, 但都不在本文範疇,這邊要說明的是如何用 SSH Tunnel 建立 VPN。
設定必要的環境變數後,直接執行以下的 Script,就可以和遠端 Server 建立 VPN 連線:
#!/bin/bash # Local Network NETWORK=192.168.16.0 GW=192.168.16.1 # Server IP Address SERVER=123.123.123.123 # Server 對外的 Interface SERVER_IF=eth0 echo "Creating Connection" ssh -w 0:0 -f $SERVER "ifconfig tun0 10.0.2.1 netmask 255.255.255.252 pointopoint 10.0.2.2 ; echo 1 > /proc/sys/net/ipv4/ip_forward ;/sbin/iptables -t nat -A POSTROUTING -o $SERVER_IF -j MASQUERADE ;route add -net $NETWORK gw 10.0.2.2 dev tun0" echo "Settingi local interface" ifconfig tun0 10.0.2.2 netmask 255.255.255.252 pointopoint 10.0.2.1 route add -net ${SERVER%.*}.0/24 gw 10.0.2.1 dev tun0 route add $SERVER gw $GW route add default gw 10.0.2.1 tun0 route del default gw $GW
註二:記得修改 /etc/resolv.conf 的 DNS 設定,有些網路是直接在名稱解析做阻擋(如:在中國的網路)。
後記
SSH 有高度的安全性,透過 SSH 建立 VPN,也可以多少避免網路被當下的網路提供者竊聽。
不過,我曾聽過有人建的 VPN 通道,會發現它的公錀 id 不是原本創建的,也是被中間人換掉了。
回覆刪除沒有絕對安全的 Key,但只要夠長,還可以算是安全 :-P
回覆刪除真有趣,理論上換公鑰會被發現啊,莫非是利用漏洞算的key. 我是聽過有側錄設備,只對https有用,一台三百萬,但沒親眼見識過。
回覆刪除