Lançamento do filtro de pacotes nftables 1.1.6

Foi lançado o lançamento do filtro de pacotes nftables 1.1.6, que unifica as interfaces de filtragem de pacotes para IPv4, IPv6, ARP e pontes de redes (destinado a substituir iptables, ip6table, arptables e ebtables). Ao mesmo tempo, foi lançado o biblioteca auxiliar libnftnl 1.3.1, que fornece uma API de baixo nível para interagir com o subsistema nf_tables.

O pacote nftables inclui componentes do filtro de pacotes que operam no espaço do usuário, enquanto a funcionalidade no nível do núcleo é assegurada pelo subsistema nf_tables, que faz parte do núcleo do Linux a partir da versão 3.13. No nível do núcleo, é fornecida apenas uma interface geral, independente de protocolo específico, que oferece funções básicas para a extração de dados de pacotes, execução de operações sobre dados e controle de fluxo.

As regras de filtragem e os manipuladores específicos de protocolos são compilados em bytecode no espaço do usuário, após o que esse bytecode é carregado no núcleo por meio da interface Netlink e executado no núcleo em uma máquina virtual, semelhante ao BPF (Berkeley Packet Filters). Essa abordagem permite reduzir significativamente o tamanho do código de filtragem que opera no nível do núcleo e deslocar todas as funções de análise de regras e lógica de operação com protocolos para o espaço do usuário.

Principais mudanças:

  • Apoio total para templates de túneis leves, como vxlan, geneve e erspan: table netdev global { tunnel t1 { id 10 ip saddr 192.168.2.10 ip daddr 192.168.2.11 sport 1025 dport 20020 ttl 1 erspan { version 1 index 2 } } tunnel t2 { id 10 ip saddr 192.168.3.10 ip daddr 192.168.3.11 sport 1025 dport 21021 ttl 1 erspan { version 1 index 2 } } chain in { type filter hook ingress device veth0 priority 0; tunnel name ip saddr map { 10.141.10.12 : «t1», 10.141.10.13 : «t2» } fwd to erspan1 } } Antes de carregar as regras, é necessário criar a interface de rede erspan1: ip link add dev erspan1 type erspan external
  • Adicionada suporte para máscaras nos nomes das interfaces de rede nos manipuladores netdev, por exemplo, para adicionar uma cadeia base no filtro de tráfego de entrada para todos os dispositivos vlan, pode-se especificar: table netdev t { chain c { type filter hook ingress devices = { «vlan*», «veth0» } priority filter; policy accept; } }
  • Em sistemas com o kernel Linux 6.18 ou superior, implementada a capacidade de transmissão de quadros L2 na interface de pontes de rede para processamento local, por exemplo, para direcionar para a pilha IP todos os quadros Ethernet para o endereço MAC de:ad:00:00:be:ef pode-se especificar: table bridge global { chain pre { type filter hook prerouting priority 0; policy accept; ether daddr de:ad:00:00:be:ef meta pkttype set host ether daddr set meta ibrhwaddr accept } }
  • Adicionada uma nova infraestrutura para testes de fuzzing usando a ferramenta afl++ (american fuzzy lop++), ativada na fase de compilação através de «./configure —with-fuzzer».

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster