路由器技术可以绕过 NAT 吗?

路由器技术可以绕过 NAT 吗?

我正在尝试排除可能的 NAT 问题并缩小范围,我试图找出当目的地未进行端口转发/未启用 upnp 时是否有任何路由器技术可以绕过 NAT。

正如技术支持频道中的一些人向我解释的那样,NAT 会隐藏内部 IP,因此如果没有进行端口转发,发送方会向目标计算机发送一个数据包,但该数据包仅包含外部 IP。目标路由器不知道将数据包转发到哪台计算机,因此会丢弃/拒绝它。它是否正确?

例如,我的机器 -> 朋友的机器。朋友的机器位于 NAT 后面,没有进行端口转发/没有启用 UPNP。

在这种情况下,我的路由器能否绕过 NAT 并以某种方式将数据包发送到我朋友的机器?我找到了一些关于打洞、STUN 等的参考资料,但我不明白这些是路由器特定的技术还是需要专门编码的应用程序才能使用这些技术。

可能的 NAT 问题简而言之:

  1. 朋友位于 NAT 后面,没有启用 upnp,也没有进行端口转发。

  2. 我无法通过随机端口的 UDP 连接正确连接到他(p2p 多人游戏)

  3. 其他人可以,尽管每个人都告诉我这是不可能的,因为没有发生端口转发。

理论 :我的路由器太旧了/不支持某些可以让它绕过 NAT 并连接到他的技术,而其他人有更现代的路由器可以做到这一点。

这就是为什么我试图弄清楚路由器是否确实具有类似的东西可以让它们绕过 NAT。

答案1

简而言之,你不能这样做,而且这也不是你能解决的问题。

简单概括一下/过于简单化,当您将数据包发送到朋友的路由器时,路由器必须知道如何处理该数据包。如果有 NAT 条目(即朋友的计算机通过路由器发出网络请求),则路由器知道将返回数据包路由到原始计算机,就像在数据包传输过程中打开了短期、一次性的端口转发一样。

确切的机制可能因设备而异,也可能因路由器是否内置防火墙而异(现在几乎所有路由器都有内置防火墙),但本质上,如果没有 NAT 条目或端口转发,则数据包已被传送到未配置为在端口上接受数据包的设备(路由器),这意味着丢弃/忽略数据包。这是路由器/防火墙的期望行为,否则互联网上的任何人都可以侵入内部网络。

您朋友的路由器要么必须启用端口转发,要么设置 UPnP(基本上只是自动端口转发),要么使用具有第三方中介的服务,你们双方通过该中介进行交谈,从而触发朋友路由器中的 NAT 功能。

答案2

您对 NAT 问题的解释是准确的。

打洞与其说是一门技术,不如说是一种技巧。简而言之,它利用 NAT 操作原理的一些特性来在两个 NAT 主机之间建立连接。STUN 是这种技术的标准化实现。

我是 ZeroTier 的忠实粉丝。它是一种去中心化的 VPN。这意味着它可以让互联网上的两个或多个主机看起来像是连接到 LAN,每个主机在该 LAN 中都有一个专用 IP 地址,而无需任何指定服务器。它的设置相当简单,免费计划足以满足您的需求。打洞会自动发生,数据会直接在参与设备之间发送。第三方服务器仅在最初用于协调建立连接。

不过 ZeroTier 也有一些局限性。官方不支持双重 NAT 遍历(设备位于一个 NAT 后面,而该 NAT 又位于另一个 NAT 后面)。我还是尝试使用它,但连接不可靠。YMMV。除此之外,在支持的网络中我到目前为止没有遇到任何问题。

相关内容