DNS隧道之DNS2TCP使用心得教程——是可以用来穿透qiang的,ubuntu下直接apt install dns2tcp
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隧道,慢慢折腾吧!
有些网络的防火墙设置只允许端口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隧道之DNS2TCP使用心得教程——是可以用来穿透qiang的,ubuntu下直接apt install dns2tcp的更多相关文章
- BIND简易教程(0):在Ubuntu下源码安装BIND(其实跟前面的教程没太大关系)
之前介绍过BIND的基本使用啦.关于BIND的入门级使用方法见:http://www.cnblogs.com/anpengapple/p/5877661.html简易教程系列,本篇只讲BIND安装. ...
- DNS隧道工具dns2tcp
DNS隧道工具dns2tcp 在很多网络环境中,防火墙会限制出站流量,主机往往只能访问外网主机有限的几个端口,如DNS的53端口.这时,就可以通过DNS请求和响应机制,建立通信隧道.Kali Li ...
- DNS隧道之DNS2TCP实现——dns2tcpc必须带server IP才可以,此外ssh可以穿过墙的,设置代理上网
我自己的命令: server端: dns2tcpd -F -d 1 -f ./dns2tcpd.conf 输出: 09:08:59 : Debug options.c:97 Add resource ...
- 基于常规DNS隧道进行的tcp端口转发dns2tcp的使用
0x01 安装Dns2TCP dns2tcp 是一个利用DNS隧道转发TCP连接的工具,使用C语言开发. sudo apt-get install dns2tcp 0x02配置dns2tcp 配置DN ...
- dns隧道 dns2tcpd
有些网络的防火墙设置只允许端口53的UDP流量,就不能通过tcp搭建隧道,这种情况下我们可以通过UDP搭建DNS隧道,通过搭建一个DNS服务器委派的子域,这个子域因为使我们自己搭建的主机,这时候就可以 ...
- DNS隧道工具汇总——补充,还有IP over DNS的工具NSTX、Iodine、DNSCat
github上有一堆的工具:https://github.com/search?utf8=%E2%9C%93&q=DNS+tunnel+&type= DNS隧道大检阅 研究了一天的DN ...
- DNS隧道和工具
DNS Tunneling及相关实现 转自:http://www.freebuf.com/sectool/112076.html DNS Tunneling,是隐蔽信道的一种,通过将其他协议封装在DN ...
- dns隧道攻击原理及常用工具流量分析
DNS协议是一种请求应答协议,也是一种可用于应用层的隧道技术.虽然DNS流量的异常变化可能会被发现,但是在基于传统socket隧道已经濒临淘汰,TCP.UDP通信大量被安全设备拦截的大背景下,DNS. ...
- DNS隧道 iodns
通过iodns这个工具也能搭建DNS隧道 iodns的优点: 对下行数据不进行编码,速度快 支持多平台 最大16个并发连接 强制密码设定 iodns创建的DNS隧道网段不能喝服务器,客户端同一网段,比 ...
随机推荐
- UESTC149 解救小Q
小Q被邪恶的大魔王困在了迷宫里,love8909决定去解救她.迷宫里面有一些陷阱,一旦走到陷阱里,就会被困身亡:(,迷宫里还有一些古老的传送阵,一旦走到传送阵上,会强制被传送到传送阵的另一头.现在请你 ...
- YTU 2416: C语言习题 成绩输出
2416: C语言习题 成绩输出 时间限制: 1 Sec 内存限制: 128 MB 提交: 1111 解决: 417 题目描述 输入n(<=10)个学生的姓名.学号和成绩,将其中不及格者的姓 ...
- 主机与虚拟机互ping
1.设置虚拟机网络连接方式(如下图): 2.设置主机和虚拟机的ip为同一个网段,如主机ip:192.168.28.1,虚拟机ip:192.168.28.128 3.如果相互还是ping不通,就检查一下 ...
- JavaScript对象模型-执行模型
数据类型基本数据类型基本数据类型是JS语言最底层的实现.简单数值类型: 有Undefined, Null, Boolean, Number和String.注意,描述中的英文单词在这里仅指数据类型的名称 ...
- hdu 3333(树状数组 + 离线操作)
Turing Tree Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- log4j没有作用,druid的日志信息还打印在控制台的解决办法
log4j没有实现类,需引入slf4j实现
- MongoDB安全事件的防范与反思
此文已由作者温正湖授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 近段时间来,全球范围内数以万计的MongoDB实例被攻击,作为旨在为用户提供最优MongoDB云服务的网易蜂 ...
- linux 安装和远程连接
准备工作: 1.请安装好vmware 软件 2.linux 镜像包 3.putty 远程连接工具 任务: 设置好root 账号和普通账号 及设置网络 连接最简单使用桥接 只能ping 通 本机 nat ...
- ES的简单增删改查
1.查看全部索引 GET:192.168.100.102:9200/_cat/indices 2.创建名为news的索引 PUT:192.168.100.102:9200/news 3.新增docum ...
- hdu 2121 Ice_cream’s world II (无定根最小树形图)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2121 题目大意: 有n个点,有m条单向路,问这n个点组成最小树形图的最小花费. 解题思路: 1:构造 ...