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

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介:

我自己的命令:

server端:

复制代码
dns2tcpd -F -d 1 -f ./dns2tcpd.conf
输出:
09:08:59 : Debug options.c:97    Add resource ssh:127.0.0.1 port 22
09:08:59 : Debug options.c:97    Add resource smtp:127.0.0.1 port 25
09:08:59 : Debug options.c:97    Add resource socks:127.0.0.1 port 1080
09:08:59 : Debug options.c:97    Add resource http:127.0.0.1 port 80
09:08:59 : Debug options.c:97    Add resource https:127.0.0.1 port 8087
09:08:59 : Debug socket.c:55    Listening on 0.0.0.0:53 for domain a.xxxxxxxxxxxxxxx.com
Starting Server v0.5.2...
09:08:59 : Debug main.c:132    Chroot to /tmp/
09:09:00 : Debug main.c:142    Change to user root
  Creating session id: 0x7a69 address = 106.38.75.154 (compression  wanted)
09:10:14 : Debug auth.c:60    Ask for resource 'ssh'
09:10:14 : Debug socket.c:183    Connecting to 127.0.0.1 port 22
Bind client id: 0x7a69 address = 106.38.75.154 to resource ssh
      delete_client 0x7a69 

        Creating session id: 0x243a address = 106.38.75.154 (compression  wanted)
09:17:22 : Debug auth.c:60    Ask for resource 'ssh'
09:17:22 : Debug socket.c:183    Connecting to 127.0.0.1 port 22
Bind client id: 0x243a address = 106.38.75.154 to resource ssh
复制代码

配置文件dns2tcpd.conf内容:

复制代码
listen = 0.0.0.0
port = 53
user = root
chroot = /tmp/
domain = a.xxxxxxxxxxx.com
key = fuckoff
resources = ssh:127.0.0.1:22,smtp:127.0.0.1:25,socks:127.0.0.1:1080,http:127.0.0.1:80,https:127.0.0.1:8087
复制代码

其中xxxx.com是你注册的域名,并且设置了a的解析,见后文。

客户端:

dns2tcpc -c -k fuckoff -d 1 -l 2222 -r ssh -z a.xxxxxx.com 45.77.39.243
其中 45.77.39.243 是我的server IP,我测试是必须写的。

测试下:

ssh root@127.0.0.1 -p 2222

可以直接登陆你的server ssh。

 

然后设置ssh隧道(偶尔会提示reset peer或许要多试几次):

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

输入密码后,看下端口是否开启:

复制代码
bonelee@bonelee-VirtualBox:~/dns_tunnel_tool$ lsof -i:2222
COMMAND    PID    USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
dns2tcpc 28938 bonelee    4u  IPv4 11154775      0t0  TCP localhost:2222 (LISTEN)
dns2tcpc 28938 bonelee    5u  IPv4 11157735      0t0  TCP localhost:2222->localhost:46296 (ESTABLISHED)
ssh      28953 bonelee    3u  IPv4 11157734      0t0  TCP localhost:46296->localhost:2222 (ESTABLISHED)
bonelee@bonelee-VirtualBox:~/dns_tunnel_tool$ lsof -i:7002
COMMAND   PID    USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
ssh     28953 bonelee    4u  IPv4 11160083      0t0  TCP *:afs3-prserver (LISTEN)
ssh     28953 bonelee    5u  IPv6 11160084      0t0  TCP *:afs3-prserver (LISTEN)
复制代码

浏览器里直接socks5代理127.0.0.1 7002端口即可上网了!上谷歌也是可以的。。。不过速度就不咋地。。。

下面是参考文章,全部读完大概就知道来龙去脉了。

------------------------------------------------------------------------------

DNS隧道之DNS2TCP实现

转自:http://blog.csdn.net/gsls200808/article/details/50318947
 

原理:通过DNS建立隧道
准备条件:有独立IP的公网服务器,能设置NS记录的域名。
总体思路:服务器端运行DNS2TCP,域名提供商设置NS记录,客户端运行DNS2TCP
本文服务器采用CentOS6.6,客户端采用Windows XP

1.服务器安装DNS2TCP

CentOS6.6安装DNS2TCP
检查CentOS版本

[plain]  view plain  copy
  1. cat /etc/redhat-release  

结果

[plain]  view plain  copy
  1. CentOS release 6.6 (Final)  

在http://www.hsc.fr/ressources/outils/dns2tcp/download/上下载源码,然后编译安装,命令如下:

[plain]  view plain  copy
  1. wget http://www.hsc.fr/ressources/outils/dns2tcp/download/dns2tcp-0.5.2.tar.gz  
  2. tar zxf dns2tcp-0.5.2.tar.gz  
  3. cd dns2tcp-0.5.2  
  4. ./configure  
  5. make & make install  

