Mõlemad lahendused kaitsevad sama liiklust sama IPsec-masinaga ja erinevad selle poolest, mis otsustab, milline pakett tunnelisse läheb. Poliitikapõhises ühenduses teevad seda tööd läbiräägitud liikluseselektorid; marsruudipõhises teeb seda marsruut, mis osutab tunneliliidesele. Nende segiajamine tekitab tuntud toevestluse, kus tunnel teatab end püsti olevat, samal ajal kui rakendus ei jõua mitte kuhugi. Erinevus loeb kõige rohkem siis, kui lisate võrgu, käivitate marsruutimisprotokolli või silute teed, mis lahkub vaikselt vale väljapääsu kaudu.

Kaks viisi otsustada, mis tunnelisse läheb

Poliitikapõhine VPN ehitab turbepoliitika, mis sobib allika- ja sihtprefiksitega, ning krüpteerib seejärel kõik, mis selle alla mahub. Partner peab läbi rääkima ühilduvad selektorid, nii et tegelik ulatus jääb lõpuks mõlema poole pakutu ühisosaks. Väljaspool seda ühisosa ei ole miski kaitstud, ükskõik mida marsruutimistabel ütleb.

Marsruudipõhine VPN loob liidese, mis esindab tunnelit, ja laseb marsruutimistabelil liikluse sinna saata. IKE-deemon paigaldab endiselt oleku ja liidesepõhise poliitika — see on detail, mille inimesed jätavad vahele, kui otsustavad, et marsruudid on krüpteerimise asendanud. Mõlemad lahendused krüpteerivad IPseciga; erineb ainult valikumehhanism.

Lugege allolevat võrdlust pigem rikkeallkirjade kogumina kui punktitabelina, sest kumbki veerg ei võida iseenesest.

AspectPolicy-basedRoute-based
What selects trafficNegotiated selectorsA route into the tunnel interface
Adding a networkEdit selectors on both peersAdd a route, widen the selector once
Dynamic routingAwkward to run over the tunnelRuns over the interface directly
Typical failureTunnel up, host outside the selectorTunnel up, no route or wrong source

Poliitikapõhine: selektor on leping

Selektoreid räägitakse läbi, mitte lihtsalt ei seata. Pakkuge ühelt poolt 10.10.0.0/16 ja teiselt 10.10.1.0/24, siis katab assotsiatsioon selle, milles läbirääkimine kokku leppis, samal ajal kui iga teine host jääb sellest välja.

Lugege paigaldatud olekut, mitte konfiguratsioonifaili. Linuxi partneril on kerneli enda tabelid tõe alus, ja need näitavad, mis läbirääkimisest üle jäi. Poliitika, mis nimetab õiged prefiksid ilma vastava olekuta, tähendab, et assotsiatsioon ei tõusnud kunagi püsti. Vale prefiksi poliitikaga paaritatud olek on vastupidine probleem, ja see tekitab tunneli, mis näib terve, samal ajal kui üks alamvõrk ei jõua mitte kuhugi.

sudo ip xfrm state
sudo ip xfrm policy
sudo swanctl --list-sas

Võrrelge mõlemat väljundit prefiksitega, mida arvate kaitsvat. See üks võrdlus lahendab enamiku teadetest töötava tunneli ja kättesaamatu serveri kohta. See osutab ka sellele, millist partnerit muuta, sest lahknevus on tavaliselt nähtav ainult ühes suunas.

Marsruudipõhine: liides on leping

XFRM-liides annab tunnelile nime ja identiteedi ning liiklus jõuab selleni, sest marsruutimistabel nii ütleb. Mitmest kaugest prefiksist saab siis marsruutimisprobleem, mitte selektoriprobleem, ja marsruutimisprotokoll saab neid kuulutada. See on tõeline võit, mitte krüpteerimine.

Liides ei kõrvalda vajadust poliitika järele. Deemon paigaldab liidese identiteediga seotud reeglid iga liidese kohta, nii et valele liidesele saabuv pakett ikka ebaõnnestub. Lähteaadress, mida partner ei aktsepteeri, ebaõnnestub samuti, isegi täiusliku marsruudiga. Marsruudipõhine tähendab, et marsruut otsustab sisenemise, mitte et poliitika on kadunud.

sudo ip link add xfrm0 type xfrm dev eth0 if_id 42
sudo ip route add 10.20.0.0/16 dev xfrm0
ip -s link show xfrm0
ip route get 10.20.5.10

Jälgige liidese loendureid, kui marsruut on paigas. Marsruut, mis on olemas, samal ajal kui loendurid jäävad nulli, tähendab, et midagi ei sobitata tunnelisse, mis tavaliselt osutab puuduvale olekule, mitte puuduvale marsruudile.

Kus need kaks lahendust tegelikult lahku lähevad

Võrgu lisamine on puhtaim test, milline mudel teile sobib. Marsruudipõhine lahendus lisab marsruudi ja laiendab selektorit ülimalt korra, poliitikapõhine lahendus aga muudab prefiksipaare mõlemal partneril ja räägib uuesti läbi. Kaks stabiilset alamvõrku teevad selle muudatuse tühiseks ja kakskümmend teevad sellest projekti.

Kumbki mudel ei asenda tulemüüri ja võrdlused lõpevad tavaliselt enne seda punkti. Lai selektor või lai marsruut otsustab, mida krüpteeritakse, mitte mida lubatakse.

Ka MTU käitumine erineb praktikas. Kapseldamine vähendab kasulikku koormust ja marsruudipõhine liides kannab oma MTU-d, mistõttu MSS-i kinnitamine mõlemas lüüsis väldib musta augu sümptomit, kus väikesed vastused saabuvad ja suured kaovad. Poliitikapõhised tunnelid kohtavad sama seina teiselt poolt, sest selektor ei ütle paketi suuruse kohta midagi. Määrake kinnitamine teadlikult, selle asemel et partnerit süüdistada.

Üleminek tagasiteed kaotamata

Kirjutage olemasolevad prefiksipaarid üles enne, kui midagi muudate, seejärel liigutage üks rakendusetee ja jälgige seda otsast otsani. Tunnel, mis tõuseb püsti, ei ole tunnel, mis edastab, ja erinevus ilmneb vastuse suunas.

Kui partnerid ühenduvad, aga LAN-i hostid mitte, uurige tagasiteed ja lähteaadressi, mida kauge host kasutab. Kahe liidesega host võib vastata vale liidese kaudu ja ükski selektori muudatus ei paranda seda. Püüdke liiklus mõlemas otsas enne algoritmide muutmist.

ip route get 10.20.5.10
sudo tcpdump -ni any host 10.20.5.10 and icmp
sudo swanctl --list-conns

Hoidke töötamise ajal haldustee, mis ei sõltu tunnelist. Tagasipööramine on lihtsam, kui lüüsi enda juurdepääs ei sõida ühendusel, mida silute.

Seotud artiklid