有些网络的防火墙设置只允许端口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上网差不多。

通过内网的DNS服务器与外网DNS建立DNS隧道

主机1和主机3作为DNS服务器,作为DNS服务器IP地址需要设置为固定的IP地址,主机1的DNS配置上只做转发,将所有的DNS请求都转发给192.168.1.10,主机3委派子域给主机2的ip192.168.1.110,设置域名为test.lab.com

在主机2,停掉openvas防止占用一些特定的端口

开启DNS隧道

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

开启ssh

service ssh start

安装squid3

apt-get install squid3

开启squid

service squid start

在主机4,将DNS地址设置为内网中DNS服务器的ip地址,也就是主机1的ip:1.1.1.11

修改DNS sudo vi /etc/resolv.conf

nameserver 1.1.1.11

连接隧道

dns2tcpc -c -k <password> -d 1 -l 8080 -r http -z test.lab.com

浏览器的代理设置为127.0.0.1:8080,便能上网了,和在主机2上上网一样。

dns隧道 dns2tcpd的更多相关文章

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

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

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

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

  3. DNS隧道实战&&cobaltstrike利用dns隧道

    前言 使用 dns 隧道进行 tcp 通信. 正文 首先配置域名 配置一个 A 记录指向我们的 vps, 然后配置几个 ns 记录,指向刚刚设置的 A 记录 然后在服务端安装 wget https:/ ...

  4. DNS隧道和工具

    DNS Tunneling及相关实现 转自:http://www.freebuf.com/sectool/112076.html DNS Tunneling,是隐蔽信道的一种,通过将其他协议封装在DN ...

  5. 基于常规DNS隧道进行的tcp端口转发dns2tcp的使用

    0x01 安装Dns2TCP dns2tcp 是一个利用DNS隧道转发TCP连接的工具,使用C语言开发. sudo apt-get install dns2tcp 0x02配置dns2tcp 配置DN ...

  6. DNS隧道 iodns

    通过iodns这个工具也能搭建DNS隧道 iodns的优点: 对下行数据不进行编码,速度快 支持多平台 最大16个并发连接 强制密码设定 iodns创建的DNS隧道网段不能喝服务器,客户端同一网段,比 ...

  7. DNS隧道工具iodine

    DNS隧道工具iodine   在受限制的网络中,如果DNS请求没有被限制,就可以通过DNS请求建立隧道而突破网络限制.iodine是Kali Linux提供的一款DNS隧道工具.该工具分为服务器端i ...

  8. DNS隧道通信的检测

    DNS隧道通信的检测 DNS 隧道通信 DNS 隧道通信是C&C常用的通信方式,一般常用的编码方式Base64,Binary编码,NetBios编码等,Hex编码等.且请求的Type一般都是t ...

  9. DNS隧道工具dns2tcp

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

随机推荐

  1. tkinter widget

    tkinter messagebox

  2. Android开发之SurfaceView

    SurfaceView介绍 通常情况程序的View和用户响应都是在同一个线程中处理的,这也是为什么处理长时间事件(例如访问网络)需要放到另外的线程中去(防止阻塞当前UI线程的操作和绘制).但是在其他线 ...

  3. 表格线边框重复css解决方法

    1.td 的边框和table 的边框重叠 .table { border-left:1px solid #dedede; border-top:1px solid #dedede;} .td { bo ...

  4. 没有cv2.so文件

    最近发现opencv安装的有问题,发现少了cv2.so文件,这个文件是给python的调度包. 查来查去,发现cmake的时候有这个: -- Found PythonInterp: /usr/bin/ ...

  5. container_of使用小结

    先上演示代码 #include <stdio.h> #include <stdlib.h> /* offsetof example */ #include <stddef ...

  6. [转]让linux的coredump文件

    原文标题:gdb结合coredump定位崩溃进程 原文:http://lazycat.is-programmer.com/posts/31925.html 这个文件中说的方法我试过了,在CentOS和 ...

  7. vue eslint 代码自动格式化

    vue-cli 代码风格为 JavaScript Standard Style 代码检查规范严格,一不小心就无法运行,使用eslint的autoFixOnSave可以在保存代码的时候自动格式化代码 V ...

  8. binlog开启和查看

    1. 首先需要将mysql的binlog日志打开.默认是关闭的. 参考网址:Windows下Mysql5.7开启binlog步骤及注意事项(https://www.cnblogs.com/wangwu ...

  9. 尚硅谷springboot学习1-简介

    以前看过springboot的相关知识,当时偷懒没有做笔记,现在忘得已经差不多了,现在趁着过年有时间,再学习一遍,并做下笔记以备忘. 特性 Spring Boot来简化Spring应用开发,约定大于配 ...

  10. unity admob

    插件地址:https://github.com/unity-plugins/Unity-Admob 2017.04.11测试使用发现GoogleMobileAds.framework有问题,导致出现U ...