Kako rute-bazirani IPsec radi s XFRM interfejsom
XFRM interfejs daje rute-baziranom IPsec-u uređaj kroz koji se usmjerava. if_id, sigurnosne asocijacije iza njega i vanjska ruta moraju se slagati.
Rute-bazirani IPsec predaje tablici rutiranja odluku koju su ranije donosili selektori politike. Na Linuxu je dio koji to omogućava XFRM interfejs: virtualni uređaj čiji se saobraćaj uparuje sa IPsec stanjem preko identifikatora interfejsa, a ne preko selektora. Kreiranje jednog traje jednu komandu i ništa ne dokazuje o tome postoji li tunel. Uređaj je kuka između rutiranja i sigurnosne politike, i obje strane te kuke moraju biti konfigurisane prije nego što se bilo šta zaštiti.
Šta uređaj jeste, a šta nije
XFRM interfejs je ručka za rutiranje. Paketi koji se usmjeravaju u njega uparuju se sa XFRM politikama koje referenciraju isti identifikator interfejsa, i ako politika i stanje postoje, oni se inkapsuliraju. Bez njih interfejs postoji, brojači miruju, a saobraćaj odlazi nigdje korisno.
To je prva dijagnostička podjela. Ruta u uređaj je činjenica rutiranja, instalirano stanje je sigurnosna činjenica, a rastući brojač na uređaju nije ni jedno ni drugo. Kada ljudi kažu da je tunel podignut jer interfejs pokazuje UP, oni opisuju link zastavice virtualnog uređaja koji nema vlastitog peera. Zastavica znači da je uređaj kreiran i omogućen, ništa više.
Još jedna granica: identifikator interfejsa nije ime. Dva uređaja sa sličnim imenima i različitim identifikatorima ne dijele stanje, a konekcija konfigurisana s pogrešnim identifikatorom instalira stanje koje nijedna ruta nikada neće koristiti.
Napravite jedan u pravom redoslijedu
Počnite s vanjskim uređajem i brojem koji ćete također staviti u konfiguraciju daemona. Primjer koristi eth0 kao vanjski interfejs i 42 kao identifikator — adrese koje trebate zamijeniti svojim.
Podignite uređaj, zatim potvrdite identifikator koji je kernel zapisao prije nego što dirnete VPN konfiguraciju:
sudo ip link add xfrm0 type xfrm dev eth0 if_id 42
sudo ip link set xfrm0 up
ip -d link show xfrm0 | grep -o 'if_id [0-9]*'Sada konfigurirajte konekciju u strongSwan-u s istim identifikatorom, jer daemon mora instalirati politike i stanja koja ga referenciraju. Postavite lokalne i udaljene selektore saobraćaja na raspon koji namjeravate rutirati, a zatim usmjerite taj raspon u uređaj. Konfiguracija daemona i tablica rutiranja moraju se složiti i oko identifikatora i oko odredišta, i nijedna ne osigurava drugu.
Držite IKE i ESP izvan rute tunela
Zadana ruta usmjerena u XFRM uređaj hvata inkapsulirane pakete kao i saobraćaj koji oni nose. Rezultat je petlja: gateway pokušava poslati vlastiti ESP kroz tunel koji ESP treba izgraditi.
Rješenje je specifičnija ruta za vanjsku adresu peera kroz fizički interfejs, koja pobjeđuje zadanu jer poklapa više bitova. Rutiranje zasnovano na oznakama radi isti posao kada više tunela dijeli tablicu, a strongSwan dokumentira oba pristupa za rute-bazirana postavljanja.
Šta god odaberete, provjerite da vanjski paket izlazi neinkapsuliran. Brza provjera je ping vanjske adrese peera nakon što je tunel podignut; ako to ne uspije dok je interfejs podignut, sumnjajte na hvatanje, a ne na dostupnost. Ista logika vrijedi za IKE port, jer daemonov vlastiti UDP saobraćaj ne smije biti usmjeren u uređaj koji pokušava uspostaviti.
Provjerite brojače na dva mjesta prije nego okrivite enkripciju
Brojači interfejsa i brojači stanja mjere različite faze. Paketi usmjereni u uređaj povećavaju uređaj čak i kada nijedno stanje ne odgovara, dok se brojači stanja pomjeraju samo za saobraćaj koji je stvarno inkapsuliran.
Pročitajte oba, zatim pročitajte kako daemon vidi child asocijaciju:
ip -s link show xfrm0
sudo ip xfrm state list | grep -E 'src|proto|mode'
sudo swanctl --list-sasRast brojača uređaja uz prazan izlaz stanja znači da rutiranje radi, a politika se ne poklapa — obično greška u identifikatoru ili selektoru. Rast brojača stanja dok udaljena strana ne izvještava ništa znači da paketi izlaze ali ne stižu ili ne prolaze autentifikaciju, što ukazuje na putanju ili konfiguraciju peera. Navedeni child s nula saobraćaja je problem selektora na jednoj strani, a ne pokvarena šifra.
Odlučite ko instalira rute
Dva vlasnika za jednu tablicu rutiranja uobičajen su izvor flappinga. Ako daemon automatski instalira rute, vaš mrežni menadžer ne smije također instalirati zadanu rutu kroz isti uređaj, a ručna ruta koju doda startup skripta bit će uklonjena sljedeći put kada daemon rekonfiguriše.
Odaberite jednog vlasnika i zapišite to. Kada daemon posjeduje rute, držite startup skriptu izvan tablice i pustite definiciju konekcije da opisuje selektore saobraćaja. Kada ih posjeduje mrežni menadžer, onemogućite automatsku instalaciju i prihvatite da daemon neće popraviti rutu koja nedostaje pri ponovnom povezivanju.
Pravila prosljeđivanja i firewall-a su odvojena odluka povrh toga, jer gateway koji propušta saobraćaj drugih hostova treba oboje. Rute-bazirani IPsec čini taj saobraćaj lakim za izraziti običnim alatima za rutiranje; on ne čini sloj politike opcionalnim.