Lançamento do filtro de pacotes nftables 1.0.5

Foi lançado a versão 1.0.5 do filtro de pacotes nftables, unificando as interfaces de filtragem de pacotes para IPv4, IPv6, ARP e bridges de rede (destinado a substituir iptables, ip6tables, arptables e ebtables). Ao mesmo tempo, foi lançada a versão da biblioteca associada libnftnl 1.2.3, que fornece uma API de baixo nível para interação 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:

  • No otimizador de regras chamado com a opção "-o/--optimize", foram resolvidos problemas na fusão de regras e listas de map e set. # cat ruleset.nft table ip x { chain y { type nat hook postrouting priority srcnat; policy drop; ip saddr 1.1.1.1 tcp dport 8000 snat to 4.4.4.4:80 ip saddr 2.2.2.2 tcp dport 8001 snat to 5.5.5.5:90 } } # nft -o -c -f ruleset.nft Fusando: ruleset.nft:4:3-52: ip saddr 1.1.1.1 tcp dport 8000 snat to 4.4.4.4:80 ruleset.nft:5:3-52: ip saddr 2.2.2.2 tcp dport 8001 snat to 5.5.5.5:90 em: snat to ip saddr . tcp dport map { 1.1.1.1 . 8000 : 4.4.4.4 . 80, 2.2.2.2 . 8001 : 5.5.5.5 . 90 }
  • Ao mesclar elementos ethernet e vlan, foi possibilitada a definição de um conjunto dinâmico, preenchido com base nos parâmetros do caminho do pacote. add table netdev x add chain netdev x y { type filter hook ingress device enp0s25 priority 0; } add set netdev x macset { typeof ether daddr . vlan id; flags dynamic, timeout; } add rule netdev x y update @macset { ether daddr . vlan id timeout 60s } add rule netdev x y ether saddr . vlan id { 0a:0b:0c:0d:0e:0f . 42, 0a:0b:0c:0d:0e:0f . 4095 } counter accept
  • Estabelecido a exibição de regras com listas de map que contêm máscaras nos nomes das interfaces. table inet filter { chain INPUT { iifname vmap { "eth0" : jump input_lan, "wg*" : jump input_vpn } } chain input_lan {} chain input_vpn {} }
  • Foram corrigidas mudanças regressivas que causavam a análise lexical incorreta de regras válidas.
  • Foram resolvidos problemas de processamento lento e fusão automática de grandes listas com elementos que definem intervalos de valores.
  • Foi eliminado o fechamento inesperado ao adicionar elementos a uma lista set inválida.

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