Red Hat Training

A Red Hat training course is available for RHEL 8

Capítulo 45. Introducción a nftables

El marco de trabajo nftables proporciona facilidades de clasificación de paquetes y es el sucesor designado de las herramientas iptables, ip6tables, arptables, y ebtables. Ofrece numerosas mejoras en cuanto a comodidad, características y rendimiento con respecto a las anteriores herramientas de filtrado de paquetes, sobre todo:

  • tablas de búsqueda en lugar de procesamiento lineal
  • un único marco para los protocolos IPv4 y IPv6
  • reglas aplicadas atómicamente en lugar de buscar, actualizar y almacenar un conjunto completo de reglas
  • soporte para la depuración y el rastreo en el conjunto de reglas (nftrace) y la supervisión de los eventos de rastreo (en la herramienta nft )
  • sintaxis más coherente y compacta, sin extensiones específicas de protocolo
  • una API Netlink para aplicaciones de terceros

Al igual que iptables, nftables utiliza tablas para almacenar cadenas. Las cadenas contienen reglas individuales para realizar acciones. La herramienta nft sustituye a todas las herramientas de los anteriores marcos de filtrado de paquetes. La biblioteca libnftnl puede utilizarse para la interacción de bajo nivel con nftables Netlink API sobre la biblioteca libmnl.

El efecto de los módulos en el conjunto de reglas nftables puede observarse utilizando el comando nft list rule set. Dado que estas herramientas añaden tablas, cadenas, reglas, conjuntos y otros objetos al conjunto de reglas de nftables, tenga en cuenta que las operaciones del conjunto de reglas de nftables, como el comando nft flush ruleset, podrían afectar a los conjuntos de reglas instalados mediante los comandos heredados anteriormente separados.

45.1. Migración de iptables a nftables

Si ha actualizado su servidor a RHEL 8 o su configuración de cortafuegos todavía utiliza reglas de iptables, puede migrar sus reglas de iptables a nftables.

45.1.1. Cuándo utilizar firewalld, nftables o iptables

A continuación se presenta un breve resumen en el que se debe utilizar una de las siguientes utilidades:

  • firewalld: Utilice la utilidad firewalld para casos de uso de cortafuegos sencillos. La utilidad es fácil de usar y cubre los casos de uso típicos para estos escenarios.
  • nftables: Utilice la utilidad nftables para configurar cortafuegos complejos y de rendimiento crítico, como por ejemplo para toda una red.
  • iptables: La utilidad iptables en Red Hat Enterprise Linux 8 utiliza la API del kernel nf_tables en lugar del back end legacy. La API nf_tables proporciona compatibilidad con versiones anteriores para que los scripts que utilizan comandos iptables sigan funcionando en Red Hat Enterprise Linux 8. Para los nuevos scripts de cortafuegos, Red Hat recomienda utilizar nftables.
Importante

Para evitar que los diferentes servicios de firewall se influyan mutuamente, ejecute sólo uno de ellos en un host RHEL y desactive los demás servicios.

45.1.2. Conversión de reglas iptables a reglas nftables

Red Hat Enterprise Linux 8 proporciona las herramientas iptables-translate y ip6tables-translate para convertir las reglas existentes iptables o ip6tables en las equivalentes para nftables.

Tenga en cuenta que algunas extensiones no tienen soporte de traducción. Si existe una extensión de este tipo, la herramienta imprime la regla no traducida con el prefijo #. Por ejemplo:

# iptables-translate -A INPUT -j CHECKSUM --checksum-fill
nft # -A INPUT -j CHECKSUM --checksum-fill

Además, los usuarios pueden utilizar las herramientas iptables-restore-translate y ip6tables-restore-translate para traducir un volcado de reglas. Tenga en cuenta que antes de eso, los usuarios pueden utilizar los comandos iptables-save o ip6tables-save para imprimir un volcado de las reglas actuales. Por ejemplo:

# iptables-save >/tmp/iptables.dump
# iptables-restore-translate -f /tmp/iptables.dump

# Translated by iptables-restore-translate v1.8.0 on Wed Oct 17 17:00:13 2018
add table ip nat
...

Para obtener más información y una lista de posibles opciones y valores, introduzca el comando iptables-translate --help.