对已启动但无法传递流量的 VPN 进行故障排除
解决方案
检查 VPN 安全关联 (SA) 是否处于活动状态: show security ipsec security-associations
user@CORPORATE> show security ipsec security-associations total configured sa: 1 ID Gateway Port Algorithm SPI Life:sec/kb Mon vsys <32785 2.2.2.2 1398 ESP:3des/sha1 29e26eba 28735/unlim - 0 >32785 2.2.2.2 1398 ESP:3des/sha1 6d4e790b 28735/unlim - 0
如果列出了 VPN 网关,则隧道已建立并已启动。输出为每个 VPN 隧道显示两行,显示每个流量方向的 SPI 信息。
MON
VPN 监控使用该字段来显示隧道的状态,并具有以下值之一:- (连字符):VPN 隧道处于活动状态,并且未配置 VPN 监视器可选功能。
U (上):VPN 隧道处于活动状态,链路(通过 VPN 监视器检测到)已启动。
D (下):VPN 隧道处于活动状态,并且链路(通过 VPN 监视器检测到)已关闭。
Yes:IPsec SA 状态为活动或已启动。继续执行步骤 2。
No:IPsec SA 状态已关闭。请参阅 如何对关闭或未激活的 VPN 隧道进行故障排除。
检查 VPN 是否使用环路接口 lo0 作为外部接口: show configuration security ike
root> show configuration security ike policy ike_pol { proposal-set compatible; pre-shared-key ascii-text "$9$tMwDuIESreWX7yr4aGDkqIEhcvWbs2"; } gateway gate1 { ike-policy ike_pol; address 10.10.10.2; external-interface lo0.0; }
检查用作 VPN 外部接口的出口接口(物理接口)和 lo0 是否在同一安全区域中。
Yes:继续执行步骤 4。
No:更新安全区域分配,使 VPN 外部接口和物理出口接口位于同一安全区域中。请参阅在 环路接口上终止 IPSec VPN 时的流量丢失。
如果您的 VPN 是基于路由的 VPN,请继续执行步骤 5。如果是基于策略的 VPN,请继续执行步骤 8 。请参阅 基于策略的 VPN 和基于路由的 VPN 有何区别?
检查是否通过 st0 接口为远程网络分配了路由: show route remote network
root@siteA > show route 192.168.20.10 inet.0: 8 destinations, 8 routes (8 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both 192.168.2.0/24 *[ARI-TS/5] 00:00:53 > via st0.0 <----------
Yes:继续执行步骤 6。
No:通过 st0 接口为远程网络分配路由。请参阅 基于路由的 VPN 已启动,但未传递流量。是否缺少路线?
注:如果您使用的是动态路由协议(如 BGP 或 OSPF),请检查路由协议。
根据在步骤 5中分配给远程网络的路由,检查 VPN 是否指向正确的 st0 接口:show security ike 和 show security ipsec
首先, show security ike 使用命令检查 IKE 网关。
root@siteA # show security ike ... gateway gw-siteB { <--------- ike-policy ike-phase1-policy; address 2.2.2.2; external-interface ge-0/0/3.0; }
使用 show security ipsec 命令检查该 IKE 网关的 IPsec VPN,并在输出中验证
bind-interface
是否指向st0
接口。在此示例中,VPN
ike-vpn-siteB
指向接口st0.0
。root@siteA # show security ipsec ... vpn ike-vpn-siteB { bind-interface st0.0; ike { gateway gw-siteB; <--------- proxy-identity { local 192.168.2.0/24; remote 192.168.1.0/24; service any; } ipsec-policy ipsec-phase2-policy; } establish-tunnels immediately; }
Yes:继续执行步骤 7。
No:VPN 未指向正确的 st0 接口。删除当前路由,并将路由添加到正确的 st0 接口。请参阅 基于路由的 VPN 已启动,但未传递流量。是否缺少路线?
检查是否存在允许从内部区域到 st0 安全区域的信息流的安全策略: show security policies
Yes:继续执行步骤 8。
No:创建相应的安全策略并再次测试 VPN。请参阅 如何为基于路由的 VPN 配置策略。
检查是否存在允许流量的 VPN 隧道安全策略: show security policies
root@siteA# show security policies ... from-zone trust to-zone untrust { policy vpn_egress { match { source-address local-net; destination-address remote-net; application any; } then { permit { tunnel { <---------- ipsec-vpn ike-vpn-siteC; <---------- } } } } } from-zone untrust to-zone trust { policy vpn_ingress { match { source-address remote-net; destination-address local-net; application any; } then { permit { tunnel { <---------- ipsec-vpn ike-vpn-siteC; <---------- } } } } }
Yes:继续执行步骤 9。
No:验证基于策略的 VPN 配置。请参阅 基于策略的站点到站点 VPN 。
检查流量是否与步骤 7 或步骤 8中确定的策略匹配: show security flow session source prefix source address destination prefix destination address
root@siteA> show security flow session source-prefix 192.168.2.0/24 destination-prefix 192.168.1.0/24 Session ID: 5801, Policy name: AtoB/2, Timeout: 1790, Valid In: 192.168.2.222/1 --> 192.168.1.13/23053;icmp, If: fe-0/0/2.0, Pkts: 59878, Bytes: 4602292 Out: 192.168.1.13/23053 --> 192.168.2.222/1;icmp, If: st0.0, Pkts: 52505, Bytes: 4189289
Yes:继续执行步骤 10。
No:验证安全策略的顺序:show security match policies。请参阅 了解安全策略排序。
如果顺序正确,请参阅 如何对未传递数据的安全策略进行故障排除。
注:如果只有会话输出方向上的计数器在
pkts
递增,则与 VPN 对等方验证是否正在接收流量。这是为了检查与之形成此隧道的 VPN 对等方上的数据包计数器,以查看另一端是否正在接收数据包。
收集日志和流跟踪选项,并向瞻博网络支持团队提交案例:
请参阅 数据收集清单 - 要收集以进行故障排除的日志/数据中的基于 IPsec VPN 策略或基于路由的 VPN 部分。
有关流跟踪选项的信息,请参阅如何使用“流跟踪选项”和“安全数据路径调试”。
要向瞻博网络支持团队提交 JTAC 案例,请参阅 客户支持数据收集 ,了解在创建 JTAC 案例之前应收集的数据以帮助排除故障。