我目前正在尝试通过 Internet 发送 UDP 消息,并且必须为端点 A 和 B(都位于 NAT 后面)设置防火墙。为此,我想使用 STUN 服务器进行打孔。
当 A 创建对 STUN 服务器的请求(例如,私有:85.1.1.12:6000 和公共:173.194.78.127:19302)时,我得到 85.1.1.12:6000 作为响应。如果我要将数据包从相同的源配置(用于 STUN 请求的相同源 IP 和端口)发送到任何其他目标地址(目标端口保持不变),那么我的 NAT 将再次更改公共端口(从 6000 到其他)。我通过对两个不同的 STUN 服务器请求使用相同的地址端口配置(对两个请求使用端口 19302)发现了这一点。
像这样,当我向B发送数据包时,我不可能知道我的NAT在哪个端口进行转换(B无法接收任何东西,因为它的防火墙没有设置)。
这是因为我的 NAT 类型不兼容打洞还是我理解错误了?
Thanks!
85.1.1.12:6000 不是您的私有 IP 地址。它是您的 NAT 的公共/外部 IP:端口。私有 IP 是您的 PC/设备的接口地址。
根据您的情况,我猜测您有一个对称 NAT。在对称 NAT 中,每次您将一些数据包发送到不同的目的地时,NAT 的公共端口都会发生变化。如果您的目的地保持不变,则 NAT 的公共 IP:端口也保持不变。
对于其他类型的 NAT,如果您的私有 IP 没有更改,那么您将数据包发送到何处并不重要,您的 NAT 公共 IP:端口(在您的情况下为 85.1.1.12:6000)将保持不变。
如果一侧具有 **对称 NAT,而另一侧具有对称/PRC NAT,则无法进行打孔。
**所谓对称 NAT,是指提供随机端口分配的对称 NAT。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)