微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

对称 NAT 穿越

如何解决对称 NAT 穿越

假设有 2 个对等点,A 和 B,每个点都在对称 NAT 下,端口分配随机

如果 A 在特定端口上向 B 的地址发送数据包,NAT 会将请求映射到它的公共 IP 地址和随机端口。

A'private:           A'public:             B:
192.168.0.7:8000 --> 94.109.0.76:43576 --> 35.232.76.41:5000

如果 A 继续在同一端口上向 B 的地址发送数据包,NAT 将继续使用相同的 IP 地址和端口组合。

A'private:           A'public:             B:
192.168.0.7:8000 --> 94.109.0.76:43576 --> 35.232.76.41:5000
192.168.0.7:8000 --> 94.109.0.76:43576 --> 35.232.76.41:5000
192.168.0.7:8000 --> 94.109.0.76:43576 --> 35.232.76.41:5000

如果 A 决定将数据包发送到 B 在不同端口上的地址,NAT 将随机分配另一个端口来发送数据包。

A'private:           A'public:             B:
192.168.0.7:8000 --> 94.109.0.76:43576 --> 35.232.76.41:5000
192.168.0.7:8000 --> 94.109.0.76:27650 --> 35.232.76.41:5001

当 A 向 B 发送数据包时,如果它是从 A 发送消息的端口发送的,并且它具有由 A 的 NAT 映射的地址/端口作为目的地,则 NAT 将允许来自 B 的回复通过。>

A'private:           A'public:             B:
192.168.0.7:8000 --> 94.109.0.76:43576 --> 35.232.76.41:5000

B:                   A'public:             A's private
35.232.76.41:5000 --> 94.109.0.76:43576 --> 192.168.0.7:8000

理论上,如果 A 在其每个端口 (0-65535) 上向 B 发送数据包,A 允许来自 B 任何端口的回复通过,但只有 B 向一个端口发送数据包才能通过回复发送 65535 个数据包时 A 的 NAT 映射的地址/端口。

如果 B 向 A 的每个端口 (0-65535) 发送一个数据包,B 很可能会设法找到 A 的 NAT 映射的端口之一,从而通过 A 的防火墙。

这对你们有意义还是我错过了一点?我一直在尝试使用这种技术在对称 NAT 下连接 2 个对等点,但尚未成功。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。