【发布时间】:2011-04-01 22:20:17
【问题描述】:
我正在尝试查看在某个 NAT 后面是否可以进行 UDP 打孔,但我发现当 NAT 后面的计算机将 UDP 数据包发送到同一个端口的两个不同 IP 并绑定到同一个端口时端口,NAT 分配两个不同的外部端口号。所以在这个特定的 NAT 背后,我认为 UDP 打洞是不可能的,这是正确的吗?
谢谢
【问题讨论】:
我正在尝试查看在某个 NAT 后面是否可以进行 UDP 打孔,但我发现当 NAT 后面的计算机将 UDP 数据包发送到同一个端口的两个不同 IP 并绑定到同一个端口时端口,NAT 分配两个不同的外部端口号。所以在这个特定的 NAT 背后,我认为 UDP 打洞是不可能的,这是正确的吗?
谢谢
【问题讨论】:
不一定。路由器可能愿意回复IGD。
【讨论】:
这意味着你的 NaT 是对称的,如果你的 NaT 是对称的,它会为每个连接提供不同的外部端口。并且不可能从两种方式连接打孔,但仍然可以连接 p2p。但只有在代理端使用圆锥 Nat 时才有可能。搜索那个。
但如果两个位置使用对称 NaT,则无法将 p2p 连接与 Udp 打孔连接。
但是您仍然可以使用端口预测方法。这意味着您必须猜测可以在连接中使用的端口并尝试连接它(Tcp Hole Punch)
对于圆锥 NaT 可以看到关于 UDP 打孔请在https://github.com/turapulku/NaT-Traversal-UDP-Hole-punch.git查看示例
这仍在开发中,但现在我希望它会有所帮助
【讨论】:
您可以使用此网站来确认此特定 NAT 的行为。
http://nattest.net.in.tum.de/test.php
它将检查您的 NAT 类型并测试是否可以进行 UDP/TCP 打孔。
但是由于您已经知道端口分配是随机的,所以 UDP 打孔是不可能的。使用 UPnP 是另一种方式,但不适用于嵌套 NAT。
【讨论】: