nftables vs iptables en Ubuntu 22.04: cuál usar y ejemplos prácticos
Por Kevin Marcondes · Publicado el · 9 min de lectura
Esta comparativa muestra, de forma práctica, cuándo usar nftables o iptables como firewall en servidores Ubuntu 22.04. Verás diferencias de arquitectura, pros y contras, criterios de elección según escenario y ejemplos de comandos equivalentes para reglas básicas, además de un paso a paso seguro para migrar.
Qué cambia en Ubuntu 22.04: backend y compatibilidad
En Ubuntu 22.04, los comandos iptables usan por defecto el backend nf_tables (iptables-nft). El iptables-legacy permanece disponible vía alternatives para compatibilidad. Evita mezclar diferentes backends en el mismo servidor.
Puedes verificar qué backend está activo y alternar si es necesario. Los cambios pueden afectar herramientas y scripts existentes. Planifica una ventana de mantenimiento y ten acceso por consola para evitar pérdida de conexión.
# Verificar backend actual
iptables -V # deve exibir (nf_tables) quando usa iptables-nft
# Listar e alternar implementations (requer sudo)
sudo update-alternatives --list iptables
sudo update-alternatives --config iptables
sudo update-alternatives --list ip6tables
sudo update-alternatives --config ip6tables
Tabla comparativa: criterios que importan en la operación
Resumen de los puntos que más afectan la operación, el mantenimiento y la evolución del firewall en producción. Úsalo como checklist rápido antes de decidir.
| Criterio | nftables | iptables (legacy) |
|---|---|---|
| Backend en el kernel | nf_tables (moderno) | xtables (compatibilidad) |
| Reglas IPv4/IPv6 unificadas | Sí (tabla inet) | No (iptables e ip6tables separados) |
| Aplicación de reglas | Atómica (carga el ruleset de una vez) | Incremental (regla por regla) |
| Sets y mapas | Nativos y escalables | Limitados; ipset como complemento |
| Escalabilidad con muchas reglas | Mejor con sets/mapas | Puede degradar con miles de reglas |
| Sintaxis | Nueva, consistente entre familias | Clásica y conocida |
| Compatibilidad de scripts antiguos | Requiere adaptación/translate | Alta (scripts existentes) |
| Ecosistema y futuro | Proyecto activo y recomendado | Mantenido para compatibilidad |
| Herramientas de gestión | nft, nftables.service | iptables, ip6tables, iptables-persistent |
| Integración UFW/Fail2ban (22.04) | Soportado | Soportado (vía iptables-nft) |
Criterios de elección por escenario (sin pasiones)
No hay una respuesta única. Considera operación, equipo y herramientas. Abajo, criterios prácticos que suelen decidir la elección.
- Instalación nueva en Ubuntu 22.04: prefiere nftables. Sintaxis unificada, carga atómica y sets facilitan el mantenimiento.
- Scripts heredados críticos y estables: mantén iptables (o iptables-nft) mientras preparas una migración controlada.
- Entorno con muchas puertas/IPs dinámicos: nftables con sets y mapas tiende a simplificar y escalar mejor.
- Si el equipo domina iptables y el cambio es sensible: continúa con iptables-nft, pero estandariza y evita mezclar backends.
- Uso de UFW: el backend por defecto en 22.04 es nftables; alinea las decisiones con las políticas definidas.
- Observabilidad y auditoría: nftables ofrece 'nft monitor'; con iptables, estandariza 'iptables-save' y logs del kernel.
Ejemplo práctico con nftables (Ubuntu 22.04)
Ejemplo de política por defecto: bloquear entrada, permitir salida, abrir SSH (22/tcp), HTTP (80/tcp) y HTTPS (443/tcp), aceptar tráfico establecido e ICMP/ICMPv6. Atención: aplicar reglas puede cerrar tu sesión SSH; usa consola o una segunda sesión de prueba.
El archivo /etc/nftables.conf será la fuente única y el servicio nftables mantendrá las reglas en el arranque.
# Limpar e aplicar configuração nftables (Ubuntu 22.04)
sudo nft flush ruleset
sudo tee /etc/nftables.conf >/dev/null <<'EOF'
table inet filter {
sets {
allowed_tcp_ports = { type inet_service; elements = { 22, 80, 443 } }
}
chains {
input {
type filter hook input priority 0; policy drop;
ct state established,related accept
iif lo accept
ct state invalid drop
ip protocol icmp accept
ip6 nexthdr icmpv6 accept
tcp dport @allowed_tcp_ports accept
}
forward { type filter hook forward priority 0; policy drop; }
output { type filter hook output priority 0; policy accept; }
}
}
EOF
# Validar sintaxe e aplicar
sudo nft -c -f /etc/nftables.conf && sudo nft -f /etc/nftables.conf
# Persistir no boot
sudo systemctl enable --now nftables
# Ver ruleset carregado
sudo nft list ruleset
Ejemplo práctico equivalente con iptables (legacy)
Las reglas abajo implementan la misma política usando iptables e ip6tables. En servidores 22.04, incluso con iptables-nft, los comandos funcionan. Para usar legacy puro, cambia el alternative a iptables-legacy. Prueba fuera de horario crítico y mantén acceso de recuperación.
# Limpar regras atuais
sudo iptables -F && sudo iptables -X
sudo ip6tables -F && sudo ip6tables -X
# Políticas padrão
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT
# Regras básicas
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A INPUT -m conntrack --ctstate INVALID -j DROP
sudo iptables -A INPUT -p icmp -j ACCEPT
sudo ip6tables -A INPUT -p ipv6-icmp -j ACCEPT
sudo iptables -A INPUT -p tcp -m multiport --dports 22,80,443 -j ACCEPT
# Persistir no boot (salva v4 e v6)
sudo apt-get update && sudo apt-get install -y iptables-persistent
sudo netfilter-persistent save
# Conferir
sudo iptables -S
sudo ip6tables -S
Migración segura de iptables a nftables (traducción y pruebas)
El camino más seguro es traducir las reglas vigentes, validar, probar en staging o en una ventana controlada, y solo entonces activar en el arranque. Haz snapshot/backup antes de tocar el firewall en producción.
Usa las herramientas de translate para obtener un punto de partida y ajústalas para la tabla inet. Valida con 'nft -c' y ten un plan de rollback.
# Exportar regras atuais
sudo iptables-save > /tmp/rules.v4
sudo ip6tables-save > /tmp/rules.v6
# Traduzir para sintaxe nftables (gera base inicial)
sudo iptables-restore-translate -f /tmp/rules.v4 > /tmp/translated-v4.nft
sudo ip6tables-restore-translate -f /tmp/rules.v6 > /tmp/translated-v6.nft
# Opcional: mesclar/ajustar para uma única table inet em /etc/nftables.conf
# Validação e aplicação de teste
sudo nft -c -f /etc/nftables.conf && sudo nft -f /etc/nftables.conf
# Habilitar no boot
sudo systemctl enable --now nftables
Integración con UFW, Fail2ban y acceso SSH
Si usas UFW en 22.04, el backend por defecto es nftables. Evita gestionar nftables y UFW manualmente al mismo tiempo para no generar conflictos. Centraliza la gestión en una sola capa.
Fail2ban tiene acciones tanto para nftables como para iptables; elige la correspondiente al backend que uses.
Al endurecer reglas, protege tu acceso: bastión/port‑knocking/2FA reducen el riesgo de bloqueo, sobre todo en entornos multiusuario.
- Guía de UFW con pasos básicos: ver cómo configurar firewall en Ubuntu con UFW.
- Fail2ban con alertas: consulta configurar fail2ban con webhooks y Telegram.
- Endurece SSH: emplea un bastión según esta guía de bastión SSH en Ubuntu 22.04.
Monitorización y troubleshooting de las reglas de firewall
Para diagnosticar, observa el ruleset cargado, eventos de netfilter y contadores por regla. Activa logs de drop cuando sea necesario. En iptables, usa listados con contadores y verifica sockets en escucha.
Evita aplicar cambios a ciegas. Valida con '-c', usa sesiones paralelas y define un rollback automático siempre que sea posible.
# nftables: ruleset, eventos e logs de serviço
sudo nft list ruleset
sudo nft monitor
sudo journalctl -u nftables -b
# iptables: regras com contadores
sudo iptables -L -n -v
sudo ip6tables -L -n -v
# Portas em escuta/ligação
ss -lntupe | head
Cuándo es mejor cada opción (resumen accionable)
Usa nftables en instalaciones nuevas, cuando necesites reglas unificadas IPv4/IPv6, aplicación atómica y sets para listas grandes. Usa iptables (o iptables-nft) cuando los scripts heredados sean críticos y el equipo necesite continuidad inmediata, planeando una migración gradual.
En ambos casos, estandariza el backend, documenta los flujos y automatiza la aplicación para reducir errores. Consulta también el checklist de seguridad para VPS Linux.
Preguntas frecuentes
¿nftables reemplaza a iptables en Ubuntu 22.04?
nftables es el framework moderno del kernel. En Ubuntu 22.04, los binarios iptables usan por defecto el backend nf_tables (iptables‑nft). iptables‑legacy sigue disponible para compatibilidad, pero la recomendación para configuraciones nuevas es adoptar nftables.
¿Puedo usar iptables y nftables al mismo tiempo?
Evita mezclar backends. Puedes usar iptables‑nft (frente compatible) sobre nf_tables o adoptar nft directamente, pero no mezcles con iptables‑legacy en el mismo host. Define un backend por defecto y estandariza herramientas y automatizaciones para evitar reglas contradictorias.
¿Cómo sé si mi iptables usa el backend nftables?
Ejecuta “iptables -V”: si aparece “(nf_tables)”, estás usando iptables‑nft. También puedes comprobar y alternar con “update‑alternatives --list|--config iptables” y el equivalente para ip6tables. Realiza cambios solo en ventanas controladas.
¿UFW usa nftables o iptables en 22.04?
En Ubuntu 22.04, UFW utiliza el backend nftables. Puedes usarlo como capa de alto nivel para reglas comunes y registrar excepciones, pero evita administrar nftables y UFW manualmente al mismo tiempo en el mismo servidor.
¿Sigue siendo necesario ipset con nftables?
Generalmente, no. nftables tiene sets y mapas nativos con buen rendimiento. En iptables clásico, ipset sigue siendo útil para listas grandes. Si migras a nftables, reestructura las listas como sets y simplifica las reglas de coincidencia.
¿Quieres revisar tu estrategia de firewall en Ubuntu 22.04?
Hablemos de tu situación actual, riesgos y próximos pasos para estandarizar el backend, automatizar reglas y planear una migración segura cuando tenga sentido.
Hablar sobre firewall y migraciónVer también
- Comparativo: ZFS vs LVM+LUKS en VPS con bases de datos — snapshots, rendimiento y recuperación tras fallos
- Análisis práctico — comparativa: Nginx Unit vs PHP‑FPM vs RoadRunner para ejecutar monolitos PHP en contenedores — latencia, throughput y consumo de memoria
- Comparativa: Flyway vs Liquibase vs Sqitch para versionado de base de datos en proyectos PHP/Laravel
- Comparativa: ZFS vs Btrfs para snapshots, replicación y retención incremental en VPS con contenedores Docker — pros y contras prácticos