Marcio Cunha

Como substituir o iptables por nftables e acelerar sua rede

Descubra como substituir o tradicional iptables pelo nftables no Linux, ganhando mais performance, sintaxe limpa e gerenciamento unificado de pacotes.

Marcio Cunha•5 min
Também disponível em:EnglishEspañol
Resumo
  • O nftables unifica as operações de rede em uma única ferramenta moderna de kernel, substituindo o antigo ecossistema iptables
  • A estrutura de tabelas, correntes e regras do nftables elimina a necessidade de duplicar comandos para tráfego IPv4 e IPv6
  • Listas de mapeamento e conjuntos nativos permitem criar regras dinâmicas e altamente otimizadas para grandes volumes de tráfego
  • A migração de scripts legados exige compreender a nova sintaxe declarativa orientada a estruturas de dados em árvore
  • Validar a persistência das regras com o systemd garante que o firewall se mantenha íntegro após reinicializações do servidor

Por que o nftables substitui o antigo iptables no Linux

Se você gerencia servidores Linux há algum tempo, provavelmente já passou horas montando regras complexas no iptables, lidando com sintaxes repetitivas para IPv4 e IPv6 e sofrendo com a perda de performance em tráfegos intensos. Na prática, o iptables sofre de limitações arquiteturais profundas, pois cada alteração de regra exigia a recopilação e substituição de toda a lista de pacotes no kernel, gerando gargalos de processamento. Para resolver isso, a comunidade Linux criou o nftables, um substituto moderno que opera diretamente no subsistema netfilter do núcleo do sistema operacional com uma abordagem unificada e extremamente eficiente.

Quando falamos de performance em redes, cada milissegundo de atraso no roteamento e filtragem de pacotes importa. Enquanto o iptables dividia suas ferramentas em pacotes separados para IPv4, IPv6, ARP e bridges (pontes de rede que conectam segmentos locais), o nftables centraliza tudo em uma única ferramenta com sintaxe limpa e modular. Antes de colocar a mão na massa, vale lembrar que gerenciar a infraestrutura de rede de forma eficiente anda lado a lado com manter o hardware otimizado, algo que você pode aprofundar entendendo como calcular o consumo elétrico real do seu homelab para garantir estabilidade operacional completa no dia a dia.

Entendendo a nova arquitetura e sintaxe do nftables

A grande revolução do nftables está na sua estrutura interna, que se afasta do modelo procedural antigo e adota tabelas, correntes (chains) e regras baseadas em estruturas de dados em árvore. No iptables, as regras eram avaliadas de forma linear, o que significava que se você tivesse quinhentas regras, cada pacote precisava passar por todas elas sequencialmente até encontrar uma correspondência. No nftables, podemos criar conjuntos (sets) e mapas (maps) que permitem buscas indexadas instantâneas, reduzindo o uso de CPU drasticamente sob alta carga.

Na prática, isso significa que bloquear centenas de endereços IP maliciosos deixa de ser uma lista gigante de comandos individuais e passa a ser uma única verificação em um conjunto otimizado na memória do kernel. Além disso, a sintaxe se tornou muito mais próxima de uma linguagem de programação amigável, permitindo expressar operações lógicas complexas sem precisar concatenar múltiplos comandos ou recorrer a ferramentas externas como o ipset. Essa clareza na configuração reduz erros humanos e simplifica a auditoria de segurança em ambientes de produção corporativos.

Passo a passo para instalar e configurar o nftables

Para colocar o nftables em funcionamento, o primeiro passo é garantir que o utilitário esteja instalado na sua distribuição Linux e que o serviço legado de firewall seja desativado para evitar conflitos de portas e regras duplicadas. Nas distribuições modernas baseadas em Debian ou Ubuntu, a instalação ocorre de forma rápida através do gerenciador de pacotes padrão do sistema operacional.

  1. Remova ou desative serviços concorrentes de firewall executando o comando de parada no terminal:
    sudo systemctl stop ufw && sudo systemctl disable ufw
  2. Instale o pacote principal do nftables utilizando o gerenciador de pacotes do sistema:
    sudo apt update && sudo apt install nftables -y
  3. Ative e inicie o serviço do nftables para garantir que ele seja carregado durante a inicialização da máquina:
    sudo systemctl enable nftables && sudo systemctl start nftables

Com o serviço ativo, o próximo passo é criar o arquivo de configuração inicial que definirá a política padrão de segurança para o tráfego que entra, sai ou atravessa o servidor. O arquivo de configuração principal costuma ficar localizado no diretório de configuração do sistema, recebendo regras estruturadas que definem tabelas do tipo inet, capazes de lidar simultaneamente com tráfego IPv4 e IPv6 sem redundância de código.

Criando sua primeira tabela e regras de filtragem

A configuração do nftables começa sempre com a declaração de uma tabela, que funciona como um contêiner lógico para as correntes de filtragem. Usamos a família inet para abranger tanto redes IPv4 quanto IPv6 de maneira unificada, economizando tempo de escrita e evitando inconsistências nas políticas de segurança. Dentro dessa tabela, criamos correntes do tipo input, output e forward, associadas aos ganchos (hooks) apropriados do netfilter.

table inet firewall {chain input {type filter hook input priority filter; policy drop;iif lo acceptcomment 'Aceita todo o trafego de loopback local'ct state established,related acceptcomment 'Permite conexoes ja estabelecidas'tcp dport 22 acceptcomment 'Permite acesso SSH'tcp dport 80 acceptcomment 'Permite trafego HTTP'tcp dport 443 acceptcomment 'Permite trafego HTTPS'}}

Esse bloco de configuração define uma política padrão restritiva (policy drop), o que significa que tudo o que não for explicitamente autorizado será descartado pelo firewall. Em seguida, abrimos exceções seguras para a interface de loopback (essencial para a comunicação interna de serviços na própria máquina), permitimos conexões de rede que já foram estabelecidas anteriormente e liberamos portas vitais para serviços web e acesso remoto via SSH, garantindo que você não perca o controle do servidor durante o processo.

Gerenciando conjuntos dinâmicos e persistência de regras

Um dos maiores diferenciais operacionais do nftables é a facilidade com que podemos gerenciar listas dinâmicas de IPs bloqueados ou liberados sem reiniciar o serviço inteiro. Podemos criar conjuntos nomeados que armazenam múltiplos endereços e consultá-los diretamente nas regras de filtragem, o que simplifica enormemente a automação de sistemas de prevenção contra invasões, como o Fail2ban ou scripts personalizados de monitoramento.

Para garantir que suas regras personalizadas não desapareçam quando o servidor for reiniciado, é fundamental salvar a configuração atual no arquivo padrão do sistema, que costuma ser lido pelo systemd durante o boot. Você pode exportar as regras ativas executando o comando de salvamento e recarregando o serviço para validar a integridade estrutural, tal como garantimos a estabilidade operacional ao configurar redes complexas ou gerenciar recursos avançados em ambientes virtualizados.

Considerações finais sobre a migração para o nftables

A transição do iptables para o nftables representa um salto evolutivo incontestável na administração de sistemas Linux, oferecendo uma arquitetura mais limpa, desempenho superior em redes de alta velocidade e unificação nativa entre IPv4 e IPv6. Embora exija uma curva de aprendizado inicial devido à mudança de sintaxe, o ganho em legibilidade de código e flexibilidade compensa amplamente o esforço de migração. Ao adotar conjuntos nativos e políticas restritivas bem estruturadas, você constrói uma barreira de segurança robusta e preparada para os desafios modernos de infraestrutura e computação em nuvem.