Výborný článek a vůbec celá jeho série.
Ale mám jeden dotaz, nikde jsem si tam nevšiml jak se pravidla systémově ukládají. Výpis pravidel a jejich přesměrování do souboru je sice funkční, ale ne asi systémově úplně správné. Čekal bych nějaký příkaz jako se na Debianu používá netfilter-persistent save
.
Netušíte jak se pravidla mají správně ukládat?
Je to popsané ve druhém díle a správný postup je skutečně serializovat výstup z jádra, zapsat do ho souboru, který umí utilita nft
parsovat a zapsat zpět do jádra.
Pane Krčmáři, díky za pěkný tutoriál. Zarazilo mě tvrzení o rozdílu mezi SNAT a MASQUERADE. Podle manpage nft je rozdíl v tom, že v masquerade se nemusí psát adresa a automaticky se použije adresa odchozího rozhraní. Tabulka aktivních spojení (conntrack) se používá v obou případech stejně, protože je potřeba přepisovat cílovou adresu příchozích paketů.
Máte pravdu, je to pořád stavový NAT, takže lookup v conntrack tabulce se samozřejmě provádí úplně stejně jako u masquerade
. Jediné, co se ušetří, je route lookup v okamžiku, kdy se překládá první paket (ten, který způsobí vytvoření položky v conntrack tabulce), protože místo "adresa odchozího rozhraní" by přesněji mělo být "stejná zdrojová adresa, jako by se použila, kdybychom ten paket posílali sami". Pro další pakety už je to pak úplně stejné.
Dá se udělat i bezstavový NAT, ale je to trochu komplikovanější (viz příklad na konci) a je potřeba se pak postarat i o překlad paketů v opačném směru.
Jenom poznamka k iif vs. iifname.
Iif je rychlejsi, protoze kontroluje index interfacu. Iifname porovnava nazev.
Bohuzel se nftables bezne nacitaji pred objevenim vsech sitovych interfacu a v pripade pouziti neznameho indexu v jednom pravidle nacitani komplet selze. To se tyka hlavne ruznych bridgu a bondu.
Takze je lepsi misto iifname "lo" accept mit jenom iif "lo" accept.
Skvely clanek, ale mam problem s tim, kdyz pouziji nftables na Debian 10 a chci komunikovat na IPv6, tak nftables vraci parameter problem pri RA z Catalyst 9500 a nevim proc. Je jedno, jestli pouziji zapis "meta ..." nebo "ipv6 nexthdr ..." ... Takze me nftables delaji s IPv6 akorat problem :/
16. 1. 2021, 16:51 editováno autorem komentáře