在2010年6月的更新(也是迄今為止最新的更新)后,其源代碼支持編譯為Windows平台的可執行程序。而且此工具使用C語言開發編寫,不需要TUN/TAP,所以大大加強了它的可用性。
下載
當前最新的0.5.2版源代碼下載請點擊這里
Windows下客戶端可執行文件下載請點擊這里
安裝
本配置所在環境為Linux。以下命令的執行均以root用戶身份執行,如果不是root用戶,CentOS的請用“su -”,Ubuntu請在各個命令前加上“sudo”,分別提權到root用戶權限。
下載、解壓、編譯、安裝
wget http://www.hsc.fr/ressources/outils/dns2tcp/download/dns2tcp-0.5.2.tar.gz tar zxf dns2tcp-0.5.2.tar.gz cd dns2tcp-0.5.2 ./configure make make install
配置DNS2TCP服務端
首先,在域名解析那里添加以下兩條記錄。將你的某個域名(這里以creke.net為例)開個二級域名a.creke.net,類型為NS,NS記錄指向b.creke.net。然后將b.creke.net建立A記錄指向你的Linux服務器IP(這里以1.2.3.4為例)。如下表所示。
a.creke.net NS b.creke.net
b.creke.net A 1.2.3.4
在/etc目錄建立一個名為dns2tcpd.conf的文件,然后輸入以下配置:
listen = 1.2.3.4(Linux服務器的IP) port = 53 user = nobody chroot = /var/empty/dns2tcp/ domain = a.creke.net(上面配置NS記錄的域名) resources = ssh:127.0.0.1:22,socks:127.0.0.1:1082,http:127.0.0.1:8082
最后的resources里面配置的是dns2tcp供客戶端使用的資源。作用是:客戶端在本地監聽一個端口,並指定使用的資源,當有數據往端口傳送后,dns2tcp客戶端將數據用DNS協議傳動到服務器,然后服務器將數據轉發到對應的資源配置的端口中。
好了,DNS2TCP的服務端配置到此完畢。接下來就是要慢慢等待域名記錄的生效了(一般也很快)。
啟動與關閉DNS2TCP服務端
以下命令用於啟動DNS2TCP的服務端:
dns2tcpd -f /etc/dns2tcpd.conf
以下命令用於關閉DNS2TCP的服務端:
killall dns2tcpd
啟動DNS2TCP客戶端
這里再次提醒,要等待a.creke.net的NS記錄生效后,才能夠繼續正常使用客戶端。查詢是否生效可以使用從各個在線網站查詢。
啟動DNS2TCP客戶端的命令如下;
dns2tcpc -c -d 1 -l 8118 -r http -z a.creke.net
其中:-c表示啟用數據壓縮;-d表示啟動調試,1為調試等級;-l表示監聽本地端口,8118為端口名;-r為使用服務端上的哪個資源,http為資源名;-z后的a.creke.net為前面配置的NS記錄的域名。
然后就可以通過將瀏覽器的代理服務器地址設為127.0.0.1:8118,代理類型為HTTP代理,來通過DNS隧道上網了。
如果要使用SOCKS代理,則為:
dns2tcpc -c -d 1 -l 7070 -r socks -z a.creke.net
以上是通過系統DNS來發送DNS請求的,如果要通過某個DNS服務器,如87.65.43.21來發送DNS請求,則為:
dns2tcpc -c -d 1 -l 8118 -r http -z a.creke.net 87.65.43.21
這里要注意,需要首先在Linux服務器配置好HTTP代理或者SOCKS代理。才能利用DNS隧道轉發數據包來實現代理。具體可以參考如何使用Kingate假設HTTP代理和SOCKS代理。
就是這樣,采用DNS2TCP搭建了DNS隧道,慢慢折騰吧!
有趣的是,可以用dns2tcp技術繞過校園網認證:https://www.cnblogs.com/nkqlhqc/p/7805837.html
參考鏈接:https://www.cnblogs.com/bonelee/p/7927688.html