nftables
nftables es un proyecto que proporciona filtrado de paquetes y clasificación de paquetes en Linux, que reemplaza los frameworks existentes iptables, ip6tables, arptables y ebtables. Nftables es una combinación de componentes en núcleo de Linux (módulos) y una utilidad de línea de comandos en espacio de usuario.[1]
nftables | |||||
---|---|---|---|---|---|
Parte de Netfilter/iptables | |||||
Información general | |||||
Tipo de programa | Cortafuegos | ||||
Autor | Proyecto Netfilter | ||||
Desarrollador | Proyecto Netfilter | ||||
Lanzamiento inicial | 18 de marzo de 2009 (15 años, 9 meses y 12 días) | ||||
Licencia | GPL (versión 2) | ||||
Estado actual | En desarrollo | ||||
Información técnica | |||||
Programado en | C | ||||
Plataformas admitidas | Netfilter | ||||
Versiones | |||||
Última versión estable | 1.1.0 (info) ( 16 de julio de 2024 (5 meses y 14 días)) | ||||
Serie Netfilter/iptables | |||||
| |||||
Enlaces | |||||
Reutiliza partes clásicas de la infraestructura Netfilter, como el connection tracking system (conntrack, sistema de seguimiento de conexiones), el subsistema de envío de paquetes a espacio de usuario (nf_queue) y el subsistema de registro (nf_log), entre otros. También existe una capa de traducción y compatibilidad para facilitar el trabajo sobre reglas ya existentes de iptables.
En mayo de 2017, el proyecto Debian anunció que incluiría oficialmente a nftables en su sistema operativo y recomienda a los usuarios migrar desde iptables a nftables.[2] A su vez, en octubre de 2019, se anunció que nftables sería la herramienta por defecto a partir de Debian 11 Bullseye.[3]
Motivaciones de nftables
editarEl framework de iptables sufre una serie de limitaciones que se han querido mejorar en nftables:
- Evitar duplicidad e inconsistencia en el código fuente. Muchas extensiones de iptables estaban duplicadas con pequeños cambios para interactuar con diferentes protocolos de red.
- Mejorar soporte para conjuntos y mapeo de datos.
- Simplificar usabilidad en entornos IPv4/IPv6.
- Mejorar mecanismo para actualizaciones al conjunto de reglas. Esta tarea en iptables es muy costosa y poco escalable.
- Proveer API Netlink para aplicaciones externas.
- Mejorar sintaxis.
Diferencias entre nftables e iptables
editarDesde el punto de vista del usuario, las principales diferencias entre nftables e iptables son:
- La sintaxis: iptables usa un parseador basado en getopt_long(), donde las órdenes van precedidas por guiones (por ejemplo, '-m conntrack --ctstate'). Ahora nftables usa una sintaxis más compacta e intuitiva que fue inspirada por la herramienta tcpdump.
- Las tablas y cadenas son totalmente configurables. En nftables, las tablas son meros contenedores de cadenas, sin una semántica determinada. En iptables, hay una serie de tablas y cadenas predeterminadas que son registradas en el sistema de manera obligatoria aunque no vayas a usarlas. Los nombres de estos objetos (tablas y cadenas) son también arbitrarios.
- Los conceptos de 'target' y 'match' desaparecen. En nftables, las reglas están compuestas de expresiones.
- nftables permite especificar varias acciones en una única regla. En iptables, solo podías seleccionar un 'target' por regla.
- No hay contadores integrados en reglas y cadenas. Son opcionales y pueden habilitarse bajo demanda.
- Soporte mejorado para actualizaciones dinámicas del conjunto de reglas.
- Administración simplificada para conjuntos de reglas IPv4/IPv6.
- Infraestructura genérica de conjuntos y mapeos de datos, directamente integrada en el núcleo de nftables. En iptables, existe la herramienta externa ipset.
- Soporte para nuevos protocolos sin actualizaciones del kernel Linux, dado que la complejidad del manejo de protocolos se encuentra en espacio de usuario y no en el kernel.
A modo de ejemplo, esta sería una equivalencia entre reglas similares.
En iptables:
% iptables -t filter -A FORWARD -s 1.1.1.1 -d 2.2.2.2 -p tcp --dport 123 -m conntrack --ctstate -j ACCEPT
En nftables:
% nft add rule filter forward ip saddr 1.1.1.1 ip daddr 2.2.2.2 tcp dport 123 ct state new accept