W dzisiejszym wpisie przedstawię konfigurację NSX-t IPSec Route base, jest to opis krok po kroku jak skonfigurować IPseca po stronie NSX’a oraz Vyos który będzie uczestnikiem IPseca.
Spis Treści
Założenia
- Poniżej rysunek poglądowy jak wygląda topologia połączeń.
- Pomiędzy routerem T0 i chmurką już istnieje połączenie oraz jest zestawione sąsiedztwo BGP w celu dostępu do sieci “Internet” na powyższym rysunku chmurki
- Parametry połączenia:
IKE | |
---|---|
IKE wersja | v2 |
Encryption Algorithm | |
Digest Algorithm | |
Diffie-Hellman | |
86400 |
IPSec | |
---|---|
Encryption Algorithm | |
Digest Algorithm | |
PFS Group | yes |
Diffie-Hellman | |
SA Lifetime (sec) | 3600 |
Konfiguracja NSX-t
Konfiguracja połączenie IPSEC
- Logujemy się do NSX Managera
- Przechodzimy do Networking następnie VPN
- Skonfigurujemy profile dla IKE,IPSec przechodząc do Profiles
- wybieramy IKE-Profiles następnie IKE ADD Profile, w nowym oknie podajemy parametry konfiguracyjne które zostały zebrane powyżej w tabelce oraz podajemy nazwę dla profilu. Po zakończeniu wprowadzaniu zapisujemy profil.
- Kolejnym krokiem jest dodanie profilu dla IPSeca, Wybieramy IPSEC Profiles i następnie ADD IPSEC Profile w nowym oknie podajemy nazwę dla niego oraz parametry z tabelki powyżej.
- Ostatnim profilem do utworzenie jest profil DPD, wybieramy DPD Profiles i ADD DPD Profile, w nowym oknie podajemy nazwę oraz zostawiamy 60 secund.
- Po skonfigurowaniu profilu dla IKE i IPSec oraz DPD przechodzimy do konfiguracji VPN Service robimy to przechodząc do VPN Services gdzie klikamy na ADD Service i wybieramy IPSEC. W nowym oknie podajemy nazwę oraz wybieramy na który gateway ma zostać uruchomiony serwis odpowiedzialny za IPSeca w naszym przypadku będzie to T0.
- W tym kroku przechodzimy do konfiguracji LOCAL EDNPOINTS klikamy ADD LOCAL ENDPOINT w tym miejscu skonfigurujemy adres z którego oraz do którego będziemy nawiązywać sesję IPSec.
- Przyszedł na ostatni krok konfiguracji IPSec przechodzimy do IPSEC SESION wybieramy Route Based.
- W nowym okniekonfigurujemy naszą sesję IPSec podajemy dane:
Nazwa – dowolna nazwa dla sesji.
VPN Service – wybieramy wcześniej zdefiniowany profil.
Local Endpoint – podobnie wybieramy profil który wcześniej skonfigurowaliśmy.
Remote IP – podajemy adres IP partnera z którym będziemy nawiązywać sesję IPSec.
Authentication Mode – w naszym przypadku wybieramy PSK może kiedyś zrobię opis na certach :-).
Pre-shared Key – podajemy nasz klucz PSK
Tunnel Interface – podajemy ip dla naszego interfejsu tunel w naszym przypadku jest to 100.100.10.1/30 musi być podana maska min 31.
Remote ID – podajemy zakończenie tunelu po drugiej stronie, zgodnie z założeniami jest to 2.2.2.2
Do kolejnych ustawień przechodzimy klikając Advanced Properties gdzie dalej podajemy parametry naszego połączenia:
IKE Profiles – wybieramy utworzony przez nas profil IKE.
IPSec Profiles – wybieramy utworzony przez nas profil dla IPSec.
DPD Profiles – wybieramy utworzony profil dla DPD.
Connection Initiation – określmy rolę w naszym przypadku zostawiamy bez zmiany.
Parametry nie wymienione zostawiamy bez zmian. - Po wyższych krokach mam skonfigurowane parametry dla IPSeca Rouet Base.
Konfiguracja Routingu w NSX
W tej sekcji dowiesz się jak skonfigurować redystrybucję adres Local Endpoint oraz jak zestawić BGP.
Konfiguracja redystrybucji
Aby poprawnie zestawić połączenie IPSec przydało by się do naszej chmurki która jest pokazana na rysunku na początku wpisu rozgłosić adres Local Endpoint a robimy to tak:
- Przechodzimy do Networking następnie do Tier0 wybieramy nasz router T0 i przechodzimy do jego edycji.
- Przechodzimy do ROUTE RE-DISTRIBUTION klikamy na cyfrę w przy Route Re-Distribution.
- W nowym oknie zaznaczamy IPSec Local IP i klikamy Apply.
- Na koniec zapisujemy oraz klikamy close editing i temat ten mamy za sobą.
Konfiguracja BGP pomiędzy NSX a Vyos
W IPSec route base protokół routingu jest odpowiedzialny za ustalenie pomiędzy jakimi sieciami ma nastąpić szyfrowanie w kanale IPSec. W NSX-t mamy do dyspozycji dwa protokoły routingu jest to statk oraz BGP w tym punkcie skupię się właśnie nad poczciwym BGP’em.
- Aby skonfigurować sesję BGP przechodzimy do Networking następnie do Tier0 wybieramy nasz router T0 i przechodzimy do jego edycji
- Tam przechodzimy do sesji BGP, gdzie jest to pierwsza sesja BGP konfigurujemy:
Local AS – w labie oraz DC wybieramy coś z puli privet AS
resztę parametrów zostawiamy bez zmian w labie, w DC można podkręcić czasy sesji BGP
Tutaj już mamy to skonfigurowane bo mamy sesję do mojej chmurki - W kolejnym ważnym krokiem jest skonfigurowanie sąsiedztwa BGP aby to zrobić przechodzimy do BGP Neighbors. W tym przypadku dodajemy kolejne sąsiedztwo.
- W nowym oknie dodajemy nowego sąsiada gdzie podajemy parametry do skonfigurowania
IP Address – podajemy adres ip sąsiada w naszym przypadku jest to 100.100.10.2
Remote AS – Podajemy numer AS sąsiada w naszym przypadku jest to 65555
Source Addresses – podajemy nasz adres 100.100.10.1
- Klikamy Save i mamy skonfigurowane po stronie NSX’a BGP
Aby wszystko zadziałało musimy skonfigurować naszego sąsiad czyli przechodzimy do konfiguracji Vyos,
Konfiguracja Vyos
Jak to było w piosence “do tanga trzeba dwojga” w tym przypadku partnerem dla NSX będzie Vyos na którym poniżej przedstawię jak skonfigurować IPSec route Based oraz BGP. Nie będę pokazywał podstawowej konfiguracji tylko skupię się na omawianych zagadnieniach. Cała konfiguracja jest wykonywana z poziomy SSH. W tym labie wykorzystuję wersję trochę starą bo jest to 1.3
Konfiguracja połączenie IPSEC w Vyos
- Logujemy się do naszego Vyos po ssh
- Przechodzimy do konfiguracji i konfigurujemy nasz profil dla fazy 1 zgodnie z założeniami
vyos@vyos01:~$ configure [edit] vyos@vyos01# set vpn ipsec esp-group NSX-T lifetime '3600' [edit] vyos@vyos01# set vpn ipsec esp-group NSX-T mode 'tunnel' [edit] vyos@vyos01# set vpn ipsec esp-group NSX-T pfs 'dh-group5' [edit] vyos@vyos01# set vpn ipsec esp-group NSX-T proposal 1 encryption 'aes256' [edit] vyos@vyos01# set vpn ipsec esp-group NSX-T proposal 1 hash 'sha256' [edit] vyos@vyos01#
czysta konfiguracja same komendy
set vpn ipsec esp-group NSX-T lifetime '3600' set vpn ipsec esp-group NSX-T mode 'tunnel' set vpn ipsec esp-group NSX-T pfs 'dh-group5' set vpn ipsec esp-group NSX-T proposal 1 encryption 'aes256' set vpn ipsec esp-group NSX-T proposal 1 hash 'sha256'
- Następnie profil dla fazy 2
[edit] vyos@vyos01# set vpn ipsec ike-group NSX-T ikev2-reauth 'yes' [edit] vyos@vyos01# set vpn ipsec ike-group NSX-T key-exchange 'ikev2' [edit] vyos@vyos01# set vpn ipsec ike-group NSX-T lifetime '86400' [edit] vyos@vyos01# set vpn ipsec ike-group NSX-T proposal 1 dh-group '5' [edit] vyos@vyos01# set vpn ipsec ike-group NSX-T proposal 1 encryption 'aes256' [edit] vyos@vyos01# set vpn ipsec ike-group NSX-T proposal 1 hash 'sha256' [edit] vyos@vyos01#
- Profil dla DPD
[edit] vyos@vyos01# set vpn ipsec ike-group NSX-T dead-peer-detection action 'restart' [edit] vyos@vyos01# set vpn ipsec ike-group NSX-T dead-peer-detection interval '15' [edit] vyos@vyos01# set vpn ipsec ike-group NSX-T dead-peer-detection timeout '60'
same komendy
set vpn ipsec ike-group NSX-T dead-peer-detection action 'restart' set vpn ipsec ike-group NSX-T dead-peer-detection interval '15' set vpn ipsec ike-group NSX-T dead-peer-detection timeout '60'
- Tworzymy interfejs tunelowy oraz nadajemy jemu adres ip zgodnie z założeniami
[edit] vyos@vyos01# set interfaces vti vti1 address '100.100.10.2/30'
- Konfiguracja IPSeca
[edit] vyos@vyos01# set vpn ipsec site-to-site peer 1.1.1.1 authentication id '2.2.2.2' [edit] vyos@vyos01# set vpn ipsec site-to-site peer 1.1.1.1 authentication mode 'pre-shared-secret' [edit] vyos@vyos01# set vpn ipsec site-to-site peer 1.1.1.1 authentication pre-shared-secret 'de%b/B\7$*[rV*S%Pk(D' [edit] vyos@vyos01# set vpn ipsec site-to-site peer 1.1.1.1 ike-group 'NSX-T' [edit] vyos@vyos01# set vpn ipsec site-to-site peer 1.1.1.1 ikev2-reauth 'inherit' [edit] vyos@vyos01# set vpn ipsec site-to-site peer 1.1.1.1 local-address '2.2.2.2' [edit] vyos@vyos01# set vpn ipsec site-to-site peer 1.1.1.1 vti bind 'vti1' [edit] vyos@vyos01# set vpn ipsec site-to-site peer 1.1.1.1 vti esp-group 'NSX-T' [edit] vyos@vyos01#
same komendy które zostały użyte powyżej
set vpn ipsec site-to-site peer 1.1.1.1 authentication id '2.2.2.2' set vpn ipsec site-to-site peer 1.1.1.1 authentication mode 'pre-shared-secret' set vpn ipsec site-to-site peer 1.1.1.1 authentication pre-shared-secret 'de%b/B\7$*[rV*S%Pk(D' set vpn ipsec site-to-site peer 1.1.1.1 ike-group 'NSX-T' set vpn ipsec site-to-site peer 1.1.1.1 ikev2-reauth 'inherit' set vpn ipsec site-to-site peer 1.1.1.1 local-address '2.2.2.2' set vpn ipsec site-to-site peer 1.1.1.1 vti bind 'vti1' set vpn ipsec site-to-site peer 1.1.1.1 vti esp-group 'NSX-T'
- Na koniec wykonujemy commit
[edit] vyos@vyos01# commit [edit] vyos@vyos01#
Konfiguracja BGP w Vyos
Po skonfigurowaniu IPSeca przechodzimy do konfiguracji sesji BGP, poniżej bardzo szybki config.
[edit] vyos@vyos01# set protocols bgp 65555 [edit] vyos@vyos01# set protocols bgp 65555 neighbor 100.100.10.1 remote-as 65502 [edit] vyos@vyos01# set protocols bgp 65555 neighbor 100.100.10.1 update-source 100.100.10.2 [edit] vyos@vyos01# set protocols bgp 65555 address-family ipv4-unicast redistribute connected [edit] vyos@vyos01# commit [edit] vyos@vyos01#
same komendy:
set protocols bgp 65555 address-family ipv4-unicast redistribute connected set protocols bgp 65555 neighbor 100.100.10.1 remote-as '65502' set protocols bgp 65555 neighbor 100.100.10.1 update-source '100.100.10.2'
Weryfikacja
Po czasie konfiguracji NSXa i jak Vyos przyszedł czas na weryfikację naszej pracy.
Sprawdzenie po stronie NSX
IPSEC
- logujemy się po SSH do Edga na którym jest nasze T0
- sprawdzamy sesję ike wykonując komendę get ipsecvpn ikesa active
nsx-edge-01> get ipsecvpn ikesa active Total Number of Active IKE SAs: 1 IKE Version : IKEv2 IKE Status : Up IKE Session ID : 6 Session Name : Tunnel-b522b518-59347c2-810b64c9-f60cccf2 Session Type : Route Based IKE SPI Initiator : 0x0e35db0e3da6b2d7 IKE SPI Responder : 0x0402b472d9a26732 Role : Initiator Number of Child SA Pairs : 2 Created Timestamp : 2020-03-26 11:12:09 IKE SA Uptime : 425 sec IKE SA Lifetime : 86400 sec DPD Probe Interval : 60 sec IP Address: Local : 1.1.1.1 Remote : 2.2.2.2 Identity: Local : 1.1.1.1 (ipv4) Remote : 2.2.2.2 (ipv4) Algorithm: Encryption : aes256-cbc Authentication : hmac-sha256-128 PRF : hmac-sha256 DH Group : 5 Authentication Method : Pre-shared key ----------------------------------------
- Weryfikujemy całego IPSeca wykonując komendę get ipsecvpn session
nsx-edge-01> get ipsecvpn session Total Number of Sessions: 1 IKE Session ID : 6 UUID : b522b518-0593-47c2-810b-64c9f60cccf2 SR ID : 74816ace-6bb1-4f82-b845-97a41c517c41 Type : Route Auth Mode : PSK Compliance Suite : NONE Local IP : 1.1.1.1 Peer IP : 2.2.2.2 Local ID : 1.1.1.1 Peer ID : 2.2.2.2 Session Status : Up Policy Rules VTI UUID : 9b519fea-7754-40e4-8a81-22e794d0b12a ToRule ID : 176235239 FromRule ID : 2323718887 Local Subnet : 0.0.0.0/0 Peer Subnet : 0.0.0.0/0 Tunnel Status : Up ------------------------------------------------------------------------------------------
- Weryfikujemy jak wyglądają statystyki czy zmieniają się wykonując komendę get ipsecvpn tunnel stats
nsx-edge-01> get ipsecvpn tunnel stats Interface UID : 324 Interface UUID : 9b519fea-7754-40e4-8a81-22e794d0b12a VTI UUID : 9b519fea-7754-40e4-8a81-22e794d0b12a Stats Rx Pkts : 248 Tx Pkts : 399 Rx Bytes : 16153 Tx Bytes : 50820 Rx MSS Adjusted : 0 Tx MSS Adjusted : 0 Rx MSS Ignored : 0 Tx MSS Ignored : 0 Rx Drops : 1 Tx Drops : 0 Rx Drop Crypto Failure : 0 Tx Drop Crypto Failure : 0 Rx Drop State Mismatch : 0 Tx Drop State Mismatch : 0 Rx Drop Malformed : 0 Tx Drop Malformed : 0 Rx Drop Proto Not Supported : 0 Tx Drop Proto Not Supported : 0 Rx Drop Replay : 0 Tx Drop Seq Rollover : 0 Rx Drop Inner Malformed : 0 Tx Drop Fragmentation Needed : 0 Rx Drop Policy Nomatch : 0 Rekey Request Failure : 0 Rx Drop Auth Failure : 0
BGP
Podobnie jak wyżej wykorzystujemy połączenie ssh do EDGE
- sprawdzamy jaki id VRF ma nasz router T0 moduł serwisowy wykonując komendę
nsx-edge-01> get logical-router Logical Router UUID VRF LR-ID Name Type Ports 736a80e3-23f6-5a2d-81d6-bbefb2786666 0 0 TUNNEL 4 f6badcc6-614e-4af3-bd27-50dc411e3a96 1 3 DR-t1 DISTRIBUTED_ROUTER_TIER1 5 74816ace-6bb1-4f82-b845-97a41c517c41 2 2 SR-test SERVICE_ROUTER_TIER0 6 a749186b-2250-486d-9cdc-00862a6b1a92 3 4 SR-t1 SERVICE_ROUTER_TIER1 5 043a4cbd-97b9-4d48-ad0c-7f1c55c0065a 4 1 DR-test DISTRIBUTED_ROUTER_TIER0 4
- przechodzimy do vrfu 2
nsx-edge-01> vrf 2 nsx-edge-01(tier0_sr)>
- Sprawdzamy siąsietzdwa BGP wykonując komendę get bgp neighbor summary
nsx-edge-01(tier0_sr)> get bgp neighbor summary BFD States: NC - Not configured, AC - Activating,DC - Disconnected AD - Admin down, DW - Down, IN - Init,UP - Up BGP summary information for VRF default for address-family: ipv4Unicast Router ID: 10.10.203.10 Local AS: 65502 Neighbor AS State Up/DownTime BFD InMsgs OutMsgs InPfx OutPfx 10.10.203.1 65500 Estab 01w4d23h NC 17419 17412 19 25 100.100.10.2 65555 Estab 00:17:13 NC 29 26 5 25
- sprawdzamy tablicę routingu wykonując polecenie get route bgp
nsx-edge-01(tier0_sr)> get route bgp Flags: t0c - Tier0-Connected, t0s - Tier0-Static, B - BGP, t0n - Tier0-NAT, t1s - Tier1-Static, t1c - Tier1-Connected, t1n: Tier1-NAT, t1l: Tier1-LB VIP, t1ls: Tier1-LB SNAT, t1d: Tier1-DNS FORWARDER, t1ipsec: Tier1-IPSec, > - selected route, * - FIB route Total number of routes: 20 b > * 0.0.0.0/0 [20/0] via 10.10.203.1, uplink-280, 01w4d23h b > * 2.2.2.2/32 [20/0] via 10.10.203.1, uplink-280, 01:32:45 b > * 10.1.1.0/24 [20/0] via 10.10.203.1, uplink-280, 01w4d23h b > * 10.2.2.0/24 [20/0] via 10.10.203.1, uplink-280, 01w4d23h b > * 10.2.3.0/24 [20/0] via 10.10.203.1, uplink-280, 01w4d23h b > * 10.2.4.0/24 [20/0] via 10.10.203.1, uplink-280, 01w4d23h b > * 10.10.0.0/24 [20/0] via 10.10.203.1, uplink-280, 01w4d23h b > * 10.10.11.0/24 [20/0] via 10.10.203.1, uplink-280, 01w4d23h b > * 10.10.201.0/24 [20/0] via 10.10.203.1, uplink-280, 01w4d23h b > * 10.10.202.0/24 [20/0] via 10.10.203.1, uplink-280, 01w4d23h b > * 10.100.1.0/24 [20/0] via 10.10.203.1, uplink-280, 03:58:22 b > * 10.100.2.0/24 [20/0] via 10.10.203.1, uplink-280, 03:58:22 b > * 10.100.3.0/24 [20/0] via 10.10.203.1, uplink-280, 03:58:22 b > * 10.255.254.0/24 [20/0] via 10.10.203.1, uplink-280, 01w4d23h b > * 10.255.255.0/24 [20/0] via 10.10.203.1, uplink-280, 01w4d23h b > * 54.37.136.1/32 [20/0] via 10.10.203.1, uplink-280, 01w4d23h b > * 192.168.1.0/24 [20/0] via 10.10.203.1, uplink-280, 01w4d23h b > * 192.168.3.0/24 [20/0] via 10.10.203.1, uplink-280, 01w4d23h b > * 192.168.128.0/24 [20/0] via 100.100.10.2, vti-324, 00:18:17 b > * 192.168.129.0/24 [20/0] via 100.100.10.2, vti-324, 00:18:17
Weryfikacja Vyos
Wszystkie sprawdzenie po stronie również wykonujemy z poziomu CLI poprzez SSH
Sprawdzenie IPSEC
- sprawdzamy sesję IKE
vyos@vyos01:~$ show vpn ike sa Peer ID / IP Local ID / IP ------------ ------------- 1.1.1.1 2.2.2.2 State IKEVer Encrypt Hash D-H Group NAT-T A-Time L-Time ----- ------ ------- ---- --------- ----- ------ ------ up IKEv2 aes256 sha256_128 5(MODP_1536) no 3600 86400
- Sprawdzamy sesję IPSec
vyos@vyos01:~$ show vpn ipsec sa Connection State Uptime Bytes In/Out Packets In/Out Remote address Remote ID Proposal ----------------------- ------- -------- -------------- ---------------- ---------------- ----------- --------------------------------------- peer-1.1.1.1-tunnel-vti up 24m59s 0B/60B 0/1 1.1.1.1 N/A AES_CBC_256/HMAC_SHA2_256_128 peer-1.1.1.1-tunnel-vti up 24m59s 3K/4K 43/67 1.1.1.1 N/A AES_CBC_256/HMAC_SHA2_256_128/MODP_1536
Weryfikacja BGP
- weryfikacja statusu BGP
vyos@vyos01:~$ show ip bgp summary IPv4 Unicast Summary: BGP router identifier 2.2.2.2, local AS number 65555 vrf-id 0 BGP table version 29 RIB entries 47, using 8648 bytes of memory Peers 1, using 20 KiB of memory Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 100.100.10.1 4 65502 35 40 0 0 0 00:26:10 22
- Sprawdzenie tablicy routingu
vyos@vyos01:~$ show ip route bgp Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP, T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP, F - PBR, f - OpenFabric, > - selected route, * - FIB route, q - queued route, r - rejected route B>* 10.1.1.0/24 [20/0] via 100.100.10.1, vti1, 00:26:46 B>* 10.2.2.0/24 [20/0] via 100.100.10.1, vti1, 00:26:46 B>* 10.2.3.0/24 [20/0] via 100.100.10.1, vti1, 00:26:46 B>* 10.2.4.0/24 [20/0] via 100.100.10.1, vti1, 00:26:46 B>* 10.10.0.0/24 [20/0] via 100.100.10.1, vti1, 00:26:46 B>* 10.10.11.0/24 [20/0] via 100.100.10.1, vti1, 00:26:46 B>* 10.10.201.0/24 [20/0] via 100.100.10.1, vti1, 00:26:46 B>* 10.10.202.0/24 [20/0] via 100.100.10.1, vti1, 00:26:46 B>* 10.10.203.0/24 [20/0] via 100.100.10.1, vti1, 00:26:46 B>* 10.11.1.0/24 [20/0] via 100.100.10.1, vti1, 00:26:46 B>* 10.12.1.0/24 [20/0] via 100.100.10.1, vti1, 00:26:46 B>* 10.100.1.0/24 [20/0] via 100.100.10.1, vti1, 00:26:46 B>* 10.100.2.0/24 [20/0] via 100.100.10.1, vti1, 00:26:46 B>* 10.100.3.0/24 [20/0] via 100.100.10.1, vti1, 00:26:46 B>* 10.255.254.0/24 [20/0] via 100.100.10.1, vti1, 00:26:46 B>* 10.255.255.0/24 [20/0] via 100.100.10.1, vti1, 00:26:46 B>* 54.37.136.1/32 [20/0] via 100.100.10.1, vti1, 00:26:46 B>* 192.168.3.0/24 [20/0] via 100.100.10.1, vti1, 00:26:46
Na koniec test puszczenie ping z Vyosa to NSX’a dokładnie na ip 10.11.1.1 który potwierdzi nam działanie transmisji w IPSecu
vyos@vyos01:~$ ping 10.11.1.1 PING 10.11.1.1 (10.11.1.1) 56(84) bytes of data. 64 bytes from 10.11.1.1: icmp_seq=1 ttl=63 time=0.749 ms 64 bytes from 10.11.1.1: icmp_seq=2 ttl=63 time=0.902 ms
Jak widać proces weryfikacji wyszedł pozytywnie i możemy cieszyć się skonfigurowanym IPSeciem typu route base. Jak Macie pytania to zapraszam do kontaktu.