2009年6月29日 星期一

SSH Tunnel via DD-WRT

好多公司的防火牆越來越厲害啦!越來越難穿過公司的防火牆,能破解公司防火牆大概剩下HTTP Tunnel,SSH Tunnel還有點機會,研究這些方法的,大陸人還是比較厲害一點,大概對外的世界都被鎖了,才會覺得自由可貴吧,不過這個就先不討論了。

突然想到DD-WRT 有SSH forward的功能,上網找了一下,還真的有機會做一個SSH Tunnel server,先從最簡單的Putty來試試看可行性。

先把DD-WRT管理介面打開,Service下的SSH功能當然是要先開:

圖片1


然後開啟遠端SSH管理,且改到443port,通常除了80和443port之外都被挨踢部門給封了,到此,Server部分搞定了,真的超乎想像的簡單:

圖片2


然後是Client的部分,打開Putty,設一個新的profile "SSH Tunnel",DD-WRT怎麼用DDNS的部分就跳過了,應該不會有人會裝DD-WRT卻不會用DDNS吧,下面port應該要連443port才對,忘了改:

圖片3


建立一個通道,只要電腦裡的東西丟到3000port(舉例,可隨您高興),就幫轉發到443port的tunnel上:

圖片4


以IE為例,把東西往3000port的socket丟或取,MSN或Skype設置方法亦同:

圖片5


Firefox厲害一點,可以裝個add ons "FoxyProxy",加入url pattern,只將特定(就是被挨踢檔掉的網址)的網頁,設定經過這個Proxy去找,這樣會省頻寬一些(Proxy頻寬或取決於server端的上傳頻寬,通常只有512k~2M吧!如果是架在自己家用ADSL的話),頻寬省著點用,還要留一些給挨踢檔掉的MSN跟Skype呢!!


圖片6


最好是用Firefox瀏覽,FF設定about:config裡有個功能,使用遠端的dns要打開,不然雖然突破了挨踢防火牆,但DNS被IT一覽無遺,IT還是知道您逛了哪些網站(不堪入目的!?),只是以為連不上而已(連不上怎麼還會一直連呢,這就有趣了):

設定在network.proxy.socks_remote_dns

布林值改成 "true"就行了

圖片7


好了!當然到這邊大功告成了,不過上面是陽春版的,不一定要用Putty,MyEntunnel也是個蠻好用的選擇,這也是陽春版的:

圖片11


進階版來了!有個SSH Tectia Client軟體,提供更簡單的設定,直接選擇想把哪些軟體的流量,塞到SSH Tunnel裡,不需要每個軟體設定先往3000port(以上面例子)塞,所有軟體動都不用動,網頁通常不會被檔,不過可以IE跟FF可以擇一走tunnel,當然就FF了,其他就塞MSN跟Skype進Tunnel就好了,或是還有FTP的話:


圖片8


Server在443port,當然東西就往443port塞,設定好連線profile,就算大功告成了:


圖片9


可以看到SSH-Tunnel的流量:

圖片12

SSH的好處是不易破解的加密,即便挨踢發現你對某IP的流量特別大,也無法知道上了哪些網站做了哪些事:

圖片10

下一步,換挨踢部門要頭痛痛了!!

至於SSH-Tunnel還有什麼搞頭呢!?暫時想到就是手機,中華電信的mCool方案299吃到飽,只適用於手機透過80和443port上網,如果手機也有SSH的client軟體把流量全塞到443port,那可以連上網的軟體就不受限制了,目前知道Putty有for Sybian S60的版本,還沒有試過有啥搞頭,有試過的人可以分享一下吧。

--
HOWTO: Tunneling HTTP over SSH with DD-WRT, DynDNS and Putty

Secure Web Browsing with DD-WRT/OpenWRT, Dynamic DNS, SSH, and Firefox

7 則留言:

Stephen 提到...

Hi
請問一下你是用什麼router刷DD-WRT的?
另外就是刷的DD-WRT是什麼版本?

因為我在網路上爬文,好像有提到刷好DD-WRT之後
還需要另外ipkg安裝openssh才能使用SSH -D的功能?

對不起,問題有點多...XD

MOW 提到...

可以刷DD-WRT的很多阿, 到官方網站就有支援的AP列表, 我有用Asus RT-N16, 520GU, WL-500L 都用過, 應該任何一版DD-WRT都有(micro不確定), Standard以上應該有SSH且可以Tunnel

匿名 提到...

大哥您好,請問我在學校用Iphone上網,有些軟體都開不起來,請問這個問題可以用你上面教的方法解決嗎? 還是有其他的方法? VPN可以嗎? 麻煩您教教我,謝謝您!!

MOW 提到...

iphone 有沒有ssh tunnel 軟體我不太確定 不過有內建pptp蠻簡單的, 就跟tunnel一樣, 學校沒有鎖1723port的話就用pptp吧

匿名 提到...

vpn pptp在youtube使用上容易出問題,同樣網路ssh就很順。iphone上聽說用iSSH軟體(好貴)可以連,不然這篇教學文可以參考看看。http://thireus.dareyourmind.net/index.php/iphone-notes/109-iphone-ssh-tunnel-socks-proxy-success-d

匿名 提到...

S60 SSH-Tunnel好像用不了
連線前沒有選項可以設定ssh tunnel的port
進了去黑底白字command部份可以再設定嗎?
但好像沒有browser支援更改socks proxy....

匿名 提到...

網上設定 SSH 的方法有很多, 比較關注的是可作 Tunneling 的軟體, 比如閣下介紹的 SSH Tectia Client, 但是這個好像是付款軟體來的, 有其他的選擇嗎? XD