Uued ühendused uuel VPN-väljapääsul, vanad vood jäävad puutumata
Planeeritud tühjendamine liigutab ainult liigitamata voogusid. Võrrelge seda marsruudi vahetamisega ning vaadake märgiseid, tabeleid ja conntracki olekut, mis seda püsti hoiavad.
Kaks tervet VPN-väljapääsu, üks pikk üleslaadimine juba käib ja nõue, et järgmine ühendus kasutaks teist tunnelit. Selle täitmiseks on kaks viisi ja ainult üks neist on töötaval lüüsil ohutu. Vaikemarsruudi vahetamine liigutab iga paketi, ka need, mis kuuluvad üleslaadimisele. Planeeritud tühjendamine muudab valikut uute ühenduste jaoks, jättes jälgitud vood teele, kust need algasid.
Kaks viisi väljapääsu vahetamiseks
Marsruudi vahetamine on üks käsk ja seda saab sekunditega tagasi pöörata, mistõttu kasutatakse seda intsidentide ajal. See on ka valimatu: olemasoleva üleslaadimise paketid väljuvad äkki teise tunneli kaudu, teise avaliku lähteaadressi ja eraldi tõlkeolekuga.
Kui kaugem ots jälgib voogusid lähteaadressi järgi, võib üleslaadimine lihtsalt lakkada äratuntav olemast. Tühjendamine väldib seda, tehes otsuse üks kord ühenduse kohta ja salvestades selle, nii et vana üleslaadimine hoiab oma väljapääsu, kuni see lõpeb. See on kogu harjutuse väärtus: kaugem ots ei näe ühtki muutust, mida ta peaks tõlgendama. Ta saab edasi pakette, mis sobivad ühendusega, mida ta juba teab.
Hind on keerukus: kaks marsruutimistabelit, klassifitseerija, mis töötab õige konksu juures, ja märgised, mida tuleb kooskõlastada kõige muuga masinas, mis neid kasutab.
Andke igale väljapääsule oma tabel
Broneerige marsruutimistabel iga väljapääsu jaoks ning erinevad märgiseväärtused või bitid kahe valiku jaoks. Iga tabel vajab oma rollile vastavaid marsruute, mitte ainult nime, ja see vajab puuduva juhtumi jaoks tahtlikku ebaõnnestumise tulemust. Tühi tabel, mis langeb vaikselt peamisesse tabelisse — nii väljub liiklus väljapääsust, mida keegi ei valinud.
ip rule add fwmark 0x10/0x10 table 101
ip rule add fwmark 0x20/0x20 table 102
ip route add default via 192.0.2.1 dev wg-a table 101
ip route add default via 198.51.100.1 dev wg-b table 102Lisage iga tabeli lõppu blackhole-marsruut, et vaste puudumisel otsing ebaõnnestuks valjult, selle asemel et põgeneda vaikeväärtusesse, mida te ei valinud.
Valige üks kord, esimese paketi juures
Klassifitseerige pärast seda, kui ühenduste jälgimine on olemas, ja enne olulist marsruudiotsingut. Uue, liigitamata LAN-ühenduse jaoks valige väljapääs ja salvestage see ühenduse olekusse. Hilisematel pakettidel taastage salvestatud väärtus paketi märgisesse, mida poliitikapõhine marsruutimine loeb.
Peen osa on see, mida tähendab uus. Conntrack võib varajaste pakettide ja kordussaadetiste puhul ikka teatada NEW, enne kui vastust nähakse, mistõttu ainult sellele olekule toetuv klassifitseerija võib juba tehtud valiku üle kirjutada. Enne väljapääsu määramist kontrollige, et ühenduse jaoks pole ühtki väljapääsu salvestatud.
nftables hoiab paketi- ja ühendusemärgised eraldi ning metainfo juhend dokumenteerib nendevahelise selgesõnalise kopeerimise. Ühendusemärgis ei muutu iseenesest paketimärgiseks, millega teie reegel kattub, ja see on kõige tavalisem põhjus, miks hoolikalt kirjutatud klassifitseerijal pole mingit mõju.
Piiritle taastamine suunaga ja liiklusega, mida silmas peate. Interneti-väljapääsu märgise rakendamine tagasipöörduvatele pakettidele võib saata vastused väljapääsu poole LAN-i asemel ja sümptomiks on ühesuunaline ühendus, mis näeb välja nagu tulemüüri probleem. Lugege vastuse teekonda enne tulemüürireegli puudutamist, sest paketti marsruuditakse, lihtsalt mitte tagasi saatja juurde.
Tühjendamise neli faasi
Valmistage B ette ilma A-d puutumata: marsruutimine, edastamine, autoriseerimine, NAT ja tagasitee. Paigaldage selle tabel ja valikupoliitika lüüsi olemasoleva konfiguratsiooniomaniku kaudu.
Lülitage klassifitseerija nii, et uued, liigitamata ühendused valiksid B, säilitades salvestatud valikud. Aatomiline nftables-tehing väldib akent, kus vana olek tuleb puhastada.
Jätke A tööle, kuni selle vood lõpevad. Selle liides, tabel, kaugem väljapääs ja NAT-vasted on endiselt nende voogude osa ning NAT-reegli muutmine ei ehita uuesti üles juba olemasolevaid sidumisi.
Võtke A kasutusest välja, kui tühjendamise tingimus on täidetud, hinnatuna ühenduste oleku ja rakenduse käitumise järgi, mitte ühe vaikse intervalli järgi.
Mida tühjendamine lubada ei saa
Brauseri päring ei ole uus transpordiühendus; koondamine saadab päringuid edasi vana kaudu. Vastupidi, UDP-voog võib conntrackist vananeda ja hilisem pakett liigitatakse uuesti. Tühjendamine järgib jälgitud voogusid, mitte rakenduse ettekujutust sessioonist.
Kui A ebaõnnestub enne, kui selle vood lõpevad, ei päästa salvestatud märgis neid. Nad ühenduvad uuesti B kaudu või ei ühendu üldse. Planeeritud tühjendamine ostab järjepidevuse, kuni algne tee on terve; see ei ole oleku replikatsioon sõltumatute väljapääsude vahel.
Kontrollige mõlemat poolt
Käivitage enne muudatust pikaajaline lubatud ühendus ja pärast seda tõeliselt uus. Kinnitage, millist tunnelit kumbki kasutab ja millist avalikku lähteaadressi kaugem ots näeb, seejärel kontrollige, et tagasiliiklus tuleb tagasi.
Ärge tühjendage conntracki tabelit, et uus valik ilmuma hakkaks. See hävitab täpselt selle oleku, mida tühjendamine peaks hoidma, ja muudab kontrollitud migratsiooni katkestuseks, millel on puhas näiv test.