不需要第三方服务器的NAT穿透 · BlahGeek's Blog

标签: | 发表时间:2019-01-12 18:24 | 作者:
出处:https://blog.blahgeek.com

是的,它可以使两台 均在NAT/防火墙后的机器、 不需要任何第三方服务器、 不需要端口转发,进行通信。原理基于 这篇Paperpwnat就是基于这个方法的一个实现,我用Python实现了一个简易的版本 pypwnat

适用环境

  • 两台机器(我们分别叫做客户端和服务器端)可以均在NAT/防火墙后(当然也可以不是)
  • 不需要其他任何第三方、不需要端口转发

仅有的要求:

  • 客户端需要知道服务器端的外网IP(废话)

这不科学!怎么工作的?

  • 随便挑一个死的IP地址(在这里我们用 59.66.1.1,ping之无回应即可)
  • 服务器端每隔一段时间对 59.66.1.1发送一个ICMP echo request(ping),当然,什么都不会发生,因为不会有回应
  • (开始有趣了)客户端向服务器端发送ICMP time exceed包,把自己假装成是服务器端与 59.66.1.1之间的一个节点,告诉服务器端你发送的ping超时了(就想traceroute的原理),当然,这个包会被服务器端的NAT/防火墙通过并转发给它
  • 现在,服务器端知道客户端的外网地址了(而且客户端本来就知道服务器端的外网地址)
  • 服务器端使用某个端口(随便选一个吧,12345)向客户端的某个端口(比如23456)发送UDP包,当然,这个包会被客户端的NAT/防火墙拒绝
  • 客户端也同时使用端口23456向服务器端12345端口发送UDP包,而这个包会被服务器端的NAT/防火墙通过并转发!因为它会认为这是之前服务器发出的包的回应
  • 好了,服务器现在再发一个UDP包的话,同理也会被客户端的NAT/防火墙通过并转发
  • Bingo!

pypwnat运行示例

服务器端:

      hatsune ~ > sudo python2 pypwnat.py -s
[MainThread] DEBUG : Sending echo request with id=42, seq=42.
[MainThread] DEBUG : Got ICMP response!
[Thread-1] DEBUG : Handling response in new thread.
[MainThread] DEBUG : Sending echo request with id=42, seq=42.
[Thread-1] INFO : Got response from 101.5.109.89

客户端:

      Blah-MacbookAir ~/D/p/pypwnat (master)> sudo python pypwnat.py -c 106.186.24.147
[MainThread] DEBUG : Sending hello message via UDP.
[MainThread] DEBUG : Sending time exceed message.
[MainThread] INFO : Got UDP response!
Hello from pypwnat

相关 [需要 服务器 nat] 推荐:

不需要第三方服务器的NAT穿透 · BlahGeek's Blog

- -
pwnat就是基于这个方法的一个实现,我用Python实现了一个简易的版本. 两台机器(我们分别叫做客户端和服务器端)可以均在NAT/防火墙后(当然也可以不是). 不需要其他任何第三方、不需要端口转发. 客户端需要知道服务器端的外网IP(废话). 随便挑一个死的IP地址(在这里我们用. 59.66.1.1,ping之无回应即可).

iptables NAT 学习

- - BlogJava-首页技术区
为了搞清楚iptables NAT的过程,做了这个实验. 使用了1台双网卡服务器和1台单网卡服务器,2个网段. 1.       为了看到调度服务器上的数据转发过程,首先在调度服务器上分出内核的debug日志:. l 在/etc/rsyslog.conf最后增加:kern.debug /var/log/iptables.log.

nat穿透原理

- - 开源软件 - ITeye博客
一直以来,说起NAT穿透,很多人都会被告知使用UDP打孔这个技术,基本上没有人会告诉你如何使用TCP协议去穿透(甚至有的人会直接告诉你TCP协议是无法实现穿透的). 但是,众所周知的是,UDP是一个无连接的数据报协议,使用它就必须自己维护收发数据包的完整性,这常常会大大增加程序的复杂度,而且一些程序由于某些原因,必须使用TCP协议,这样就常常令一些开发TCP网络程序的人员“谈穿透色变”.

你需要知道的 16 个 Linux 服务器监控命令

- - 水煮沉浮
如果你想知道你的服务器正在做干什么,你就需要了解一些基本的命令,一旦你精通了这些命令,那你就是一个 专业的 Linux 系统管理员. 有些 Linux 发行版会提供 GUI 程序来进行系统的监控,例如 SUSE Linux 就有一个非常棒而且专业的工具 YaST,KDE 的 KDE System Guard 同样很出色.

[转]iptables防火墙与NAT服务

- - 小鸥的博客
iptables防火墙与NAT服务. (1)设置在不同的网络或网络安全域之间的一系列部件的组合,它能增强机构内部网络的安全性. (2)通过审查经过每一个数据包,判断它是否有相匹配的过滤规则,根据规则先后顺序一一进行比较,直到满足其中的一条规则为止,然后依据控制机制做出相应的动作,若都不能满足,则将数据包丢弃,从而保护网络安全.

Xen 虚拟机的 NAT 网络配置

- - vpsee.com
我们使用 Xen 虚拟机的时候一般都是用桥接(bridging)的方式把虚拟机(domU)直接暴露在网络上,就像网络上单独的一台服务器一样,这种方式简单好用,不用在 dom0 做任何的端口转发也不用任何 iptable 规则. 不过除了 bridging 以外,Xen 还支持 routing 和 NAT 的方式配置虚拟机网络.

NAT穿透解决方案介绍

- - 编程语言 - ITeye博客
Agent B看到的source address就是经过转换后的IP和Port并不知道Agent A的局域网地址;当Agent B的响应到达Agent A的NAT设备后,NAT设备查找内存中保存的和这个外网地址相对应的内网地址,如果找到后就将这个data packet转发到这个地址,这样就实现了通信.

Docker 中 NAT 和 HOST 的区别

- - snoopyxdy的博客
官方说明使用Dokcer容器启动应用可以媲美直接在宿主机上启动的性能,宣称使用Docker启动应用大约可以达到原来性能的90%,如此低的性能损耗应当归功于Docker容器虚拟化的轻量级. 但是事实真的如官方所说,仅有10%的损耗吗. 我们下面将比较原生启动 redis 实例和使用Docker启动的性能对比.

NAT穿透(UDP打洞) - heaventouch - 博客园

- -
1、NAT(Network Address Translator)介绍. NAT有两大类,基本NAT和NAPT. 静态NAT:一个公网IP对应一个内部IP,一对一转换. 动态NAT:N个公网IP对应M个内部IP,不固定的一对一转换关系. 现在基本使用这种,又分为对称和锥型NAT. 锥型NAT,有完全锥型、受限制锥型、端口受限制锥型三种:.

TPROXY之殇-NAT设备加代理的恶果

- - CSDN博客推荐文章
无独有偶,过了N多年,又到了这个时候,碰到了同样的事情. xx年的万圣节,由于服务器瘫痪我们被罚了500块钱,最终发现瘫痪的原因是TPROXY造成的,当时每个大服务区有一台LVS负载均衡设备,工作在NAT模式下,下联一台核心交换机,核心交换机分出N条线路去往各小区域服务器群,每一个小区域服务群拥有一台TPROXY实现的登录代理服务器,仅仅对登录数据包做代理,其它的包直接通过.