当网络直连困难时,为什么 NAT 穿越很重要

为什么当网络直连困难时 NAT 遍历很重要

某些连接问题不是由您正在使用的应用程序引起的。它们来自设备之间的网络路径。

当呼叫在家里 Wi-Fi 上立即接通但在酒店 Wi-Fi 上却遇到困难时、当游戏大厅对一个玩家有效而对另一个玩家失败时、或者当您从移动数据切换到办公网络后隐私工具的行为不同时,您可能会注意到这一点。一个常见的原因是 NAT:网络地址转换层,可让许多设备共享一个公共互联网地址。

本文解释了什么是 NAT 遍历、为什么存在 UDP 打孔、中继回退何时变得有用,以及为什么 VPN Satelites 读者应该将这些概念视为连接上下文而不是魔法保证。

NAT 在日常网络中的作用

大多数人在使用专用网络时都没有考虑过它们。您的笔记本电脑、手机、平板电脑和电视可能都位于一台路由器后面。在家里,每台设备都有自己的私有地址。对于更广泛的互联网来说,他们通常似乎共享一个公共地址。

这个翻译很有用。它帮助网络保留公共 IPv4 地址并使正常的家庭路由易于管理。但这也带来了一个实际问题:网络外部的设备通常无法打开与网络内部设备的直接连接,除非路由器知道传入流量应流向何处。

对于普通的网页浏览来说,这通常没问题。您的设备开始向外连接,路由器会记住映射,并通过该临时路径回复。对于需要两个端点进行更直接通信的应用程序(尤其是通过 UDP),情况可能不太可预测。

这就是NAT遍历的基本设置。

什么是NAT遍历?

NAT 遍历是帮助应用程序跨网络进行通信的技术的总称,其中一个或两个端点位于 NAT 后面。

用简单的英语来说,该应用程序试图回答一个实际问题:“即使这两个设备的路由器正在转换地址并过滤传入流量,它们能否找到彼此的工作路径?”

没有单一的通用答案,因为 NAT 的行为各不相同。 IETF RFC 4787 等标准描述了 NAT 与 UDP 的行为,并解释了为什么一致性对于多媒体通信和在线游戏等实时应用程序很重要。同样的广泛问题出现在许多现代应用程序类别中:呼叫、协作工具、游戏、远程访问工具、点对点式系统和类似 VPN 的应用程序都可能受到网络处理流量的方式的影响。

对于 VPN Satelites 读者来说,有用的要点很简单:如果连接在网络中表现不同,则可以反映路由器行为、运营商级 NAT、防火墙策略、数据包过滤、拥塞或其他路径条件。它不应自动被视为某个应用程序设置已损坏的证据。

什么是UDP冲孔?

UDP 经常被实时应用程序使用,因为它可以避免与面向连接的流量相关的一些延迟和开销。但 UDP 并没有像许多人想象的传统连接那样创建长期会话。

UDP 打洞是一种 NAT 遍历技术,其中两个端点各自发送出站 UDP 数据包,以便其 NAT 设备创建临时映射。如果时序和 NAT 行为一致,则来自另一侧的流量可以通过这些映射返回。

这句话听起来很激进,但这个概念比名字所暗示的更普通。它涉及使用路由器现有的出站和返回流量规则。 Bryan Ford、Pyda Srisuresh 和 Dan Kegel 的基础研究将打孔描述为基于 UDP 的应用程序使用的实用方法,同时还强调了一个关键限制:没有遍历技术适用于每个 NAT 设置。

这种限制很重要。一些网络以有用的方式重用映射。其他人则创建与特定目的地更紧密联系的映射。某些网络在 NAT 之上添加防火墙行为。一些移动和 ISP 网络将用户置于运营商级 NAT 后面,用户根本无法控制上游转换层。

因此,当有人问什么是 UDP 打孔时,简短的回答是:它是应用程序通过 NAT 创建的映射尝试直接 UDP 路径的一种方法。谨慎的回答是:它可以在很多环境下很好地工作,但不能保证。

为什么直接连接有时会失败

直接连接可能会因以下几个常见原因而失败:

  • 当应用程序联系不同的目的地时,路由器可能不会重复使用相同的外部端口映射。
  • 该网络可能比其他网络更严格地过滤传入的 UDP 数据包。
  • 运营商级 NAT 层可能位于用户和公共互联网之间。
  • 工作场所、学校、酒店或场馆网络可能会根据自己的政策限制流量。
  • 移动网络可能会随着信号质量或网络连接的变化而改变路径。
  • 安全产品或本地防火墙可能会在流量到达应用程序之前阻止流量。

这些情况都不意味着用户应该尝试绕过他们无法控制的规则。实际要点是要了解连接行为不仅仅取决于单个应用程序首选项。如果网络故意阻止或限制某种类型的流量,下一步通常是使用允许的网络、检查服务条款或与网络管理员联系。

中继后备适合的地方

