Lanzamiento del filtro de paquetes nftables 1.0.2

Se ha publicado el lanzamiento del filtro de paquetes nftables 1.0.2, que unifica las interfaces de filtrado de paquetes para IPv4, IPv6, ARP y puentes de red (destinado a reemplazar iptables, ip6table, arptables y ebtables). Los cambios necesarios para que funcione la versión nftables 1.0.2 se incluyen en el kernel de Linux 5.17-rc.

El paquete nftables incluye componentes de filtrado de paquetes que se ejecutan en el espacio del usuario, mientras que el trabajo a nivel del kernel lo proporciona el subsistema nf_tables, que ha sido parte del kernel de Linux desde la versión 3.13. El nivel del kernel proporciona solo una interfaz genérica independiente del protocolo que proporciona funciones básicas para extraer datos de paquetes, realizar operaciones de datos y control de flujo.

Las reglas de filtrado y los controladores específicos del protocolo se compilan en un código de bytes en el espacio del usuario, después de lo cual este código de bytes se carga en el kernel usando la interfaz Netlink y se ejecuta en el kernel en una máquina virtual especial que recuerda a BPF (Berkeley Packet Filters). Este enfoque le permite reducir significativamente el tamaño del código de filtrado que se ejecuta a nivel del kernel y mover todas las funciones de reglas de análisis y lógica para trabajar con protocolos al espacio del usuario.

Principales novedades:

  • Se ha agregado un modo de optimización de reglas, habilitado usando la nueva opción "-o" ("--optimize"), que se puede combinar con la opción "--check" para verificar y optimizar los cambios en el archivo del conjunto de reglas sin tener que cargarlo. . La optimización le permite combinar reglas similares, por ejemplo, las reglas: meta iifname eth1 ip saddr 1.1.1.1 ip daddr 2.2.2.3 aceptar meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.2.5 aceptar ip saddr 1.1.1.1 ip daddr 2.2.2.2 .2.2.2.2 aceptar ip saddr 3.3.3.3 ip daddr XNUMX soltar

    se combinará en meta iifname. dirección ip. ip papá { eth1 . 1.1.1.1. 2.2.2.3, eth1. 1.1.1.2. 2.2.2.5 } aceptar ip saddr . ip papádr vmap { 1.1.1.1 . 2.2.2.2: aceptar, 2.2.2.2. 3.3.3.3: soltar}

    Ejemplo de uso: # nft -c -o -f reglasset.test Fusión: reglas.nft:16:3-37: ip daddr 192.168.0.1 contador aceptar reglas.nft:17:3-37: ip daddr 192.168.0.2 contador aceptar ruleset.nft:18:3-37: ip daddr 192.168.0.3 contador aceptado en: ip daddr { 192.168.0.1, 192.168.0.2, 192.168.0.3 } contador de paquetes 0 bytes 0 aceptado

  • Las listas de conjuntos implementan la capacidad de especificar opciones de ip y tcp, así como fragmentos de sctp: set s5 { typeof ip option ra value elements = { 1, 1024 } } set s7 { typeof sctp fragment init num-inbound-streams elements = { 1, 4 } } cadena c5 { opción ip valor ra @ s5 aceptar } cadena c7 { sctp fragment init num-inbound-streams @ s7 aceptar }
  • Se agregó soporte para las opciones TCP fastopen, md5sig y mptcp.
  • Se agregó soporte para usar el subtipo mp-tcp en asignaciones: opción tcp subtipo mptcp 1
  • Código de filtrado del lado del kernel mejorado.
  • Flowtable ahora tiene soporte total para el formato JSON.
  • Se ha proporcionado la capacidad de utilizar la acción "rechazar" en operaciones de coincidencia de tramas Ethernet. ether saddr aa:bb:cc:dd:ee:ff ip daddr 192.168.0.1 rechazar

Fuente: opennet.ru

Añadir un comentario