SSH隧道實現訪問Google——異常簡便


##先潑一盆冷水,想用這個方法實現訪問境外網。需要一台境外服務器才行。(美國、韓國、香港都可以。只要不在境內)這種方法很適合有境外服務器的技術人員使用。能省下一筆購買VPN的費用。


SSH動態綁定

這是SSH翻牆的基本原理:利用SSH動態綁定的功能。那么何謂SSH動態綁定呢?動態綁定是SSH端口轉發功能的一種形式,借用一張圖:

  1. 首先,牆內的客戶機跟牆外的代理服務器,建立好SSH連接,並設定動態綁定
  2. 此時牆內客戶機上的SSH會監聽本地的一個端口7001
  3. 客戶機上的程序,將對www.youtube.com:80的請求告知7001端口的SSH,SSH將此請求通過SSH加密連接發送到牆外服務器的SSH上
  4. 由於建立的動態綁定,服務器會將www.youtube.com:80的請求發送給www.youtube.com上的80端口,並在收到回復后,通過原路返回給客戶機的SSH,客戶機的SSH返回給應用程序

在這里SSH客戶端已經不僅僅是個客戶端了,它同時打開了7001端口偵聽本機應用程序的請求。這是SSH跟傳統用法最大的區別。而服務端的SSH也不僅僅是處理客戶端的請求,而是將請求轉發到對應的主機和端口,這里的動態二字體現在服務端的SSH的轉發目標是不固定的,是根據客戶端的請求而定的。

那么如何讓應用程序知道應該把請求發送給本機的7001端口呢?

SOCKS代理

答案就是SOCKS代理。

理解SOCKS代理其實非常簡單。HTTP代理都用過吧,瀏覽器其實也是支持SOCKS代理的,玩法幾乎一樣,只是SOCKS代理通常不限制端口,所謂來者不拒

實際上SOCKS代理普遍被許多應用程序支持:QQ、瀏覽器、MSN…

所以在上述的模型中,客戶機的SSH實際上就是實現了一個SOCKS代理的角色,這個SOCKS代理偵聽了7001端口,並將所有的請求都代理給服務器的SSH,並利用SSH動態綁定,讓服務器進一步轉發請求。

SSH隧道的搭建

那么我們來看看搭建一個SSH隧道翻牆,究竟有多簡單。首先你需要有一台支持SSH的牆外服務器,此服務器啥都不需要,只要能SSH連接即可。

客戶端SSH執行如下命令:

ssh -D 7001 username@remote-host

上述命令中-D表示動態綁定,7001表示本地SOCKS代理的偵聽端口,可以改成別的,后面的username@remote-host就是你登錄遠程服務器的用戶名和主機。當然,這個命令后會提示輸入密碼,就是username這個用戶的密碼(除非你配置了SSH公鑰認證,可以不輸入密碼)


最后在瀏覽器或者其他應用程序上設置SOCKS代理(設置v4的SOCKS就可以了,v5的SOCKS增加了鑒權功能),代理指向127.0.0.1,端口7001即可,這樣免費的翻牆就做好了。最后附上一張圖:







##上方步驟不詳細,但是理論很好。這里我寫下自己的配置步驟。我是用的是xshell。你可以直接在linux上測試(按照上邊那哥們的方法,其實他用的就是linux系統測試的,因為他直接運行的ssh -D 的命令)。你可以在linux桌面運行級別下測試。或者安裝個vnc也行。(后邊的方法我沒試過,但是一定是可行的,自己開發。)

1、xshell客戶端的配置(我的xshell安裝在windows上)。在xshell客戶端里邊添加好你的境外服務器,並按照下圖設置該連接的屬性。



2、設置完后重新連接到你的這台境外服務器,並打開數據包轉發功能(echo 1 >  /proc/sys/net/ipv4/ip_forward),到此隧道建立完畢。

注:想要永久開啟數據包轉發

##編輯配置文件

vim  /etc/sysctl.conf

net.ipv4.ip_forward = 1   


##執行命令使配置文件生效

sysctl -p



3、下載安裝chrome瀏覽器。



4、啟動chrome瀏覽器並添加proxy switchysharp 功能插件。

proxy switchysharp 插件必須先下載。(怎么下載自己想辦法吧,可先用一個翻牆瀏覽器下載google的這個功能插件。或者向我索取QQ:1250134974)

添加proxy switchysharp 插件到chrome瀏覽器中:在chrome瀏覽器中找到  “更多工具”---->“擴展程序”,直接把插件拉進來就行了。



5、配置socket代理,按下圖添加就行了。注意上方監聽的端口要與下方的配置一樣都是端口1080。這樣保證瀏覽器的所有數據包都會發送到本機監聽1080端口上。

 




6、測試使用chrome上Google或者youtobe。注意chrome瀏覽器右上角的“地球”圖標,點開並選擇你剛才建立的socks代理。

輸入http://www.google.com 


注:配置socket代理的時候還可以過濾不想上的網絡,比如過濾掉百度網站(直接把百度的域名配置在后邊的“不代理的地址:”后邊就行了)









注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com