• 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上网差不多。

     

  • 相关阅读:
    c# 国际化国家代码
    转:Oracle Connect By用法
    函数关系: 单射 满射 双射
    python 乱码
    2010年下半年全国计算机技术与软件专业技术资格(水平)考试试题下载
    HDU1068 Girls and Boys 最大独立子集
    HDU1151 Air Raid 最小简单路径覆盖
    POJ2411 Mondriaan's Dream 状态压缩+DP
    HDU1556 方格取数(1) 状态压缩+dp
    POJ2239 Selecting Courses 二分匹配
  • 原文地址:https://www.cnblogs.com/bonelee/p/7927688.html
Copyright © 2020-2023  润新知