HUAWEI USG6000E, USG6000, USG9500, NGFW Module V500, V600 维护宝典

IPSec隧道建立失败导致业务不通

IPSec隧道建立失败导致业务不通

故障案例:IKE安全提议参数不一致

现象描述

图1所示,FW间部署IPSec后,PC间互访不通。

图16-4 IPSec组网图

  1. 在FW1上执行命令display ike sa发现IKE SA没有建立成功。
    <FW1> display ike sa 
    IKE SA information :                        
       Conn-ID    Peer           VPN             Flag(s)              Phase  
      ---------------------------------------------------------------------- 
       1342      0.0.0.0                         RD|A                 v2:1  
                                
      Number of IKE SA : 0 
      ---------------------------------------------------------------------- 
                                               
      Flag Description:                                                    
      RD--READY   ST--STAYALIVE   RL--REPLACED   FD--FADING   TO--TIMEOUT 
      HRT--HEARTBEAT   LKG--LAST KNOWN GOOD SEQ NO.   BCK--BACKED UP 
      M--ACTIVE   S--STANDBY   A--ALONE  NEG--NEGOTIATING
  2. 在FW1上执行命令display ike error-info查看IKE协商失败原因为phase1 proposal mismatch,说明两端IKE安全提议参数不一致。
    <FW1> display ike error-info 
      current info Num :2 
      Ike error information: 
      current ike Error-info number :2 
    ----------------------------------------------------------------------------------------- 
      peer              port    error-reason                     version error-time 
    ----------------------------------------------------------------------------------------- 
      2.1.1.1           500     phase1 proposal mismatch          v2      2017-09-05 15:22:32 
      2.1.1.1           500     phase1 proposal mismatch          v2      2017-09-05 15:22:32 
    -----------------------------------------------------------------------------------------

相关告警与日志

原因分析

IKE安全提议中参数不一致,例如:认证算法、加密算法、DH密钥交换参数。

操作步骤

  1. 执行命令display ike proposal [ number proposal-number ],查看两端的IKE安全提议参数是否一致。

    <FW1> display ike proposal number 10 
    -------------------------------------------                                      
     IKE Proposal: 10                                                                
       Authentication Method      : PRE_SHARED                                       
       Authentication Algorithm   : SHA2-256                                         
       Encryption Algorithm       : AES-128                                          
       Diffie-Hellman Group       : MODP-2048                                        
       SA Duration(Seconds)       : 86400                                            
       Integrity Algorithm        : HMAC-SHA2-256                                    
       Prf Algorithm              : HMAC-SHA2-256                                    
    -------------------------------------------
    <FW2> display ike proposal number 10 
    -------------------------------------------                                      
     IKE Proposal: 10                                                                
       Authentication Method      : PRE_SHARED                                       
       Authentication Algorithm   : SHA2-256                                         
       Encryption Algorithm       : AES-256                                          
       Diffie-Hellman Group       : MODP-2048                                        
       SA Duration(Seconds)       : 86400                                            
       Integrity Algorithm        : HMAC-SHA2-256                                    
       Prf Algorithm              : HMAC-SHA2-256                                    
    -------------------------------------------  

    从上可以看出Encryption algorithm不一致。

  2. 更改IKE安全提议中不一致的参数。

    由于两端Encryption algorithm不一致,所以在FW1修改加密算法。

    ike proposal 10 
     encryption-algorithm aes-256

    修改后,IPSec隧道建立成功,PC间可以互相访问。

建议与总结

配置IPSec时,需先保证路由可达,否则IKE协商肯定失败。

配置IPSec时,务必保证IKE安全提议一致,特别是与其他厂商设备对接时,有些缺省参数不一样,使用默认的参数时,就会导致IKE SA协商失败。当无法获取其他厂商设备的配置信息时,可以在本端设备执行命令debugging ikev2 all查看其他厂商设备发送过来的IKE安全提议信息。

用户在Debugging信息中可以查看本端解析的IKE安全提议。例如:

IKE_INFO 47:2699 Number of proposal : 1
IKE_INFO 47:2868 
 Proposal No 1:
 Protocol ID: ISAKMP
IKE_INFO 47:2521 ENCRYPTION ALGORITHM: AES_256   //加密算法
IKE_INFO 47:2274 INTEGRITY ALGORITHM: SHA_256   //加密算法
IKE_INFO 47:2243 PRF ALGORITHM: SHA2_256   //伪随机数产生函数的算法
IKE_INFO 47:2308 GROUP_TYPE: MODP_1024   //DH密钥交换参数

如果用户使用IKEv1协议,则执行命令debugging ikev1 all查看本端解析的IKE安全提议。例如:

