自动协商与 keepalive
2025/11/6IPSec VPN原理7.X.X大约 2 分钟
自动协商与 keepalive
提示
- 本文主要讨论 IPSec 二阶段中的
auto-negotiate和keepalive。 - IPSec 一阶段中的
keepalive配置是用于保持 NAT - T 环境下的 UDP 4500 会话,不属于本文讨论范围。
配置方法
提示
若 IPSec 一阶段开启了passive-mode,二阶段的auto-negotiate与keepalive将无法开启。
auto-negotiate与keepalive是 IPsec 二阶段配置中用于隧道保持在线的机制。二者独立工作,又可搭配使用。
auto-negotiate:二阶段 SA 不存在时主动发起协商,默认关闭(dynamic 模式的隧道无法配置),无需流量触发。config vpn ipsec phase2-interface edit <phase2_interface_name> set phase1name <phase1_interface_name> set auto-negotiate [enable | disable] next endkeepalive:在已经有二阶段 SA 存在的情况下,决定二阶段 SA 达到 soft-timeout 时是否立即 rekey,防止隧道在 hard-timeout 到期时再进行 rekey,导致隧道中断。相关信息
soft-timeout = hard-timeout – rekey-margin
soft-timeout、hard-timeout、rekey-margin 的相关信息请参考 VPN → IPSec VPN → IPSec 重协商机制章节。
重要
auto-negotiate开启后,keepalive会被强制开启,且keepalive相关命令消失。只有在auto-negotiate关闭时才可以控制keepalive的开关。config vpn ipsec phase2-interface edit <phase2_interface_name> set phase1name <phase1_interface_name> set auto-negotiate disable set keepalive [enable | disable] next end
工作机制
不能将auto-negotiate和keepalive混淆,这是两个完全独立的功能。简单来说:
auto-negotiate:没有二阶段隧道时 → 主动协商建立,无需流量触发。keepalive:有二阶段隧道的前提下 → 在 soft-timeout 到期时发起 rekey 防止隧道中断。
| 功能 | 生效条件 | 开启行为 | 关闭行为 |
|---|---|---|---|
auto-negotiate | 二阶段 SA 不存在 | 持续主动发起二阶段协商,直到 SA 建立,无需流量触发 | 不会主动发起协商,需流量触发或对端发起 |
keepalive | 二阶段 SA 达到 soft-timeout | 立即发起二阶段 rekey,需要已建立的二阶段 SA | 若最近 2 分钟内无流量,在 hard-timeout 到期时删除 SA,但不会 rekey 若最近 2 分钟内有流量,在 hard-timeout 到期时 rekey |
组合行为
auto-negotiate | keepalive | 对应行为 |
|---|---|---|
| 开启 | 强制开启 | 二阶段隧道会自动建立,无需流量触发 二阶段 soft-timeout 到期时发起 rekey |
| 关闭 | 开启 | 二阶段隧道不会自动建立,需流量触发或对端发起 二阶段 soft-timeout 到期时发起 rekey |
| 关闭 | 关闭 | 二阶段隧道不会自动建立,需流量触发 若最近 2 分钟内无流量,在 hard-timeout 到期时删除 SA,但不会 rekey 若最近 2 分钟内有流量,在 hard-timeout 到期时 rekey |
配置建议
auto-negotiate:通常建议开启,如有流量付费或性能考虑可设置为关闭。keepalive:始终建议保持开启,防止二阶段隧道在 hard-timeout 到期后发生中断。