poradniki

iptables vs nftables – praktyczne porównanie i migracja krok po kroku

wpis_header_img

Różnice: iptables vs nftables

AspektiptablesnftablesUwagi
Powstanie / status1998; utrzymanie (legacy)~2014→; aktywnie rozwijanyNowe funkcje trafiają do nftables
Narzędzia CLIWiele binarek: iptables, ip6tables, arptables, ebtablesJedno narzędzie: nftMniej złożoności
Backend jądrax_tables (legacy)nf_tables (VM w jądrze)Nowoczesna architektura
Obsługa protokołówOsobne narzędzia dla IPv4/IPv6/ARP/bridgeJednolite w jednym narzędziuMniej duplikacji reguł
Rodziny / tabelefilter, nat, mangle, rawip, ip6, inet, arp, bridgeinet łączy IPv4 i IPv6
Składnia i modelImperatywne komendyDeklaratywny DSLKrótsze reguły
Zbiory i mapyWymaga ipsetWbudowane sets, mapsEfektywne listy IP
WydajnośćSekwencyjne przetwarzanieBytecode w jądrzeLepsza skala
MigracjaŹródłoCelNarzędzia iptables-translate

Jak sprawdzić backend systemu

iptables -V
# Jeśli zobaczysz "(nf_tables)", iptables korzysta z backendu nftables.
lsmod | grep nf_tables
sudo nft list ruleset

Instalacja i uruchomienie nftables

# Debian/Ubuntu
sudo apt update && sudo apt install -y nftables
sudo systemctl enable --now nftables

# RHEL/CentOS/Alma/Rocky
sudo dnf install -y nftables
sudo systemctl enable --now nftables

Podstawy składni nftables

sudo nft add table inet filter
sudo nft add chain inet filter input { type filter hook input priority 0 \; }
sudo nft add rule inet filter input ct state established,related accept
sudo nft add rule inet filter input tcp dport {22,80,443} accept
sudo nft add rule inet filter input drop

Migracja reguł iptables → nftables

Pojedyncza reguła

# iptables
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# tłumaczenie
iptables-translate -A INPUT -p tcp --dport 22 -j ACCEPT

# wynik (nftables)
nft add rule ip filter INPUT tcp dport 22 counter accept

Cały ruleset

iptables-save > iptables.rules
iptables-restore-translate < iptables.rules > nftables.rules
sudo nft -f nftables.rules
sudo nft list ruleset

Eksport i import

sudo nft list ruleset > /etc/nftables/ruleset.conf
sudo systemctl restart nftables

Praktyczny plan migracji

  1. Utwórz kopię zapasową reguł iptables:
    iptables-save > /root/backup.rules
  2. Uruchom usługę nftables.
  3. Przetłumacz reguły:
    iptables-restore-translate < /root/backup.rules > /root/nftables.rules
  4. Załaduj i sprawdź:
    sudo nft -f /root/nftables.rules
    sudo nft list ruleset
    

Korzyści po migracji

  • Jedno narzędzie nft zamiast wielu binarek.
  • Spójna, deklaratywna składnia.
  • Lepsza wydajność i skalowalność.
  • Łatwiejsza automatyzacja w Ansible/Puppet.
Przewijanie do góry