1、问题场景

在学校是如果校园网没钱了,难道就不能上网了????

对于从事技术的人来说尤其是学计算机出身的人来说这是不能容忍的

我们看下面场景:当我们校园网没有认证时,连接百度时会出现下面情景:

并且此时ping baidu.com会发现是ping不通的

但是我们可以发现这个时候DNS查询是好用的,如下所示:

并且我们发现这个查询是通过我们学校的DNS服务器查询到的,也就是我们可以绕过校园网认证直接去DNS服务器上进行DNS查询,那么我们就有办法通过DNS伪装进行上网了。同理下面的场景。

办公电脑通过防火墙与互联网相连,防火墙被配置为仅允许DNS数据通过。在此场景下,办公电脑显然无法直接访问互联网。现在我们想做的是通过使用dns2tcp建立DNS隧道,使得办公电脑可以访问互联网。

许多大学的校园网在连接后,打开浏览器会自动跳转到身份认证页面。在认证前,是无法访问互联网的,但一般来说,其DNS解析是可用的。这便是上述问题场景中的一个实例。另一个实例是有些公司的网络出口处有防火墙阻止了普通员工的办公电脑访问互联网的,但有时防火墙的配置会允许DNS数据通过。

2、预备知识

我们假设读者对DNS有最基本的了解,若不了解可先阅读《百度百科:DNS》。这里要介绍的是NS记录。以下内容摘自《阿里云-用户指南-记录类型》。

NS 记录

(1)什么情况下会用到NS记录?

如果需要把子域名交给其他DNS服务商解析,就需要添加NS记录。

(2)NS记录的添加方式

记录类型为NS。

主机记录处填子域名(比如需要将opo.abc.com的解析授权给其他DNS服务器,只需要在主机记录处填写opo即可,NS记录的主机记录(RR值)不能为空,主机记录@不能作为NS记录使用,且NS记录不支持泛解析【将所有子域名解析到同一地址】,授权出去的子域名不会影响其他子域名的正常解析)。

线路类型(默认为必填项,否则会导致部分用户无法解析)。

NS记录值,NS向下授权,请填写DNS域名记录值为要授权的DNS服务器域名,为了保证服务可靠性,建议您添加至少2组DNS服务(例如:ns1.alidns.com, ns2.alidns.com)。

TTL不需要填写,添加时系统会自动生成,默认为600秒(TTL为缓存时间,数值越小,修改记录各地生效时间越快)。

NS记录不是在设置某个域名的DNS服务器,而是在设置某个子域名的DNS服务器。理解这一点对于成功搭建DNS隧道至关重要。

例如我有域名“werner.wiki”,添加NS记录类型的解析,主机记录值为“test”,记录值为“dns.my.com”。则此记录生效后,所有关于“test.werner.wiki”及其子域名的DNS查询,都会找DNS服务器“dns.my.com”。

3、原材料

为了成功搭建DNS隧道,我们需要一台位于互联网中的(而不是在防火墙里的)服务器,我们将要搭建的隧道的一头是办公电脑,另一头便是这台服务器。在实践中,我们常常会买一台云服务器或vps来搭建DNS隧道。由于DNS的敏感性,这台服务器最好是在中国大陆。为了进行演示,我买了一台腾讯云的云服务器(刚好有快要过期的代金券~)。

我们还需要一个可以设置解析的域名。这个域名是什么无所谓,只要能设置解析就行。所以可以买一个很便宜的域名,第一年的价格在几块钱。在这篇文章中,我们以guojun.tk为例

4、开始搭建

1 设置域名解析(两种类型的域名解析非常重要,我本人掉坑很久)

首先添加一条A类解析,主机记录为“dns”,记录值为“118.xx.xx.120”,这个IP地址就是腾讯云服务器的公网IP地址。

然后添加一条NS解析,主机记录为“dns2tcp”,记录值为“dns.werner.wiki”。

这两条域名解析如下图所示。

这两条域名解析做了什么?(其实就是DNS欺骗)

第一条A类解析是在告诉域名系统,dns.guojun.tk的具体ip地址

第二条NS解析相当于新建一台域名服务器,其实就是在告诉这个域名系统,想要知道“dns2tcp.guojun.tk”的IP地址,就去问这个域名服务器“dns.guojun.tk”(相当于一台域名服务器。),事实上这个域名的服务器的地址前面已经给出了,所以DNS查询数据包就会去dns.guojun.tk这个域名服务器中查询dns2tcp.guojun.tk的ip地址,那么这个DNS查询数据包就会最终到达dns.guojun.tk这个服务器上面,事实上这个只是伪装的DNS数据包。

