AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 435279
Accepted
user35042
user35042
Asked: 2012-10-06 07:37:44 +0800 CST2012-10-06 07:37:44 +0800 CST 2012-10-06 07:37:44 +0800 CST

为什么 VPN IPSec 客户端使用 UDP?

  • 772

我在家用 Windows 计算机上用于连接公司服务器的 VPN 是 Cisco 客户端。客户端配置为使用“IPSec over UDP (NAT/PAT)”。

为什么要使用 UDP 这种“不可靠”的协议来建立安全隧道?当UDP数据包被丢弃时,协议的不可靠性会不会导致问题?

还是协议使用 UDP 但在应用层增加了可靠性?

vpn
  • 1 1 个回答
  • 27072 Views

1 个回答

  • Voted
  1. Best Answer
    sysadmin1138
    2012-10-06T07:56:20+08:002012-10-06T07:56:20+08:00

    它使用 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 节:

    校验和与 NAT 之间的不兼容性。通过在计算中包含“伪标头”,TCP 和 UDP 校验和依赖于 IP 源地址和目标地址。因此,在接收时计算和检查校验和的情况下,它们将通过 NAT 或反向 NAT 设备失效。

    因此,如果不涉及 TCP/UDP 协议(​​如在 IPsec 隧道模式或 IPsec 保护的 GRE 中),或者不计算校验和(如 IPv4 UDP 可能),IPsec 封装安全有效负载 (ESP) 将仅通过 NAT 畅通无阻). 如[RFC793]所述,IPv4 中需要 TCP 校验和计算和验证。IPv6 中需要 UDP/TCP 校验和计算和验证。

    发生这种情况是因为 IPSec 堆栈本身具有完整性检查功能,因此使用“不可靠”协议传输网络不会造成严重的功能中断。如果数据包在传输过程中被扰乱,它就无法正确解封装,而 IPSec 协议将正确处理这种情况。

    有些客户端确实支持 TCP 模式,但 Cisco 不是其中之一。

    • 15

相关问题

  • 无法通过 Ubuntu VPN 访问外部网络

  • 用 D-LINK DFL-CPG310 防火墙替换 Cisco Pix 防火墙

  • 最好的点对点 VPN?

  • WAN 上的 VLAN

  • 通过 VPN 连接什么是远程服务器 IP?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve