互联网科技电脑使用技巧 好玩有趣的软件 app 网站春花秋月

利用DNS隧道免费上网

2018-09-16  本文已影响4335人  _oneWay_

一.原理

1.1.dns概述

dns协议最基本的作用是将域名映射为ip地址,让我们在访问网页的时候无需记住复杂的ip地址。
在一些地方,需要我们认证才能上网。假如我们没有认证,大部分的流量都会被过滤,但是往往都会放行dns流量,windows下可通过nslookup或者ping命令查看dns流量是否被过滤:

C:\>nslookup
默认服务器:  UnKnown
Address:  2001:250:6801:5501:2e0:4cff:fe51:c4
> baidu.com
服务器:  UnKnown
Address:  2001:250:6801:5501:2e0:4cff:fe51:c4
非权威应答:
名称:    baidu.com
Addresses:  123.125.115.110          //能够返回ip地址则说明dns流量没有被过滤
          220.181.57.216

C:\>ping baidu.com     
正在 Ping baidu.com [220.181.57.216] 具有 32 字节的数据:
//如果没有认证,一般icmp流量也会被禁用,但是我们可以看到域名成功解析为ip地址,则dns流量没有被过滤。

如果放行了dns流量,就可以使用dns隧道免费上网。在我们学校,可以突破晚上十一点断网的限制,如果对网速没什么要求,连网费都可以不用交。

1.2.dns隧道原理

二.实现步骤

2.1.工具准备
2.2.添加域名解析

我申请的域名是slickghost.com
a.slickghost.com和b.slickghost.com都是子域名(三级域名)
这里需要添加两条记录:

主机记录           记录类型            记录值
b                   A              云主机公网IP
a                   NS           b.slickghost.com

两条记录组合的含义如下:
当我们的主机去查询a.slickghost.com时,由于该域名对应的是一条NS记录,记录值是b.slickghost.com,此时,dns查询请求就会转发到b.slickghost.com这个域名服务器,而这个域名对应一条A记录,该记录值为云主机的公网地址,所以最终dns查询请求最会转发到我们的服务器。

2.3.安装iodine

iodine(点击下载)是一个集成客户端和服务端的工具。这里使用的服务端为linux,客户端为windows,要下载两个版本。

2.3.1.iodine服务端

服务器直接使用wget下载即可,如果有问题,可以先下载好压缩包再传到服务器上。

wget https://code.kryo.se/iodine/iodine-0.7.0.tar.gz  //下载iodine
tar -zxvf iodine-0.7.0.tar.gz  //解压
cd iodine-0.7.0  //解压后进入该目录
make install //安装

安装后之后就会出现一个bin目录,该目录下有两个iodine应用程序,iodine(客户端)和iodined(服务端)。


接着运行命令:
./iodined -f -c -P Password123 192.168.0.1 a.slickghost.com &

参数说明:
-f to keep running in foreground
-c to disable check of client IP/port on each request  
-P password used for authentication (max 32 chars will be used)
Password123就是客户端连接服务器时需要用到的密码

此时DNS隧道服务端就部署完成了,等待客户端的连接。
可以使用iodine官方提供的工具测试服务端是否搭建成功:测试工具
2.3.1.iodine客户端

客户端需要一个TAP网卡,下载一个六快拨或者openvpn,安装完之后就会多出一块网卡。
六快拨下载地址

解压windows版iodine后在管理员模式下运行命令:

iodine -P Password123 -f 公网地址 a.slickghost.com

至此,DNS隧道就搭建完成了。这时候应该要能够ping通刚刚我们在服务器指定的IP:192.168.0.1。



创建dns隧道客户端时,其与服务端协商,并自动帮我们配置好了TAP网卡的IP地址。



刚刚ping的时候使用的就是这个虚拟网卡。
2.4.使用代理

我们已经把dns隧道搭建好了。但是现在应用程序的流量没有被指定通过这个隧道来走,我们使用ssr全局代理+Proxifier来解决这个问题。

2.4.1.服务器安装ssr

具体安装步骤参照:ssr搭建教程

2.4.2.客户端ssr设置

网上下载一个ssr客户端,进行如下配置


服务器ip是使用iodine创建隧道服务端时指定的ip。
服务器端口是安装ssr服务端时指定的端口。
将客户端ssr设置为全局代理之后,浏览器就可以绕过认证上网了。
2.4.2.Proxifier设置

ssr只能让我们使用浏览器访问网页的时候绕过认证,其他的应用程序还是不能上网,我们需要用Proxifier将本地应用程序的流量转到ssr代理,从而能够利用dns隧道。

打开Proxifier之后,会自动检测可走ssr代理:



点击确定后就会自动创建一个规则——直连到SSR
若检测不到,我们可以手动创建:配置文件——代理规则——添加。



这时候电脑所有的应用程序都通过Proxifier走ssr代理,而原来我们的浏览器已经走ssr代理了,导致冲突,需要再添加一条规则,让你用到的浏览器不需要通过Proxifier。我平时使用的是firefox

添加好以上两条规则之后,所有的应用程序就都可以上网了。
登个tim,听听音乐,刷个网页啥还是没问题的。如果你的隧道服务器在香港或者国外,还可以过GFW。


上一篇 下一篇

猜你喜欢

热点阅读