抓包看 IKE 协商
IPsec 协商全程都能抓:IKEv1 主模式是 6 个报文(前 3 个互换提案与密钥材料,后 3 个完成认证),随后快速模式 3 个报文建 SA;IKEv2 简化为 IKE_SA_INIT 与 IKE_AUTH 两轮。看不到对端响应,通常说明中间设备阻断或路由不可达;能看到响应但协商失败,则多半是参数或身份问题,抓包里会带出对应的 Notify 原因。
基本信息
| 抓包命令 | tcpdump -ni eth0 'udp port 500 or udp port 4500' |
|---|---|
| 显示过滤 | Wireshark:isakmp(IKEv1)或 ikev2(IKEv2) |
| 常见 Notify | NO_PROPOSAL_CHOSEN、AUTHENTICATION_FAILED、INVALID_KE_PAYLOAD、TS_UNACCEPTABLE |
| 抓包位置 | 设备两侧同抓,NAT 外侧看到的端口可能已变为 4500 |
| 耗时提示 | 生产设备上的 debug 命令开销较大,优先用抓包替代 |
典型使用场景
- 协商起不来:判断是没回应(阻断/不可达)还是参数被拒(Notify 明确)
- 第三方对接:交换抓包文件作为共同证据,快速定位分歧点
- 穿越 NAT 验证:确认实际使用的是 500 还是 4500
- 改造前后对比:保存协商成功时的抓包作为基线
- 责任界定:区分网络层阻断与参数配置问题,避免来回推诿
抓包与分析
抓包与分析
# 在线观察关键字段
tcpdump -ni eth0 -vv -s0 'udp port 500 or udp port 4500' -c 40
# 落盘保存后用 Wireshark 打开分析
tcpdump -ni eth0 -w /tmp/ike.pcap 'udp port 500 or udp port 4500'
# 用 tshark 过滤出 IKE 报文
tshark -r /tmp/ike.pcap -Y 'isakmp || ikev2'
# 只看某个对端的协商过程
tshark -r /tmp/ike.pcap -Y 'isakmp || ikev2' -z conv,udp抓包现象对照
| 现象 | 含义 | 下一步 |
|---|---|---|
| 只有本端发出,无任何响应 | 中间阻断或路由不可达 | 逐跳核对路径与安全策略放行情况 |
| NO_PROPOSAL_CHOSEN | 两端提案无交集 | 比对加密、哈希、DH 组与认证方式 |
| AUTHENTICATION_FAILED | 身份或密钥不匹配 | 核对预共享密钥与身份匹配条件 |
| 出现 4500 端口 | 路径中存在 NAT,已启用 NAT-T | 确认防火墙同时放行 500 与 4500 |
两端同时抓包最省时间:请求发出但没有响应时,只有对比两侧抓包才能判断报文是被中间设备丢了,还是对端收到了却没有回应。
抓包文件要连时间戳一起保留,并和设备日志对齐:不少「偶发不通」在时间上恰好与链路抖动、中间设备会话老化吻合,对齐时间线后结论会清晰很多。