对称 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 (将#修改为@)