DNS隧道之突破運營商認證

類似這樣的界面相信許多人都很熟悉: 
chinanet.PNG 
像這種公共熱點確實遍地都是,但有什麼方法可以真的突破網絡限制“蹭"到網呢(這裏不討論通過各種方式登陸方式驗證上網的)。上帝爲你關上一扇門的同時還會給你打開一扇門嗎?細心的人可能發現其實在驗證上網時,服務器並不是阻止了所有請求,dns包是可以通過的,所以有人就想在dns的突破,衆所周知dns服務是通過udp53端口來實現通信的,那麼是否可以通過發送目的端口爲udp53的數據包,如果網關服務器不過濾的話,從而達到跟監聽53端口的運行着openvpn服務的遠程服務器通信呢。其實這樣確實可以,但是那是在幾年之前,現在基本上已經過濾了不是單純dns請求的數據包了,所以通過openvpn來突破已經不可行了。但這不代表着沒有方法解決,其實只要稍微變通一下就行了,仔細分析一下,網關服務器只放行dns請求包,那麼我們就可以將ip數據包封裝僞造成dns請求包進行穿透,但問題是封裝過後的dns包必須到達遠程代理上網的服務器並進行解析和迴應。於是就需要用到一箇中間域名指定其dns地址爲遠程的代理上網服務器。好吧說了這麼多,現在來實際操作一下。測試環境win7(client)+win2003(server).用到的工具http://code.kryo.se/iodine/,下載解壓到服務端和客戶端。 
首先我們先要設定一下域名的,域名只要是可以設定n/a記錄的就行,我這裏以萬網的域名爲例子,我們只要添加兩條記錄: 
dns.png 
即添加一個dns.tscf.cn子域名的a記錄,並將ip指向代理服務器,同時添加一個ns記錄,指定cn.tscf.cn的域查詢服務器的地址爲dns.tscf.cn,其實目的就是想讓客戶端查詢cn.tscf.cn域名時,能讓dns請求發送到代理服務器(其中其實會有許多迭代查詢的過程,如果可以與非默認的客戶端本地dns服務器進行直接通信的話,可以設置dns中轉地址指向代理服務器)。 
接着就是服務器端的配置: 
首先需要安裝一個tap網絡設配器(可以下載openvpn安裝),用來與客戶端建立通信隧道。接着就是將服務器的上網網卡已nat的形式共享給tap設配器,我意windows自帶的ics方式進行共享,tap會默認設置爲192.168.0.1,同時要關閉各個設配器的防火牆。 
tap.png 
最後進入解壓cmd進入bin文件夾:運行
iodined.exe -f -P tscf 192.168.0.1 cn.tscf.cn

server.PNG 
-f是以foreground運行,-P是設定的密碼,命令的意思就是讓服務端監聽cn.tscf.cn域下dns請求。 
最後配置一下客戶端: 
首先也得先安裝一個tap設配器,同樣就進入bin文件夾,cmd下運行:
iodine.exe -f -P cn.tscf.cn

如果配置沒有錯的話應該就能連上服務器了 
client.png 
ping一下也通了 
ping.png 
但我們發現一個問題,不能上外網,既然都千辛萬苦連上服務器了,那就肯定得上網了。修改一下路由表,cmd下輸入三條命令: 
1. 
route delete 0.0.0.0

(刪除客戶端的默認路由) 
route1.png 
2.
route add 61.147.37.0 mask 255.255.255.0 49.76.168.1

(讓dns包直接從網卡發送) 
route2.png 
3.
route add 0.0.0.0 mask 0.0.0.0 192.168.0.1 

(最後讓所以請求通過tap設配器封裝後發送) 
route3.png 
然後不出意外的話,就可以上網了,打開百度,1秒,2秒,3秒... 

這隻有幾kb的網速早已預料,純粹是閒着淡疼。。。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章