Wednesday, June 26, 2013

Траблшутинг IPSec туннеля на Cisco IOS



Хорошо, когда туннели поднимаются и VPN работает. Но так случается не всегда, мир жесток.
Давайте рассмотрим, какие средства у нас есть для диагностики состояния IPSec VPNa. Траблшутить будем на роутере Cisco 3745 с установленным IOS 12-й ветки.
Итак, для начала давайте просмотрим команды, которые помогут нам найти несоответствия в конфигурации. Это можно посмотреть и в running-config, но если заданный параметр совпадает с параметром по-умолчанию, то там он отображаться не будет.

Следующая команда покажет существующие политики для построения туннеля на первой фазе, иначе говоря, политики ISAKMP

 R1#show crypto isakmp policy
Global IKE policy
Protection suite of priority 10
            encryption algorithm:    DES - Data Encryption Standard (56 bit keys).
            hash algorithm:             Message Digest 5
            authentication method:  Pre-Shared Key
            Diffie-Hellman group:   #1 (768 bit)
            lifetime:            3600 seconds, no volume limit
Default protection suite
            encryption algorithm:    DES - Data Encryption Standard (56 bit keys).
            hash algorithm:             Secure Hash Standard
            authentication method:  Rivest-Shamir-Adleman Signature
            Diffie-Hellman group:   #1 (768 bit)
            lifetime:            86400 seconds, no volume limit
R1#

Как видно, на роутере существует две политики: 10-я и по-умолчанию.
Следующая, достаточно информативная команда

R1#show crypto map
Crypto Map “CMap” 10 ipsec-isakmp
            Peer = 192.168.10.62
            Extended IP access list 101
                access-list 101 permit ip 10.1.0.0 0.0.255.255 10.2.0.0 0.0.255.255
            Current peer: 192.168.10.62
            Security association lifetime: 4608000 kilobytes/3600 seconds
            PFS (Y/N): N
            Transform sets={
                        MyTS,
            }
            Interfaces using crypto map CMap:
                        FastEthernet0/0.10
R1#

Тут можно посмотреть список существующих карт шифрования (crypto map), какой куда применен transform set, ACL и на каком интерфейсе применена данная карта шифрования.
Исходя из этой информации, мы можем проверить, действительно ли ничего не работает обычной командой ping. Смысл в том, чтобы запустить пинг удаленного хоста из интерфейса, который принадлежит к сети, где данные к удаленному хосту должны шифроваться.

R1#ping 10.2.0.2 source fa0/1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.2.0.2, timeout is 2 seconds:
Packet sent with a source address of 10.1.0.1
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 12/81/152 ms
R1#
Мне повезло, у меня туннель поднялся :)
Чтобы просмотреть состояние согласования первой фазы
R1#show crypto isakmp sa
IPv4 Crypto ISAKMP SA
dst                     src             state          conn-id slot status
192.168.10.61   192.168.10.62   QM_IDLE           1033    0 ACTIVE
IPv6 Crypto ISAKMP SA
R1#

если в графе state написано QM_IDLE, значит все хорошо. Если вы видите MM_NO_STATE, значит что-то на этапе первой фазы пошло не так.
Более детальный выод можно получить так
R1#show crypto isakmp sa detail
Codes: C - IKE configuration mode, D - Dead Peer Detection
       K - Keepalives, N - NAT-traversal
       X - IKE Extended Authentication
       psk - Preshared key, rsig - RSA signature
       renc - RSA encryption
IPv4 Crypto ISAKMP SA
C-id  Local           Remote          I-VRF    Status Encr Hash Auth DH Lifetime Cap.
1033  192.168.10.61   192.168.10.62            ACTIVE des  md5  psk  1  00:11:05    
       Engine-id:Conn-id =  SW:33
IPv6 Crypto ISAKMP SA
R1#
Также не стоит забывать проверить маршруты к удаленной подсети
R1#show ip route    
Перезапустить процесс согласования туннеля на первой и второй фаза можно используя команды

