0x01 安裝Dns2TCP
dns2tcp 是一個利用DNS隧道轉發TCP連接的工具,使用C語言開發。
sudo apt-get install dns2tcp
0x02配置dns2tcp
配置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的服務端配置到此完畢。接下來就是要慢慢等待域名記錄的生效了。
0x03啟動與關閉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隧道,慢慢折騰吧!