那天看到云風的一篇博客《DNS 隧道》,一笑而過,收藏下來,打算有空試下。後來一直很忙,這事也就擱下不了了之了。
後來我發現中國移動送每個月20M的wifi,一直到年底,於是我每到一個地方就搜有沒有中國移動的wifi。中秋那幾天在MM宿舍裏面,習慣性打開wifi看看,沒有發現中國移動的,發現中國聯通的,而且沒有加密。連上去后發現不管上哪個網址都是自動跳轉到聯通的用戶密碼頁面,於是我就想起了這DNS隧道,開個終端ping了幾個網址,發現DNS是能正確解析的,這下還真有了實用價值- -b。好吧,如果中國聯通的DNS有感覺的話,現在肯定菊花一緊,背後涼颼颼的……
云風那篇博客只講了原理,沒有講實現方法,提到還有iodine這麽一個東西。我進去看了看,裏面有個連接“HowToSetup”,這篇文章底下還有個連接“Guide for debian server and win32 client”,這篇文章就詳細多了。後來我還發現這篇文章底下的評論還有中文,帶了一個連接,進去看看,果然是一個中國人寫的設置方法。於是我就對照著看……
首先註冊域名,搞一個A紀錄,然後再搞一個NS紀錄。這很簡單。我註冊了一個免費的.co.cc的域名,因爲我不想隨便亂用我的netson-cn.net。
然後往服務器的安裝源列表/etc/apt/sources.list文件裏面加一個源:deb http://ftp.debian.org/debian sid main
然後就是安裝iodine了:
1 2 | #apt-get update #apt-get -t natty install iodine |
裝完之後把新加的源去掉,畢竟sid的源還是少用為妙。
然後就可以跑了:
1 | iodined -c -f 10.0.0.1 -P yourpasswordhere iodine.yourdomain.com |
其中,10.0.0.1可以隨便換一個内網IP,我架的VPN好像用的是這個IP,所以我實際上換了個172開頭的,中間兩個數都不是0的IP。yourpasswordhere隨便搞一個字符串儅密碼,iodine.yourdomain.com填剛剛設置的域名NS紀錄。
跑起來有可能會說找不到tun設備,那就建立一個好了:
1 2 | mkdir /dev/net mknod /dev/net/tun c 10 200 |
運行的結果應該是類似這樣的:
1 2 3 4 5 | Opened dns0 Setting IP of dns0 to 内網IP Setting MTU of dns0 to 1130 Opened UDP socket Listening to dns for domain 域名NS紀錄 |
這樣子就OK了。可以搞客戶端了。
Windows客戶端要兩個軟件,一個是OpenVpn,只需要裝其中的“TAP Virtual Ethernet Adapter”,別的不需要。另外就是iodine的客戶端程序了,在這裡可以下載。
iodine的客戶端程序解壓就可以用,不用安裝。進入命令行提示符(如果是Win7要以管理員身份運行),然後到解壓后的文件夾的bin目錄底下運行:
1 | iodine -f -P 剛才設置的密碼 VPS公網IP 域名NS紀錄 |
然後開一個新的命令行窗口應該就能ping通服務器那個内網地址了。然後SSH也可以,VPN也可以,socket5也可以……怎麽搞都行啦。
下一步就是看看客戶端是Linux的話要怎麽搞,爭取在我的手機上也能跑起來:D。
发表回复