如何验证域名解析设置是否成功?

在随便一台电脑上ping域名“dns.guojun.tk",若能ping通,且显示的IP地址正确,说明第一条A类解析设置成功并已生效。

在我们自己的服务器上运行抓包,抓目的端口是53的udp包,命令是:

tcpdump -n -i eth0 udp dst port 53

53端口是DNS协议使用的端口。注意上述命令中的参数“eth0”,含义是网卡接口名,在不同的服务器中可能不同。

然后在随便一台电脑上运行命令:

nslookup dns2tcp.guojun.tk

这条命令是在对域名“dns2tcp.guojun.tk”进行查询。如前所述,若我们设置的域名解析生效,则对此域名的DNS查询,会最终被转发到“dns.guojun.tk”,而“dns.guojun.tk”的IP地址是“118.xx.xx.120”,也就是我们自己的服务器上的的公网IP地址。

查看我们自己的云服务器上的抓包情况,若抓到对域名“dns2tcp.guojun.tk”进行查询的DNS请求数据包,则说明第二条NS解析设置成功并已生效。

抓到的数据包如下图所示。图中的目的IP地址是腾讯云服务器的内网IP地址,所以我没有打码。

仔细分析上面图片,其实就是DNS查询数据包先去学校的DNS服务器上面查询,找不到之后,然后去根域名服务器guojun.tk找到了腾讯的域名服务器,腾讯的域名服务器告诉这个数据包去找dns.guojun.tk这个域名服务器,最终数据包达到了我们自己的服务器上面。

3、服务器端软件配置

安装配置dns2tcp

在我们自己的云服务器上,我们首先需要安装dns2tcp,命令如下:

sudo apt-get install dns2tcp

安装完成后打开配置文件“/etc/dns2tcpd.conf”,将其中内容修改为:

listen = 192.168.0.143 #这个是内网的ip地址,不能是127.0.0.1这个只能与本机通信
port = 53
user = nobody
chroot = /tmp
domain = dns2tcp.guojun.tk
reources = ssh:127.0.0.1:22,socks:127.0.0.1:1082,http:127.0.0.1:3128

