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)
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]
Pingback: Site2Site VPN z wykorzystaniem IKEv2 cz.2 | Popoludniewsieci.pl