IKE_INFO 17:3513 Message from peer 1.1.1.1: validate payload SA
IKE_INFO 17:813 Message from peer 1.1.1.1: Parsing payload PROPOSAL 
IKE_INFO 17:813 Message from peer 1.1.1.1: Parsing payload TRANSFORM
IKE_INFO 2:2924   Attribute ENCRYPTION_ALGORITHM value AES_CBC   //加密算法
IKE_INFO 2:2924   Attribute KEY_LENGTH value 256   //加密算法长度
IKE_INFO 2:2924   Attribute HASH_ALGORITHM value SHA2-256   //认证算法
IKE_INFO 2:2924   Attribute AUTHENTICATION_METHOD value PRE_SHARED   //认证方法
IKE_INFO 2:2924   Attribute GROUP_DESCRIPTION value MODP_1024   //DH密钥交换参数
IKE_INFO 2:2924   Attribute LIFE_TYPE value SECONDS
IKE_INFO 2:2924   Attribute LIFE_DURATION value 86400   //IKE SA的生存周期

故障案例:预共享密钥不一致

现象描述

图1所示,FW间部署IPSec后,PC间互访不通。

图16-5 IPSec组网图

  1. 在FW1上执行命令display ike sa发现IKE SA没有建立成功。
    <FW1> display ike sa 
    IKE SA information :                        
       Conn-ID    Peer           VPN             Flag(s)              Phase  
      ---------------------------------------------------------------------- 
                                                                     
       1342      0.0.0.0                         RD|A                 v2:1  
                                
      Number of IKE SA : 0 
      ---------------------------------------------------------------------- 
                                               
      Flag Description:                                                    
      RD--READY   ST--STAYALIVE   RL--REPLACED   FD--FADING   TO--TIMEOUT 
      HRT--HEARTBEAT   LKG--LAST KNOWN GOOD SEQ NO.   BCK--BACKED UP 
      M--ACTIVE   S--STANDBY   A--ALONE  NEG--NEGOTIATING
  2. 在FW1上执行命令display ike error-info查看IKE协商失败原因为authentication fail,说明身份认证失败。
    <FW1> display ike error-info 
      current info Num :2 
      Ike error information: 
      current ike Error-info number :2 
    ----------------------------------------------------------------------------------------- 
      peer              port    error-reason                     version error-time 
    ----------------------------------------------------------------------------------------- 
      2.1.1.1           500     authentication fail              v2      2017-09-05 15:22:32 
      2.1.1.1           500     authentication fail              v2      2017-09-05 15:22:32 
    -----------------------------------------------------------------------------------------

两端采用IKEv1协商时,如果预共享密钥不一致,则执行命令display ike error-info显示失败原因为malformed-messageauthentication fail

相关告警与日志

原因分析

两端预共享密钥不一致。

操作步骤

  1. 执行命令display ike proposal [ number proposal-number ],查看两端的认证方法是否为预共享密钥认证。

    例如在FW1上查看。

    <FW1> display ike proposal number 10 
    -------------------------------------------                                      
     IKE Proposal: 10                                                                
       Authentication Method      : PRE_SHARED                                       
       Authentication Algorithm   : SHA2-256                                         
       Encryption Algorithm       : AES-128                                          
       Diffie-Hellman Group       : MODP-2048                                        
       SA Duration(Seconds)       : 86400                                            
       Integrity Algorithm        : HMAC-SHA2-256                                    
       Prf Algorithm              : HMAC-SHA2-256                                    
    -------------------------------------------

    如果两端Authentication Method不一致,请修改一致。还没解决时,请修改预共享密钥。

  2. 更改预共享密钥。

    假设两端的预共享密钥认证密钥为huawei@123。

    ike peer spub 
     pre-shared-key huawei@123

    修改后,IPSec隧道建立成功,PC间可以互相访问。

故障案例:IKE对等体remote地址不匹配

现象描述

图1所示,FW间已成功建立IPSec隧道。当在FW1的公网接口增加了sub地址并修改某些配置后,发现IPSec隧道建立不成功。经检查,两端IPSec和IKE参数配置均正确。

图16-6 IPSec组网图

  1. 在FW2上执行命令display ike sa发现IKE SA没有建立成功。
    <FW2> display ike sa 
    IKE SA information :                        
       Conn-ID    Peer           VPN             Flag(s)              Phase  
      ---------------------------------------------------------------------- 
       83891196   1.1.1.5:500                    NEG|A                v2:1  
                                
      Number of IKE SA : 1 
      ---------------------------------------------------------------------- 
                                               
      Flag Description:                                                    
      RD--READY   ST--STAYALIVE   RL--REPLACED   FD--FADING   TO--TIMEOUT 
      HRT--HEARTBEAT   LKG--LAST KNOWN GOOD SEQ NO.   BCK--BACKED UP 
      M--ACTIVE   S--STANDBY   A--ALONE  NEG--NEGOTIATING
  2. 在FW2上执行命令display ike error-info查看IKE协商失败原因为peer address mismatch,说明两端的IKE对等体remote地址不匹配。
    <FW2> display ike error-info 
      current info Num :1 
      Ike error information: 
      current ike Error-info number :1 
    ----------------------------------------------------------------------------------------- 
      peer              port    error-reason                     version error-time 
    ----------------------------------------------------------------------------------------- 
      1.1.1.5           500     peer address mismatch            v2      2017-09-05 15:22:32 
    -----------------------------------------------------------------------------------------
  3. 查看FW1接口配置的sub地址。
    interface GigabitEthernet0/0/1 
     ip address 1.1.1.1 255.255.255.0 
     ip address 1.1.1.5 255.255.255.0 sub 
     ipsec policy map1

