DNS隧道之DNS2TCP使用心得教程

2011年7月23日 | 分类: 乱七八糟 | 标签: , , ,

DNS2TCP是在上次DNS隧道大检阅时提到的一个DNS隧道。

在2010年6月的更新(也是迄今为止最新的更新)后,其源代码支持编译为Windows平台的可执行程序。而且此工具使用C语言开发编写,不需要TUN/TAP,所以大大加强了它的可用性。

下载

当前最新的0.5.2版源代码下载请点击这里

Windows下客户端可执行文件下载请点击这里

安装DNS2TCP

本配置所在环境为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隧道,慢慢折腾吧!

DNS隧道大检阅

研究了一天的DNS隧道,现在汇总一些关于我搜到的各种DNS隧道的信息。

1、OzymanDNS

官方网站:http://www.dnstunnel.de/

操作系统:跨平台

实现语言:Perl

更新程度:最初版本只有0.1,有各个爱好者的修改版,如via1via2via3,等等。

备注:挺复杂的,我没搞成功。

2、tcp-over-dns

官方网站:http://analogbit.com/software/tcp-over-dns

操作系统:跨平台

实现语言:JAVA

更新程度:最新版本1.2,2011年4月更新。

备注:JAVA编写的,由于服务器没装JDK,故我没用过。

3、heyoka

官方网站:http://heyoka.sourceforge.net/

操作系统:Win2003

实现语言:C

更新程度:最新版本0.1.3-alpha,2009年更新。

备注:服务器不是Windows,故我没用过。作者说很快会更新UNIX版代码,不过一直没动静。

4、iodine

官方网站:http://code.kryo.se/iodine/

操作系统:Windows/Linux

实现语言:C

更新程度:最新版本0.6.0-rc1,2010年6月更新。

备注:需要TAP/TUN支持。不过很多最初想用OzymanDNS的人都转投iodine,称其为“更好用的DNS隧道”。其官网也说自己的速度比其它的同类软件更快。

5、dns2tcp

官方网站:http://www.hsc.fr/ressources/outils/dns2tcp/index.html.en

操作系统:Linux

实现语言:C

更新程度:最新版本0.5.2,2010年6月更新。

备注:最新版代码可以在Windows下编译运行,网上也有人编译了Windows版本(via)。

最后文不切题地提一个软件,叫ssocks,是一个轻量级的socks代理服务端。

原文http://blog.creke.net/750.html  和  http://blog.creke.net/749.html

  1. wwww
    2016年10月3日21:37

    现在还能用么

  2. fish
    2011年7月24日22:21

    DNS2TCP是个鸡肋,无法用来翻墙

    • iGFW
      2011年7月25日11:24

      这个主要是DNS隧道上网的,翻墙不用这么麻烦。