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 //将获取的报文头信息保存到设备上 获取报文头后,请删除其相关配置。
{:6_267:} {:6_299:}
页:
[1]