Twee gesonde VPN-uitgange, een lang oplaai wat reeds loop, en ’n vereiste dat die volgende verbinding die ander tonnel gebruik. Daar is twee maniere om dit te bevredig, en net een daarvan is veilig op ’n lewendige poort. Om die verstekroete om te ruil skuif elke pakket, insluitend die wat aan die oplaai behoort. ’n Beplande dreinering verander die keuse vir nuwe verbindings terwyl die gevolgde vloei op die pad bly waarop hulle begin het.

Twee maniere om ’n uitgang te skakel

Die roete-omruiling is een opdrag en dit is binne sekondes omkeerbaar, daarom word dit tydens voorvalle gebruik. Dit is ook onoordeelkundig: pakkette van die bestaande oplaai verlaat skielik ’n ander tonnel, met ’n ander openbare bronadres en aparte vertalingstoestand.

As die verre kant vloei volgens bronadres volg, kan die oplaai eenvoudig ophou om herken te word. Die dreinering vermy dit deur die besluit een keer per verbinding te neem en dit te stoor, sodat die ou oplaai sy uitgang behou totdat dit klaar is. Dit is die hele waarde van die oefening: die verre kant sien geen verandering wat hy moet interpreteer nie. Dit bly pakkette ontvang wat by die verbinding pas wat hy reeds ken.

Die koste is kompleksiteit: twee roetetabelle, ’n klassifiseerder wat by die regte haak loop, en merke wat met alles anders op die masjien gekoördineer moet word.

Gee elke uitgang sy eie tabel

Reserveer ’n roetetabel per uitgang en afsonderlike merkwaardes of bisse vir die twee keuses. Elke tabel het die roetes nodig wat by sy rol pas, nie net ’n naam nie, en dit het ’n doelbewuste mislukkingsuitkoms vir die ontbrekende geval nodig. ’n Leë tabel wat stilweg na die hooftabel deurval is hoe verkeer deur ’n uitgang verlaat wat niemand gekies het nie.

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 102

Voeg ’n swartgat-roete aan die einde van elke tabel by sodat ’n soektog wat geen pas vind nie hardop misluk eerder as om na ’n verstek te ontsnap wat jy nie gekies het nie.

Kies een keer, by die eerste pakket

Klassifiseer nadat verbindingsvolging bestaan en voor die roetesoektog wat saak maak. Vir ’n nuwe, ongeklassifiseerde LAN-verbinding, kies die uitgang en stoor dit in die verbindingstoestand. Op latere pakkette, herstel die gestoorde waarde in die pakketmerk wat beleidsroetering lees.

Die subtiele deel is wat nuut beteken. Conntrack kan steeds NEW rapporteer vir vroeë pakkette en hertransmissies voordat ’n antwoord gesien word, so ’n klassifiseerder wat net op daardie toestand staatmaak, kan ’n keuse oorskryf wat hy reeds gemaak het. Kontroleer dat geen uitgang vir die verbinding gestoor is voordat een toegewys word nie.

nftables hou pakket- en verbindingsmerke apart, en die gids oor metainligting dokumenteer die eksplisiete kopie tussen hulle. ’n Verbindingsmerk word nie vanself die pakketmerk wat jou reël pas nie, en dit is die enkele mees algemene rede waarom ’n sorgvuldig geskrewe klassifiseerder geen effek het nie.

Beperk herstel tot die rigting en verkeer wat jy bedoel. Om ’n internet-uitgangmerk op terugkerende pakkette toe te pas, kan antwoorde na die uitgang stuur in plaas van na die LAN, en die simptoom is ’n eenrigtingverbinding wat soos ’n brandmuurprobleem lyk. Lees die antwoordpad voordat jy aan ’n brandmuurreël raak, want die pakket word geroteer, net nie terug na die sender nie.

Vier fases van ’n dreinering

  1. Bereid B voor sonder om A aan te raak: roetering, aanstuur, magtiging, NAT en die terugpad. Installeer sy tabel en keurbeleid deur die poort se bestaande konfigurasie-eienaar.

  2. Skakel die klassifiseerder sodat nuwe, ongeklassifiseerde verbindings B kies, terwyl gestoorde keuses behoue bly. ’n Atoom nftables-transaksie vermy ’n venster waarin ou toestand skoongemaak moet word.

  3. Los A aan terwyl sy vloei klaarmaak. Sy koppelvlak, tabel, verre uitgang en NAT-kaarte is steeds deel van daardie vloei, en om ’n NAT-reël te wysig bou nie bindings wat reeds bestaan nie.

  4. Onttrek A wanneer die dreineringsvoorwaarde bereik is, beoordeel uit verbindingstoestand en toepassingsgedrag eerder as een stil interval.

Wat ’n dreinering nie kan belowe nie

’n Blaaiernavraag is nie ’n nuwe vervoerverbinding nie; poeling hou navrae oor die oue stuur. Omgekeerd kan ’n UDP-vloei uit conntrack verouder en ’n latere pakket word vars geklassifiseer. Die dreinering volg gevolgde vloei, nie ’n toepassing se idee van ’n sessie nie.

As A misluk voordat sy vloei klaar is, red die gestoorde merk hulle nie. Hulle herverbind deur B, of hulle herverbind glad nie. ’n Beplande dreinering koop kontinuïteit terwyl die oorspronklike pad gesond is; dit is nie toestand replisering tussen onafhanklike uitgange nie.

Verifieer beide helftes

Begin ’n langdurige toegelate verbinding voor die verandering en ’n werklik nuwe een daarna. Bevestig watter tonnel elkeen gebruik en watter openbare bronadres die verre kant sien, en kyk dan dat terugkeerverkeer terugkom.

Moenie die conntrack-tabel spoel om die nuwe keuse te laat verskyn nie. Dit vernietig juis die toestand wat die dreinering veronderstel is om te bewaar, en dit verander ’n beheerde migrasie in ’n onderbreking met ’n skoon lykende toets.

Verwante artikels