nftables – nowoczesny firewall Linux zamiast iptables
Przez wiele lat administratorzy Linuxa konfigurowali zaporę sieciową głównie za pomocą iptables. Narzędzie to stało się standardem w świecie serwerów, ale z czasem jego architektura zaczęła pokazywać ograniczenia.
W odpowiedzi powstał nftables – nowoczesny framework filtrowania pakietów w jądrze Linux, który zastąpił rodzinę starszych narzędzi:
- iptables,
- ip6tables,
- arptables,
- ebtables.
Obecnie nftables jest domyślnym rozwiązaniem firewall w wielu dystrybucjach Linux, między innymi:
- Debian,
- Ubuntu,
- Fedora,
- Red Hat Enterprise Linux,
- Rocky Linux,
- AlmaLinux.
Czym jest nftables?
nftables to mechanizm kontroli ruchu sieciowego działający bezpośrednio z infrastrukturą Netfilter w jądrze Linux.
Jego zadaniem jest:
- filtrowanie pakietów,
- kontrola połączeń,
- translacja adresów NAT,
- przekierowanie portów,
- ochrona usług sieciowych.
Schemat:
Pakiet sieciowy
↓
Netfilter Kernel
↓
nftables rules
↓
ACCEPT / DROP / REJECT
Dlaczego powstało nftables?
iptables przez lata rozwijał się poprzez dokładanie kolejnych narzędzi.
Problem:
Dla IPv4:
iptables
Dla IPv6:
ip6tables
Dla ARP:
arptables
Dla bridge:
ebtables
Administrator musiał znać kilka różnych systemów konfiguracji.
nftables uprościł architekturę:
nft
|
Netfilter
|
Kernel Linux
Jedno narzędzie obsługuje różne rodzaje ruchu.
Architektura nftables
nftables składa się z kilku elementów:
Kernel subsystem
Odpowiada za faktyczne filtrowanie pakietów.
nft command
Narzędzie administracyjne:
nft
Służy do:
- dodawania reguł,
- usuwania reguł,
- sprawdzania konfiguracji.
Ruleset
Zbiór wszystkich reguł firewalla.
Sprawdzenie:
nft list ruleset
Podstawowe elementy nftables
Hierarchia wygląda następująco:
Table
└── Chain
└── Rule
Tables – tablice
Tabela jest najwyższym poziomem organizacji.
Przykład:
nft add table inet firewall
Rodzina:
inet
obsługuje jednocześnie:
- IPv4,
- IPv6.
Chains – łańcuchy
Chain określa miejsce, gdzie reguły są wykonywane.
Najważniejsze:
input
Ruch przychodzący do serwera.
Przykład:
Internet
↓
Serwer
output
Ruch wychodzący.
Serwer
↓
Internet
forward
Ruch przekazywany przez host.
Przykład:
LAN
↓
Router Linux
↓
Internet
Hooks – punkty zaczepienia
nftables integruje się z Netfilter poprzez hooks.
Najważniejsze:
| Hook | Zastosowanie |
|---|---|
| prerouting | przed routingiem |
| input | ruch do hosta |
| forward | przekazywanie |
| output | ruch generowany lokalnie |
| postrouting | po routingu |
Pierwszy firewall nftables
Przykład prostego bezpiecznego serwera:
Tworzymy tabelę:
nft add table inet filter
Chain input:
nft add chain inet filter input {
type filter hook input priority 0;
policy drop;
}
Domyślnie:
DROP
czyli wszystko blokujemy.
Dodajemy zezwolenie na localhost:
nft add rule inet filter input iif lo accept
Pozwalamy na istniejące połączenia:
nft add rule inet filter input ct state established,related accept
SSH:
nft add rule inet filter input tcp dport 22 accept
HTTP:
nft add rule inet filter input tcp dport 80 accept
HTTPS:
nft add rule inet filter input tcp dport 443 accept
Connection Tracking (conntrack)
Jedna z ważniejszych funkcji nftables.
Pozwala rozpoznawać stan połączenia.
Stany:
NEW
ESTABLISHED
RELATED
INVALID
Przykład:
Użytkownik otwiera stronę:
Klient → Serwer
Firewall zapamiętuje połączenie.
Odpowiedź:
Serwer → Klient
jest automatycznie dozwolona.
Typowa reguła:
ct state established,related accept
jest praktycznie obowiązkowa na serwerach.
nftables i NAT
nftables obsługuje również NAT.
Przykład:
Tworzenie NAT:
nft add table ip nat
Masquerading:
nft add rule ip nat postrouting oif eth0 masquerade
Efekt:
Sieć LAN
192.168.1.x
↓
Linux Router
↓
Internet
Sety w nftables – ogromna przewaga
Jedną z największych zalet nftables są sets.
iptables:
10 reguł
10 adresów IP
nftables:
1 reguła
+
lista IP
Przykład:
set blacklist {
type ipv4_addr;
elements = {
192.168.1.10,
192.168.1.20
}
}
Blokowanie:
ip saddr @blacklist drop
Mapy w nftables
nftables pozwala tworzyć mapowania.
Przykład:
Port
↓
Usługa
Można budować bardziej zaawansowane konfiguracje niż w iptables.

