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:
| Aspecto | iptables | nftables |
|---|---|---|
| Sintaxis | Verbosa, cadenas (-t, -A, -I, -D) | Compacta, mini-lenguaje |
| Atomicidad | No: carga regla por regla | Sí: nft -f aplica todo o nada |
| Familias | Separadas (iptables + ip6tables + …) | Unificadas con tabla inet |
| Sets | No nativos (ipset aparte) | Nativos, dentro del ruleset |
| Rendimiento | Bueno, pero con muchas reglas penaliza | Lookup en sets, pila nativa |
| Logging | LOG + ULOG separados | log integrado en la regla |
| Depuración | iptables -vL | nft 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 acceptiptables-restore-translate
iptables-restore-translate -f /etc/iptables/rules.v4 > /etc/nftables.rules
nft -f /etc/nftables.rulesTabla de equivalencias
| Propósito | iptables | nftables |
|---|---|---|
| Política DROP | iptables -P INPUT DROP | policy drop; |
| Abrir TCP 22 | -A INPUT -p tcp --dport 22 -j ACCEPT | tcp dport 22 accept |
| Tráfico establecido | -m state --state ESTABLISHED,RELATED -j ACCEPT | ct state established,related accept |
| Loopback | -A INPUT -i lo -j ACCEPT | iif lo accept |
| MASQUERADE | -t nat -A POSTROUTING -o eth0 -j MASQUERADE | oif eth0 masquerade |
| DNAT | -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to 10.0.0.5:80 | tcp dport 80 dnat to 10.0.0.5:80 |
| Logging | -j LOG --log-prefix "DROP: " | log prefix "DROP: " |
| Multipuerto | -m multiport --dports 80,443 | tcp dport { 80, 443 } |
Guía paso a paso: migrar un servidor web típico
1. Guarda tus reglas
iptables-save > /tmp/iptables-rules.backup2. Traduce el ruleset
iptables-restore-translate -f /tmp/iptables-rules.backup > /tmp/nftables-ruleset.nft3. 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 nftablesLas 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.


