nftables žymos ir VPN maršrutizavimas: kuri taisyklė iš tikrųjų laimi
Ugniasienėje nustatyta žyma vis tiek gali nepatekti į maršrutizavimo taisyklę. Prieš pridėdami ketvirtą, patikrinkite taisyklės kaukę, objekto tipą ir kitus rašytojus.
nftables nustatyta žyma turėtų siųsti vieną srauto klasę per tunelį, o srautas vis dar išeina per fizinį sąsają. Taisyklių rinkinys atrodo teisingai atskirai. Paprastai atsitiko tai, kad kažkas kitas įrašė tą pačią žymą, arba maršrutizavimo taisyklė atitinka kaukę, kurios nauja reikšmė nebeįgyvendina.
Patikra 1: perskaitykite taisyklę, kurią atitinka branduolys
Pradėkite nuo politikos taisyklės, o ne nuo ugniasienės. Branduolys taisykles tikrina prioriteto tvarka, o pirmasis atitikimas lemia lentelę. Perskaitykite fwmark reikšmę ir kaukę iš pačios taisyklės, tada patvirtinkite, kad paketas su jūsų nustatyta žyma tikrai jai atitinka. Taisyklė, kuri tikisi visos 32 bitų reikšmės, neatitiks paketo, turinčio tik vieną bitą.
Tada patvirtinkite, kokią lentelę ta taisyklė pasirenka ir ką lentelėje yra. Taisyklė, rodanti į tuščią lentelę, sukelia paieškos nesėkmę, o daugelyje sistemų tai reiškia, kad paketas nukrenta į kitą taisyklę ir išeina per fizinę sąsają.
Tai išsprendžia dvi komandos: taisyklių sąrašas ir maršruto paieška paskirties taškui toje lentelėje.
Patikra 2: paketo žyma ar ryšio žyma
nftables gali nustatyti žymą paketui ir žymą ryšių sekimo įrašui, ir tai skirtingi objektai. Paketo žyma gyvuoja paketo apdorojimo ėjimo metu, o ryšio žyma išlieka srautui ir turi būti sąmoningai nukopijuota. Nustatyti vieną ir tikėtis kitos yra įprastas pusinis pataisymas.
Jei maršrutizavimo taisyklė remiasi paketo žyma, ryšio žymos atkūrimas vėliau kelyje nieko nepadaro tam sprendimui, nes sprendimas jau priimtas.
Nuspręskite, kuris objektas valdo maršrutizavimo signalą, tada nustatykite jį ten, kur priimamas maršrutizavimo sprendimas.
Patikra 3: kas dar rašo tą žymą
Pačių WireGuard įrankių paketai UDP pažymimi, kad šifruotas transportas nebūtų nukreiptas atgal į tunelį, kuriam priklauso. Jei jūsų taisyklių rinkinys tam pačiam laukui priskiria nesusijusią reikšmę, ta išimtis išnyksta ir išorinis tunelio srautas bando įeiti į save. Simptomas yra tunelis, kuris susikuria ir tada nustoja praleisti srautą.
Žymas taip pat naudoja kiti ugniasienės įrankiai, konteinerių tinklas ir politikos maršrutizavimas kitais tikslais, todėl dviejų posistemių rašomas visas laukas yra konfliktas, net kai kiekvienas atskirai yra teisingas.
Surašykite rašytojus prieš pridėdami dar vieną.
Patikra 4: kaukė nusprendžia, ką pasiliekate
Žyma yra 32 bitų laukas, o kaukės yra būdas, kuriuo keli savininkai jį dalijasi. Reikšmės su kauke nustatymas išsaugo bitus, kurių nevaldote; viso lauko nustatymas sunaikina visų kitų bitus. Skaitykite kaukę kiekvienoje taisyklėje, kuri liečia lauką, įskaitant tas, kurių nerašėte.
Dokumentuokite bitų paskirstymą šalia taisyklių rinkinio.
Priešingu atveju kitas žmogus naudos reikšmę, kuri jau turi savininką, ir konfliktas čia atrodo kaip maršrutizavimo klaida, nors tai adresavimo klaida. nftables dokumentacija apie paketų metaduomenis aprašo pačias žymos operacijas.
Patikra 5: tikrinkite realiu srautu, o ne paieška
Paprasta maršruto paieška neturi žymos, todėl gali rodyti kitą kelią nei tikrasis paketas. Sugeneruokite jus dominantį srautą ir stebėkite skaitiklius, ryšių sekimo įrašą ir sąsają, per kurią jis iš tikrųjų išeina. Tikrinkite ir įtrauktą, ir pašalintą klasę, nes per plati žyma sugriauna pašalinimą, nors atrodo sėkmingai. Jei įtraukta klasė veikia, o pašalinta klasė taip pat patenka į tunelį, žyma yra per plati, o ne per siaura.
Venkite išvalyti ryšių būseną, kad priverstumėte atnaujinimą aktyvios sesijos metu, nes nauji ir esami srautai gali teisėtai eiti skirtingais keliais.
Užrašykite žymą, kaukę ir lentelę vienoje vietoje, ir kitas keitimas taps peržiūrimas.