小乔 发表于 2024-12-11 21:06:30

IPSec故障案例:未触发IKE协商

本帖最后由 小乔 于 2024-12-11 21:08 编辑

现象描述如图1所示,FW间部署IPSec后,PC之间互访不通。图16-24 IPSec组网图
https://download.huawei.com/mdl/image/download?uuid=3ef07ee8e00a4c4c9689e5812a3d8b92

在FW1上执行命令display ike sa remote 2.1.1.1查看SA状态,没有显示信息,说明IPSec隧道建立失败。
<FW1> display ike sa
在FW1上执行命令display firewall session table verbose destination-port global 500 destination global 2.1.1.1查看会话信息,没有显示信息。

<FW1> display firewall session table verbose destination-port global 500 destination global 2.1.1.1
在FW1上执行命令display ipsec statistics查看IPSec统计信息。

<FW1> display ipsec statistics
.......
negotiate about packet statistics:
    IKE fwd packet ok: 0, err: 0
    IKE ctrl packet inbound ok: 0, outbound ok: 0
    SoftExpr: 0, HardExpr: 0, DPDOper: 0
trigger ok: 0, switch sa: 0, sync sa: 0
    recv IKE nat keepalive: 0, IKE input: 0
IPSec SA建立的触发方式为自动触发方式
outbound ok为0,说明本端IKE协商报文没有发出,没有触发协商IPSec隧道。

IPSec SA建立的触发方式为流量触发方式
trigger ok为0,说明没有数据流触发IKE协商。如果trigger ok不为0,outbound ok为0,说明本端IKE协商报文没有发出,没有触发协商IPSec隧道。


设备上建立多条IPSec隧道时,执行命令display ipsec statistics无法确定哪条隧道的IKE协商报文没有被发出。此时,建议执行命令display firewall session table verbose查看是否存在IKE对等体地址的IKE会话(默认UDP端口号为500或4500)。例如:

<FW1> display firewall session table verbose
udpVPN: public --> publicID: a68f5bd4603f01f756c5ab54663
Zone: local --> trustTTL: 00:02:00Left: 00:01:58
Recv Interface: InLoopBack0
Interface: GigabitEthernet0/0/2NextHop: 1.1.1.2MAC: 2cab-0078-c406
<--packets: 0 bytes: 0 --> packets: 0 bytes: 0   //检查是否发出或收到IKE协商报文
1.1.1.1:500 --> 2.1.1.1:500 PolicyName: default
相关告警与日志
原因分析https://download.huawei.com/mdl/image/download?uuid=2965fcdfc45643b289874aea6068b28c操作步骤执行命令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显示项,再检查与待保护的数据流是否匹配。若不匹配,则请修改正确。
display ipsec tdbentry=============================== Interface: GigabitEthernet 0/0/2            ----------------------------- IPSec policy/profile name: "1"Sequence number          : 1Acl 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查看策略是否触发协商。 display ipsec tdbentry=============================== Interface: GigabitEthernet 0/0/2----------------------------- IPSec policy/profile name: "1"Sequence number          : 1Acl 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: Disableipsec 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查看私网流量的路由及出接口信息。
displayip routing-tableRoute Flags: R - relay, D - download to fib    ------------------------------------------------------------------------------    Routing Tables: Public                                  Destinations : 19       Routes : 19                                                   Destination/Mask    Proto   PreCost      Flags NextHop         Interface                                                      10.1.2.2/32Unr   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 acl 3100 acl 3100   //定义数据流 rule 5 permit ip source 10.1.1.1 0 destination 10.2.1.1 0rule 5 permit ip source 10.2.1.1 0 destination 10.1.1.1 0 quit packet-capture ipv4-packet 3100 interface GigabitEthernet 0/0/1 packet-capture startup packet-num 1500   //开启获取报文头信息功能 packet-capture queue 0 to-file 1.cap   //将获取的报文头信息保存到设备上   获取报文头后,请删除其相关配置。

mawr1985 发表于 2024-12-12 08:01:29

{:6_267:}

thamky 发表于 2024-12-12 08:52:30

{:6_299:}
页: [1]
查看完整版本: IPSec故障案例:未触发IKE协商