dns2tcp 可透過 DNS 查詢建立資料傳輸的 tunnel。
例如在提供免費 WiFi 的場所,通常在連上 WiFi AP 後,會把打開一個網址,該網頁要求填寫帳號與密碼,然後才能透過 WiFi 上網,如果沒有帳號,再打開網址的過程中會發現,DNS 封包是被允許的,可查詢某個網域的 IP,這時候,就可利用 dns2tcp 實現上網的功能。
安裝
wget https://github.com/alex-sector/dns2tcp/archive/refs/tags/v0.5.2.tar.gz -O dns2tcp.tgz
tar zxvf dns2tcp.tgz
cd dns2tcp-0.5.2
./configure
make
make install
DNS
修改自己的 domain name server 設定,增加兩個 record
tcp IN NS ns.kokome.com.tw
ns IN A 211.72.214.206
kokome.com.tw 的 DNS server 會產生一個新的 ns.kokome.com.tw 這個 name server 的 A record,將 ns.kokome.com.tw 轉址到 211.72.214.206。然後當有 tcp.kokome.com.tw 的 domain name 查詢時,會因為 NS 設定,把 dns 查詢轉問 ns.kokome.com.tw。
把 dns2tcp 的 server 服務安裝在 ns.kokome.com.tw
實測時發現不需要設定這個 DNS NS forward也沒關係,因為在使用 dns2tcpc 時,可直接指定 DNS server 的 IP。
設定
產生設定檔 /etc/dns2tcpd.conf,內容為
listen = 0.0.0.0
port = 53
user = nobody
chroot = /tmp
domain = tcp.kokome.com.tw
resources = ssh:127.0.0.1:22,socks:127.0.0.1:1080,http:127.0.0.1:80
以上面的設定來說,ssh 會轉換成連到本機的 sshd TCP Port 22,http 轉換連到本機的 TCP Port 80,socks server 轉至 TCP 1080。
當然本機需要另外安裝 httpd 與 socks server,才有辦法使用。
使用
在 tcp.kokome.com.tw 機器,用以下指令啟動 dns2tcpd,server 的部分,提供 DNS service,並將資料轉換成某個 TCP traffic
dns2tcpd -f /etc/dns2tcpd.conf -F -d 2
ssh
在另一台內網的機器,啟動 dns2tcp client,這個指令會在機器上開啟 TCP Port 8888,提供 ssh service,最後面的 server IP,就是遠端提供 tcp.kokome.com.tw DNS query 的機器的 IP
dns2tcpc -l 8888 -d 2 -r ssh -z tcp.kokome.com.tw 211.72.214.206
然後就能用 TCP 8888 連接到遠端 tcp.kokome.com.tw 的 sshd service
ssh root@127.0.0.1 -p 8888
http
在另一台內網的機器,啟動 dns2tcp client,這個指令會在機器上開啟 TCP Port 8888,提供 http service,最後面的 server IP,就是遠端提供 tcp.kokome.com.tw DNS query 的機器的 IP
dns2tcpc -c -d 1 -l 2222 -r http -z tcp.kokome.com.tw 211.72.214.206
然後就能用 browser,瀏覽網址 http://127.0.0.1:2222
沒有留言:
張貼留言