编译过程中出现错误请先安装开发包

[plain]  view plain  copy
  1. yum groupinstall "Development Tools"  

2.设置域名服务器

登录你的域名服务器商如:DNSpod
在域名下面添加一个A记录,A记录的名字可以任意,如ns1.vvvtimes.com,A记录的值为你VPS服务器的IP地址。
最后,再添加一个NS记录,这个NS的名字可以任意,比如tcp.vvvtimes.com,NS记录的值为你上面添加的A记录的名字,即ns1.vvvtimes.com。


3.在服务器上运行DNS2TCPD

在 /etc 建立一个名为 dns2tcpd.conf 的文件, 然后输入以下配置:

[plain]  view plain  copy
  1. listen = 0.0.0.0(Linux服务器的IP)    
  2. port = 53    
  3. user = nobody    
  4. chroot = /tmp    
  5. domain = tcp.vvvtimes.com(上面配置NS记录的域名)    
  6. resources = ssh:127.0.0.1:22,socks:127.0.0.1:1082,http:127.0.0.1:3128   


服务端执行如下命令启动 DNS2TCP:

[plain]  view plain  copy
  1. dns2tcpd -f /etc/dns2tcpd.conf -F -d 2  


注意:腾讯云服务器不给实际网卡分配公网IP,所以要监听0.0.0.0
附:使用screen加入后台(非必须项),下面的命令执行到快捷键Ctrl+a d后面的基本就不用管了。
安装screen

[plain]  view plain  copy
  1. yum install screen  

创建screen会话

[plain]  view plain  copy
  1. screen -S dns2tcpd  

执行我们想要的命令

[plain]  view plain  copy
  1. dns2tcpd -f /etc/dns2tcpd.conf -F -d 2  

暂时离开,保留screen会话中的任务或程序

[plain]  view plain  copy
  1. 快捷键Ctrl+a d(即按住Ctrl,依次再按a,d)  

恢复screen会话

[plain]  view plain  copy
  1. screen -r dns2tcpd  

列出当前的会话列表

[plain]  view plain  copy
  1. screen -ls  

强行终止

[plain]  view plain  copy
  1. screen -S dns2tcpd -X quit  

4.客户端运行DNS2TCPC

DNS2TCP 的客户端配置较为简单, 一条命令就行:

[plain]  view plain  copy
  1. dns2tcpc -r ssh -z tcp.vvvtimes.com 1.2.3.4 -l 8888 -d 2  

-r 后接服务名称, 这里我们用ssh
-z 后接NS记录的网址, ip, 注意IP地址最好写上, 可以不写
-l 后接本地端口
-d 开启 Debug

注意本地需要安装 DNS2TCP 工具, Windows 用户请从网盘下载:
http://pan.baidu.com/s/1c05APFE 密码:rem5

5.putty登录测试

将登录端口和IP改成127.0.0.1:8888,其余设置与登录原服务器一致

6.Xshell登录转成Socks4/5通用代理

由于IE无法使用Socks5协议,所以通过Xshell转成Socks4/5通用代理比较方便

登录设置与putty类似,同样是127.0.0.1:8888

腾讯云下需要使用密钥登录,我们需要将putty使用的ppk文件转成openssl格式

打开puttygen,File-->Load private key,找到自己的ppk文件,Conversions-->Export-->OpenSSH key,保存即可

在Xshell中连接填入主机127.0.0.1端口号填8888

用户身份验证,方法选Public,用户名填root,用户密钥选择puttygen导出的OpenSSH密钥即可,点击确定,成功连接如图

连接成功后,我们来建立代理

查看-->隧道窗格,点击转移规则,右键添加,在类型里选Dynamic (SOCK4/5),默认端口1080不用改,点击确定


7.IE代理设置

工具-->Internet选项-->连接-->局域网设置,勾选为LAN使用代理服务器,点击高级,套接字地址填127.0.0.1端口填1080

速度非常慢,打开百度要一分钟左右。。。

经过多次测试辽宁移动的Wifi热点已经修复了这个漏洞,笔者用其他运营商的热点测试的。

笔者最开始用的是iodine,但是在腾讯云服务器上并不能正常开启53端口


后记:腾讯云配置外网的时候比较特殊,阿里云是双网卡,腾讯云是单网卡内网IP而且使用了自制的TGW网关,配置时需要把配置中的外网IP直接改成内网IP


本文参考
1.DNS隧道 - 绕过公共 Wifi 热点登陆免费上网 http://www.myhack58.com/Article/54/93/2015/67717.htm

 

 

 

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

 

















本文转自张昺华-sky博客园博客,原文链接:http://www.cnblogs.com/bonelee/p/7927706.html,如需转载请自行联系原作者




