
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.
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
123456789101112131415vyos@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
1234567set 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
12345678910111213141516[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
12345678[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
12345set 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
1234[edit]vyos@vyos01# set interfaces vti vti1 address '100.100.10.2/30' - Konfiguracja IPSeca
1234567891011121314151617181920[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#
12345678910set 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
123456[edit]vyos@vyos01# commit[edit]vyos@vyos01#
Konfiguracja BGP w Vyos
Po skonfigurowaniu IPSeca przechodzimy do konfiguracji sesji BGP, poniżej bardzo szybki config.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[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:
1 2 3 4 5 |
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
12345678910111213141516171819202122232425262728293031323334353637nsx-edge-01> get ipsecvpn ikesa activeTotal Number of Active IKE SAs: 1IKE Version : IKEv2IKE Status : UpIKE Session ID : 6Session Name : Tunnel-b522b518-59347c2-810b64c9-f60cccf2Session Type : Route BasedIKE SPI Initiator : 0x0e35db0e3da6b2d7IKE SPI Responder : 0x0402b472d9a26732Role : InitiatorNumber of Child SA Pairs : 2Created Timestamp : 2020-03-26 11:12:09IKE SA Uptime : 425 secIKE SA Lifetime : 86400 secDPD Probe Interval : 60 secIP Address:Local : 1.1.1.1Remote : 2.2.2.2Identity:Local : 1.1.1.1 (ipv4)Remote : 2.2.2.2 (ipv4)Algorithm:Encryption : aes256-cbcAuthentication : hmac-sha256-128PRF : hmac-sha256DH Group : 5Authentication Method : Pre-shared key---------------------------------------- - Weryfikujemy całego IPSeca wykonując komendę get ipsecvpn session
123456789101112131415161718192021222324nsx-edge-01> get ipsecvpn sessionTotal Number of Sessions: 1IKE Session ID : 6UUID : b522b518-0593-47c2-810b-64c9f60cccf2SR ID : 74816ace-6bb1-4f82-b845-97a41c517c41Type : RouteAuth Mode : PSKCompliance Suite : NONELocal IP : 1.1.1.1 Peer IP : 2.2.2.2Local ID : 1.1.1.1 Peer ID : 2.2.2.2Session Status : UpPolicy RulesVTI UUID : 9b519fea-7754-40e4-8a81-22e794d0b12aToRule ID : 176235239 FromRule ID : 2323718887Local Subnet : 0.0.0.0/0 Peer Subnet : 0.0.0.0/0Tunnel Status : Up------------------------------------------------------------------------------------------ - Weryfikujemy jak wyglądają statystyki czy zmieniają się wykonując komendę get ipsecvpn tunnel stats
123456789101112131415161718192021nsx-edge-01> get ipsecvpn tunnel statsInterface UID : 324Interface UUID : 9b519fea-7754-40e4-8a81-22e794d0b12aVTI UUID : 9b519fea-7754-40e4-8a81-22e794d0b12aStatsRx Pkts : 248 Tx Pkts : 399Rx Bytes : 16153 Tx Bytes : 50820Rx MSS Adjusted : 0 Tx MSS Adjusted : 0Rx MSS Ignored : 0 Tx MSS Ignored : 0Rx Drops : 1 Tx Drops : 0Rx Drop Crypto Failure : 0 Tx Drop Crypto Failure : 0Rx Drop State Mismatch : 0 Tx Drop State Mismatch : 0Rx Drop Malformed : 0 Tx Drop Malformed : 0Rx Drop Proto Not Supported : 0 Tx Drop Proto Not Supported : 0Rx Drop Replay : 0 Tx Drop Seq Rollover : 0Rx Drop Inner Malformed : 0 Tx Drop Fragmentation Needed : 0Rx Drop Policy Nomatch : 0 Rekey Request Failure : 0Rx 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ę
12345678910nsx-edge-01> get logical-routerLogical RouterUUID VRF LR-ID Name Type Ports736a80e3-23f6-5a2d-81d6-bbefb2786666 0 0 TUNNEL 4f6badcc6-614e-4af3-bd27-50dc411e3a96 1 3 DR-t1 DISTRIBUTED_ROUTER_TIER1 574816ace-6bb1-4f82-b845-97a41c517c41 2 2 SR-test SERVICE_ROUTER_TIER0 6a749186b-2250-486d-9cdc-00862a6b1a92 3 4 SR-t1 SERVICE_ROUTER_TIER1 5043a4cbd-97b9-4d48-ad0c-7f1c55c0065a 4 1 DR-test DISTRIBUTED_ROUTER_TIER0 4 - przechodzimy do vrfu 2
1234nsx-edge-01> vrf 2nsx-edge-01(tier0_sr)> - Sprawdzamy siąsietzdwa BGP wykonując komendę get bgp neighbor summary
123456789101112nsx-edge-01(tier0_sr)> get bgp neighbor summaryBFD States: NC - Not configured, AC - Activating,DC - DisconnectedAD - Admin down, DW - Down, IN - Init,UP - UpBGP summary information for VRF default for address-family: ipv4UnicastRouter ID: 10.10.203.10 Local AS: 65502Neighbor AS State Up/DownTime BFD InMsgs OutMsgs InPfx OutPfx10.10.203.1 65500 Estab 01w4d23h NC 17419 17412 19 25100.100.10.2 65555 Estab 00:17:13 NC 29 26 5 25 - sprawdzamy tablicę routingu wykonując polecenie get route bgp
1234567891011121314151617181920212223242526272829303132nsx-edge-01(tier0_sr)> get route bgpFlags: 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 routeTotal number of routes: 20b > * 0.0.0.0/0 [20/0] via 10.10.203.1, uplink-280, 01w4d23hb > * 2.2.2.2/32 [20/0] via 10.10.203.1, uplink-280, 01:32:45b > * 10.1.1.0/24 [20/0] via 10.10.203.1, uplink-280, 01w4d23hb > * 10.2.2.0/24 [20/0] via 10.10.203.1, uplink-280, 01w4d23hb > * 10.2.3.0/24 [20/0] via 10.10.203.1, uplink-280, 01w4d23hb > * 10.2.4.0/24 [20/0] via 10.10.203.1, uplink-280, 01w4d23hb > * 10.10.0.0/24 [20/0] via 10.10.203.1, uplink-280, 01w4d23hb > * 10.10.11.0/24 [20/0] via 10.10.203.1, uplink-280, 01w4d23hb > * 10.10.201.0/24 [20/0] via 10.10.203.1, uplink-280, 01w4d23hb > * 10.10.202.0/24 [20/0] via 10.10.203.1, uplink-280, 01w4d23hb > * 10.100.1.0/24 [20/0] via 10.10.203.1, uplink-280, 03:58:22b > * 10.100.2.0/24 [20/0] via 10.10.203.1, uplink-280, 03:58:22b > * 10.100.3.0/24 [20/0] via 10.10.203.1, uplink-280, 03:58:22b > * 10.255.254.0/24 [20/0] via 10.10.203.1, uplink-280, 01w4d23hb > * 10.255.255.0/24 [20/0] via 10.10.203.1, uplink-280, 01w4d23hb > * 54.37.136.1/32 [20/0] via 10.10.203.1, uplink-280, 01w4d23hb > * 192.168.1.0/24 [20/0] via 10.10.203.1, uplink-280, 01w4d23hb > * 192.168.3.0/24 [20/0] via 10.10.203.1, uplink-280, 01w4d23hb > * 192.168.128.0/24 [20/0] via 100.100.10.2, vti-324, 00:18:17b > * 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
12345678910vyos@vyos01:~$ show vpn ike saPeer ID / IP Local ID / IP------------ -------------1.1.1.1 2.2.2.2State 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
1234567vyos@vyos01:~$ show vpn ipsec saConnection 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_128peer-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
123456789101112vyos@vyos01:~$ show ip bgp summaryIPv4 Unicast Summary:BGP router identifier 2.2.2.2, local AS number 65555 vrf-id 0BGP table version 29RIB entries 47, using 8648 bytes of memoryPeers 1, using 20 KiB of memoryNeighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd100.100.10.1 4 65502 35 40 0 0 0 00:26:10 22 - Sprawdzenie tablicy routingu
12345678910111213141516171819202122232425262728vyos@vyos01:~$ show ip route bgpCodes: 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 routeB>* 10.1.1.0/24 [20/0] via 100.100.10.1, vti1, 00:26:46B>* 10.2.2.0/24 [20/0] via 100.100.10.1, vti1, 00:26:46B>* 10.2.3.0/24 [20/0] via 100.100.10.1, vti1, 00:26:46B>* 10.2.4.0/24 [20/0] via 100.100.10.1, vti1, 00:26:46B>* 10.10.0.0/24 [20/0] via 100.100.10.1, vti1, 00:26:46B>* 10.10.11.0/24 [20/0] via 100.100.10.1, vti1, 00:26:46B>* 10.10.201.0/24 [20/0] via 100.100.10.1, vti1, 00:26:46B>* 10.10.202.0/24 [20/0] via 100.100.10.1, vti1, 00:26:46B>* 10.10.203.0/24 [20/0] via 100.100.10.1, vti1, 00:26:46B>* 10.11.1.0/24 [20/0] via 100.100.10.1, vti1, 00:26:46B>* 10.12.1.0/24 [20/0] via 100.100.10.1, vti1, 00:26:46B>* 10.100.1.0/24 [20/0] via 100.100.10.1, vti1, 00:26:46B>* 10.100.2.0/24 [20/0] via 100.100.10.1, vti1, 00:26:46B>* 10.100.3.0/24 [20/0] via 100.100.10.1, vti1, 00:26:46B>* 10.255.254.0/24 [20/0] via 100.100.10.1, vti1, 00:26:46B>* 10.255.255.0/24 [20/0] via 100.100.10.1, vti1, 00:26:46B>* 54.37.136.1/32 [20/0] via 100.100.10.1, vti1, 00:26:46B>* 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
1 2 3 4 5 6 |
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.