Lanzamiento del filtro de paquetes nftables 1.0.1

Se ha publicado el lanzamiento del filtro de paquetes nftables 1.0.1, 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.1 se incluyen en el kernel de Linux 5.16-rc1.

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:

  • Reducción del consumo de memoria al cargar listas de mapas y conjuntos grandes.
  • Se ha acelerado la recarga de listas de conjuntos y mapas.
  • Se ha acelerado la producción de tablas y cadenas seleccionadas en grandes conjuntos de reglas. Por ejemplo, el tiempo de ejecución del comando “nft list ruleset” para mostrar un conjunto de reglas con 100 mil filas es de 3.049 segundos, y cuando se genera solo las tablas nat y filter (“nft list table nat”, “nft list table filter ”) se reduce a 1.969 y 0.697 segundos.
  • La ejecución de consultas con la opción “--terse” se ha acelerado al procesar reglas con listas de conjuntos y mapas grandes.
  • Es posible filtrar el tráfico de la cadena de "salida", que se procesa al mismo nivel que el controlador de salida en la cadena netdev (gancho de salida), es decir. en la etapa en la que el controlador recibe un paquete de la pila de red del núcleo. filtro netdev de tabla { salida de cadena { dispositivos de salida de gancho de filtro de tipo = { eth0, eth1 } prioridad 0; meta prioridad establecer mapa ip saddr { 192.168.10.2 : abcd:2, 192.168.10.3 : abcd:3 } } }
  • Permite hacer coincidir y modificar bytes en el encabezado y el contenido de un paquete en un desplazamiento determinado. # nft agregar regla xy @ih,32,32 0x14000000 contador # nft agregar regla xy @ih,32,32 establecer 0x14000000 contador

Fuente: opennet.ru

Añadir un comentario