R1#clear crypto isakmp
R1#clear crypto sa
Может оказаться полезным удалить карту шифрования из интерфейса а потом переназначить ее туда же
R1(config)#int fa0/0.10
R1(config-subif)#no  crypto map CMap
R1(config-subif)#
*Mar  1 04:52:09.010: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is OFF
R1(config-subif)#crypto map CMap 
R1(config-subif)#
*Mar  1 04:52:25.386: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON
R1(config-subif)#
По всплывающим сообщениям лога видно, что isakmp включается и выключается, что по сути есть перезапуск.
 Для промотра состояния IPsec туннеля на второй фазе полезно пользоваться например, этим
R1#show crypto ipsec sa     
interface: FastEthernet0/0.10
    Crypto map tag: CMap, local addr 192.168.10.61
   protected vrf: (none)
   local  ident (addr/mask/prot/port): (10.1.0.0/255.255.0.0/0/0)
   remote ident (addr/mask/prot/port): (10.2.0.0/255.255.0.0/0/0)
   current_peer 192.168.10.62 port 500
     PERMIT, flags={origin_is_acl,}
    #pkts encaps: 11, #pkts encrypt: 11, #pkts digest: 11
    #pkts decaps: 6, #pkts decrypt: 6, #pkts verify: 6
    #pkts compressed: 0, #pkts decompressed: 0
    #pkts not compressed: 0, #pkts compr. failed: 0
    #pkts not decompressed: 0, #pkts decompress failed: 0
    #send errors 15, #recv errors 0

     local crypto endpt.: 192.168.10.61, remote crypto endpt.: 192.168.10.62
     path mtu 1500, ip mtu 1500, ip mtu idb FastEthernet0/0.10
     current outbound spi: 0xA72938D(175281037)

     inbound esp sas:
      spi: 0xE0E1780D(3772872717)
        transform: esp-des esp-md5-hmac ,
        in use settings ={Tunnel, }
        conn id: 11, flow_id: SW:11, crypto map: CMap
        sa timing: remaining key lifetime (k/sec): (4451010/3577)
        IV size: 8 bytes
        replay detection support: Y
        Status: ACTIVE

     inbound ah sas:

     inbound pcp sas:

     outbound esp sas:
      spi: 0xA72938D(175281037)
        transform: esp-des esp-md5-hmac ,
        in use settings ={Tunnel, }
        conn id: 12, flow_id: SW:12, crypto map: CMap
        sa timing: remaining key lifetime (k/sec): (4451009/3577)
        IV size: 8 bytes
        replay detection support: Y
        Status: ACTIVE

     outbound ah sas:
         
     outbound pcp sas:
R1#
Еще полезная команда для мониторинга
R1#show crypto engine connections active
Crypto Engine Connections
   ID Interface  Type  Algorithm           Encrypt  Decrypt IP-Address
   11 Fa0/0.10   IPsec DES+MD5                   0        6 192.168.10.61
   12 Fa0/0.10   IPsec DES+MD5                  11        0 192.168.10.61
 1034 Fa0/0.10   IKE   MD5+DES                   0        0 192.168.10.61
R1#
Также не стоит забывать про возможность дебага. Чтобы промониторить согласование туннеля в первой фазе
R1#debug crypto isakmp
Crypto ISAKMP debugging is on
R1#
Включаем, запускаем вышеописанным способом пинг и наслаждаемся выхлопом. К слову, чтобы наслаждаться выхлопом через SSH, нужно соответствующим образом сконфигурировать виртуальный терминал.
R1(config)#line vty 0 113
R1(config-line)#logging synchronous level all
R1(config-line)#
Потом в консоли SSH
R1#terminal monitor

Просмотреть, включен ли дебаг, и если включен, то какой:
R1#show debug         
Cryptographic Subsystem:
  Crypto ISAKMP debugging is on
R1#
Отключить весь дебаг
R1#no debug all
All possible debugging has been turned off
R1#

2 comments:

  1. Just Another Network Blog: Траблшутинг Ipsec Туннеля На Cisco Ios >>>>> Download Now

    >>>>> Download Full

    Just Another Network Blog: Траблшутинг Ipsec Туннеля На Cisco Ios >>>>> Download LINK

    >>>>> Download Now

    Just Another Network Blog: Траблшутинг Ipsec Туннеля На Cisco Ios >>>>> Download Full

    >>>>> Download LINK ye

    ReplyDelete