操作步骤
执行命令display ipsec policy检查IPSec SA的触发方式。
<sysname> display ipsec policy
===========================================
IPSec policy group: "1"
Using interface: GigabitEthernet 0/0/2
===========================================
Sequence number: 1
Policy Alias: 1-1
Security data flow: 3000/IPv4 //policy配置完整条件一
Peer name : 1 //policy配置完整条件二
Perfect forward secrecy: DH group 2
Tunnel local address: 1.1.1.1
Proposal name: 1 //policy配置完整条件三
IPSec SA local duration(time based): 3600 seconds
IPSec SA local duration(traffic based): 20971520 kilobytes
SA trigger mode: Traffic-based //IPSec SA的触发方式
Route inject state: Static
Route inject nexthop: -
Route inject preference: 70
Policy state: Enable //策略是否使能:Enable——使能,Disable——未始能
Anti-replay: -
Anti-replay window size: -
Fragment before-encryption: Disable
Respond-only : Disable //是否响应方:Enable——只做响应方,Disable——可做发起方
Policy status : Active //策略是否应用:Active——已应用,Inactive——未应用
Smart-link profile: -
Smart-link using interface:
Flow-vrf check : Enable
Sa keep-holding-to hard-duration : Disable
如果Policy state或Policy status显示项有一项处于Disable或Inactive状态,那么策略未生效,需要检查ipsec policy配置;
如果Respond-only显示项为Enable,那么ipsec policy只能接收对端协商,不能触发;
如果SA trigger mode显示项为Traffic-based,那么触发IKE协商的前提条件为有业务流量,用户可以通过Ping方式来触发IKE协商。用户也可以在ipsec-policy视图下执行命令sa trigger-mode auto配置IPSec SA的触发方式为自动触发方式,这样可以避免无业务流量时无法触发IKE协商。
检查私网路由及公网路由是否可达。
执行命令ping确认是否可以Ping通私网和公网路由。如果Ping不通,则请确保链路正常、接口Up、路由等网络配置正确。
需要使能接口Ping功能;
公网接口应用了点到多点IPSec策略,可能导致Ping不通。
检查IPSec策略是否正确应用到隧道接口上。
执行命令display ipsec interface brief查看隧道接口是否有IPSec策略信息,如果没有,则需在该接口上应用IPSec策略。
<sysname> display ipsec interface brief
------------------------------------------------
IPSec policy : policy1
Using interface : GigabitEthernet0/0/2
IPSec policy number : 10
IPSec policy Type : policy
------------------------------------------------
只有配置完整的IPSec策略才能被应用到接口上,而且只有应用到接口上的IPSec策略才会生效。如果新增的IPSec策略未在接口应用,则需要检查IPSec策略配置是否完整,再将其应用到接口上。
IPSec策略配置完整的三个条件:
security acl ——引用ACL,点到点IPSec策略必须配置,点到多点IPSec策略可选;
proposal ——引用IPSec提议;
ike-peer ——引用IKE对等体,点到点IPSec策略必须配置remote-address,点到多点IPSec策略可选。
如果IPSec policy Type显示为template,说明该策略是点到多点IPSec策略,只能作为响应方,不能主动触发协商。当一个IPSec策略组同时存在点到点IPSec策略和点到多点IPSec策略时,点到多点IPSec策略的优先级需最小,即序号最大,一般推荐序号为10000。
检查Security ACL与待保护数据流是否匹配。
方法一:执行命令display ipsec policy查看Security ACL序号,然后再执行命令display acl acl-number检查ACL配置与待保护数据流是否匹配,如果不匹配,则请修改正确。
<sysname> display ipsec policy
===========================================
IPSec policy group: "10"
Using interface: GigabitEthernet0/0/2
===========================================
Sequence number: 10
Policy Alias: map1-10
Security data flow: 3100/IPv4 //Security ACL
Peer name : rut2
Perfect forward secrecy: DH group 14
Proposal name: prop1
IPSec SA local duration(time based): 3600 seconds
IPSec SA local duration(traffic based): 1843200 kilobytes
SA trigger mode: Traffic-based
......
<sysname> display acl 3100
Advanced ACL 3100, 1 rule ( Reference counter 1 )
Acl's step is 5
rule 5 permit ip source 10.1.1.0 0.0.0.255 destination 10.1.2.0 0.0.0.255 (0 times matched)
方法二:诊断视图下执行命令display ipsec tdbentry查看Flow source和Flow destination显示项,再检查与待保护的数据流是否匹配。若不匹配,则请修改正确。
[sysname-diagnose] display ipsec tdbentry
===============================
Interface: GigabitEthernet 0/0/2
-----------------------------
IPSec policy/profile name: "1"
Sequence number : 1
Acl group : 3100
Acl rule : 5
Mode : ISAKMP
-----------------------------
Tunnel local : 1.1.1.1
Tunnel remote : 2.1.1.1
Flow source : 10.1.1.1/255.255.255.0 0/0-65535
Flow destination : 10.2.1.1/255.255.255.0 0/0-65535
……
检查是否有NAT策略干扰IPSec保护数据流。
转发流程中IPSec模块位于NAT模块(NAT Server、目的NAT、源NAT)之后,故应确保NAT Server、目的NAT不影响IPSec对保护的数据流的处理。具体要求如下:
执行命令display firewall server-map查看Server MAP表中的源IP地址和目的IP地址。
请确保IPSec保护的数据流不能匹配NAT Server建立的Server MAP表和反向Server MAP表,否则报文目的地址将被转换。
执行命令display zone和display acl acl-number查看目的NAT策略的ACL信息。
请确保IPSec保护的数据流不能匹配目的NAT策略,否则报文目的地址将被转换。
执行命令display current-configuration configuration policy-nat查看源NAT策略信息。
请确保IPSec保护的数据流不能匹配源NAT策略。
如果上述方法还无法定位出问题,请执行如下命令对业务流量报文进行跟踪,分析debug中是否有NAT转换信息或者其他异常信息。
<sysname> terminal monitor
<sysname> terminal debugging
<sysname> debugging dataplane trace acl 3100
如果IPSec保护的数据流需要进行NAT转换,则Security ACL保护的地址为NAT后的地址。
检查安全区域的域间配置信息是否正确。
执行命令display current-configuration configuration policy-security查看安全区域的域间配置信息,确保IPSec保护的数据流能够从Trust域送到Untrust域。
诊断视图下执行命令display ipsec tdbentry查看策略是否触发协商。
[sysname-diagnose] display ipsec tdbentry
===============================
Interface: GigabitEthernet 0/0/2
-----------------------------
IPSec policy/profile name: "1"
Sequence number : 1
Acl group : 3100
Acl rule : 5
Mode : ISAKMP
-----------------------------
Tunnel local : 1.1.1.1
Tunnel remote : 2.1.1.1
Flow source : 10.1.1.1/255.255.255.0 0/0-65535
Flow destination : 10.2.1.1/255.255.255.0 0/0-65535
Inbound tdb flag : Closed
Outbound tdb flag : Closed //协商状态标志
Anti-replay : Enable
Anti-replay window size : 1024
Fragment Before-encryption: Disable
ipsec tdbentry是内部动态数据表项,ipsec policy引用的security acl中的每一个rule对应一个tdbentry表项,IPSec协商是以tdbentry为单位进行的。ipsec tdbentry的显示项outbound tdb flag状态可以初步判断协商状态。flag状态如下所示:
Closed:未协商成功,对于发起方说明未触发协商;
Initialed:已初始化,对于发起方说明正在触发协商;
Ready:已协商成功。
当security acl有多个rule时,如果未触发IPSec协商,那么该ipsec policy对应的所有tdbentry的outbound tdb flag状态都为Closed。
检查私网流量是否从应用了IPSec策略的接口转发。
执行命令display ip routing-table查看私网流量的路由及出接口信息。
[sysname-diagnose] display ip routing-table
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
Destinations : 19 Routes : 19
Destination/Mask Proto Pre Cost Flags NextHop Interface
10.1.2.2/32 Unr 70 0 D 1.1.1.1 GigabitEthernet 0/0/2
……
为了简化私网路由的配置以及减少手工配置导致的路由配置错误,防火墙ipsec policy支持路由注入功能,命令为route inject { static | dynamic }。点到点策略支持静态路由注入和动态路由注入,点到多点策略只支持动态路由注入,通过路由注入功能生成的路由协议均为Unr。
开启静态路由注入功能后,策略应用到接口就会生成路由,且该路由不会随IPSec隧道状态变化而变化;而动态路由注入功能则是在IPSec隧道协商成功后才会生成路由,当IPSec隧道中断后,对应的路由也会撤销。
若以上方法均没有定位出问题所在,请收集以下信息,并联系技术支持人员。
收集配置信息、上述步骤的操作结果,并记录到文件中。
执行命令debugging收集IPSec隧道建立过程中的信息。
<sysname> terminal monitor
<sysname> terminal debugging
<sysname> debugging ikev1 all //采用IKEv1协商时收集的debugging信息
<sysname> debugging ikev2 all //采用IKEv2协商时收集的debugging信息
<sysname> debugging ipsec all
关闭debugging后,一键式收集设备的所有诊断信息并导出文件。
执行命令display diagnostic-information file-name采集设备诊断信息并保存为文件。
<sysname> display diagnostic-information dia-info.txt
Now saving the diagnostic information to the device
100%
Info: The diagnostic information was saved to the device successfully
当诊断信息文件生成之后,您可以通过TFTP等方式将其从设备上导出。
您可以在用户视图下执行dir命令,确认文件是否正确生成。
收集设备的日志和告警信息并导出文件。
执行save logfile命令,将缓冲区的日志和告警信息保存为文件。
<sysname> save logfile all
Info: Save logfile successfully.
Info: Save diagnostic logfile successfully.
当日志和告警信息文件生成之后,您可以通过TFTP等方式将其从设备上导出。
收集接口的报文信息,通过TFTP等方式将其从设备上导出。
<sysname> system-view
[sysname] acl 3100
[sysname-acl-adv-3100] acl 3100 //定义数据流
[sysname-acl-adv-3100] rule 5 permit ip source 10.1.1.1 0 destination 10.2.1.1 0
[sysname-acl-adv-3100] rule 5 permit ip source 10.2.1.1 0 destination 10.1.1.1 0
[sysname-acl-adv-3100] quit
[sysname] packet-capture ipv4-packet 3100 interface GigabitEthernet 0/0/1
[sysname] packet-capture startup packet-num 1500 //开启获取报文头信息功能
[sysname] packet-capture queue 0 to-file 1.cap //将获取的报文头信息保存到设备上
获取报文头后,请删除其相关配置。