首页/网络/BGP 与广域网速查/IPsec 与 NAT 的处理顺序
IPsec VPN60 条

IPsec 与 NAT 的处理顺序

加密与地址转换谁先谁后决定是否需要 NAT-T:ESP 不携带端口信息,PAT 无法转换协议 50,穿越 NAT 时封装为 UDP 4500。

BGP 与广域网速查网络更新于 2026-10-13

IPsec 与 NAT 的处理顺序

ESP 是协议 50,报文里没有端口号,中间设备做端口转换(PAT)时无从映射,因此 IPsec 与 NAT 的先后关系决定了是否需要 NAT-T。两端都是公网地址时 ESP 可以直接传输;路径上存在地址转换时,需要把 ESP 封装进 UDP 4500 才能穿过。现代平台通常默认启用 NAT-T,所以真正要确认的往往是中间设备是否放行了正确的端口。

基本信息

不过 NATESP(协议 50)可直接传输,无需额外封装
经过 NAT启用 NAT-T,ESP 装入 UDP 4500 传输
放行要求中间设备需放行 UDP 500 与 UDP 4500(或放行 ESP 协议)
平台默认现代平台通常默认启用 NAT-T
核对命令show crypto ipsec sa(观察是否处于 NAT 环境)

典型使用场景

  • 分支机构在 NAT 后:确认 NAT-T 已生效且端口放行
  • 两端都在 NAT 后:需验证探测结果与封装形态,避免协商成功但数据不通
  • 防火墙策略梳理:把 500 与 4500 作为一组同时确认
  • 隧道偶发中断:结合映射表老化时间核对保活配置
  • 抓包取证:确认实际封装端口,为安全策略变更提供依据

观察与保活

观察与保活
# 查看 SA 是否处于 NAT 环境
show crypto ipsec sa | include NAT|nat
# 保活:维持中间设备的映射表项(按平台文档核对命令)
crypto isakmp nat keepalive 20
# 抓包确认封装形态:NAT 外侧应看到 UDP 4500
tcpdump -ni eth0 'udp port 4500' -c 20

场景与要求

场景封装形态注意事项
两端公网ESP 直传,无需 NAT-T只需放行协议 50 与 UDP 500
一端在 NAT 后ESP 封装进 UDP 4500两端需支持 NAT-T,放行 500 与 4500
两端都在 NAT 后UDP 4500 承载检测最关键,需两端同时抓包确认
中间设备只做路由ESP 直传确认未误过滤协议 50
上线前先确认报文实际走 500 还是 4500,再据此配置安全策略;顺序搞反时会出现「策略看起来都放行了,隧道却建不起来」的尴尬局面。
确认封装形态的办法很直接:在 NAT 设备外侧抓包,看到 UDP 4500 说明已启用 NAT-T,只看到协议 50 则未做封装。两种情况下安全策略需要放行的内容不同,抓包结论可以直接作为策略调整依据。

易错点

  • 两端都在 NAT 后且未启用 NAT-T:IKE 协商能起、ESP 却不通,现象容易被误判为对端问题
  • 中间设备只放行 UDP 500:NAT-T 建立后流量走 4500,被拦截则表现为中途失败
  • 映射表老化未配保活:隧道周期性中断,业务侧只看到间歇性丢包
  • 只在一侧确认策略:两个方向的放行要求可能不同,必须分别核对

数据来源与参考

  • RFC 3948: UDP 封装 ESP
  • Cisco: NAT-T 配置
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