相关告警与日志

原因分析

发起方的本端地址与响应方配置的对端地址不一致。

操作步骤

  1. 执行命令display ike peer [ name peer-name ],查看两端的IKE对等体地址是否匹配。

    <FW1> display ike peer name b 
    ------------------------------------------------                                 
       Peer name                    : b   
       IKE version                  : v2                                           
       VPN instance                 : -                                              
       Remote IP                    : 2.1.1.1                                        
       Authentic IP address         : -                                              
       Proposal                     : 10                                             
       Pre-shared-key               : %^%#=Q90U4SSw&~$c]YM.}!$}HWfFOm+G&i@`BW'7ETS%^ 
    %#                                                                               
       Local ID type                : IP                                             
       Local ID                     : -                                              
       Remote ID type               : -                                              
       Remote ID                    : -   
    ......... 
    ------------------------------------------------   
    <FW2> display ike peer name b 
    ------------------------------------------------ 
       Peer name                    : a 
       IKE version                  : v2 
       VPN instance                 : - 
       Remote IP                    : 1.1.1.5 
       Authentic IP address         : - 
       Proposal                     : 10 
       Pre-shared-key               : %^%#.SBO>Q{o#@_BHQ/%ULL;f3%rOo4+*3fs3TI7sX\'%^ 
    %# 
       Local ID type                : IP 
       Local ID                     : - 
       Remote ID type               : - 
       Remote ID                    : - 
    .......... 
    ------------------------------------------------

    从显示信息可以看出,FW2配置的对端地址为FW1接口的sub地址,而IKE协商时,缺省情况下,FW1使用接口的主地址作为本端地址,所以发起方的本端地址与响应方配置的对端地址不一致,导致IKE SA协商失败。

  2. 修改FW1的本端地址。

    ipsec policy map1 10 isakmp  
     tunnel local 1.1.1.5

    修改后,IPSec隧道建立成功,PC间可以互相访问。

建议与总结

对于ISAKMP方式安全策略,一般不需要配置IPSec隧道的本端地址,SA协商时会根据路由选择IPSec隧道的本端地址。而如下情况则需要配置本端地址:

  • 当安全策略实际绑定的接口IP地址不固定或无法预知时,可以执行命令tunnel local ip-address指定设备上的其他接口(如LoopBack接口)的IP地址作为IPSec隧道的本端IP地址,也可以执行命令tunnel local applied-interface指定安全策略应用接口的地址作为IPSec隧道的本端IP地址。
  • 当安全策略实际绑定的接口配置了多个IP地址(一个主IP地址和多个从IP地址)时,可以执行命令tunnel local ip-address指定其中一个IP地址作为IPSec隧道的本端IP地址,也可以执行命令tunnel local applied-interface指定该接口的主地址作为IPSec隧道的本端地址。
  • 当本端与对端存在等价路由时,可以执行tunnel local{ ip-address | applied-interface },来指定IPSec隧道的本端IP地址。

故障案例:IPSec安全提议参数不一致

现象描述

图1所示,FW间部署IPSec后,PC间互访不通。

图16-7 IPSec组网图

  1. 在FW1上执行命令display ike sa发现IPSec SA没有建立成功。
    <FW1> display ike sa 
    IKE SA information :                        
       Conn-ID    Peer           VPN             Flag(s)              Phase  
      ---------------------------------------------------------------------- 
      83891320    2.1.1.1:500                    RD|A                 v2:1  
                                
      Number of IKE SA : 1 
      ---------------------------------------------------------------------- 
                                               
      Flag Description:                                                    
      RD--READY   ST--STAYALIVE   RL--REPLACED   FD--FADING   TO--TIMEOUT 
      HRT--HEARTBEAT   LKG--LAST KNOWN GOOD SEQ NO.   BCK--BACKED UP 
      M--ACTIVE   S--STANDBY   A--ALONE  NEG--NEGOTIATING
  2. 在FW1上执行命令display ike error-info查看IKE协商失败原因为phase2 proposal or pfs mismatch,说明两端IPSec安全提议参数或PFS算法不一致。
    <FW1> display ike error-info 
      current info Num :2 
      Ike error information: 
      current ike Error-info number :2 
    ----------------------------------------------------------------------------------------- 
      peer              port    error-reason                     version error-time 
    ----------------------------------------------------------------------------------------- 
      2.1.1.1           500     phase2 proposal or pfs mismatch   v2      2017-09-05 15:22:32 
      2.1.1.1           500     phase2 proposal or pfs mismatch   v2      2017-09-05 15:22:32 
    -----------------------------------------------------------------------------------------

相关告警与日志

原因分析

两端IPSec安全提议参数或PFS算法不一致。

