Divas veselas VPN izejas, viena gara augšupielāde jau darbojas un prasība, ka nākamais savienojums izmanto otru tuneli. To var izpildīt divos veidos, un tikai viens no tiem ir drošs dzīvā vārtejā. Noklusējuma maršruta maiņa pārvieto katru paketi, tostarp tās, kas pieder augšupielādei. Plānota novadīšana maina izvēli jauniem savienojumiem un atstāj izsekotās plūsmas uz ceļa, kur tās sākās.

Divi veidi, kā mainīt izeju

Maršruta maiņa ir viena komanda, un to var atcelt sekundēs, tāpēc to izmanto incidentu laikā. Tā arī nav izvēlīga: esošās augšupielādes paketes pēkšņi iziet pa citu tuneli, ar citu publisko avota adresi un atsevišķu tulkošanas stāvokli.

Ja tālais gals izseko plūsmas pēc avota adreses, augšupielāde var vienkārši pārstāt tikt atpazīta. Novadīšana no tā izvairās, pieņemot lēmumu vienreiz uz savienojumu un saglabājot to, tāpēc vecā augšupielāde saglabā savu izeju, līdz tā beidzas. Tā ir visa vingrinājuma vērtība: tālais gals neredz nekādas izmaiņas, kas tam būtu jāinterpretē. Tas turpina saņemt paketes, kas atbilst savienojumam, kuru tas jau pazīst.

Cena ir sarežģītība: divas maršrutēšanas tabulas, klasifikators, kas darbojas pareizajā āķī, un atzīmes, kas jāsaskaņo ar visu pārējo mašīnā, kas tās izmanto.

Dodiet katrai izejai savu tabulu

Rezervējiet maršrutēšanas tabulu katrai izejai un atšķirīgas atzīmes vērtības vai bitus abām izvēlēm. Katrai tabulai vajadzīgi tās lomai atbilstoši maršruti, nevis tikai nosaukums, un tai vajadzīgs apzināts neveiksmes iznākums trūkstošajā gadījumā. Tukša tabula, kas klusi iekrīt galvenajā tabulā — tā satiksme iziet pa izeju, kuru neviens nav izvēlējies.

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

Pievienojiet blackhole maršrutu katras tabulas beigās, lai meklēšana bez atbilstības skaļi neizdotos, nevis bēgtu uz noklusējumu, kuru neizvēlējāties.

Izvēlieties vienreiz, pirmajā paketē

Klasificējiet pēc tam, kad pastāv savienojumu izsekošana, un pirms svarīgās maršruta meklēšanas. Jaunam, neklasificētam LAN savienojumam izvēlieties izeju un saglabājiet to savienojuma stāvoklī. Vēlākajās paketēs atjaunojiet saglabāto vērtību paketes atzīmē, ko nolasa politikas maršrutēšana.

Smalkā daļa ir tas, ko nozīmē jauns. Conntrack joprojām var ziņot NEW agrīnām paketēm un atkārtotiem pārraidēm, pirms redzama atbilde, tāpēc klasifikators, kas paļaujas tikai uz šo stāvokli, var pārrakstīt jau pieņemtu izvēli. Pirms piešķiršanas pārbaudiet, vai savienojumam nav saglabāta neviena izeja.

nftables tur paketes un savienojuma atzīmes atsevišķi, un metainformācijas rokasgrāmata dokumentē skaidro kopēšanu starp tām. Savienojuma atzīme pati par sevi nekļūst par paketes atzīmi, ar kuru saskan jūsu noteikums, un tas ir visbiežākais iemesls, kāpēc rūpīgi rakstīts klasifikators nedarbojas.

Ierobežojiet atjaunošanu ar virzienu un satiksmi, ko domājat. Interneta izejas atzīmes piemērošana atgriezeniskajām paketēm var sūtīt atbildes uz izeju, nevis uz LAN, un simptoms ir vienvirziena savienojums, kas izskatās kā ugunsmūra problēma. Izlasiet atbildes ceļu pirms ugunsmūra noteikuma aizskaršanas, jo pakete tiek maršrutēta, tikai ne atpakaļ sūtītājam.

Četras novadīšanas fāzes

  1. Sagatavojiet B, neaizskarot A: maršrutēšana, pāradresācija, autorizācija, NAT un atgriešanās ceļš. Instalējiet tā tabulu un atlases politiku caur vārtejas esošo konfigurācijas īpašnieku.

  2. Pārslēdziet klasifikatoru, lai jauni, neklasificēti savienojumi izvēlētos B, saglabājot saglabātās izvēles. Atomiska nftables transakcija izvairās no loga, kurā jānotīra vecais stāvoklis.

  3. Atstājiet A ieslēgtu, kamēr beidzas tā plūsmas. Tā saskarne, tabula, attālā izeja un NAT kartējumi joprojām ir daļa no šīm plūsmām, un NAT noteikuma rediģēšana nepārbūvē jau esošās saites.

  4. Izņemiet A no ekspluatācijas, kad novadīšanas nosacījums ir izpildīts, vērtējot pēc savienojumu stāvokļa un lietojumprogrammas uzvedības, nevis viena klusa intervāla.

Ko novadīšana nevar solīt

Pārlūka pieprasījums nav jauns transporta savienojums; apvienošana turpina sūtīt pieprasījumus pa veco. Pretēji, UDP plūsma var novecojot izkrist no conntrack, un vēlāka pakete tiek klasificēta no jauna. Novadīšana seko izsekotajām plūsmām, nevis lietojumprogrammas priekšstatam par sesiju.

Ja A sabrūk pirms tā plūsmu beigām, saglabātā atzīme tās neglābj. Tās atkal pieslēdzas caur B vai nepievienojas vispār. Plānota novadīšana pērk nepārtrauktību, kamēr sākotnējais ceļš ir vesels; tā nav stāvokļa replicēšana starp neatkarīgām izejām.

Pārbaudiet abas puses

Pirms izmaiņām sāciet ilgstošu atļautu savienojumu un pēc tām – patiesi jaunu. Apstipriniet, kuru tuneli izmanto katrs un kādu publisko avota adresi redz tālais gals, pēc tam pārbaudiet, vai atgriešanās satiksme atgriežas.

Neiztīriet conntrack tabulu, lai parādītos jaunā izvēle. Tas iznīcina tieši to stāvokli, kas novadīšanai jāsaglabā, un pārvērš kontrolētu migrāciju pārtraukumā ar tīri izskatāmu testu.

Saistītie raksti