Tuneliai yra vienkartiniai; politika tokia neturėtų būti. Linux šliuze nftables taisyklė, kuri pagal pavadinimą atitinka tunelio sąsają, gali būti įkelta vieną kartą ir toliau taikoma kiekvieną kartą, kai ta sąsaja atsiranda. Sąsaja vis tiek turi gyvavimo ciklą: ji sukuriama, ji išnyksta, o maršrutai ir vertimai aplink ją vadovaujasi savo grafiku. Būtent šių savininkų atskyrimas išlaiko prieigą stabilią persijungiant.

Pavadinimo atitikimas pergyvena sąsają

nftables siūlo skaitmeninius sąsajos indekso atitikimus ir dinaminius pavadinimo atitikimus iifname ir oifname. Taisyklės su šiais pavadinimais įkeliamos švariai net tada, kai tunelio įrenginys dar nesukurtas, o būtent to reikia taisyklių rinkiniui paleidžiant. Atitikimas nutrūksta, jei sąsaja pervadinama, ir atsinaujina, kai nauja sąsaja perima tą pavadinimą. Skaitmeninis indeksas šios savybės neturi, todėl pavadinimo forma yra įprastas tunelio pasirinkimas.

Pavadinimas yra atitikimo raktas, o ne įrodymas, kas yra kitame gale. Partnerio autentifikavimas lieka VPN užduotimi.

Perskaitykite grandinę prieš pridėdami taisyklių

Pažiūrėkite, ką dabar sudaro taisyklių rinkinys ir kur atsidurtų nauja taisyklė, nes rezultatą lemia tvarka.

nft list ruleset
nft -c -f /etc/nftables.conf

Sąrašas rodo grandines, taisykles ir rankenas, o tikrinimo režimas patvirtina kandidato failą jo neįkeldamas. Leidimas, skirtas tik tuneliui, įdėtas po ankstesnio to paties srauto priėmimo, nieko nekeičia, nes laimi pirmoji atitinkanti taisyklė. Todėl vėlyva taisyklė gali atrodyti teisinga ir neturėti jokio poveikio. Skaitykite grandinę iš eilės ir patvirtinkite, kad draudimas srautui iš kliento į viršutinę jungtį vis dar eina prieš bet ką platesnio.

Maršrutai, vertimas ir srautai turi kitus savininkus

Sąsajos buvimas nesukuria maršrutų ir neautentifikuoja partnerio. Tai priklauso VPN tvarkyklei, o vertimas turi trečią gyvavimo ciklą.

conntrack -L -s 10.20.0.0/24 | head
ip route show dev vpn0

conntrack sąrašas rodo esamus srautus su jų pradinėmis ir išverstomis reikšmėmis, o maršrutų sąrašas rodo, ką tvarkyklė įdiegė sąsajai. NAT taisyklės sukuria ryšio sekimo būseną pirmame pakete, todėl nusistovėjęs srautas išsaugo savo vertimą net po taisyklės pakeitimo. Todėl atnaujinama taisyklė ir srautas, naudojantis nauju keliu, yra du skirtingi teiginiai. Nuspręskite, kurios sesijos turi prisijungti iš naujo, ir palikite nesusijusius srautus ramybėje.

Priimkite šaltą startą, praradimą ir atkūrimą

Išbandykite šliuzą, kai tunelio nėra paleidžiant, paskui kai jis yra, o paskui po nutrūkimo ir grįžimo. Patvirtinkite, kad uždraustas persiuntimas lieka uždraustas, kol tunelio nėra, kad naujas leidžiamas srautas veikia po partnerio autentifikavimo ir kad atkūrimui nereikia išvalyti nesusijusios būsenos. Netrinkite visos POSTROUTING grandinės ar kiekvieno conntrack įrašo kaip vieno profilio sustabdymo veiksmo, nes kitos tarnybos jais dalijasi. Užrašykite, kuris komponentas pakeitė sąsają, maršrutą ir politiką, o ne tik tai, kad paleidimo kabliukas baigėsi nuliu.

Politika, kuri išgyvena persijungimą, yra ta, kurios savininkai įvardyti ir kurios taisyklės išbandytos tuneliui esant ir išjungtam, ir įjungtam. Kabliukas, pranešantis apie sėkmę, įrodo tik tai, kad kabliukas įvyko.

Susiję straipsniai