首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pwnat仍然是一个适用的解决方案吗?

pwnat仍然是一个适用的解决方案吗?
EN

Stack Overflow用户
提问于 2014-04-10 10:45:27
回答 1查看 8.8K关注 0票数 26

我需要一个NAT穿越解决方案来在互联网上传输RDP数据。我看到了下面的工具,这真是太棒了-- pwnat

我已经在不同路由器后面的两台不同的机器上试过了,但是我无法使它像上面的链接所解释的那样工作。那么pwnat还在工作吗?如果是的话,我会做错什么呢?这对我会很有帮助。

注意:我正在使用Windows机器进行测试,并从以下链接下载了Windows版本:

http://www.sumitgupta.net/pwnat-windows-complied-version/

EN

回答 1

Stack Overflow用户

发布于 2016-07-06 11:53:50

No.

我想你知道它是怎么运作的吧:

服务器将ICMP回送请求数据包发送到固定地址(例如,1.2.3.4),其中不返回回显答复,客户端假装是Internet上的跳转,将ICMP时间超过数据包发送到服务器,期望服务器前端的NAT将ICMP时间超过消息转发给服务器。

上面的图片来自pwnat主页,它的前提是客户端不在NAT后面,并且NAT实现通常不检查原始的时间负载超过消息。如果客户端和服务器都支持NAT,

代码语言:javascript
复制
=========================================================================================
| CLIENT  | <---> |  NAT-C  | <---> { internet } <---> |  NAT-S  | <---> | SERVER |
=========================================================================================

它现在很少起作用,主要有以下两个原因:

  1. 当服务器将ICMP回波请求数据包发送到固定地址时,根据RFC 3022,ICMP回波请求头中的标识符字段将被NAT唯一映射到已注册IP地址的查询标识符,以便它能够使用相同的查询ID将未来的ICMP答复路由到发送方,因此必须修改ICMP查询数据包中的因此ICMP报头,以替换查询ID和ICMP报头校验和。RFC 3022 错误数据包修改部分

在NAPT设置中,如果ICMP中嵌入的IP消息恰好是TCP、UDP或ICMP查询数据包,则还需要在TCP/UDP头或ICMP查询头中的查询标识符字段中修改适当的TU端口号。

但是客户端不知道外部查询ID( 普纳特中的代码使用0作为原始请求的标识符),它向服务器发送一个ICMP时间超过的数据包,即使数据包能够到达服务器前面的NAT-S,NAT-S也找不到嵌入式数据包的主动映射,大多数NAT实现都会删除它。

  1. 此外,根据rfc 5508,当NAT-C从私有领域接收到ICMP错误分组时,NAT-C使用嵌入在ICMP错误消息中的数据包(即从客户端到服务器的IP分组)来查找嵌入数据包所属的NAT会话。如果NAT-C没有针对嵌入式数据包的活动映射,NAT-C应该静默地丢弃ICMP错误数据包。这意味着ICMP时间超过了来自客户端的数据包不会到达NAT。

因此,pwnat只适用于基本NAT设备(rfc 1631描述的),这些设备进行简单的地址转换,而不会与任何具有健壮NAPT实现的NAPT设备一起工作。本论文确实提到了这个问题。

票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22985793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档