
Alguns dias atrás, foi anunciado o lançamento da nova versão do filtro de pacotes “nftables 0.9.4”, desenvolvido como um substituto para iptables, ip6table, arptables e ebtables devido à unificação das interfaces de filtragem de pacotes para IPv4, IPv6, ARP e pontes de rede.
O pacote nftables inclui componentes de filtro de pacote que operam no espaço do usuário, enquanto no nível do kernel, o subsistema nf_tables fornece uma parte do kernel Linux desde a versão 3.13.
No nível do kernel, apenas uma interface comum é fornecida, independente de um protocolo específico e fornece as funções básicas de extração de dados de pacote, execução de operações de dados e controle de fluxo.
Regras de filtro direto e drivers específicos de protocolo são compilados em um bytecode no espaço do usuário, após o qual esse bytecode é carregado no kernel usando a interface Netlink e executado no kernel em uma máquina virtual especial que é se assemelha ao BPF (Berkeley Packet Filters).
Essa abordagem pode reduzir significativamente o tamanho do código de filtragem no nível do kernel e eliminar todas as funções de regras de análise e lógica de trabalhar com protocolos no espaço do usuário.
Principais novidades do Nftables 0.9.4
Todas as alterações necessárias para o funcionamento do nftables versão 0.9.4 estão incluídas na ramificação do kernel do Linux 5.6 e adicionam suporte a intervalos nas combinações “concatenação, endereços específicos e pacotes de portas que simplificam a alocação”.
Por exemplo, para um conjunto de “lista branca” cujos elementos são combinações, a especificação do sinalizador “intervalo” indicará que o conjunto pode incluir intervalos na junção.
Foi adicionada a capacidade de usar junções em ligações NAT, permitindo especificar o endereço e a porta ao definir transformações NAT com base em listas de mapas ou conjuntos nomeados.
Além disso, foi adicionado suporte à aceleração de hardware com a remoção de algumas operações de filtragem. A aceleração é ativada por meio do utilitário ethtool (“ethtool -K eth0 hw-tc-offload on”), após o qual é ativado em nftables para a cadeia principal usando o sinalizador “offload”.
Ao usar o kernel Linux 5.6, a aceleração de hardware é suportada para corresponder aos campos do cabeçalho e verificar a interface de entrada em combinação com recebimento, descarte, duplicação (dup) e encaminhamento de pacote (fwd).
Em conjuntos e listas de mapas, você pode usar a diretiva “typeof”, que determina o formato do elemento ao fazer a correspondência.
Das outras mudanças que se destacam nesta versão:
- Relatórios aprimorados do local do erro nas regras.
- Foi adicionado suporte para verificar a interface do escravo especificando “meta sdif” ou “meta sdifname”
- Adicionado suporte para rolagem para a direita ou esquerda. Por exemplo, para alterar o rótulo do pacote existente à esquerda para 1 bit e definir o menor bit para 1.
- Opção implementada “-V” para exibir informações. As opções de linha de comando agora devem ser especificadas antes dos comandos. Por exemplo, especificar “nft -a list ruleset” e executar “nft list ruleset -a” gerará um erro.
Como instalar a nova versão do nftables 0.9.4?
Para obter a nova versão no momento, você pode compilar apenas o código-fonte no seu sistema. Embora em questão de dias os pacotes binários estarão disponíveis já compilados nas diferentes distribuições Linux.
Para executar a compilação, você deve ter as seguintes dependências instaladas:
Você pode compilá-los com:
./autogen.sh
./configure
make
make install
E para o nftables 0.9.4, fazemos o download no seguinte link. E a compilação é feita com os seguintes comandos:
cd nftables
./autogen.sh
./configure
make
make install