我应该增加 VPN 路由器设备上 UDP 的超时值吗?

网络工程 路由器 虚拟专用网 UDP
2021-07-18 12:24:18

我们有一台 SonicWALL NSA 2400。我们在不同物理位置的不同办公室拥有大量 (100+) 人员,每天都成功建立 VPN 会话。其中一些客户端计算机位于路由器后面。其中一个办公室报告说,使用四台办公室计算机时,他们有时无法连接部分或全部四个 VPN 会话。

当我检查我们的 SonicWALL 日志时,我看到我们的 NSA 2400 正在从他们的办公室路由器接收数据包。我们的 NSA 然后尝试确认这些数据包,但这会导致 ack 超时消息。(不幸的是,我没有具体的错误消息。)

我检查了我们的设置,此连接(LAN->VPN)的 UDP 超时值为 30 秒。这似乎很低,我想增加它以尝试解决超时确认消息的问题,但我不知道这将对其余连接的 VPN 会话产生什么影响。顺便说一下,我们的 TCP 超时值为 900 分钟,以供参考。我怀疑某些以前的管理员更改了 TCP 设置但忘记/忽略了 UDP 设置。

NSA 日志还包含有关丢弃传入和传出 UDP 数据包的消息。这些消息用于各种端口号和服务(DNS、IKE(横向)等),因此更改 UDP 设置可能有助于删除这些消息。

我担心更改这些设置会影响现有的 VPN 连接。但是,NSA 有 512 MB 的 RAM,我们的峰值连接使用量约为 6200 个,最多为 32000 个。我们平均运行大约 1500 个连接。

我在网上对此进行了研究,但只找到了一般的故障排除建议,以“增加 UDP 超时并查看是否可以修复它”。

那么将 UDP 超时增加到 300 秒是否会对其他现有的 VPN 连接产生负面影响?看起来我们并没有接近我们的连接限制。

2个回答

NAT Traversal 是您所描述的标准解决方案。具体来说,您需要验证 NAT Traversal keep alive 设置。让我解释。

您很有可能在 ESP 模式下使用 IPsec。在非NAT穿越场景下,你的数据包会是这样的(协商后):

[Outer IP header][ESP Header][Encrypted/Authenticated Data][ESP Trailer]

外部 IP 标头将包括您的 VPN 网关设备(您的 NSA 2400)的源/目标 IP 以及远程办公室使用的任何 WAN IP。

在您的情况下,您有多个客户端共享一个源 IP——这是一种非常常见的 PAT 配置。因此,远程路由器需要重写每个客户端的源 IP 以及源端口。如果该路由器遇到上述数据包(在 L3 标头和数据之间没有 L4 标头),它会丢弃它,声称它是格式错误的数据包。

NAT Traversal 在数据包中插入一个额外的 L4 标头。所以它看起来像这样:

[Outer IP header][NAT-T UDP 4500 header][ESP Header][Encrypted/Authenticated Data][ESP Trailer]

此标头以 UDP 源和目标端口 4500 开头(默认情况下,这是可配置的)。目标端口通常不会更改(在通往您的 VPN 前端设备的路由上)。源端口通常不会得到由瞬态NAT设备(在这种情况下,远程办公室路由器)改变。

现在。大多数状态防火墙或路由器具有非常低的 UDP 连接超时。UDP 本质上是无连接的,因此 UDP 连接超时不到一分钟是很常见的。如果我记得的话,Cisco ASA 是 30 秒(不要引用我的话,这是凭记忆)。相比之下,TCP 超时本身就很高,因为通常有状态设备正在寻找 RST 或 FIN 以从其连接表中清除条目。TCP 超时只是一个停止间隙,以防通信的两端同时爆炸并且无法发送 RST/FIN。所以 TCP 超时高于 UDP 超时是正常的,甚至是建议的行为。

话虽如此,我们可以描述您的问题可能发生了什么......

如果远程办公室客户端第一次连接,并且它们的 NAT-T 标头的源端口被重新写入 2222,则 VPN 前端设备将期望该特定 VPN 连接的所有未来通信都以 2222 的源端口到达. 它还将封装所有返回流量并将其发送回远程路由器的 IP,目标端口为 2222。只要此特定 NAT 转换在远程路由器中保持活动状态,这将正常工作。

但是如果远程路由器清除了它的 NAT 转换表,从客户端发送到服务器的下一个数据包将获得一个新的 UDP 源,比如 3333。当它到达 VPN 头端设备时,它会认为它是一个新的“连接”,并且期待对 IPsec 进行全面的重新协商(从安全的角度来看,这是正确的做法)。

此外,如果远程路由器清除了它的 NAT 转换表,并且下一个发送的数据包是从服务器到客户端(也就是,目的地是端口 2222),远程路由器将没有该源端口的任何出站转换记录,因此数据包将被简单地丢弃。请记住,PAT 是单向的。

说了这么多。由于 VPN 连接进入静音状态是常见且完全正常的。NAT Traversal 中内置了一个称为“NAT Traversal Keepalive”的功能。它只是一个空数据包,每 10-15 秒(因实现而异)从客户端发送到服务器,并且此数据包的唯一目的是使 NAT 转换在瞬态 NAT 设备(如远程路由器)中保持活动状态。

所以在我看来,你的 NAT Traversal Keepalive 设置得太高了。我将从减少那个开始。因为这是您可以在头端设备上进行的软件更改,并且应该会影响您的所有客户端,而不会强迫您更换另一端的硬件。

最后,重申 Ricky 提到的内容。如果任何超时需要调整,它将在远程路由器上,而不是在 VPN 头端设备上。

确切地知道他为什么要更换路由器

因为他的路由器正在干扰 vpn 客户端操作。

IPSec VPN 使用 udp/500 进行密钥交换(ISAKMP,又名 IKE),通常使用 udp/4500 进行 NAT 穿越。一旦协商了密钥和设置,实际的隧道传输是 ESP(IP 协议 50)或 AH(IP 协议 51),但 AH 与 NAT 不兼容。

只要您的防火墙不在其他 NAT 后面,更改防火墙的连接计时器就绝对不会做任何事情这些设置用于通过防火墙的会话,而不是与防火墙的连接。问题的最可能原因是远程办公室的路由器。