Migración de iptables a nftables en 2026: Guía Completa para Debian/Ubuntu

Si llevas años escribiendo reglas de iptables y aún no le has dado una oportunidad a nftables, este artículo es para ti. No, iptables no ha muerto. Sigue funcionando y seguirá funcionando por bastante tiempo. Pero el ecosistema ha cambiado, y en 2026 quedarse solo con iptables es como seguir usando `ifconfig` en vez de `ip`: funciona, pero te estás perdiendo todo lo bueno.

Voy a contarte por qué migrar, cómo hacerlo paso a paso, y darte herramientas para que la transición sea limpia. Si tienes los artículos sobre cómo hacer persistentes las reglas de iptables o el script NAT en Debian, este artículo es el puente para actualizarlos a nftables.


¿Por qué migrar?

nftables no es «el reemplazo de iptables». Es un rediseño del stack de filtrado de red que lleva en el kernel desde 2014 (Linux 3.13). Te pongo una tabla comparativa:

Aspectoiptablesnftables
SintaxisVerbosa, cadenas (-t, -A, -I, -D)Compacta, mini-lenguaje
AtomicidadNo: carga regla por reglaSí: nft -f aplica todo o nada
FamiliasSeparadas (iptables + ip6tables + …)Unificadas con tabla inet
SetsNo nativos (ipset aparte)Nativos, dentro del ruleset
RendimientoBueno, pero con muchas reglas penalizaLookup en sets, pila nativa
LoggingLOG + ULOG separadoslog integrado en la regla
Depuracióniptables -vLnft monitor, tracing

En 2026, nftables 1.1.6 es la versión estable. iptables 1.8.13 se mantiene, pero el movimiento de Docker (que rompió con 1.8.12 y se corrigió en 1.8.13) muestra que el ecosistema ya no gira en torno a iptables.


El sistema de alternativas en Debian/Ubuntu

En Debian 12+ y Ubuntu 22.04+, iptables sigue existiendo pero por debajo es iptables-nft: un traductor en tiempo real que convierte órdenes iptables a reglas nftables. Verifícalo con update-alternatives --display iptables.

El problema es que iptables-nft te da la comodidad de sintaxis, pero no las ventajas de nftables. El verdadero salto es aprender nft.


Herramientas de migración

iptables-translate

iptables-translate -A INPUT -p tcp --dport 22 -j ACCEPT
# Salida: nft add rule ip filter INPUT tcp dport 22 accept

iptables-restore-translate

iptables-restore-translate -f /etc/iptables/rules.v4 > /etc/nftables.rules
nft -f /etc/nftables.rules

Tabla de equivalencias

Propósitoiptablesnftables
Política DROPiptables -P INPUT DROPpolicy drop;
Abrir TCP 22-A INPUT -p tcp --dport 22 -j ACCEPTtcp dport 22 accept
Tráfico establecido-m state --state ESTABLISHED,RELATED -j ACCEPTct state established,related accept
Loopback-A INPUT -i lo -j ACCEPTiif lo accept
MASQUERADE-t nat -A POSTROUTING -o eth0 -j MASQUERADEoif eth0 masquerade
DNAT-t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to 10.0.0.5:80tcp dport 80 dnat to 10.0.0.5:80
Logging-j LOG --log-prefix "DROP: "log prefix "DROP: "
Multipuerto-m multiport --dports 80,443tcp dport { 80, 443 }

Guía paso a paso: migrar un servidor web típico

1. Guarda tus reglas

iptables-save > /tmp/iptables-rules.backup

2. Traduce el ruleset

iptables-restore-translate -f /tmp/iptables-rules.backup > /tmp/nftables-ruleset.nft

3. Crea el archivo maestro

#!/usr/sbin/nft -f
flush ruleset

table inet filter {
    set web_ports { type inet_service; elements = { 80, 443 }; }
    chain input {
        type filter hook input priority 0; policy drop;
        iif lo accept
        ct state established,related accept
        tcp dport 22 accept
        tcp dport @web_ports accept
        log prefix "[DROP] " limit rate 5/minute
    }
    chain forward { type filter hook forward priority 0; policy drop; }
    chain output { type filter hook output priority 0; policy accept; }
}

table ip nat {
    chain postrouting {
        type nat hook postrouting priority 100;
        oif eth0 masquerade
    }
}

4. Aplica y persiste

nft -f /etc/nftables.conf
systemctl enable nftables && systemctl start nftables

Las reglas se cargan desde /etc/nftables.conf automáticamente. Ya no necesitas iptables-persistent como se explicaba en el artículo de persistencia de iptables.

El script NAT en Debian se migra igual: cambia iptables -t nat ... por las reglas nft equivalentes y el guardado ahora es editando /etc/nftables.conf.


Trampas comunes

Docker: Si cambias a iptables-nft y Docker falla, configura iptables-legacy como alternativa. Docker 20.10+ ya funciona con ambos.

fail2ban: Cambia banaction = nftables en jail.local.

ufw/firewalld: Ya usan nftables por debajo. No mezcles reglas manuales.

No mezcles iptables-nft y nft: Es posible pero no lo hagas. Usa solo nft.


Conclusión

No hay prisa. Debian 12 y Ubuntu 22.04 ya usan iptables-nft por defecto. Pero si quieres aprovechar todo lo que Netfilter ofrece, aprender nftables es inversión que rentabilizarás.

Si usabas los artículos sobre reglas persistentes de iptables o el script NAT, ahora tienes el contexto para migrarlos. Si necesitas repasar Linux, aquí tienes la guía básica de comandos.

¿Ya has migrado? Cuéntalo en los comentarios.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *