Networking 对称NAT遍历

Networking 对称NAT遍历,networking,udp,nat,hole-punching,nat-traversal,Networking,Udp,Nat,Hole Punching,Nat Traversal,假设有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:

假设有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下的两个对等点,但还没有成功