操作步骤

  1. 执行命令display ipsec proposal [ name proposal-name ],查看两端的IPSec安全提议参数是否一致。

    <FW1> display ipsec proposal name tran1 
    IPSec proposal name: tran1                                                       
     Encapsulation mode: Tunnel                                                      
     Transform         : esp-new                                                     
     ESP protocol      : Authentication SHA2-HMAC-512                                
                         Encryption AES-128    
    <FW2> display ipsec proposal name tran1 
    IPSec proposal name: tran1                                                       
     Encapsulation mode: Tunnel                                                      
     Transform         : esp-new                                                     
     ESP protocol      : Authentication SHA2-HMAC-512                                
                         Encryption AES-256 

    从上可以看出两端IPSec安全提议的加密算法不一致。

  2. 更改IPSec安全提议中不一致的参数。

    由于两端加密算法不一致,所以在FW1修改加密算法。

    ike proposal 10 
     encryption-algorithm aes-256

    修改后,IPSec隧道建立成功,PC间可以互相访问。

建议与总结

配置IPSec时,务必保证IPSec安全提议一致,特别是与其他厂商设备对接时,有些缺省参数不一样,使用默认的参数时,就会导致IPSec SA协商失败。当无法获取其他厂商设备的配置信息时,可以在本端设备执行命令debugging ikev2 all查看其他厂商设备发送过来的IPSec安全提议信息。

用户在Debugging信息中查看本端解析的IPSec安全提议。例如:

IKE_INFO 47:2699 Number of proposal : 1
IKE_INFO 47:2868 
 Proposal No 1:
 Protocol ID: IPSEC_ESP   //安全协议类型
IKE_INFO 47:2521 ENCRYPTION ALGORITHM: AES_256   //加密算法
IKE_INFO 47:2282 AUTHENTICATION ALGORITHM: SHA_256   //认证算法

如果用户使用IKEv1协议,则执行命令debugging ikev1 all查看本端解析的IPSec安全提议。例如:

IKE_INFO 17:2267 
 Proposal No: 1   
 Protocol ID: IPSEC_ESP   //安全协议类型
IKE_INFO 2:1997   ENCRYPTION ALGORITHM: AES   //加密算法
IKE_INFO 2:2924   Attribute SA_LIFE_TYPE value SECONDS   
IKE_INFO 2:2924   Attribute SA_LIFE_DURATION value 3600   //以时间为基准的IPSec SA的生存周期
IKE_INFO 2:2924   Attribute SA_LIFE_TYPE value KILOBYTES
IKE_INFO 2:2924   Attribute SA_LIFE_DURATION value 1843200   //以流量为基准的IPSec SA的生存周期
IKE_INFO 2:2924   Attribute ENCAPSULATION_MODE value TUNNEL   //封装模式
IKE_INFO 2:2924   Attribute AUTHENTICATION_ALGORITHM value SHA_256  //认证算法
IKE_INFO 2:2924   Attribute KEY_LENGTH value 256   //加密算法长度

故障案例:设备异常重启后,对端设备未删除原有隧道

现象描述

图1所示,FW间建立IPSec隧道。FW2设备异常重启后,之前与FW1建立的IPSec隧道长时间存在,造成FW1侧的客户端无法访问FW2侧的客户端。

图16-8 IPSec组网图

执行命令display ike sa,发现FW1的SA建立成功,FW2的SA建立失败。

<FW1> display ike sa
IKE SA information :                       
   Conn-ID    Peer           VPN             Flag(s)              Phase 
  ----------------------------------------------------------------------
    8388     2.1.1.1:500                     RD|ST|A              v2:2 
    8378     2.1.1.1:500                     RD|ST|A              v2:1 

  Number of IKE SA : 2
  ----------------------------------------------------------------------

  Flag Description:                                                   
  RD--READY   ST--STAYALIVE   RL--REPLACED   FD--FADING   TO--TIMEOUT
  HRT--HEARTBEAT   LKG--LAST KNOWN GOOD SEQ NO.   BCK--BACKED UP
  M--ACTIVE   S--STANDBY   A--ALONE  NEG--NEGOTIATING
<FW2> display ike sa

在FW1上带源地址Ping不通PC2,但在FW2上带源地址可以Ping通PC1,再在FW1上执行命令display ike sa发现SA建立成功,PC1可以Ping通PC2。

相关告警与日志

原因分析

对于流量触发SA协商,FW2重启后,SA被清空,但FW1上的SA尚未到达生存周期(IPSec SA默认生存周期为1小时,IKE SA的默认生存周期为24小时),故一直未释放。当从FW1发起访问时,数据流匹配到原有的SA导致新的SA无法建立,所以PC1无法访问PC2。当从FW2发起访问时,数据流触发重新建立SA,SA建立成功后,PC2和PC1可以互相访问。

