首页/网络/BGP 与广域网速查/IPsec 中间设备放行清单
IPsec VPN60 条

IPsec 中间设备放行清单

隧道不通先核对沿途放行:UDP 500 协商、UDP 4500 NAT-T 封装、协议 50 ESP 数据;NAT 设备还需评估是否改写端口影响标识匹配。

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

IPsec 需要放行什么

隧道不通时,把怀疑顺序倒过来会更快:先确认沿途有没有放行。IPsec 在网络上留下三类流量:UDP 500 承载初始 IKE 协商,UDP 4500 承载 NAT 穿越(NAT-T)封装以及 NAT 存在时的协商,协议 50 的 ESP 承载真正的业务数据。如果用了 AH 还会出现协议 51,不过只做加密的场景一般不需要。很多防火墙默认放行 UDP 500 却拦掉协议 50,结果是阶段一能建成、业务流量黑洞,这种「协商成功但 ping 不通」的现象几乎都指向数据面被拦。

基本信息

UDP 500IKE 协商初始通道,双向
UDP 4500NAT-T 封装与保活,检测到 NAT 后启用
协议 50(ESP)加密业务数据,双向,不可用端口号过滤
协议 51(AH)仅认证场景使用,与 NAT 不兼容
方向均为双向放行,回程不能省
常见拦截点边界防火墙、云安全组、运营商策略、NAT 设备

典型使用场景

  • 新增隧道前做放行清单评审,避免开通当天才发现被拦
  • 云上部署 VPN 网关:安全组需要同时放行 UDP 500/4500 与协议 50
  • 阶段一成功但业务不通:优先核对 ESP 是否被中间设备丢弃
  • NAT 环境下协商异常:确认 UDP 4500 是否打开、是否发生端口改写
  • 多级防火墙串联:逐跳核对,避免只改了靠近设备的那一台

验证与放行思路

验证与放行思路
# 两端同时抓包对比,最快判断被哪一跳拦截
tcpdump -ni eth0 'udp port 500 or udp port 4500'
tcpdump -ni eth0 'proto 50'
# 出口有报文、对端入口无报文 -> 中间被拦截
# iptables 放行示例(仅示意,按实际策略调整)
iptables -A INPUT -p udp --dport 500 -j ACCEPT
iptables -A INPUT -p udp --dport 4500 -j ACCEPT
iptables -A INPUT -p esp -j ACCEPT
# 确认 NAT-T 是否生效
show crypto ipsec sa | include nat

报文与用途对照

流量方向用途
UDP 500双向IKE 阶段一与阶段二协商
UDP 4500双向NAT-T 封装、NAT 场景下的后续协商
ESP(协议 50)双向加密后的业务报文
AH(协议 51)双向完整性认证,NAT 环境下不可用
ESP 是 IP 协议号而不是端口,防火墙策略里通常要单独选「协议 50」;只放行端口的策略无法覆盖 ESP,这是云上安全组最常见的配置遗漏。
两端都在 NAT 后面时,双方都走 UDP 4500,且需要避免设备改写源端口;若出现端口改写,可评估在两台 NAT 设备上固定映射关系。

易错点

  • 只放行 UDP 500 与 4500,漏掉协议 50:表现为隧道 Established 但业务流量完全不通
  • 只放行单向:去程正常回程被丢,ping 表现为单方向丢包,很容易误判为路由问题
  • 在 NAT 设备上启用会改写源端口的 NAT 规则:对端按原始端口回包,协商报文被丢弃
  • 修改防火墙策略后不清理已有 SA:旧 SA 残留让现象看起来像修好了一半,实际是混合状态
  • 以为开了 UDP 4500 就一定走 NAT-T:实际是否启用由设备检测到的 NAT 情况决定,可用 show 命令确认

数据来源与参考

  • RFC 3948: UDP 封装 ESP
  • RFC 7296: IKEv2
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