相关文章
|
9天前
|
SQL 监控 安全
员工上网行为监控软件:SQL 在数据查询监控中的应用解析
在数字化办公环境中,员工上网行为监控软件对企业网络安全和管理至关重要。通过 SQL 查询和分析数据库中的数据,企业可以精准了解员工的上网行为,包括基础查询、复杂条件查询、数据统计与分析等,从而提高网络管理和安全防护的效率。
21 0
|
1月前
|
域名解析 网络协议
非阿里云注册域名如何在云解析DNS设置解析?
非阿里云注册域名如何在云解析DNS设置解析?
ly~
|
1月前
|
网络协议 应用服务中间件 Apache
如何在 DNS 记录中设置反向代理服务器?
要设置反向代理服务器,首先需安装配置软件(如 Nginx 或 Apache),并确保域名正确指向服务器 IP。接着,在 DNS 中设置 A 或 CNAME 记录,将域名指向反向代理服务器。然后编辑 Nginx 或 Apache 的配置文件,将请求转发至后端服务器。最后,通过浏览器访问域名测试配置是否成功,并使用工具检查请求流向和响应情况。
ly~
125 3
|
1月前
|
弹性计算 负载均衡 网络协议
内部名称解析设置阿里云私有 DNS 区域,针对于阿里云国际版经验教程
内部名称解析设置阿里云私有 DNS 区域,针对于阿里云国际版经验教程
|
3月前
|
图形学 机器学习/深度学习 人工智能
颠覆传统游戏开发,解锁未来娱乐新纪元:深度解析如何运用Unity引擎结合机器学习技术,打造具备自我进化能力的智能游戏角色,彻底改变你的游戏体验——从基础设置到高级应用全面指南
【8月更文挑战第31天】本文探讨了如何在Unity中利用机器学习增强游戏智能。作为领先的游戏开发引擎,Unity通过ML-Agents Toolkit等工具支持AI代理的强化学习训练,使游戏角色能自主学习完成任务。文章提供了一个迷宫游戏示例及其C#脚本,展示了环境观察、动作响应及奖励机制的设计,并介绍了如何设置训练流程。此外,还提到了Unity与其他机器学习框架(如TensorFlow和PyTorch)的集成,以实现更复杂的游戏玩法。通过这些技术,游戏的智能化程度得以显著提升,为玩家带来更丰富的体验。
64 1
|
3月前
|
域名解析 网络协议 安全
DNS隧道
【8月更文挑战第20天】
107 1
|
2月前
|
图形学 iOS开发 Android开发
从Unity开发到移动平台制胜攻略:全面解析iOS与Android应用发布流程,助你轻松掌握跨平台发布技巧,打造爆款手游不是梦——性能优化、广告集成与内购设置全包含
【8月更文挑战第31天】本书详细介绍了如何在Unity中设置项目以适应移动设备,涵盖性能优化、集成广告及内购功能等关键步骤。通过具体示例和代码片段,指导读者完成iOS和Android应用的打包与发布,确保应用顺利上线并获得成功。无论是性能调整还是平台特定的操作,本书均提供了全面的解决方案。
150 0
|
3月前
|
开发者 图形学 iOS开发
掌握Unity的跨平台部署与发布秘籍,让你的游戏作品在多个平台上大放异彩——从基础设置到高级优化,深入解析一站式游戏开发解决方案的每一个细节,带你领略高效发布流程的魅力所在
【8月更文挑战第31天】跨平台游戏开发是当今游戏产业的热点,尤其在移动设备普及的背景下更为重要。作为领先的游戏开发引擎,Unity以其卓越的跨平台支持能力脱颖而出,能够将游戏轻松部署至iOS、Android、PC、Mac、Web及游戏主机等多个平台。本文通过杂文形式探讨Unity在各平台的部署与发布策略,并提供具体实例,涵盖项目设置、性能优化、打包流程及发布前准备等关键环节,助力开发者充分利用Unity的强大功能,实现多平台游戏开发。
98 0
|
3月前
|
图形学 C# 开发者
Unity粒子系统全解析:从基础设置到高级编程技巧,教你轻松玩转绚丽多彩的视觉特效,打造震撼游戏画面的终极指南
【8月更文挑战第31天】粒子系统是Unity引擎的强大功能,可创建动态视觉效果,如火焰、爆炸等。本文介绍如何在Unity中使用粒子系统,并提供示例代码。首先创建粒子系统,然后调整Emission、Shape、Color over Lifetime等模块参数,实现所需效果。此外,还可通过C#脚本实现更复杂的粒子效果,增强游戏视觉冲击力和沉浸感。
186 0

相关产品

  • 云解析DNS
  • 推荐镜像

    更多