Logowanie zdarzeń
Przykład:
nft add rule inet filter input log prefix "NFT DROP: "
Pozwala analizować:
- skany,
- próby włamań,
- nietypowy ruch.
Logi:
journalctl -k
nftables vs iptables
| Cecha | nftables | iptables |
|---|---|---|
| Nowoczesność | ⭐⭐⭐⭐⭐ | ⭐⭐ |
| Jedno narzędzie IPv4/IPv6 | Tak | Nie |
| Czytelność | Lepsza | Gorsza |
| Sets | Bardzo dobre | Ograniczone |
| Wydajność | Lepsza | Starsza architektura |
| Przyszłość Linux | Tak | Tryb zgodności |
nftables w systemd
Na wielu dystrybucjach działa usługa:
systemctl status nftables
Automatyczne uruchomienie:
systemctl enable nftables
Konfiguracja:
/etc/nftables.conf
nftables i kontenery
W środowiskach:
- Docker,
- Kubernetes,
- Podman,
nftables często współpracuje z:
- bridge networking,
- CNI,
- firewallem hosta.
Administrator musi pamiętać, że kontenery mogą automatycznie dodawać własne reguły.
Najczęstsze błędy administratorów
1. Brak polityki domyślnej DROP
Źle:
ALLOW wszystko
+
blokowanie wyjątków
Lepiej:
DROP wszystko
+
zezwól tylko potrzebne
2. Odcięcie SSH
Klasyczny problem.
Administrator robi:
policy drop
i traci dostęp.
Przed zmianami zawsze:
- zostaw aktywną sesję SSH,
- testuj w drugiej.
3. Brak zapisu konfiguracji
Reguły dodane ręcznie:
nft add rule
mogą zniknąć po restarcie.
Należy zapisać:
/etc/nftables.conf
Przykładowa polityka bezpiecznego serwera
Założenia:
- SSH,
- HTTPS,
- DNS,
- ping.
Logika:
DROP wszystko
↓
ALLOW
localhost
↓
ALLOW
existing connections
↓
ALLOW
SSH
↓
ALLOW
HTTPS
↓
LOG reszta
TIP administratora
Przy migracji z iptables do nftables nie warto kopiować starych reguł 1:1.
Lepsze podejście:
- przeanalizować wymagane usługi,
- stworzyć nową politykę,
- wykorzystać możliwości nftables:
- sets,
- maps,
- rodziny inet,
- lepsze logowanie.
Podsumowanie
nftables jest obecnie podstawowym mechanizmem budowania firewalli w Linux.
Jego największe zalety:
- jedna architektura dla IPv4 i IPv6,
- prostsza konfiguracja,
- większa elastyczność,
- lepsza wydajność,
- integracja z nowoczesnymi środowiskami.
Dla administratora Linux znajomość nftables jest dziś równie ważna jak znajomość:
- systemd,
- namespaces,
- cgroups v2,
- SELinux/AppArmor,
- SSH hardening.
W nowoczesnej infrastrukturze firewall nie jest już tylko „blokadą portów”. To element większej architektury bezpieczeństwa, która razem z izolacją procesów i kontrolą uprawnień tworzy warstwową ochronę systemu.






