Kaip maršrutais pagrįstas IPsec veikia su XFRM sąsaja
XFRM sąsaja suteikia maršrutais pagrįstam IPsec įrenginį, per kurį maršrutizuojama. if_id, už jo esančios saugos asociacijos ir išorinis maršrutas turi visi sutapti.
Maršrutais pagrįstas IPsec perduoda maršrutų lentelei sprendimą, kurį anksčiau priimdavo politikos selektoriai. Linux sistemoje tai leidžianti dalis yra XFRM sąsaja: virtualus įrenginys, kurio srautas susiejamas su IPsec būsena pagal sąsajos identifikatorių, o ne pagal selektorių. Sukurti vieną užtenka vienos komandos, ir tai nieko neįrodo apie tai, ar tunelis egzistuoja. Įrenginys yra kablys tarp maršrutizavimo ir saugos politikos, ir abi to kablio pusės turi būti sukonfigūruotos, kol kas nors bus apsaugota.
Kas yra įrenginys ir kas ne
XFRM sąsaja yra maršrutizavimo rankena. Į ją maršrutizuoti paketai susiejami su XFRM politikomis, kurios nurodo tą patį sąsajos identifikatorių, ir jei egzistuoja politika ir būsena, jie inkapsuliuojami. Be jų sąsaja egzistuoja, skaitikliai stovi vietoje, o srautas nueina ten, kur iš jo nėra naudos.
Tai pirmasis diagnostinis atskyrimas. Maršrutas į įrenginį yra maršrutizavimo faktas, įdiegta būsena yra saugos faktas, o įrenginyje augantis skaitiklis nėra nei viena, nei kita. Kai žmonės sako, kad tunelis pakeltas, nes sąsaja rodo UP, jie aprašo virtualaus įrenginio, kuris neturi savo porininko, jungties vėliavėles. Vėliavėlė reiškia, kad įrenginys buvo sukurtas ir įjungtas, nieko daugiau.
Dar viena riba: sąsajos identifikatorius nėra vardas. Du įrenginiai su panašiais vardais ir skirtingais identifikatoriais nesidalija būsena, o ryšys, sukonfigūruotas su neteisingu identifikatoriumi, įdiegia būseną, kurios nenaudos nė vienas maršrutas.
Sukurkite vieną teisinga tvarka
Pradėkite nuo išorinio įrenginio ir skaičiaus, kurį taip pat įrašysite į demono konfigūraciją. Pavyzdyje kaip išorinė sąsaja naudojamas eth0, o kaip identifikatorius – 42, adresai, kuriuos turėtumėte pakeisti savaisiais.
Pakelkite įrenginį, tada patvirtinkite branduolio užfiksuotą identifikatorių prieš liesdami VPN konfigūraciją:
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]*'Dabar sukonfigūruokite ryšį strongSwan su tuo pačiu identifikatoriumi, nes demonas turi įdiegti politikas ir būsenas, kurios į jį nurodo. Nustatykite vietinius ir nuotolinius srauto selektorius į diapazoną, kurį ketinate maršrutizuoti, tada maršrutizuokite tą diapazoną į įrenginį. Demono konfigūracija ir maršrutų lentelė turi sutarti tiek dėl identifikatoriaus, tiek dėl paskirties vietų, ir nė viena nepateikia kitos.
Laikykite IKE ir ESP už tunelio maršruto
Numatytasis maršrutas, nukreiptas į XFRM įrenginį, pagauna inkapsuliuotus paketus ir jų gabenamą srautą. Rezultatas yra kilpa: šliuzas bando išsiųsti savo ESP tuneliu, kurį ESP turėtų pastatyti.
Sprendimas yra konkretesnis maršrutas porininko išoriniam adresui per fizinę sąsają, kuris nugali numatytąjį, nes atitinka daugiau bitų. Žymėmis pagrįstas maršrutizavimas atlieka tą patį darbą, kai keli tuneliai dalijasi lentele, o strongSwan dokumentuoja abu metodus maršrutais pagrįstiems diegimams.
Kad ir ką pasirinktumėte, patikrinkite, ar išorinis paketas išeina neinkapsuliuotas. Greitas patikrinimas – po tunelio pakėlimo pinginti porininko išorinį adresą; jei tai nepavyksta, kol sąsaja pakelta, įtarkite perėmimą, o ne pasiekiamumą. Ta pati logika galioja IKE prievadui, nes paties demono UDP srautas neturi būti maršrutizuojamas į įrenginį, kurį jis bando sukurti.
Patikrinkite skaitiklius dviejose vietose, prieš kaltindami šifravimą
Sąsajos skaitikliai ir būsenos skaitikliai matuoja skirtingus etapus. Į įrenginį maršrutizuoti paketai padidina įrenginį net tada, kai jokia būsena neatitinka, o būsenos skaitikliai juda tik srautui, kuris iš tiesų buvo inkapsuliuotas.
Perskaitykite abu, tada perskaitykite demono požiūrį į vaiko asociaciją:
ip -s link show xfrm0
sudo ip xfrm state list | grep -E 'src|proto|mode'
sudo swanctl --list-sasĮrenginio skaitiklių augimas esant tuščiam būsenos išvedimui reiškia, kad maršrutizavimas veikia, o politika neatitinka, dažniausiai identifikatoriaus arba selektoriaus klaida. Būsenos skaitiklių augimas, kai nuotolinė pusė nieko nepraneša, reiškia, kad paketai išeina, bet neateina arba nepraeina autentifikacijos, o tai rodo kelią arba porininko konfigūraciją. Sąraše esantis vaikas su nuliniu srautu yra selektoriaus problema viename gale, o ne sulaužytas šifras.
Nuspręskite, kas įdiegia maršrutus
Du savininkai vienai maršrutų lentelei yra įprastas flapping šaltinis. Jei demonas maršrutus įdiegia automatiškai, jūsų tinklo valdytojas neturi irgi įdiegti numatytojo maršruto per tą patį įrenginį, o paleidimo scenarijaus pridėtas rankinis maršrutas bus pašalintas kitą kartą, kai demonas persikonfigūruos.
Pasirinkite vieną savininką ir užrašykite tai. Kai maršrutus turi demonas, laikykite paleidimo scenarijų už lentelės ir leiskite ryšio aprašui nurodyti srauto selektorius. Kai juos turi tinklo valdytojas, išjunkite automatinį diegimą ir priimkite, kad demonas nesutaisys trūkstamo maršruto prisijungus iš naujo.
Persiuntimo ir užkardos taisyklės yra atskiras sprendimas virš to, nes šliuzas, perduodantis kitų mazgų srautą, turi abu. Maršrutais pagrįstas IPsec leidžia tą srautą lengvai išreikšti įprastomis maršrutizavimo priemonėmis; jis nepadaro politikos sluoksnio neprivalomu.