Značky nftables a VPN routing: ktoré pravidlo naozaj vyhrá
Značka nastavená vo firewalle môže stále minúť pravidlo smerovania. Skontrolujte masku pravidla, typ objektu a ostatných zapisovateľov, než pridáte štvrtý.
Značka nastavená v nftables má poslať jednu triedu prevádzky tunelom, ale prevádzka naďalej odchádza fyzickým rozhraním. Sada pravidiel vyzerá izolovane správne. Zvyčajne sa stalo to, že niečo iné zapísalo tú istú značku, alebo pravidlo smerovania zodpovedá maske, ktorú nová hodnota už nespĺňa.
Kontrola 1: prečítajte pravidlo, s ktorým sa jadro zhoduje
Začnite pravidlom politiky, nie firewallom. Jadro prechádza pravidlá v poradí priority a prvá zhoda určuje tabuľku. Prečítajte hodnotu fwmark a masku priamo z pravidla a potom potvrďte, že paket so značkou, ktorú ste nastavili, mu naozaj zodpovedá. Pravidlo očakávajúce plnú 32-bitovú hodnotu sa nezhodne s paketom nesúcim jediný bit.
Potom potvrďte, ktorú tabuľku to pravidlo vyberá a čo tabuľka obsahuje. Pravidlo ukazujúce na prázdnu tabuľku spôsobí zlyhanie vyhľadávania, čo v mnohých systémoch znamená, že paket prepadne k ďalšiemu pravidlu a von fyzickým rozhraním.
Dva príkazy to vyriešia: zoznam pravidiel a vyhľadanie trasy k cieľu v tej tabuľke.
Kontrola 2: značka paketu alebo značka spojenia
nftables dokáže nastaviť značku na paket a značku na záznam sledovania spojení, a to sú rôzne objekty. Značka paketu žije počas priechodu spracovaním paketu, kým značka spojenia pretrváva pre tok a musí sa vedome kopírovať. Nastaviť jednu a očakávať druhú je bežná polovičná oprava.
Ak pravidlo smerovania závisí od značky paketu, obnovenie značky spojenia neskôr na ceste pre toto rozhodnutie nič neurobí, pretože rozhodnutie už padlo.
Určte, ktorý objekt vlastní signál smerovania, a potom ho nastavte v mieste, kde sa rozhodnutie o smerovaní prijíma.
Kontrola 3: kto ďalší tú značku zapisuje
Vlastné nástroje WireGuardu označujú svoje UDP pakety, aby šifrovaná preprava nebola smerovaná späť do tunela, ku ktorému patrí. Ak vaša sada pravidiel priradí tomu istému poľu nesúvisiacu hodnotu, toto vylúčenie zmizne a vonkajšia prevádzka tunela sa pokúša vstúpiť sama do seba. Symptómom je tunel, ktorý sa nadviaže a potom prestane prepúšťať prevádzku.
Značky používajú aj iné firewallové nástroje, kontajnerové siete a politické smerovanie na iné účely, takže zápis celého poľa dvoma podsystémami je konflikt, aj keď je každý jednotlivo správny.
Pred pridaním ďalšieho vypíšte zapisovateľov.
Kontrola 4: maska rozhoduje, čo si ponecháte
Značka je 32-bitové pole a masky sú spôsob, akým sa oň delí viac vlastníkov. Nastavenie hodnoty s maskou zachová bity, ktoré nevlastníte; nastavenie celého poľa zničí bity všetkých ostatných. Prečítajte masku v každom pravidle, ktoré sa poľa dotýka, vrátane tých, ktoré ste nenapísali.
Zdokumentujte pridelenie bitov vedľa sady pravidiel.
Inak ďalší človek znova použije hodnotu, ktorá už má vlastníka, a konflikt tu vyzerá ako chyba smerovania, hoci ide o chybu adresovania. Dokumentácia nftables o metadátach paketov opisuje samotné operácie so značkami.
Kontrola 5: overujte skutočným tokom, nie vyhľadaním
Prosté vyhľadanie trasy nenesie značku, takže môže ukázať inú cestu než skutočný paket. Vygenerujte prevádzku, ktorá vás zaujíma, a sledujte počítadlá, záznam sledovania spojení a rozhranie, ktorým naozaj odchádza. Otestujte zaradenú aj vylúčenú triedu, pretože príliš široká značka rozbíja vylúčenie, a pritom vyzerá úspešne. Ak zaradená trieda funguje a vylúčená trieda tiež vstúpi do tunela, značka je príliš široká, nie príliš úzka.
Vyhnite sa mazaniu stavu spojení, aby ste vynútili obnovenie počas živej relácie, pretože nové a existujúce toky môžu legitímne ísť rôznymi cestami.
Zaznamenajte značku, masku a tabuľku na jedno miesto a ďalšia úprava bude kontrolovateľná.