操作步骤

  1. 在FW1上手动复位SA。

    执行命令reset ike sa后,两端IPSec隧道建立成功。

  2. 两端配置IKE对等体DPD检测功能。

    配置后,IPSec隧道断掉后会自动清除SA,并重新触发SA协商。

    DPD检测可以在全局或IKE对等体下配置。系统优先使用IKE对等体下的配置,IKE对等体下未开启DPD检测时才采用全局配置。

    两端对等体配置的DPD报文中的载荷顺序需要一致,否则对等体存活检测功能无效。

    例如,在全局下配置DPD报文中的载荷顺序为seq-hash-notify、检测模式为periodic、DPD空闲时间20秒、DPD报文重传间隔10秒、重传次数4次。以FW1为例。

    <FW1> system-view 
    [FW1] ike dpd msg seq-hash-notify 
    [FW1] ike dpd type periodic 
    [FW1] ike dpd idle-time 20 
    [FW1] ike dpd retransmit-interval 10 
    [FW1] ike dpd retry-limit 4

建议与总结

设备支持heartbeat和DPD两种对等体检测功能。推荐开启DPD检测功能。

heartbeat检测和DPD检测的区别:heartbeat检测定期发送报文,本端和对端配置需要匹配;DPD检测中本端和对端不需要匹配(除DPD报文中的载荷顺序需要匹配外),当IKE对等体间有正常的IPSec流量时,不会发送DPD消息,只有当一段时间内收不到对端发来的IPSec报文时,才发送DPD消息,节省了CPU资源。

故障案例:L2TP over IPSec场景,Security ACL未匹配L2TP封装后的地址

现象描述

图1所示,FW间建立L2TP over IPSec隧道,PC间互访不通。

图16-9 IPSec组网图

  1. 在FW1上执行命令display l2tp tunnel,发现L2TP隧道建立失败。
    <FW1> display l2tp tunnel 
    L2TP::Total Tunnel: 0                                                            
                                                                                     
     LocalTID RemoteTID RemoteAddress    Port   Sessions RemoteName  VpnInstance     
     ------------------------------------------------------------------------------  
     ------------------------------------------------------------------------------  
      Total 0, 0 printed   
  2. 在FW1上执行命令display ike sa,发现IPSec SA建立失败。
    <FW1> display ike sa 
    IKE SA information :                        
       Conn-ID    Peer           VPN             Flag(s)              Phase  
      ---------------------------------------------------------------------- 
       83891196   2.1.1.1:500                    NEG|A                v2:1  
                                
      Number of IKE SA : 1 
      ---------------------------------------------------------------------- 
                                               
      Flag Description:                                                    
      RD--READY   ST--STAYALIVE   RL--REPLACED   FD--FADING   TO--TIMEOUT 
      HRT--HEARTBEAT   LKG--LAST KNOWN GOOD SEQ NO.   BCK--BACKED UP 
      M--ACTIVE   S--STANDBY   A--ALONE  NEG--NEGOTIATING
  3. 在FW1上执行命令display ike error-info查看IKE协商失败原因为flow mismatch,说明Security ACL配置错误。
    <FW1> display ike error-info 
      current info Num :2 
      Ike error information: 
      current ike Error-info number :2 
    ----------------------------------------------------------------------------------------- 
      peer              port    error-reason                     version error-time 
    ----------------------------------------------------------------------------------------- 
      2.1.1.1           500     flow mismatch                    v2      2017-09-05 15:22:32 
      2.1.1.1           500     flow mismatch                    v2      2017-09-05 15:22:32 
    -----------------------------------------------------------------------------------------

相关告警与日志

原因分析

要想建立L2TP隧道,必须先建立IPSec隧道,转发时先封装L2TP再封装IPSec。

从上面原因可以看出,ACL配置错误导致建立IPSec隧道建立失败,最终导致L2TP隧道建立失败。

操作步骤

  1. 执行命令display ipsec policydisplay acl acl-number查看Security ACL配置是否正确。

    <FW1> display ipsec policy 
    =========================================== 
    IPSec policy group: "map1" 
    Using interface: GigabitEthernet0/0/1 
    =========================================== 
     
        Sequence number: 10 
        Policy Alias: map1-10 
        Security data flow: 3000 
    ...... 
     
    <FW1> display acl 3000 
    Advanced ACL 3000, 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 ti 
    mes matched)   

    FW2与FW1配置类似,这里不再赘述。

    从上看出,保护的数据流为PC的目的网段。深入了解L2TP over IPSec原理,经过L2TP封装后,新增IP头,改变了原有的IP地址。所以IPSec保护的数据流不再是PC网段地址,而是L2TP封装后新增IP头里的网段地址。

  2. 修改Security ACL的配置。

    FW1:

    acl number 3000 
     rule 5 permit ip source 1.1.1.0 0.0.0.255 destination 2.1.1.0 0.0.0.255

    FW2:

    acl number 3000 
     rule 5 permit ip source 2.1.1.0 0.0.0.255 destination 1.1.1.0 0.0.0.255

    修改后,IPSec隧道建立成功,同时L2TP隧道也建立成功。PC间可以互相访问。

建议与总结