内网与外网的理解,记住,其实我们每一台电脑都是在一个内网里面,如果电脑有公网ip的话,那么就会将这个内网ip地址与公网ip地址绑定在一起,应该是有某种方式(具体目前我还不知道,也就是数据包带着的是公网ip,但是进入内网之后有个软件可以实现这个公网ip定位到内网Ip,这个和Net技术有点相似。

启动dns2tcp

输入命令:

dns2tcpd -f /etc/dns2tcpd.conf -F -d 2
#完成后如下所示

window下载dns2tcpc.exe 该工具

具体连接如下:

https://download.csdn.net/download/a15608445683/79527478

CMD下运行软件 — 运行之后千万不要关闭该命令提示符

dns2tcpc.exe -r ssh -z dns2tcp.guojun.tk -l 8888 -d 2

-r 后接服务名称<ssh/socks/http中的任意一个>
-z 后接你设置的NS记录,和你的VPS公网ip
-l 后接本地端口,随便一个常用端口就行
-d 开启 Debug
Xshell 新建会话 IP:127.0.0.1 端口8888

进行连接,然后会要求你输入服务器的账号密码。选择记住密码,方便下次使用。
然后这个时候。运行dns2tcpc的命令你个提示符会出现大量数据,说明电脑与服务器已经在传输数据了

打开Internet属性,依次选择 连接–局域网(LAN)设置–为LAN使用代理服务器–高级
设置套接字 为 127.0.0.1 端口是1080 ,确认即可

dns2tcp搭建DNS隧道绕过校园网相关推荐

  1. 使用DNS2TCP搭建DNS隧道,绕过网络认证,实现免验证上网

    使用DNS2TCP搭建DNS隧道,绕过网络认证,实现免验证上网 正常情况下,当我们连上酒店或者其他需要验证才可以使用的网络后,虽然上不了网,但是我们的计算机却分配到了IP地址(不分配IP地址web认证 ...

  2. 使用dns2tcp搭建DNS隧道

    首发于 若水斋 0x00 问题场景 假设有如下图所示的问题场景. 办公电脑通过防火墙与互联网相连,防火墙被配置为仅允许DNS数据通过.在此场景下,办公电脑显然无法直接访问互联网.现在我们想做的是通过使 ...

  3. 建立DNS隧道绕过校园网认证

    建立DNS隧道绕过校园网认证 因为之前在本科的时候破解过校园网三次,主要就是利用其业务逻辑上的漏洞.53端口未过滤包.重放攻击的手段,然后就是一个博弈的过程,这三次加起来用了大概有一年的时间就被完全堵 ...

  4. 利用DNS隧道绕过上网认证

    很久之前写的文章,因为其他平台被和谐了,修改一些内容重新发布,其中使用的软件版本可能比较低. 一.原理 1.1.dns概述 dns协议最基本的作用是将域名映射为ip地址,让我们在访问网页的时候无需记住 ...

  5. dnscat2搭建dns隧道

    域名购买网站:https://dcc.godaddy.com/ 购买域名,并且注册网站,应用该模块 安装服务端: apt-get install gem apt-get install ruby-de ...

  6. win10搭建代理服务器实现绕过校园网的共享限制--从入门到放弃

    博主所在学校特别坑爹,校园网被电信一家垄断了,而且最恶心的还是电信要求一条网线只能供一台电脑上网,不许接路由器共享网络= =- (还有电信2M价格是380+每年,20m是500每年,而且网速都很慢= ...

  7. DNS隧道之DNS2TCP实现——dns2tcpc必须带server IP才可以,此外ssh可以穿过墙的,设置代理上网...

    我自己的命令: server端: dns2tcpd -F -d 1 -f ./dns2tcpd.conf 输出: 09:08:59 : Debug options.c:97 Add resource ...

  8. DNS隧道之DNS2TCP使用心得教程——是可以用来穿透qiang的,ubuntu下直接apt install dns2tcp...

    DNS隧道之DNS2TCP使用心得教程 转自:http://blog.creke.net/750.html DNS2TCP是在上次DNS隧道大检阅时提到的一个DNS隧道. 在2010年6月的更新(也是 ...

  9. 关于最近研究的绕过某校园网认证登录-DNS隧道-dns2tcp

    原理:dns隧道 条件:一台能联网的有独立IP的linux服务器以及能设置NS记录的域名. 总体思路:服务器架设dns2tcp, 域名提供商设置NS记录,客户端运行dns2tcpc 本文服务器采用阿里 ...

最新文章

  1. 读书笔记之《习惯的力量》
  2. linux查看节点使用进程后退出,Linux通过端口号查看使用进程-结束进程
  3. sql超低级用法(防遗忘)
  4. System类+Math类+Arrays类
  5. C++ 继承 | 对象切割、菱形继承、虚继承、对象组合
  6. 为什么python 为什么没有接口_python做接口测试的必要性
  7. 网页中嵌入JavaScript+事件触发程序
  8. 嘉年华回顾丨Eygle带你领略数据库技术和生态的发展演进
  9. Spring Cloud基础入门
  10. 100万并发连接服务器笔记之Java Netty处理1M连接会怎么样
  11. ORACLE 日期转换
  12. 【渝粤题库】广东开放大学 大学生创业基础 形成性考核
  13. Nginx作为静态资源服务器
  14. Axure的基本功能
  15. 语音识别工具Sphinx4
  16. 世界上所有值得收藏的书单(持续更新)
  17. 新世达380修改服务器密码,新时达AS380利用小键盘调试说明
  18. 微信开放平台修改微信分享的小图标后,移动端显示的分享的小图标未改变的问题解决
  19. 【blue bridge cup】笔记
  20. 计算机编程背那个英语词汇,编程英语词汇

热门文章

  1. java反编译超简单教程
  2. 推荐系统中常用的embedding方法
  3. SqlYong连接MySql数据时,出现错误代码2003的解决方法
  4. spring Profile
  5. 郑州大学计算机二本专业排名,郑州大学的好二本专业
  6. 511遇见易语言API模块线程挂起(SuspendThread)
  7. jmeter——BeanShell 预处理程序
  8. spring boot启动类启动 错误: 找不到或无法加载主类 xxx.xxxx.Application 的解决方法
  9. java实现冗余校验_Java中循环冗余校验(CRC32)的实现
  10. 服务端性能测试-为什么一般性能测试都是在局域网中进行的