当直接连接不可靠时,某些系统会使用中继:两个端点都向外连接到中间服务器,并且该服务器在它们之间传递流量。 IETF RFC 5766 描述了 TURN(使用 NAT 周围中继进行遍历的缩写),作为在某些 NAT 情况下无法进行直接对等通信时进行中继辅助通信的协议。

中继解决了与直接 NAT 遍历不同的问题。中继可以提高可达性,因为两个设备只需要到达中继服务。代价是流量需要额外的路径,这会增加延迟、带宽成本和操作复杂性。

这就是为什么许多连接设计更喜欢首先尝试直接路径,然后在需要时回退。 IETF RFC 8445 将 ICE 描述为一种用于 NAT 遍历的标准轨道方法,用于基于 UDP 的通信,该通信使用 STUN 和 TURN 概念来发现和测试可能的路径。这并不意味着每个 VPN 相关工具都使用 ICE、STUN 或 TURN。它只是显示了一种常见的工程模式:测试哪些路径有效,然后在直接连接不可用时使用回退。

对于读者来说,重要的一课是现实的期望设定。中继回退可能会在直接路由失败的情况下使连接成为可能,但这与使所有网络状况消失并不相同。

这对 VPN Satelites 读者意味着什么

VPN Satelites 内容通常与隐私、连接、互联网路由和用户期望等主题相关。 NAT 遍历属于同一个教育社区,因为它解释了为什么应用程序周围的网络与应用程序本身一样重要。

对于本主题,保持产品连接适度非常重要。本文并不声称 VPN Satelites 使用任何特定的 NAT 遍历方法、中继架构、端口转发设置、静态 IP 选项或协议栈。这里的价值在于实用素养:理解术语可以帮助您更仔细地阅读故障排除指南并评估连接问题,而无需期望任何与 VPN 相关的应用程序覆盖每个网络规则。

如果连接不稳定,一些低风险检查可以帮助您将应用程序行为与网络行为分开:

  • 尝试不同的允许网络,例如家庭 Wi-Fi 与移动数据,并注意问题是由应用程序还是网络引起的。
  • 如果您控制本地路由器并且正常连接出现降级,请重新启动它。
  • 检查网络是否由工作场所、学校、酒店、场所或有流量限制的 ISP 管理。
  • 保持应用程序和操作系统更新,因为连接处理可​​能会因版本而异。
  • 避免更改高级路由器或防火墙设置,除非您了解影响或得到管理员批准。

这些步骤不会绕过限制。它们有助于确定连接问题可能来自何处。

如何仔细阅读NAT遍历声明

当您看到产品、协议或应用程序谈论 NAT 遍历时,请准确阅读声明。

有用的问题包括:

  • 该声明是关于通用网络技术还是已确认的产品功能?
  • 它是否解释了哪些网络条件受支持,哪些不支持?
  • 它是否提到后备行为但没有承诺完美的可达性?
  • 是否避免暗示用户可以忽略工作场所、学校、ISP、平台或法律限制?
  • 它是否将隐私声明与连接声明分开?

最后一点很容易被忽视。帮助两个端点连接的功能并不自动成为隐私保证。隐私功能并不自动成为连接保证。好的文档应该将这些想法分开。

常见问题解答

NAT 遍历和 VPN 一样吗?

不是。NAT 遍历是一组用于处理端点之间的地址转换和过滤的网络技术。 VPN 是一种更广泛的技术类别,用于创建受保护的网络隧道。一些类似 VPN 的应用程序可能必须考虑 NAT 的行为,但概念并不相同。

UDP 打孔总是有效吗?

不会。UDP 打孔取决于 NAT 行为、过滤规则、时序和网络拓扑。研究和标准讨论都指向相同的实际现实:NAT 行为各不相同,因此可能需要后备路径。

中继回退比直接连接更好吗?

他们是不同的。当无法直接通信时,中继可以提供帮助,但它可能会增加延迟、带宽使用和运营成本。直接路径在工作时可能会更有效,但在更严格的网络上可能会失败。

本文是否说 VPN Satelites 使用 STUN、TURN、ICE、中继或端口转发?

不会。这些术语是作为一般网络概念和标准背景进行讨论的。本文并未对 VPN Satelites 做出任何特定于产品的实现声明。

NAT遍历能否绕过网络规则?

本文不提供绕过指导。 NAT 遍历可以帮助解释连接行为,但用户应遵守适用的法律、服务条款和网络政策。

底线

NAT 遍历很重要,因为两个设备之间的互联网路径并不总是直接或可预测的。 UDP 打孔可以帮助某些应用程序在 NAT 上建立直接通信,而中继回退可以在直接路径失败时提供帮助。这两种想法都很有用,但都不是通用的解决方案。

对于VPN Satelites读者来说,最实际的教训是设定现实的期望。连接可靠性取决于应用程序、设备、本地网络、上游网络策略以及端点之间更广泛的路由。了解这些层次可以使故障排除更加平静,并且产品声明更易于批判性地阅读。