对于组合应用的特性,需深入了解原理及转发流程,如L2TP over IPSec,首先进行IPSec协商,建立IKE SA和IPSec SA;然后再建立L2TP隧道。报文在隧道中传输时先进行L2TP封装再进行IPSec封装。IPSec需要保护的是从L2TP的起点到L2TP的终点数据流。L2TP封装过程中增加的IP头即源IP地址为L2TP起点地址,目的IP地址为L2TP终点的地址。

在L2TP over IPSec场景下,若移动办公用户采用搭载Android 6.0操作系统的终端与设备建立IPSec隧道,则隧道双方的认证算法只能使用SHA-1。这是由于Android 6.0系统的SHA2-256算法是根据草案实现的,与RFC标准不一致,如果使用SHA2-256算法建立IPSec隧道,则隧道两端设备将无法正常通信。

故障案例:IPSec与NAT同时部署在一台设备上,业务报文被NAT导致其未能匹配Security ACL

现象描述

图1所示,PC通过FW进行NAT后访问Internet。FW间部署IPSec,并且使用流量触发协商建立IPSec隧道,部署后,PC间无法互相访问。

图16-10 IPSec组网图

  1. 在FW1上执行命令display ike sa,发现显示为空,说明IPSec隧道建立失败。
    <FW1> display ike sa
  2. 在FW1上执行命令display ipsec statistics,发现outbound ok为零,说明没有发起IKE协商。
    <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
  3. 检查发现公私网路由可达和IPSec配置无误。

相关告警与日志

原因分析

  • Security ACL与待保护数据流不匹配。
  • NAT策略干扰IPSec保护数据流。

操作步骤

  1. 执行命令display ipsec policydisplay acl acl-number检查Security ACL配置与待保护数据流是否匹配。

    <FW1> display ipsec policy 
    =========================================== 
    IPSec policy group: "map1" 
    Using interface: GigabitEthernet0/0/1 
    =========================================== 
     
        Sequence number: 10 
        Policy Alias: map1-10 
        Security data flow: 3000 
    ...... 
     
    <FW1> display acl 3000 
    Advanced ACL 3000, 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 ti 
    mes matched)   
    <FW2> display ipsec policy 
    =========================================== 
    IPSec policy group: "map1" 
    Using interface: GigabitEthernet0/0/1 
    =========================================== 
     
        Sequence number: 10 
        Policy Alias: map1-10 
        Security data flow: 3000 
    ...... 
     
    <FW2> display acl 3000 
    Advanced ACL 3000, 1 rule ( Reference counter 1 )                                
    Acl's step is 5                                                                  
     rule 5 permit ip source 10.1.2.0 0.0.0.255 destination 10.1.1.0 0.0.0.255 (0 ti 
    mes matched)   

    从上可以看出,Security ACL配置与待保护数据流相匹配。

  2. 执行命令display current-configuration configuration policy-nat检查NAT策略是否包含待保护数据流。

    <FW1> display current-configuration configuration policy-nat 
     rule name policy_nat2                                                           
      source-zone trust                                                              
      destination-zone untrust                                                       
      source-address 10.1.1.0 0.0.0.255                                              
      action source-nat easy-ip   

    FW2与FW1的配置类似,这里不再赘述。

    从上可以看出,NAT策略包含待保护数据流。由于设备优先处理NAT流程,故在IPSec封装之前,PC访问对端的数据流会首先进行NAT转换。所以需经过IPSec封装的数据流不进行NAT转换。以FW1为例。

    [FW1] system-view 
    [FW1] nat-policy 
    [FW1-policy-nat] rule name policy_nat1 
    [FW1-policy-nat-rule-policy_nat1] source-zone trust 
    [FW1-policy-nat-rule-policy_nat1] destination-zone untrust 
    [FW1-policy-nat-rule-policy_nat1] source-address 10.1.1.0 0.0.0.255 
    [FW1-policy-nat-rule-policy_nat1] destination-address 10.1.2.0 0.0.0.255 
    [FW1-policy-nat-rule-policy_nat1] action no-nat 
    [FW1-policy-nat-rule-policy_nat1] quit 
    [FW1-policy-nat] rule move policy_nat2 after policy_nat1

    需注意的是,配置完新的NAT规则后,还需要执行命令rule move移动NAT策略规则,使得policy_nat1优先生效。

    修改后,IPSec隧道建立成功,PC间可以互相访问。

建议与总结

当IPSec与NAT配置在同一台设备时,要确认经过IPSec封装的数据流是否还需要进行NAT转换。

  • 如果需要进行NAT转换,则Security ACL要匹配NAT后的地址。
  • 如果不需要进行NAT转换,则Security ACL要匹配NAT前的地址。且经过IPSec隧道的数据流不进行NAT转换。

如果自动触发协商建立IPSec隧道,则执行命令display ike sa可以看到IPSec隧道建立成功,但PC间无法互相访问。

故障案例:ACL的rule规则范围不匹配

现象描述

图1所示,FW间部署IPSec后,PC间无法互相访问。

