nftables 0.9.4 ya está aquí y estos son sus cambios mas importantes
Hace varios días fue anunciado el lanzamiento de la nueva versión del filtro de paquetes “nftables 0.9.4”, que se desarrolla como un reemplazo para iptables, ip6table, arptables y ebtables debido a la unificación de las interfaces de filtrado de paquetes para IPv4, IPv6, ARP y puentes de red.
El paquete nftables incluye componentes de filtro de paquetes que funcionan en el espacio del usuario, mientras que a nivel del kernel, el subsistema nf_tables proporciona una parte del kernel de Linux desde la versión 3.13.
A nivel del núcleo, solo se proporciona una interfaz común que es independiente de un protocolo específico y proporciona las funciones básicas de extraer datos de paquetes, realizar operaciones de datos y controlar el flujo.
Las reglas de filtrado directo y los controladores específicos del protocolo se compilan en un bytecode en el espacio del usuario, después de lo cual este bytecode se carga en el kernel utilizando la interfaz Netlink y se ejecuta en el kernel en una máquina virtual especial que se asemeja a BPF (Berkeley Packet Filters).
Tal enfoque puede reducir significativamente el tamaño del código de filtrado que funciona a nivel del núcleo y eliminar todas las funciones de analizar las reglas y la lógica de trabajar con protocolos en el espacio del usuario.
Principales novedades de Nftables 0.9.4
Todos los cambios necesarios para que la versión nftables 0.9.4 funcione están incluidos en la rama del kernel de Linux 5.6 y en ella se añade el soporte para rangos en combinaciones “concatenación, direcciones específicas y paquetes de puertos que simplifican la asignación”.
Por ejemplo, para un conjunto de “lista blanca” cuyos elementos son combinaciones, la especificación del indicador de “intervalo” indicará que el conjunto puede incluir rangos en la unión.
Se agregó la capacidad de usar combinaciones en enlaces NAT, lo que le permite especificar la dirección y el puerto al definir transformaciones NAT basadas en listas de mapas o conjuntos con nombre.
Además, se añadió el soporte para la aceleración de hardware con la eliminación de algunas operaciones de filtrado. La aceleración se habilita a través de la utilidad ethtool (“ethtool -K eth0 hw-tc-offload on“), después de lo cual se activa en nftables para la cadena principal utilizando el indicador “offload”.
Cuando se utiliza el kernel de Linux 5.6, se admite la aceleración de hardware para hacer coincidir los campos de encabezado y verificar la interfaz entrante en combinación con la recepción, caída, duplicación (dup) y reenvío de paquetes (fwd).
En conjuntos y listas de mapas, es posible utilizar la directiva “typeof”, que determina el formato del elemento al hacer coincidir.
De los demás cambios que se destacan de esta versión:
- Informe mejorado de la ubicación del error en las reglas.
- Se agregó soporte para verificar la interfaz esclava especificando “meta sdif” o “meta sdifname“
- Se agregó soporte para el desplazamiento hacia la derecha o hacia la izquierda. Por ejemplo, para cambiar la etiqueta del paquete existente a la izquierda en 1 bit y establecer el bit más pequeño en 1.
- Opción implementada “-V” para mostrar información. Las opciones de línea de comando ahora deben especificarse antes de los comandos. Por ejemplo, debe especificar “nft -a list ruleset” y ejecutar “nft list ruleset -a” generará un error.
¿Cómo instalar la nueva versión de nftables 0.9.4?
Para obtener la nueva versión de momento solo se puede compilar el código fuente en su sistema. Aunque en cuestión de días estarán disponibles los paquetes binarios ya compilados dentro de las diferentes distribuciones de Linux.
Para realizar la compilación debes contar con las siguientes dependencias instaladas:
Estas las puedes compilar con:
./autogen.sh
./configure
make
make install
Y para nftables 0.9.4 este lo descargamos desde el siguiente enlace. Y la compilación se realiza con los siguientes comandos:
cd nftables
./autogen.sh
./configure
make
make install