nftables vs iptables no Ubuntu 22.04: qual usar e exemplos práticos
Por Kevin Marcondes · Publicado em · 8 min de leitura
Este comparativo mostra, na prática, quando usar nftables ou iptables para firewall em servidores Ubuntu 22.04. Você verá diferenças de arquitetura, prós e contras, critérios de escolha por cenário e exemplos de comandos equivalentes para configurar regras básicas, além de um passo a passo seguro de migração.
O que muda no Ubuntu 22.04: backend e compatibilidade
No Ubuntu 22.04, os comandos iptables usam por padrão o backend nf_tables (iptables-nft). Já o iptables-legacy permanece disponível via alternatives para compatibilidade. Evite misturar backends diferentes no mesmo servidor.
Você pode verificar qual backend está ativo e alternar, se necessário. Trocas podem impactar ferramentas e scripts existentes. Planeje janela de manutenção e tenha acesso de console para evitar perda de conexão.
# Verificar backend atual
iptables -V # deve exibir (nf_tables) quando usa iptables-nft
# Listar e alternar implementations (requer sudo)
sudo update-alternatives --list iptables
sudo update-alternatives --config iptables
sudo update-alternatives --list ip6tables
sudo update-alternatives --config ip6tables
Tabela comparativa: critérios que importam na operação
Resumo dos pontos que mais afetam operação, manutenção e evolução do firewall em produção. Use como checklist rápido antes de decidir.
| Critério | nftables | iptables (legacy) |
|---|---|---|
| Backend no kernel | nf_tables (moderno) | xtables (compatibilidade) |
| Regras IPv4/IPv6 unificadas | Sim (tabela inet) | Não (iptables e ip6tables separados) |
| Aplicação de regras | Atômica (carrega ruleset de uma vez) | Incremental (regra por regra) |
| Sets e mapas | Nativos e escaláveis | Limitados; ipset como extra |
| Escalabilidade com muitas regras | Melhor com sets/mapas | Pode degradar com milhares de regras |
| Sintaxe | Nova, consistente entre famílias | Clássica e conhecida |
| Compatibilidade de scripts antigos | Requer adaptação/translate | Alta (scripts existentes) |
| Ecossistema e futuro | Projeto ativo e recomendado | Mantido para compatibilidade |
| Ferramentas de gestão | nft, nftables.service | iptables, ip6tables, iptables-persistent |
| Integração UFW/Fail2ban (22.04) | Suportado | Suportado (via iptables-nft) |
Critérios de escolha por cenário (sem paixões)
Não há resposta única. Considere operação, equipe e ferramentas. Abaixo, critérios práticos que costumam decidir a escolha.
- Nova instalação no Ubuntu 22.04: prefira nftables. Sintaxe unificada, carga atômica e sets facilitam manutenção.
- Scripts herdados críticos e estáveis: mantenha iptables (ou iptables-nft) enquanto prepara migração controlada.
- Ambiente com muitas portas/IPs dinâmicos: nftables com sets e mapas tende a simplificar e escalar melhor.
- Equipe domina iptables e troca é sensível: siga com iptables-nft, mas padronize e evite misturar backends.
- Uso de UFW: o backend padrão no 22.04 é nftables; alinhe decisões com políticas definidas.
- Observabilidade e auditoria: nftables oferece ‘nft monitor’; em iptables, padronize ‘iptables-save’ e logs do kernel.
Exemplo prático com nftables (Ubuntu 22.04)
Exemplo de política padrão: bloquear entrada, permitir saída, liberar SSH (22/tcp), HTTP (80/tcp) e HTTPS (443/tcp), aceitar tráfego estabelecido e ICMP/ICMPv6. Atenção: aplicar regras pode encerrar sua sessão SSH; use console ou uma segunda sessão de teste.
O arquivo /etc/nftables.conf será a fonte única e o serviço nftables manterá as regras no boot.
# Limpar e aplicar configuração nftables (Ubuntu 22.04)
sudo nft flush ruleset
sudo tee /etc/nftables.conf >/dev/null <<'EOF'
table inet filter {
sets {
allowed_tcp_ports = { type inet_service; elements = { 22, 80, 443 } }
}
chains {
input {
type filter hook input priority 0; policy drop;
ct state established,related accept
iif lo accept
ct state invalid drop
ip protocol icmp accept
ip6 nexthdr icmpv6 accept
tcp dport @allowed_tcp_ports accept
}
forward { type filter hook forward priority 0; policy drop; }
output { type filter hook output priority 0; policy accept; }
}
}
EOF
# Validar sintaxe e aplicar
sudo nft -c -f /etc/nftables.conf && sudo nft -f /etc/nftables.conf
# Persistir no boot
sudo systemctl enable --now nftables
# Ver ruleset carregado
sudo nft list ruleset
Exemplo prático equivalente com iptables (legacy)
As regras abaixo implementam a mesma política usando iptables e ip6tables. Em servidores 22.04, mesmo com iptables-nft, os comandos funcionam. Para usar legacy puro, troque o alternative para iptables-legacy. Teste fora do horário crítico e mantenha acesso de recuperação.
# Limpar regras atuais
sudo iptables -F && sudo iptables -X
sudo ip6tables -F && sudo ip6tables -X
# Políticas padrão
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT
# Regras básicas
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A INPUT -m conntrack --ctstate INVALID -j DROP
sudo iptables -A INPUT -p icmp -j ACCEPT
sudo ip6tables -A INPUT -p ipv6-icmp -j ACCEPT
sudo iptables -A INPUT -p tcp -m multiport --dports 22,80,443 -j ACCEPT
# Persistir no boot (salva v4 e v6)
sudo apt-get update && sudo apt-get install -y iptables-persistent
sudo netfilter-persistent save
# Conferir
sudo iptables -S
sudo ip6tables -S
Migração segura de iptables para nftables (tradução e testes)
O caminho mais seguro é traduzir regras vigentes, validar, testar em staging ou janela controlada, e só então ativar no boot. Faça snapshot/backup antes de alterar firewall em produção.
Use as ferramentas de translate para obter um ponto de partida e ajuste para a tabela inet. Valide com ‘nft -c’ e tenha um plano de rollback.
# Exportar regras atuais
sudo iptables-save > /tmp/rules.v4
sudo ip6tables-save > /tmp/rules.v6
# Traduzir para sintaxe nftables (gera base inicial)
sudo iptables-restore-translate -f /tmp/rules.v4 > /tmp/translated-v4.nft
sudo ip6tables-restore-translate -f /tmp/rules.v6 > /tmp/translated-v6.nft
# Opcional: mesclar/ajustar para uma única table inet em /etc/nftables.conf
# Validação e aplicação de teste
sudo nft -c -f /etc/nftables.conf && sudo nft -f /etc/nftables.conf
# Habilitar no boot
sudo systemctl enable --now nftables
Integração com UFW, Fail2ban e acesso SSH
Se você usa UFW no 22.04, o backend padrão é nftables. Evite gerenciar manualmente nftables e UFW ao mesmo tempo para não conflitar regras. Centralize em uma camada.
O Fail2ban possui ações tanto para nftables quanto para iptables; escolha a correspondente ao seu backend em uso.
Ao endurecer regras, proteja seu acesso: bastion/port-knocking/2FA reduzem risco de lockout, sobretudo em ambientes multiusuário.
- Guia de UFW com passos básicos: veja como configurar firewall no Ubuntu com UFW.
- Fail2ban com alertas: confira configurar fail2ban com webhooks e Telegram.
- Endureça o SSH: use um bastion conforme este guia de bastion SSH no Ubuntu 22.04.
Monitoramento e troubleshooting das regras de firewall
Para diagnosticar, observe o ruleset carregado, eventos do netfilter e contadores por regra. Ative logs de drop quando necessário. Em iptables, use listagens com contadores e verifique sockets em escuta.
Evite aplicar mudanças cegas. Valide com ‘-c’, use sessões paralelas e defina um rollback automático sempre que possível.
# nftables: ruleset, eventos e logs de serviço
sudo nft list ruleset
sudo nft monitor
sudo journalctl -u nftables -b
# iptables: regras com contadores
sudo iptables -L -n -v
sudo ip6tables -L -n -v
# Portas em escuta/ligação
ss -lntupe | head
Quando cada opção é melhor (resumo acionável)
Use nftables em instalações novas, quando deseja regras unificadas IPv4/IPv6, aplicação atômica e sets para grandes listas. Use iptables (ou iptables-nft) quando scripts herdados são críticos e a equipe precisa de continuidade imediata, planejando a migração gradativa.
Em ambos os casos, padronize o backend, documente fluxos e automatize a aplicação para reduzir erros. Veja também o checklist de segurança para VPS Linux.
Perguntas frequentes
O nftables substitui o iptables no Ubuntu 22.04?
nftables é o framework moderno do kernel. No Ubuntu 22.04, os binários iptables usam por padrão o backend nf_tables (iptables‑nft). O iptables‑legacy segue disponível para compatibilidade, mas a recomendação para novas configurações é adotar nftables.
Posso usar iptables e nftables ao mesmo tempo?
Evite misturar backends. Você pode usar iptables‑nft (frente compatível) sobre nf_tables ou adotar nft diretamente, mas não misture com iptables‑legacy no mesmo host. Defina um backend padrão e padronize ferramentas e automações para evitar regras conflitantes.
Como descubro se meu iptables usa o backend nftables?
Execute “iptables -V”: se aparecer “(nf_tables)”, você está usando iptables‑nft. Também é possível checar e alternar com “update‑alternatives --list|--config iptables” e o equivalente para ip6tables. Faça mudanças apenas em janelas controladas.
UFW usa nftables ou iptables no 22.04?
No Ubuntu 22.04, o UFW utiliza o backend nftables. Você pode usá‑lo como camada de alto nível para regras comuns e registrar exceções, mas evite administrar manualmente nftables e UFW ao mesmo tempo no mesmo servidor.
ipset ainda é necessário com nftables?
Geralmente, não. nftables possui sets e mapas nativos com boa performance. Em iptables clássico, ipset continua útil para grandes listas. Se migrar para nftables, reestruture listas como sets e simplifique regras de correspondência.
Quer revisar sua estratégia de firewall no Ubuntu 22.04?
Converse sobre sua situação atual, riscos e próximos passos para padronizar backend, automatizar regras e planejar migração segura quando fizer sentido.
Falar sobre firewall e migraçãoVeja também
- Comparativo: ZFS vs LVM+LUKS em VPS com bancos de dados — snapshots, desempenho e recuperação após falha
- Análise prática — comparativo: Nginx Unit vs PHP‑FPM vs RoadRunner para executar monólitos PHP em containers — latência, throughput e consumo de memória
- Comparativo: Flyway vs Liquibase vs Sqitch para versionamento de banco de dados em projetos PHP/Laravel
- Comparativo: ZFS vs Btrfs para snapshots, replicação e retenção incremental em VPS com containers Docker — prós e contras práticos