图16-11 IPSec组网图

  1. 在FW1上执行命令display ike sa,发现IKE SA协商成功,但IPSec SA没有成功,说明IPSec隧道建立失败。
    <FW1> display ike sa 
    IKE SA information :   
       Conn-ID    Peer             VPN              Flag(s)     Phase      
      --------------------------------------------------------------- 
       151003222  2.1.1.1:500                       NEG|A       v1:2  
       151003215  2.1.1.1:500                       RD|A        v1:1 
                                             
      Number of IKE SA : 2                     
      --------------------------------------------------------------- 
                                                        
      Flag Description:             
      RD--READY   ST--STAYALIVE   RL--REPLACED   FD--FADING   TO--TIMEOUT      
      HRT--HEARTBEAT   LKG--LAST KNOWN GOOD SEQ NO.   BCK--BACKED UP         
      M--ACTIVE   S--STANDBY   A--ALONE  NEG--NEGOTIATING   
  2. 在FW1上执行命令display ike error-info查看IKE协商失败原因为flow or peer mismatch,说明两端ACL的rule规则范围不匹配。
    <FW1> display ike error-info 
      current info Num :2 
      Ike error information: 
      current ike Error-info number :2 
    ----------------------------------------------------------------------------------------- 
      peer              port    error-reason                     version error-time 
    ----------------------------------------------------------------------------------------- 
      2.1.1.1           500     flow or peer mismatch            v2      2017-09-05 15:22:32 
      2.1.1.1           500     flow or peer mismatch            v2      2017-09-05 15:22:32 
    -----------------------------------------------------------------------------------------

相关告警与日志

原因分析

两端ACL的rule规则范围不匹配。

操作步骤

  1. 执行命令display ipsec policydisplay acl acl-number检查Security ACL的rule规则范围是否匹配。

    <FW1> display ipsec policy 
    =========================================== 
    IPSec policy group: "map1" 
    Using interface: GigabitEthernet0/0/1 
    =========================================== 
     
        Sequence number: 10 
        Policy Alias: map1-10 
        Security data flow: 3000 
    ...... 
     
    <FW1> display acl 3000 
    Advanced ACL 3000, 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.2.2.0 0.0.0.255 (0 ti 
    mes matched)   
    <FW2> display ipsec policy 
    =========================================== 
    IPSec policy group: "map1" 
    Using interface: GigabitEthernet0/0/1 
    =========================================== 
     
        Sequence number: 10 
        Policy Alias: map1-10 
        Security data flow: 3000 
    ...... 
     
    <FW2> display acl 3000 
    Advanced ACL 3000, 1 rule ( Reference counter 1 )                                
    Acl's step is 5                                                                  
     rule 5 permit ip source 10.1.2.0 0.0.0.255 destination 10.1.1.0 0.0.0.255 (0 ti 
    mes matched)   

    从上可以看出,两端Security ACL的rule规则范围不匹配。

    对于IKEv1,若两端都配置ISAKMP方式IPSec安全策略,发起方配置的ACL规则范围必须是响应方的子集。若一端配置ISAKMP方式IPSec安全策略,另一端配置策略模板方式IPSec安全策略,ISAKMP方式IPSec安全策略的ACL规则的范围可以小于策略模板方式IPSec安全策略的ACL规则,取双方ACL规则交集作为协商结果。

  2. 修改Security ACL的rule规则范围。

    分析发现FW1的Security ACL的rule规则范围错误。

    acl number 3000 
     rule 5 permit ip source 10.1.1.0 0.0.0.255 destination 10.1.2.0 0.0.0.255

    修改后,IPSec隧道建立成功,PC间可以互访。

建议与总结

配置ACL规则需注意:

  • IPSec隧道两端ACL规则定义的协议类型要一致。例如,一端使用IP协议,另一端也必须使用IP协议。
  • 当IPSec隧道两端的ACL规则镜像配置时,任意一方发起协商都能保证SA成功建立;当IPSec隧道两端的ACL规则非镜像配置时,只有发起方的ACL规则定义的范围是响应方的子集或两端的ACL规则存在交集时,SA才能成功建立。因此,建议IPSec隧道两端配置的ACL规则互为镜像,即一端配置的ACL规则的源地址和目的地址分别为另一端配置的ACL规则的目的地址和源地址。具体来说:
    • 对于IKEv1,镜像不是必要条件,只要发起方配置的ACL规则范围是响应方的子集即可。协商时,取双方ACL规则交集作为协商结果。
    • 对于IKEv2,镜像不是必要条件,只要两端的ACL规则存在交集即可。协商时,取双方ACL规则交集作为协商结果。
  • ACL中各条rule的地址段要避免出现重叠。因为地址段重叠的rule之间容易相互影响,造成数据流匹配rule规则时出现误匹配的情况。
  • 同一个IPSec安全策略组中配置的ACL不能包含相同的rule规则。
  • 同一个IPSec安全策略组中所有IPSec安全策略引用的ACL的rule之间不能存在交集。例如引用的ACL3001和ACL3002存在交集:
    acl number 3001 
     rule 5 permit ip source 10.1.2.0 0.0.0.255 destination 10.1.1.0 0.0.0.255     
    acl number 3002 
     rule 5 permit ip source 10.1.0.0 0.0.255.255 destination 10.1.0.0 0.0.255.255     
  • 协商响应方采用策略模板方式IPSec安全策略时:

    响应方可不定义需要保护的数据流,此时表示接受发起方定义的需要保护的数据流范围;如果响应方要指定需要保护的数据流,则需要与发起方镜像配置或者包含发起方指定的保护的数据流范围。

  • 如果应用IPSec安全策略的接口同时配置了NAT,由于设备先执行NAT,会导致IPSec不生效,此时需要:
    • NAT引用的ACL规则deny目的IP地址是IPSec引用的ACL规则中的目的IP地址,避免对IPSec保护的数据流进行NAT转换。
    • IPSec引用的ACL规则匹配经过NAT转换后的IP地址。

