Print

ipsec在nqa和eaa下实现秒级故障切换

2025-11-25 发表

组网及说明

配置步骤

一、场景和目标

这套配置是在模拟器上搭的一个双链路 IPsec 主备隧道场景:

  • RouterA:本端,总部侧,业务网段 192.168.1.0/24(用 Loopback0 模拟)。

  • RouterB:对端,分支侧,业务网段 172.16.1.0/24。

  • 两端之间有两条链路:

    • 主链路:10.0.0.0/30(RouterA G0/0 ↔ RouterB G0/0);

    • 备链路:10.0.1.0/30(RouterA G0/1 ↔ RouterB G0/1)。

  • 两条链路上分别建立一条 IKEv2 IPsec 隧道(IPSECP1 / IPSECP2),对 192.168.1.0/24 ↔ 172.16.1.0/24 的流量进行加密。

  • 目标:

    • 正常时所有业务走主链路 IPsec 隧道

    • 主链路或主隧道出现故障时,自动切到备链路 IPsec 隧道

    • 主链路恢复后,自动切回。


二、RouterA:NQA + Track + EAA 驱动的“业务路由切换”

1. 数据面:双 IPsec 隧道 + 静态路由

  • 本地受保护网段:Loopback0 192.168.1.1/24。

  • 远端网段:172.16.1.0/24。

 
acl advanced 3100 rule 5 permit ip source 192.168.1.0 0.0.0.255 destination 172.16.1.0 0.0.0.255
  • 两条 IPsec 策略分别绑定在主备物理接口上:

 
interface GigabitEthernet0/0 ip address 10.0.0.1 255.255.255.252 ipsec apply policy IPSECP1 ipsec no-nat-process enable interface GigabitEthernet0/1 ip address 10.0.1.1 255.255.255.252 ipsec apply policy IPSECP2 ipsec no-nat-process enable
 
ipsec policy IPSECP1 1 isakmp transform-set TS security acl 3100 remote-address 10.0.0.2 ikev2-profile IKEP1 ipsec policy IPSECP2 1 isakmp transform-set TS security acl 3100 remote-address 10.0.1.2 ikev2-profile IKEP2
  • 业务路由(A → B 方向)是单一静态路由,下一跳根据主备状态在两条链路之间切换:

 
ip route-static 172.16.1.0 24 10.0.0.2 // 正常情况指向主链路

隧道本身一直存在,真正“切换”的是指向远端网段的静态路由,从而决定走哪条 IPsec 隧道。


2. 控制面:NQA+Track 实时感知主隧道状态

NQA 周期性检测远端 Loopback(172.16.1.1),关键是显式指定了 next-hop 10.0.0.2,只探测主隧道

 
nqa entry admin ipsec_primary type icmp-echo destination ip 172.16.1.1 source ip 192.168.1.1 next-hop ip 10.0.0.2 frequency 3000 probe count 3 reaction 1 checked-element probe-fail threshold-type consecutive 3 action-type trigger-only nqa schedule admin ipsec_primary start-time now lifetime forever track 1 nqa entry admin ipsec_primary reaction 1
  • 当通过主链 10.0.0.2 到 172.16.1.1 连续 3 轮探测失败时,Track 1 变为 Negative

  • 当探测恢复正常时,Track 1 变为 Positive

因为 NQA 写死了 next-hop 10.0.0.2,所以:

  • 不管业务路由目前指向 10.0.0.2 还是 10.0.1.2,NQA 始终监控的是“主链路 IPsec 隧道”的真实健康状态;

  • 主链路恢复时,NQA 会第一时间感知到,从而触发“切回主路由”。


3. EAA(rtm cli-policy):自动改静态路由实现主备切换

当 Track 状态变化时,EAA 自动下发命令修改静态路由。

主隧道探测失败 → 切换到备链路:

 
rtm cli-policy IPSEC_TO_BACKUP event track 1 state negative suppress-time 30 action 0 cli system-view action 1 cli undo ip route-static 172.16.1.0 255.255.255.0 10.0.0.2 action 2 cli ip route-static 172.16.1.0 255.255.255.0 10.0.1.2 user-role network-admin

主隧道恢复 → 切回主链路:

 
rtm cli-policy IPSEC_TO_PRIMARY event track 1 state positive suppress-time 30 action 0 cli system-view action 1 cli undo ip route-static 172.16.1.0 255.255.255.0 10.0.1.2 action 2 cli ip route-static 172.16.1.0 255.255.255.0 10.0.0.2 user-role network-admin

这样就实现了:

  • A 端业务转发的主备切换由 NQA+Track+EAA 自动完成;

  • IPsec 隧道本身不需要频繁建/删,只是业务流量在两条已经建立的隧道之间“换路”。


三、RouterB:双 IPsec + 静态路由优先级的被动主备

B 端配置更加简单,没有用到 NQA/EAA,只是做了:

  1. 同样在两条物理口上各建一条 IPsec 隧道:

 
interface GigabitEthernet0/0 ip address 10.0.0.2 255.255.255.252 ipsec apply policy IPSECP1 ipsec no-nat-process enable interface GigabitEthernet0/1 ip address 10.0.1.2 255.255.255.252 ipsec apply policy IPSECP2 ipsec no-nat-process enable
  1. 对 192.168.1.0/24 配置两条静态路由,使用不同的 preference 实现主备:

 
ip route-static 192.168.1.0 24 10.0.0.1 ip route-static 192.168.1.0 24 10.0.1.1 preference 70
  • 正常时,优先使用 preference 默认的主路由(10.0.0.1);

  • 当主链路/主隧道不可达、下一跳失效时,路由表会自动回退到 preference 70 的备路由(10.0.1.1),从而把业务切到备隧道上。

加上对端对称的 ACL/IPsec/IKE 配置,B 端在整套方案里扮演的是一个“静态路由优先级 + IPsec”的被动主备角色


四、端到端业务流 & 故障切换过程梳理

  1. 正常情况

  • A:静态路由 172.16.1.0/24 指向 10.0.0.2,业务走主隧道 IPSECP1;

  • B:静态路由 192.168.1.0/24 首选 10.0.0.1,也走主隧道 IPSECP1;

  • NQA 探测通过主隧道访问 172.16.1.1 成功,Track 1 = Positive。

→ 双向流量都在主隧道上,备隧道处于“热备”状态。

  1. 主链路 / 主隧道故障

  • 主物理链路或 IPSECP1 相关配置/SA 出现问题;

  • A 端通过 next-hop 10.0.0.2 的 NQA 探测多次失败 → Track 1 = Negative;

  • EAA 触发 IPSEC_TO_BACKUP,将静态路由改为 172.16.1.0/24 → 10.0.1.2

  • B 端检测到 10.0.0.1 不可达后,自动使用 preference 70 的备路由 192.168.1.0/24 → 10.0.1.1

→ 双向流量全部收敛到备链路 IPSECP2 上。

  1. 主链路恢复

  • 主物理链路与主 IPsec 隧道恢复;

  • NQA 通过主链路再次成功访问 172.16.1.1 → Track 1 = Positive;

  • EAA 触发 IPSEC_TO_PRIMARY,将 A 端静态路由切回主链路 172.16.1.0/24 → 10.0.0.2

  • B 端检测到 10.0.0.1 恢复可达后,再次优先使用主路由。

→ 业务自动从备隧道“抢回”到主隧道,形成完整的主备闭环。

配置关键点