nft

Konfiguruje reguły firewalla i filtrowania pakietów w nowoczesnym frameworku nftables.

nft to narzędzie wiersza poleceń do obsługi nftables — następcy starego iptables w nowoczesnych dystrybucjach Linuksa (od jądra 3.13). Jednym frameworkiem ogarniasz filtrowanie pakietów IPv4 i IPv6, NAT, mangling i kolejkowanie. Zamiast czterech osobnych narzędzi (iptables, ip6tables, arptables, ebtables) masz jedną składnię, jeden ruleset i atomowe przeładowania reguł. Reguły organizujesz w tablice (table), te dzielą się na łańcuchy (chain), a w łańcuchach siedzą konkretne reguły.

Składnia i najważniejsze opcje

Podstawowa forma: nft [opcje] 'polecenie obiekt specyfikacja'

  • -a, --handle — pokazuje uchwyty (handle) obiektów; bez nich nie usuniesz pojedynczej reguły.
  • -n, --numeric — wyświetla dane liczbowo, bez rozwiązywania adresów na nazwy. Podany dwa razy pokazuje też porty, trzy razy protokoły i UID/GID.
  • -s, --stateless — pomija informacje stanowe (liczniki) — przydatne do diffów i backupów.
  • -c, --check — sprawdza poprawność poleceń bez ich zastosowania (suchy bieg).
  • -f — wczytuje polecenia z pliku; -f - czyta ze stdin. Tak wgrywa się cały ruleset atomowo.
  • -e, --echo — przy add/insert/replace wypisuje dodaną regułę (jak nft monitor).
  • -j, --json — formatuje wyjście w JSON, wygodne do parsowania w skryptach.

Przykłady użycia

  • nft list ruleset — wyrzuca cały aktualny zestaw reguł. Twój punkt startowy do każdej diagnozy.
  • nft -a list ruleset — to samo, ale z uchwytami; potrzebne, żeby cokolwiek precyzyjnie skasować.
  • nft add table inet filter — tworzy tablicę filter rodziny inet (obejmuje naraz IPv4 i IPv6).
  • nft add rule inet filter input tcp dport 22 accept — przepuszcza ruch SSH na porcie 22.
  • nft delete rule inet filter input handle 7 — usuwa regułę o uchwycie 7 (numer odczytasz z -a).
  • nft -f /etc/nftables.conf — wczytuje pełną konfigurację z pliku; tak ładuje ruleset usługa nftables.service.

Częste błędy i pułapki

nft nie zapisuje zmian na dysk. Reguły dodane w locie znikają po reboocie — żeby przetrwały, wpisz je do /etc/nftables.conf i włącz systemctl enable nftables. Druga klasyczna wtopa: nft flush ruleset kasuje wszystko, łącznie z regułą wpuszczającą Twoje SSH — na zdalnym serwerze tak odcinasz się od maszyny. Testuj politykę z -c albo trzymaj awaryjny cron z flush. Pamiętaj też, że łańcuch bez słowa policy drop domyślnie akceptuje ruch, a reguły działają w kolejności od góry — pierwsze trafienie accept/drop decyduje. Na koniec: jeśli na systemie działa równolegle stary iptables-legacy, reguły mogą się nakładać i wprowadzać chaos — sprawdź, czy używasz wariantu iptables-nft.

Powiązane komendy: iptables, ip6tables, nft monitor, systemctl, ip, conntrack, ufw, firewalld.