IPSec ×××不通

介绍了IPSec ×××不通时的故障处理方法。

现象描述

如图1所示,管理员希望在NGFW_A和NGFW_B之间建立IKE方式的IPSec隧道,使网络A和网络B的用户可以通过IPSec隧道互相访问。

图1 IPSec ×××不通组网图 

配置完成后,发现网络A和网络B的用户不能相互访问。

可能原因

  • 流量未匹配ACL规则

  • 两端设备的IKE安全提议配置不一致

  • 两端设备的IKE版本不同

  • 对端IP地址或对端域名配置错误

  • 两端设备的预共享密钥配置不一致

  • 未启用NAT穿越功能

  • 两端设备的IPSec安全提议配置不一致

  • 两端设备的PFS功能配置不一致

  • IPSec安全策略顺序号配置错误

  • IPSec安全策略应用在错误的接口上

  • SA超时时间配置过小

  • 路由配置错误

  • 安全策略配置错误

  • NAT策略配置错误

  • 没有清除旧的或已经存在的SA(安全联盟)

处理步骤

  • 流量未匹配ACL规则

    执行命令display acl acl-number,查看流量是否匹配了IPSec的ACL规则。

    [NGFW_A] display acl 3010                                                         Advanced ACL 3010, 1 rule                                                       
    Acl's step is 5                                                                 
     rule 5 permit ip source 10.1.0.0 0.0.255.255 destination 10.2.0.0 0.0.255.255 (0 times matched)

    如上信息所示,命中次数为0表示流量没有命中IPSec的ACL规则,不会触发建立IPSec隧道。这时要检查源地址和目的地址是不是符合实际数据流的信息。

    建议IPSec隧道两端配置的ACL规则互为镜像。配置为镜像不是必要条件,不过实际应用中配置成镜像更简单也不易出错,如下所示。

    NGFW_A的ACL规则:

    #                                                                               
    acl number 3010                                                                 
     rule 5 permit ip source 10.1.1.0 0.255.255.255 destination 10.2.1.0 0.255.255.255

    NGFW_B的ACL规则:

    #                                                                               
    acl number 3010                                                                 
     rule 5 permit ip source 10.1.2.0 0.255.255.255 destination 10.1.1.0 0.255.255.255
  • 两端设备的IKE安全提议配置不一致

    分别在NGFW_A和NGFW_B上执行命令display ike proposal,查看两台设备的IKE安全提议配置是否一致,包括加密算法(authentication algorithm)、认证算法(encryption algorithm)和DH组标识(Diffie-Hellman group)等。

    [NGFW_A] display ike proposal                                                     
     priority authentication authentication encryption Diffie-Hellman duration      
                  method       algorithm    algorithm     group       (seconds)     
    ---------------------------------------------------------------------------     
     10       PRE_SHARED     SHA2-256       AES        MODP_1024      86400         
     default  PRE_SHARED     SHA2-512       256-AES    MODP_1024      86400

    如果两台设备的IKE安全提议配置不一致,可以执行以下命令将不一致的参数配置一致。

  • 对端IP地址或对端域名配置错误

    分别在NGFW_A和NGFW_B上执行命令display ike peer [ brief [ ipv6 ] | name peer-name ],查看对端IP地址是否配置正确。

    [NGFW_A] display ike peer name a---------------------------
    IKE peer: a
        Exchange mode: main on phase 1
        Pre-shared key: %$%$%8vDH)RfuV)P\g7NMA4I6g^U%$%$
        Local certificate file name:  
        Peer certificate file name:  
        Proposal:  
        Local ID type: IP
        Local ID: 
        Remote IP: 2.2.2.2 
        ××× instance: root
        Authentic IP address: 
        IP address pool: 
        User table: 1
        Remote ID type: IP
        Peer name: 
        Peer domain name: 
        Eap-auth domain: 
        ××× instance bound to the SA: root
        NAT traversal: disable
        SA soft timeout buffer time: 
        IKEv1 bind Phase1-Phase2 SA: enable 
    ---------------------------

    Peer IP address的地址必须与对端发起IKE协商的地址,即发起协商的接口地址或local-address指定的地址相同。Peer IP address的地址需要执行remote-address进行配置。

  • 两端设备的预共享密钥配置不一致

    管理员需要确保IPSec ×××隧道两端的设备输入的预共享密钥一致。

    输入预共享密钥错误会导致IPSec ×××隧道不能正常建立。在NGFW上输入预共享密钥后,密钥会以密文的形式显示,这就使管理员无法判断密钥是否输入正确。

    因此当IPSec ×××隧道无法建立时,重新输入预共享密钥以确保其正确是一个常见的故障解决方法。

  • 未启用NAT穿越功能

    分别在NGFW_A和NGFW_B上执行命令display ike peer [ brief [ ipv6 ] | name peer-name ],查看NAT穿越功能是否启用。

    [NGFW_A] display ike peer name a---------------------------
    IKE peer: a
        Exchange mode: main on phase 1
        Pre-shared key: %$%$%8vDH)RfuV)P\g7NMA4I6g^U%$%$
        Local certificate file name:  
        Peer certificate file name:  
        Proposal:  
        Local ID type: IP
        Local ID: 
        Remote IP: 2.2.2.2 
        ××× instance: root
        Authentic IP address: 
        IP address pool: 
        User table: 1
        Remote ID type: IP
        Peer name: 
        Peer domain name: 
        Eap-auth domain: 
        ××× instance bound to the SA: root    NAT traversal: disable
        SA soft timeout buffer time: 
        IKEv1 bind Phase1-Phase2 SA: enable 
    ---------------------------

    NAT穿越功能允许×××流量穿越NAT设备,例如路由器等。如果没有启用NAT穿越功能,×××客户端的用户通常只能连接到NGFW,但是他们不能访问NGFW后面的内部网络。

    NAT穿越功能默认开启,建议保持开启状态。

  • 两端设备的IPSec安全提议配置不一致

    分别在NGFW_A和NGFW_B上执行命令display ipsec proposal [ brief | name proposal-name ],查看两台设备的IPSec安全提议配置是否一致,包括采用的安全协议,安全协议采用的认证算法和加密算法,报文封装模式等。

    [NGFW_A] display ipsec proposal                                                     
                                                                                    
      IPsec proposal name: 10                                                       
        encapsulation mode: tunnel                                                  
        transform: ah-esp-new                                                       
        AH protocol: authentication sha2-hmac-256                                    
        ESP protocol: not use authentication, encryption aes

    如果两台设备的IPSec安全提议配置不一致,可以执行以下命令将不一致的参数配置一致。

    • 两端设备的PFS功能配置不一致

      两台设备的PFS功能指定的DH组必须一致,否则IPSec隧道协商失败。

      分别在NGFW_A和NGFW_B上执行命令display ipsec policy [ brief | name policy-name [ seq-number | extend-acl ] ],查看两台设备的PFS功能配置是否一致。

      [NGFW_A] display ipsec policy                                                     
                                                                                      ===========================================                                     
      IPsec Policy Group: "test"                                                      
      Using interface: {GigabitEthernet1/0/1}                                         
      ===========================================                                     
                                                                                      
        -----------------------------                                                 
        IPsec policy name: "test"                                                     
        sequence number: 1                                                            
        mode: isakmp                                                                  
        -----------------------------                                                 
          security data flow : 3010                                                   
          ike-peer name:  a                                                           
          perfect forward secrecy: DH group 2                                         
          proposal name:  10                                                          
          IPsec sa local duration(time based): 3600 seconds                           
          sa soft-duration time-based buffer: 0 seconds                               
          sa soft-duration traffic-based buffer: 0 kilobytes                          
          IPsec sa local duration(traffic based): 1843200 kilobytes

      如果不一致执行命令pfs { dh-group1 | dh-group2 | dh-group5 | dh-group14 | dh-group15 | dh-group16 } *,修改PFS功能的配置。

    • IPSec安全策略顺序号配置错误

      NGFW上可以创建多个具有相同名字的IPSec安全策略,这些IPSec安全策略可以组成一个IPSec安全策略组,序号(sequence number)越小优先级越高,接口将优先处理该IPSec安全策略,优先为该IPSec安全策略定义的数据流建立IPSec隧道。因此请确保需要使用的IPSec安全策略的序号(sequence number)最小,拥有最高的优先级。

      分别在NGFW_A和NGFW_B上执行命令display ipsec policy [ brief | name policy-name [ seq-number | extend-acl ] ],查看两台设备的IPSec安全策略顺序号。

      [NGFW_A] display ipsec policy                                                     
                                                                                      ===========================================                                     
      IPsec Policy Group: "test"                                                      
      Using interface: {GigabitEthernet1/0/1}                                         
      ===========================================                                     
                                                                                      
        -----------------------------                                                 
        IPsec policy name: "test"                                                     
        sequence number: 1                                                            
        mode: isakmp                                                                  
        -----------------------------                                                 
          security data flow : 3010                                                   
          ike-peer name:  a                                                           
          perfect forward secrecy: DH group 2                                         
          proposal name:  10                                                          
          IPsec sa local duration(time based): 3600 seconds                           
          sa soft-duration time-based buffer: 0 seconds                               
          sa soft-duration traffic-based buffer: 0 kilobytes                          
          IPsec sa local duration(traffic based): 1843200 kilobytes 
                                                                                     
        -----------------------------                                                 
        IPsec policy name: "test"                                                     
        sequence number: 2                                                            
        mode: isakmp                                                                  
        -----------------------------                                                 
          security data flow : 3020                                                      
          ike-peer name:  b                                                            
          perfect forward secrecy: None                                               
          proposal name:  20                                                            
          IPsec sa local duration(time based): 3600 seconds                           
          sa soft-duration time-based buffer: 0 seconds                               
          sa soft-duration traffic-based buffer: 0 kilobytes                          
          IPsec sa local duration(traffic based): 1843200 kilobytes

      执行命令ipsec policy policy-name seq-number isakmp,调整IPSec安全策略的顺序。

    • IPSec安全策略应用在错误的接口上

      IPSec安全策略应用到的接口一定是建立隧道的接口,且该接口一定是到对端私网路由的出接口。误将IPSec安全策略应用到其它接口会导致×××业务不通。如图1所示,IPSec安全策略应该应用在接口GigabitEthernet1/0/1上。

      分别在NGFW_A和NGFW_B上执行命令display ipsec policy [ brief | name policy-name [ seq-number | extend-acl ] ],查看IPSec安全策略是否应用在正确的接口上。


      [NGFW_A] display ipsec policy                                                     
                                                                                      ===========================================                                     
      IPsec Policy Group: "test"                                                      
      Using interface: {GigabitEthernet1/0/1}                                         
      ===========================================                                     
                                                                                      
        -----------------------------                                                 
        IPsec policy name: "test"                                                     
        sequence number: 1                                                            
        mode: isakmp                                                                  
        -----------------------------                                                 
          security data flow : 3010                                                   
          ike-peer name:  a                                                           
          perfect forward secrecy: DH group 2                                         
          proposal name:  10                                                          
          IPsec sa local duration(time based): 3600 seconds                           
          sa soft-duration time-based buffer: 0 seconds                               
          sa soft-duration traffic-based buffer: 0 kilobytes                          
          IPsec sa local duration(traffic based): 1843200 kilobytes
    • SA超时时间配置过小

      如果用户频繁断开连接,原因可能是IKE SA超时时间配置过小。IKE SA超时时间缺省为86400秒。

      执行命令display ike proposal,查看IKE SA的超时时间

      [NGFW_A] display ike proposal                                                     
       priority authentication authentication encryption Diffie-Hellman duration      
                    method       algorithm    algorithm     group       (seconds)     
      ---------------------------------------------------------------------------     
       10       PRE_SHARED     SHA2-256       AES        MODP_1024       400         
       default  PRE_SHARED     SHA2-512       256-AES    MODP_1024       86400

      如果IKE SA超时时间过小,执行命令sa duration seconds修改SA超时时间。

    • 路由配置错误

      路由是部署IPSec ×××隧道的一个重要环节。管理员需要确保NGFW上配置了正确的路由,保证去往对端(分支机构)的流量能够进入IPSec ×××隧道。

      如图1所示,NGFW_A的路由配置如下:

      #
       ip route-static 10.1.2.0 255.255.255.0 1.1.1.254

      NGFW_B的路由配置如下:

      #
       ip route-static 10.1.1.0 255.255.255.0 2.2.2.254
    • 安全策略配置错误

      为了保证IPSec隧道正常建立,以及总部和分支机构间能够正常通讯,需要正确配置安全策略,包Local区域与应用IPSec策略的接口所在区域间的安全策略,以及内网接口所在安全区域与应用IPSec策略的接口所在区域间的安全策略。

      如图1所示,安全策略的正确配置如下(以NGFW_A为例):

      # 配置从Local到Untrust的域间策略。

      #                                                                               
      security-policy                                                                 
       rule name policy_ipsec_1                                                       
        source-zone local                                                             
        destination-zone untrust                                                      
        source-address 1.1.1.0 24                                                     
        destination-address 2.2.2.0 24                                                
        action permit

      # 配置从Untrust到Local的域间策略。

      #                                                                               
      security-policy                                                                 
       rule name policy_ipsec_2                                                       
        source-zone untrust                                                             
        destination-zone local                                                      
        source-address 2.2.2.0 24                                                     
        destination-address 1.1.1.0 24                                                
        action permit

      # 配置从Trust到Untrust的域间策略。

      #                                                                               
      security-policy                                                                 
       rule name policy_ipsec_3                                                       
        source-zone trust                                                             
        destination-zone untrust                                                      
        source-address 10.1.1.0 24
        destination-address 10.1.2.0 24                                                
        action permit

      # 配置从Untrust到Trust的域间策略。

      #                                                                               
      security-policy                                                                 
       rule name policy_ipsec_4                                                       
        source-zone untrust                                                             
        destination-zone trust                                                      
        source-address 10.1.2.0 24                                                     
        destination-address 10.1.1.0 24                                                
        action permit
    • NAT策略配置错误

      配置NAT策略时需要对IPSec保护的数据流不做NAT转换(action no-nat)。

      如图1所示,NAT策略的正确配置如下(以NGFW_A为例):

      # 对进入IPSec隧道的数据流(源地址为10.1.1.0/24,目的地址为10.1.2.0/24)不进行NAT转换。

      #
      nat-policy  
        rule name no_nat            
          source-zone trust         
          destination-zone untrust   
          source-address 10.1.1.0 24
          destination-address 10.1.2.0 24      
          action no-nat
    • 没有清除旧的或已经存在的SA(安全联盟)

      清除IKE SA(reset ike sa)和IPSec SA(reset ipsec sa)是最简单和常见的解决IPSec ×××故障的方法。当管理员修改或增加IPSec配置后,一般都需要清除旧的或已经存在的SA。