nftables vs iptables en Ubuntu 22.04: cuál usar y ejemplos prácticos

Por · Publicado el · 9 min de lectura

Cables de red conectados a un panel de parcheo en un rack de servidores
Conectores y cables de red en un rack, apropiado para contenidos sobre firewall e infraestructura. Foto: Brett Sayles / Pexels

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.

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ón

Ver también