Inicio » Error iptables failed: No chain/target/match by that name en Docker
Sistemas y Servidores

Error iptables failed: No chain/target/match by that name en Docker

✨ Respuesta Rápida

El error iptables failed: iptables --wait -t nat -A DOCKER ... No chain/target/match by that name se produce cuando el cortafuegos del sistema (UFW, Firewalld o iptables) se reinicia o recarga mientras el daemon de Docker está activo, eliminando las cadenas nativas DOCKER y DOCKER-USER de la tabla NAT.

El error iptables failed: iptables --wait -t nat -A DOCKER ... No chain/target/match by that name se produce cuando el cortafuegos del sistema (UFW, Firewalld o iptables) se reinicia o recarga mientras el daemon de Docker está activo, eliminando las cadenas nativas DOCKER y DOCKER-USER de la tabla NAT.

Al intentar mapear puertos de red en un nuevo contenedor (-p 8080:80), Docker falla porque no encuentra la infraestructura de enrutamiento necesaria.

El Diagnóstico Rápido

Causa
Reinicio de UFW o Firewalld después de Docker
Solución
Reiniciar el servicio de Docker (sudo systemctl restart docker)
Causa
Conflicto entre iptables heredado y nftables
Solución
Configurar Docker o el sistema para usar iptables-legacy o un backend coherente
Causa
Módulos de kernel iptables no cargados
Solución
Cargar los módulos con sudo modprobe ip_tables && sudo modprobe iptable_nat

La Solución Paso a Paso

Reinicia el servicio de Docker para regenerar las cadenas La solución inmediata y más común es forzar a Docker a reconstruir sus reglas en la tabla de filtrado de paquetes:

BASH
sudo systemctl restart docker

Una vez reiniciado, prueba iniciar tu stack de contenedores:

BASH
docker compose up -d

Configura el orden de inicio entre UFW y Docker Si usas Ubuntu/Debian con UFW, asegúrate de que UFW cargue antes que Docker. En caso de reiniciar UFW con sudo ufw reload, acostúmbrate a encadenar el reinicio de Docker:

BASH
sudo ufw reload && sudo systemctl restart docker

Verifica la compatibilidad con nftables En distribuciones modernas (Debian 12+, Arch Linux, RHEL 9), el sistema operativo utiliza nftables por defecto. Si Docker intenta comunicarse con iptables-legacy, se producirán desajustes. Comprueba la alternativa activa:

BASH
sudo update-alternatives --config iptables

Selecciona la opción recomendada para tu distribución (usualmente iptables-nft en sistemas actuales).

Carga los módulos de red de Linux Si estás en un VPS o contenedor Proxmox (LXC), es posible que los módulos NAT del kernel no se hayan cargado automáticamente:

BASH
sudo modprobe ip_tables
sudo modprobe iptable_nat
sudo modprobe iptable_filter

Consejo de Prevención

Prácticas de seguridad recomendadas:

  • Uso de la cadena DOCKER-USER: Nunca agregues reglas de firewall personalizadas directamente a la cadena DOCKER. Añádelas a la cadena DOCKER-USER para que no se borren en cada reinicio.
  • Configuración de daemon.json: Puedes deshabilitar la manipulación automática de iptables en Docker ("iptables": false en /etc/docker/daemon.json) si prefieres gestionar el enrutamiento manualmente con Nginx Proxy Manager o Traefik.