DNS隧道之DNS2TCP使用心得教程

转自:http://blog.creke.net/750.html

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隧道 dns2tcpd

有些网络的防火墙设置只允许端口53的UDP流量,就不能通过tcp搭建隧道,这种情况下我们可以通过UDP搭建DNS隧道,通过搭建一个DNS服务器委派的子域,这个子域因为使我们自己搭建的主机,这时候就可以通过这个子域搭建DNS隧道,和网络被限制的主机1交互。

主机3为DNS服务器需要设置为固定的IP地址

它的原理是通过DNS请求头域名的信息 TXT记录加密传输信息,我们可以通过抓取DNS隧道数据包,可以看到DNS的查询请求的域名信息test.lab.com前的一串数据,里面就是加密过后的交互数据。DNS隧道建立后,客户端(主机1)还是会不断地发包给服务器端(主机2),类似心跳一样,确认服务器端处于存活状态,保证传输的顺畅。

在主机3上搭建一个DNS服务器,并委派一个子域给主机2,配置转发器,除test.lab.com之外的域名用别的域名地址解析

搭建DNS隧道

在主机2

修改dns2tcpd的配置

vim /etc/dns2tcpd.conf

ssh:127.0.0.1:22

smtp:127.0.0.1:25

socks:127.0.0.1:1080

http:192.168.1.1:80

https:127.0.0.1:8087

在DNS服务器主机2上开启ssh,smtp,socks,http,https服务,开放22,25,1080,80,8087端口

配置一下ssh,使其能够在root权限下使用

主机2开启ssh服务。

service ssh start

主机2开启dns隧道

dns2tcpd -F -d 1 -f /etc/dns2tcpd.conf

主机1通过DNS隧道连接主机2使用ssh服务

dns2tcp -c -k pass123 -d 1 -l 2222 -r ssh -z test.lab.com

-c 启动流量压缩

-d debug查看信息

-l 设置本地侦听端口

-r 指定资源

在主机1上访问2222端口就相当于在主机2上访问的22端口

在主机1另开一个终端

ssh root@127.0.0.1 -p 2222

主机1就通过ssh登录上了主机2

主机1通过DNS隧道连接主机2使用http服务

在主机1上

输入dns2tcp -c -k pass123 -d 1 -l 2222 -r http -z test.lab.com

打开浏览器,输入http://127.0.0.1:2222/,就相当于是在主机2上访问192.168.1.1一样

 

主机1通过DNS隧道连接主机2使用https服务

dns2tcp -c -k pass123 -d 1 -l 7001 -r https -z test.lab.com

DNS隧道设置网关功能

DNS隧道是没有网关功能的,假如想将DNS隧道的客户端主机1作为一个网卡的话,先建立一个DNS隧道里再嵌套一个ssh隧道,用ssh隧道作为一个网关使用

主机3为DNS服务器需要设置为固定的IP地址

主机2开启ssh服务。

service ssh start

主机2开启dns隧道

dns2tcpd -F -d 1 -f /etc/dns2tcpd.conf

主机1通过DNS隧道连接主机2使用ssh服务,将2222端口作为DNS隧道的入口。

dns2tcpc -k pass123 -d 1 -l 2222 -r ssh -z test.lab.com

再再开一个终端,在主机1的DNS隧道里再搭建一个ssh隧道,并作为网关使用

ssh -CfNg root@127.0.0.1 -p 2222 -D 7002

主机1网关搭建好了,在主机4上打开浏览器设置代理,将主机1的ip和端口作为代理

然后主机4就能上网了,就相当于在主机2上网差不多。

转载于:https://www.cnblogs.com/bonelee/p/7927688.html

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

  1. 小米装linux系统教程视频,小米手机 连接在Ubuntu 下调试

    最近的一个项目需要用到linux开发Android程序! 发现Ubuntu有小米开发连接不上!  搞了一个下午才搞成功! 看看吧! 小米手机利用USB连接到Ubuntu 10.04系统.运行下面的命令 ...

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

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

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

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

  4. 使用dns2tcp搭建DNS隧道

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

  5. DNS隧道工具dns2tcp

    DNS隧道工具dns2tcp 在很多网络环境中,防火墙会限制出站流量,主机往往只能访问外网主机有限的几个端口,如DNS的53端口.这时,就可以通过DNS请求和响应机制,建立通信隧道.Kali Linu ...

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

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

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

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

  8. 『DNS隧道工具』— dns2tcp

    一.入坑必读 1.简介 dns2tcp 是一个利用DNS隧道转发TCP连接的工具,使用C语言开发. 使用热度: ★★★★☆ 2.专业词 Type:DNS解析的类型,常见的有:A.CNAME.MX.TX ...

  9. dns2tcp搭建DNS隧道绕过校园网

    1.问题场景 在学校是如果校园网没钱了,难道就不能上网了???? 对于从事技术的人来说尤其是学计算机出身的人来说这是不能容忍的 我们看下面场景:当我们校园网没有认证时,连接百度时会出现下面情景: 并且 ...

最新文章

  1. 向sqlce 里插入和取出一个Image
  2. 亚马逊首席技术官预测2021年将改变世界的八大技术趋势
  3. centos装oracle6,CentOS-6.7下安装Oracle11g
  4. linux 启动rabbitmq 报错:
  5. Spring Boot Spring MVC异常处理原理分析
  6. php的pathinfo,php中PathInfo的用法举例(图文)
  7. 树复制替换id_程序员的进阶课-架构师之路(12)-2-3-4树
  8. 已经被处理的消息不能丢
  9. python发html邮件_python 发送html邮件
  10. gpxclear寄存器写0和写1_画图,搭积木,写对象 [TF 笔记 0]
  11. 【IT笔试面试题整理】给定一个数组a[N]构造数组b [N]
  12. 低版本mysql utf8mb5_记住:永远不要在 MySQL 中使用 UTF-8
  13. AI ProCon倒计时6天:60+业内技术专家,探秘9大核心技术专题
  14. oracle新建一个用户_Kettle 连接oracle将数据保存到Excel
  15. qt中如何使用mysql_qt中如何使用mysql 以及静态编译qt中如何加上mysql(1)
  16. DL-C1-week3-1(build a neural network with one hidden layer)多层感知机的简单实现
  17. Perhaps JAVA_HOME does not point to the JDK的解决方法
  18. Leetcode 739. Daily Temperatures
  19. 易语言 vb c 那个写的程序运行快,VB好还是易语言
  20. java程序设计基础实验_JAVA程序设计基础实验1.doc

热门文章

  1. RabbitMQ的安装(linux篇)
  2. java 设计原则_【无尽的编程之路】(java)-设计模式六大原则
  3. vue 全局排序_搞定VUE [ 一 ]
  4. python 上传文件夹,python – 使用Flask上传文件夹/文件
  5. android setlatesteventinfo 找不到,安卓通知的基本用法
  6. 世界公认最好的记忆方法_世界记忆大师:6种简单实用记忆方法,让孩子成为学霸中学霸...
  7. php点选按钮ajax,php – 在单选按钮上显示div中的数据单击ajax
  8. 【深度学习入门到精通系列】阿里云人工智能平台的使用方法
  9. Activity创建
  10. python绘制科赫雪花(递归)