Os autores já consideram este sistema suficientemente estável para se substituir o velhinho iptables na grande maioria dos casos:
Principais diferenças relativamente ao iptables
- A sintaxe da configuração é mais compacta, permitindo reduzir o número de linhas em configurações não-triviais.
- Melhor desempenho, reduzindo a carga no CPU em chains que seriam extensas com iptables e se tornam simples com nftables.
- Capacidade de monitorizar a avaliação de pacotes através das regras que atravessam (exemplos sobre esta monitorização na wiki oficial).
- Sendo o código mais fácil de manter no Kernel, potencia-se uma evolução mais rápida e com menos bugs comparativamente com iptables.
- Alguns exemplos da nova sintaxe:
- Blog To Linux and beyond ! - Nftables quick howto (descer até "Initial setup")
- Debian wiki - nftables
Conceitos importantes
- Hooks: os pontos no processamento de cada pacote (dentro do Kernel Linux) em que se podem tomar acções.
- Famílias (families): definem que tipo de pacotes uma data tabela pode ver. Exemplos: arp, ip6, etc.
- Regras (rules): definem o que deve ser feito com cada pacote: alterá-lo, deixá-lo cair, encaminhá-lo para outro destino, etc.
- Política (policy): decisões que podem ser tomadas por cada regra.
- Cadeias (chains): contêm conjuntos de regras. Uma cadeia está normalmente associada a um hook. É frequente ver o termo chain hook ("hook da cadeia"), que reforça a ideia de que a cadeia em questão corresponde ao hook em questão.
- Tabelas (tables): contêm conjuntos de cadeias. Cada tabela corresponde ao processamento de apenas uma família de pacotes.
Um diagrama típico dos hooks existentes. As famílias que podem ser manipuladas em cada um são indicadas dentro de parêntesis:
... ------> ingress (netdev) | v .----- prerouting -----. | (ip, ip6, inet) | | | v v input forward (ip, arp) (ip) | | v | PROCESSO | | | v v DECISÃO -> output -> postrouting ------> ... (ip, arp) (ip)
Para permitir a manipulação de pacotes que passam pelo hook
forward
, continua a ser necessário executar # sysctl net.ipv4.ip_forward=1
ou
# echo 1 > /proc/sys/net/ipv4/ip_forward
. Ver Utilizar um PC como gateway para acesso de outro(s) à rede.Mais detalhes:
- Cada regra tem um handle, que representa um número interno pelo qual a regra pode ser referida
- Cada regra tem uma posição, que indica o número da sua posição na cadeia.
- Todas as famílias:
- arp
- bridge
- ip
- ip6
- inet
- netdev
- Todas as políticas:
- accept
- drop
- queue
- continue
- return
- filter (suportado por arp, bridge, ip, ip6 e inet)
- route (suportado apenas por ip e ip6)
- nat (suportado apenas por ip e ip6)
Referências:
nftables wiki
nftables wiki - Netfilter hooks
nftables wiki - Quick reference, nftables in 10 minutes
nftables wiki - Configuring chains