Marsruudipõhine vs. poliitikapõhine saidi-saiti VPN: mille poolest erinevad
Poliitikapõhine IPsec valib liiklust selektoriga; marsruudipõhine saadab selle tunneliliidese kaudu. Mõlemad vajavad endiselt tulemüürireegleid ja tagasiteed.
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.
| Aspect | Policy-based | Route-based |
|---|---|---|
| What selects traffic | Negotiated selectors | A route into the tunnel interface |
| Adding a network | Edit selectors on both peers | Add a route, widen the selector once |
| Dynamic routing | Awkward to run over the tunnel | Runs over the interface directly |
| Typical failure | Tunnel up, host outside the selector | Tunnel 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.