nftables: de Linux-firewall die iptables vervangt
Het project is ontstaan uit de beperkingen van iptables. Die vereiste vier verschillende commando's voor IPv4, IPv6, Ethernet-frames en ARP. Het regelmodel was statisch en de interne datastructuren inefficiënt. nftables lost dit op met één daemon, één syntax, één tool (`nft`) en één kernel-architectuur.
Geschiedenis en ontwikkeling
De eerste publieke presentatie van nftables vond plaats op de Netfilter Workshop in 2008 in Parijs. Patrick McHardy, lid van het Netfilter Core Team, bracht de eerste alpha-versie uit op 18 maart 2009. Dit was een vroege ontwikkelversie, maar markeerde de transitie van idee naar functionele software.Op 16 oktober 2013 diende Pablo Neira Ayuso een "nftables core pull request" in bij de Linux-kernel. De merge werd afgerond op 19 januari 2014, dezelfde dag dat kernel 3.13 uitkwam. Vanaf dat moment was nftables onderdeel van de standaard kernel.
De eerste eindgebruikersversie, 0.099, verscheen op 20 januari 2014 — één dag na de kernelintegratie. Dit gaf gebruikers een stabiele tool om in productieomgevingen met nftables te werken.
De nieuwste release is versie 1.1.6, uitgebracht op 5 december 2025. De nftables-wiki bevestigt dat er releases zijn bijgehouden tot minstens 30 april 2025 (versie 1.1.3). Het project wordt actief onderhouden.
Stappen: aan de slag met nftables
1. Controleer of nftables beschikbaar is
nft --versionDit toont de versie van de nft-tool. Als het commando niet gevonden wordt, installeer dan eerst het pakket.
2. Bekijk de huidige ruleset
sudo nft list rulesetDit toont alle bestaande tabellen, chains en regels. Op een nieuw systeem is dit leeg of toont het alleen de standaardconfiguratie van uw distributie.
3. Maak een tabel aan
sudo nft add table inet filterDit creëert een tabel genaamd "filter" voor de familie "inet". De familie `inet` behandelt zowel IPv4 als IPv6 in één tabel — dit is het grote voordeel ten opzichte van iptables, waar u aparte tabellen nodig had.
Andere families zijn `ip` (alleen IPv4), `ip6` (alleen IPv6), `arp` en `bridge`.
4. Voeg een chain toe
sudo nft add chain inet filter input { type filter hook input priority 0 \; policy accept \; }Dit voegt een chain toe met de naam "input" die gekoppeld is aan de input-hook. De policy staat op `accept`, wat betekent dat alle pakketten standaard worden doorgelaten. De backslashes zijn nodig om de accolades en puntkomma's te escapen voor de shell.
U hebt drie standaard hooks: `input` (inkomende pakketten), `output` (uitgaande pakketten) en `forward` (doorgestuurde pakketten).
5. Voeg een regel toe
sudo nft add rule inet filter input tcp dport 22 acceptDit accepteert inkomend TCP-verkeer op poort 22 (SSH). De syntax is logisch opgebouwd: eerst de tabel, dan de chain, dan de match-criteria, dan de actie.
Wilt u al het andere verkeer blokkeren, voeg dan na deze regel een drop-regel toe:
sudo nft add rule inet filter input drop
6. Sla de configuratie op
sudo nft list ruleset > /etc/nftables.confnftables-regels zijn niet persistent na een herstart. Door de ruleset naar het configuratiebestand te schrijven, laadt het systeem de regels automatisch bij het opstarten.
7. Herlaad de configuratie
sudo nft -f /etc/nftables.confDit leest het configuratiebestand en past alle regels toe. Gebruik dit na het bewerken van het bestand of na een herstart van de service.
8. Gebruik sets voor efficiëntere regels
sudo nft add set inet filter blacklist { type ipv4_addr \; }
sudo nft add element inet filter blacklist { 192.168.1.100, 10.0.0.5 }
sudo nft add rule inet filter input ip saddr @blacklist dropSets zijn geavanceerde datastructuren die efficiënter zijn dan lineaire regelketens. De kernel evalueert regels via hashtabellen of radixbomen, wat snellere lookup-tijden geeft bij grote regelsets. U kunt sets ook dynamisch bijwerken zonder de volledige ruleset te herladen — essentieel in cloud- en containeromgevingen.
Verificatie
Controleer of uw firewall correct werkt:sudo nft list ruleset
Dit toont de volledige configuratie. U zou uw tabel, chain en regels moeten zien. Test vervolgens de verbinding naar een geblokkeerd IP-adres:
ping -c 3 192.168.1.100
Als de regel werkt, krijgt u geen antwoord. Voor een geautomatiseerde check met JSON-output:
sudo nft -j list ruleset
Dit genereert JSON die u kunt verwerken met monitoringtools of loggingsystemen.
Veelgestelde problemen
Probleem: nft commando niet gevonden Installeer het pakket:sudo apt install nftables
Op RHEL/Fedora:
sudo dnf install nftables
Probleem: foutmelding "Operation not permitted" bij het toevoegen van regels U hebt root-rechten nodig. Gebruik sudo of log in als root. Controleer ook of de kernel nftables ondersteunt:
cat /proc/net/netfilter/nf_tables
Als dit bestand niet bestaat, ondersteunt uw kernel nftables niet of is de module niet geladen.
Probleem: regels zijn verdwenen na herstart Schrijf de ruleset naar het configuratiebestand en zorg dat de service actief is:
sudo systemctl enable nftables
sudo systemctl start nftables
Integratie met andere systemen
firewalld, de standaard firewall-daemon van Red Hat-gebaseerde systemen, gebruikt nftables als standaard backend. Gebruikers die firewalld gebruiken, werken dus al met nftables zonder het te weten.Docker ondersteunt nftables experimenteel vanaf Docker Engine 29.0.0. U kunt de backend instellen met:
dockerd --firewall-backend=nftables
Deze ondersteuning is nog experimenteel. De regels voor overlay-netwerken (Docker Swarm) zijn nog niet gemigreerd, dus u kunt nftables niet inschakelen wanneer Docker in Swarm-modus draait.
Monitoring en debugging
Het commandonft monitor toont real-time wijzigingen in de firewall:sudo nft monitor rules
Dit volgt alleen regelwijzigingen — toevoegingen, verwijderingen en aanpassingen. Voor geautomatiseerde systemen:
sudo nft -j monitor
Dit genereert JSON-output die u kunt integreren met monitoringtools.
Beveiliging
nftables vereenvoudigt de kernelinterface tot één systeemoproep (nft), wat het aanvalsoppervlak verkleint. U hebt fijne controle over welke gebruikers of processen regels mogen aanpassen. Dit verbetert het beheer van toegang tot de firewall.De ontwikkeling van nftables loopt door. Het project past zich aan aan de eisen van moderne netwerkomgevingen — van on-premise servers tot cloudinfrastructuur en containers. Met ondersteuning van Red Hat via firewalld, Docker en de Linux-kernel zelf is nftables geen alternatief meer, maar de standaard. De vraag is niet of u overstapt, maar wanneer u de overstap maakt — en of u legacy iptables-configuraties nog nodig hebt tegen de tijd dat de laatste iptables-ondersteuning verdwijnt.