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的网速早已预料,纯粹是闲着淡疼。。。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章