
Ayúdenme a comprender por qué FirewallD me permite conectarme a un puerto pero bloquea el segundo.
Hay un contenedor Docker con transmisión:
5cf144eed6f2 maksim77/transmission "/bin/sh -c 'transmis" 14 hours ago Up 16 minutes 0.0.0.0:9091->9091/tcp, 0.0.0.0:51413->51413/tcp transmission
Ambos puertos (9091 y 51413) no figuran en las reglas de FirewallD:
root@host:maksim #firewall-cmd --list-all-zones | grep active
public (default, active)
trusted (active)
root@host:maksim #firewall-cmd --list-all --zone trusted
trusted (active)
interfaces: docker0
sources:
services:
ports: 4243/tcp
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
root@host:maksim #firewall-cmd --list-all --zone public
public (default, active)
interfaces: enp9s0
sources:
services: dhcpv6-client ftp http ssh
ports: 41387/tcp 1900/udp 50213/tcp 8200/tcp
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
¡Pero! La conexión se realizó correctamente para el puerto 9091 pero no para el puerto 51413. El puerto 51413 solo está disponible para 127.0.0.1
Respuesta1
No los ve en firewalld porque Docker abre los puertos él mismo, fuera de firewalld.
Para ver qué está haciendo Docker, ejecute:
iptables -L DOCKER
iptables -t nat -L DOCKER
Docker lo haráabrir los puertos del firewallpara cualquier puerto de sus contenedores EXPOSE
, a menos que lo desactive explícitamente. También permite que los contenedores que necesitan comunicarse entre sí lo hagan, por lo que debes dejar esto habilitado a menos queen realidadsaber lo que estás haciendo.