Site2Site VPN z wykorzystaniem IKEv2 cz.1

Witajcie drodzy czytelnicy 🙂

Jakiś czas temu miałem okazję popracować nad implementacją Cisco ASA 5545X. Jednym z zadań było zestawienie tuneli VPN z różnymi placówkami zdalnymi. Ponieważ sprzęt który miałem do dyspozycji wspiera ikev2, postanowiłem zatem, wykorzystać ten fakt.
Dla uściślenia IKEv2 został opublikowany we Wrześniu 2010 (RFC 5996).
Zbudowałem na początku dość prostego LAB’a – schemat poniżej. Dla różnorodności użyłem Cisco ASA wspomnianej powyżej oraz małego “branchowego” routera Cisco 867 (niestety jego poprzednik 861 nie obsługuje ikev2)

site2sitevpnikv2

Cisco ASA konfiguracja:

Na pierwszy ogień weźmiemy ASA’e. Wraz z softem 8.4 pojawiło się wsparcie dla ikev2 dla tego sprzętu.

Konfiguracja IKEv2 Policy

Tutaj ustawienia są dość podobne jak w przypadku ike wersji 1szej:

crypto ikev2 policy 10
 encryption aes-256
 integrity sha256
 group 2
 prf sha256
 lifetime seconds 120

Konfiguracja IKEv2 IPSEC Proposal

To jest to co do tej porty konfigurowaliśmy jako transform set’y (faza 2-a). Składnia w tym wypadku wygląda jak poniżej:

crypto ipsec ikev2 ipsec-proposal IPSEC.PROP
 protocol esp encryption aes-256 3des aes-gmac-256
 protocol esp integrity sha-256 sha-1 md5

Należy również pamiętać o włączeniu ikev2 na interfejsie OUTSIDE

crypto ikev2 enable OUTSIDE

Reszta konfiguracji.

Teraz już wszystko jest praktycznie tak samo jak do tej pory.
Zatem access-list określająca jaki ruch ma wpadać w tunel.

access-list ACL.CM.VPN.TEST extended permit ip host 10.20.20.1 host 10.10.10.2

Dalej kolejno crypto-map’a w której zbieramy w całość, ikev2 proposal, access-listę, adres ip peer’a itp.

crypto map CM.OUTSIDE 10 match address ACL.CM.VPN.TEST
crypto map CM.OUTSIDE 10 set pfs
crypto map CM.OUTSIDE 10 set peer 200.1.1.1
crypto map CM.OUTSIDE 10 set ikev2 ipsec-proposal IPSEC.PROP
crypto map CM.OUTSIDE 10 set reverse-route

Nie zapomnijcie o przypięciu crypto-map’y do interfejsu OUTSIDE:

crypto map CM.OUTSIDE interface OUTSIDE

No i oczywiście tunnel-group’a

tunnel-group 200.1.1.1 type ipsec-l2l
tunnel-group 200.1.1.1 ipsec-attributes
 ikev2 remote-authentication pre-shared-key some_key
 ikev2 local-authentication pre-shared-key some_key1

Jak widać ikev2 posiada dodatkową opcję określenia dwóch kluczy PSK (remote,local). Po drugiej stronie konfigurujemy na odwrót. Można też skonfigurować identyczny klucz.

W tym miejscu pragnę jeszcze zwrócić uwagę, na pewien fakt, który może sprawić,że tak jak ja spędzisz trochę czasu na troubleshootingu pt “czemu się nie zestawia”.

Wyświetlając pełną konfigurację poprzez

show run all

zauważysz, że (by design) tunnel-grup’a używa domyślnej group-policy:

tunnel-group 200.1.1.1 general-attributes
default-group-policy DfltGrpPolicy

Warto zatem sprawdzić czy DfltGrpPolicy ma skonfigurowane wsparcie ikev2 (zwłaszcza, gdy tak jak ja lubisz dużo mieszać w konfiguracji).

group-policy DfltGrpPolicy attributes
 vpn-tunnel-protocol ikev2

Weryfikacja

Sprawdzić działanie tunelu można dość łatwo, np poprzez wygenerowanie pakiety icmp do zdalnego hosta:

#ping 10.10.10.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.10.10.1, timeout is 2 seconds:
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 64/114/240 ms

Po stronie ASA można sprawdzić czy zarówno faza I jak i II są aktywne.

ASA1# sh crypto ikev2 sa
IKEv2 SAs:
Session-id:1, Status:UP-ACTIVE, IKE count:1, CHILD count:1
Tunnel-id                 Local                Remote     Status         Role
13758825         200.1.1.1/500         200.1.1.2/500      READY    INITIATOR

Encr: AES-CBC, keysize: 256, Hash: SHA256, DH Grp:2, Auth sign: PSK, Auth verify: PSK

Life/Active Time: 120/12 sec

Child sa: local selector  10.20.20.0/0 - 10.20.20.255/65535

remote selector 10.10.10.0/0 - 10.10.10.255/65535

ESP spi in/out: 0x88aa384e/0x5046f2ef

oraz

ASA1# sh crypto ipsec sa
interface: OUTSIDE
Crypto map tag: CM.OUTSIDE, seq num: 10, local addr: 200.1.1.1

access-list ACL.CM.VPN.TEST extended permit ip 10.20.20.0 255.255.255.0 10.10.10.0 255.255.255.0

local ident (addr/mask/prot/port): (10.20.20.0/255.255.255.0/0/0)

remote ident (addr/mask/prot/port): (10.10.10.0/255.255.255.0/0/0)

current_peer: 200.1.1.2

#pkts encaps: 4, #pkts encrypt: 4, #pkts digest: 4

#pkts decaps: 4, #pkts decrypt: 4, #pkts verify: 4

#pkts compressed: 0, #pkts decompressed: 0

Jak widać po licznikach ruch przepływa w obie strony.

To tyle jeśli chodzi o konfigurację po stronie Cisco ASA, w kolejnym poście opiszę co trzeba z]obić po stronie Router’a. A tymczasem polecam zabawy z tunelem ASA-ASA.

Zachęcam również do obejrzenia ciekawej prezentacji Piotra Matusiaka z Cisco. Co prawda głównym tematem jest FlexVPN, ale jest też sporo dobrego “mięsa” nt. tego jak działa IKEv2.

[embedyt] https://www.youtube.com/watch?v=skOOs1ggNKo [/embedyt]