我在家用 Windows 计算机上用于连接公司服务器的 VPN 是 Cisco 客户端。客户端配置为使用“IPSec over UDP (NAT/PAT)”。
为什么要使用 UDP 这种“不可靠”的协议来建立安全隧道?当UDP数据包被丢弃时,协议的不可靠性会不会导致问题?
还是协议使用 UDP 但在应用层增加了可靠性?
我在家用 Windows 计算机上用于连接公司服务器的 VPN 是 Cisco 客户端。客户端配置为使用“IPSec over UDP (NAT/PAT)”。
为什么要使用 UDP 这种“不可靠”的协议来建立安全隧道?当UDP数据包被丢弃时,协议的不可靠性会不会导致问题?
还是协议使用 UDP 但在应用层增加了可靠性?
它使用 UDP 来通过功能最少的 NAT 设备。这里发生的是实际的 IPSec 流量被封装在 UDP(IP 协议17)中。本机 IPSec 数据包的 IP 协议标头值为 50。由于 50 既不是 UDP (17) 也不是 TCP (6),因此原始 NAT 网关将丢弃数据包而不是传递它。
其次,由于 IPSec 既不是 TCP 也不是 UDP,因此它没有端口号。因此,如果您正在参加一个非常大的会议,并且您的八位同事也将参加,那么您中只有一个人可以随时启动您的 VPN,因为 VPN 集中器仅进行 IP 级消歧。通过封装在 UDP 数据包中,它允许在 NAT 设备后面有多个 VPN 端点。
至于为什么是UDP?这在RFC 3715中有描述。第 2.1.b 节:
发生这种情况是因为 IPSec 堆栈本身具有完整性检查功能,因此使用“不可靠”协议传输网络不会造成严重的功能中断。如果数据包在传输过程中被扰乱,它就无法正确解封装,而 IPSec 协议将正确处理这种情况。
有些客户端确实支持 TCP 模式,但 Cisco 不是其中之一。