我需要一个NAT穿越解决方案来在互联网上传输RDP数据。我看到了下面的工具,这真是太棒了-- pwnat。
我已经在不同路由器后面的两台不同的机器上试过了,但是我无法使它像上面的链接所解释的那样工作。那么pwnat还在工作吗?如果是的话,我会做错什么呢?这对我会很有帮助。
注意:我正在使用Windows机器进行测试,并从以下链接下载了Windows版本:
http://www.sumitgupta.net/pwnat-windows-complied-version/
发布于 2016-07-06 11:53:50
No.
我想你知道它是怎么运作的吧:

服务器将ICMP回送请求数据包发送到固定地址(例如,1.2.3.4),其中不返回回显答复,客户端假装是Internet上的跳转,将ICMP时间超过数据包发送到服务器,期望服务器前端的NAT将ICMP时间超过消息转发给服务器。
上面的图片来自pwnat主页,它的前提是客户端不在NAT后面,并且NAT实现通常不检查原始的时间负载超过消息。如果客户端和服务器都支持NAT,
=========================================================================================
| CLIENT | <---> | NAT-C | <---> { internet } <---> | NAT-S | <---> | SERVER |
=========================================================================================它现在很少起作用,主要有以下两个原因:
在NAPT设置中,如果ICMP中嵌入的IP消息恰好是TCP、UDP或ICMP查询数据包,则还需要在TCP/UDP头或ICMP查询头中的查询标识符字段中修改适当的TU端口号。
但是客户端不知道外部查询ID( 普纳特中的代码使用0作为原始请求的标识符),它向服务器发送一个ICMP时间超过的数据包,即使数据包能够到达服务器前面的NAT-S,NAT-S也找不到嵌入式数据包的主动映射,大多数NAT实现都会删除它。
因此,pwnat只适用于基本NAT设备(rfc 1631描述的),这些设备进行简单的地址转换,而不会与任何具有健壮NAPT实现的NAPT设备一起工作。本论文确实提到了这个问题。
https://stackoverflow.com/questions/22985793
复制相似问题