故障案例:中间有NAT设备,认证地址不匹配

现象描述

图1所示,FW间存在NAT设备,FW1经过NAT转换后FW2进行对接,部署IPSec后,PC间互访不通。

图16-12 IPSec组网图

  1. 在FW2上执行命令display ike sa,发现显示为空,说明IPSec隧道建立失败。
    <FW2> display ike sa
  2. 在FW2上执行命令display ike error-info查看IKE协商失败原因。
    <FW2> display ike error-info 
      current info Num :3 
      Ike error information: 
      current ike Error-info number :3 
    ----------------------------------------------------------------------------------------- 
      peer              port    error-reason                     version error-time 
    ----------------------------------------------------------------------------------------- 
      1.1.1.1           2049    authentication fail               v2      2017-09-05 15:22:32 
      1.1.1.1           2049    config ID mismatch                v2      2017-09-05 15:22:32 
      10.4.1.1          2049    peer address mismatch             v2      2017-09-05 15:22:32 
    -----------------------------------------------------------------------------------------

    IKE协商失败原因为authentication failconfig ID mismatch,说明FW2校验FW1发送的ID信息失败。

    另外,IKE协商失败原因为peer address mismatch,且peer为10.4.1.1,说明FW1携带的ID为一个私网地址10.4.1.1,造成IKE协商地址1.1.1.1与认证地址10.4.1.1不一致,导致IPSec隧道建立失败。

相关告警与日志

原因分析

IKE协商地址与认证地址不一致。

操作步骤

  1. 执行命令display ike peer查看两端的对等体地址是否匹配。

    <FW1> display ike peer 
    Number of IKE peers: 1 
     
    ----------------------------------------------------------- 
       Peer name                               : spr 
       IKE version                             : v1v2 
       VPN instance                            : - 
       Remote IP                               : 2.1.1.1 
       Authentic IP address                    : - 
       Proposal                                : 10 
       Pre-shared-key                          : %^%#VGKG:L@YD(|F>VCrTw2W"Qx<&;6dU2(`ZP9!B"HT%^%# 
       Local ID type                           : IP 
    ......
    <FW1> display ike peer 
    Number of IKE peers: 1 
     
    ----------------------------------------------------------- 
       Peer name                               : spr 
       IKE version                             : v1v2 
       VPN instance                            : - 
       Remote IP                               : 1.1.1.1 
       Authentic IP address                    : - 
       Proposal                                : 10 
       Pre-shared-key                          : %^%#VGKG:L@YD(|F>VCrTw2W"Qx<&;6dU2(`ZP9!B"HT%^%# 
       Local ID type                           : IP 
    ......

    从显示信息可以看出,两端的对等体地址匹配,因为FW1在NAT设备后面,IKE协商时,FW1的协商地址10.4.1.1变为1.1.1.1。

    但是,从协商原因分析出IKE协商地址与认证地址不一致。查看配置发现两端都是采用ISAKMP方式IPSec安全策略,此时需在FW2上执行命令remote-address authentication-address配置认证地址。因为FW1位于NAT设备后面,两端采用IP地址认证时,FW2会收到FW1发起IKE协商消息,消息中会携带ID身份信息(私网地址作为自己的ID身份信息),然后FW2将配置的remote-address和收到的FW1的ID身份信息进行比较,发现不一致,造成认证失败。

  2. 在FW2上执行命令remote-address authentication-address配置认证地址。

    ike peer spr 
     remote-address authentication-address 10.4.1.1 10.4.1.255

    配置后,两端IPSec隧道建立成功,PC间能相互访问。

建议与总结

两端使用IKEv2协议协商建立IPSec场景中,当对端设备使用的是内网IP地址,穿越了NAT设备时,如果两端采用ISAKMP方式IPSec安全策略,并使用IP地址进行认证,需注意:

  • 本端需执行命令remote-address ip-address指定的IP地址为对端NAT转换后的IP地址。
  • 本端需执行命令remote-address authentication-address指定NAT转换前的IP地址为对端认证地址。

针对此场景,建议本端采用策略模板方式IPSec安全策略,因为策略模板下不需要执行命令remote-address ip-address指定对端地址。

翻译
收藏
下载文档
更新时间:2024-01-30
文档编号:EDOC1000160160
浏览量:744943
下载量:12847
平均得分:3.5