
Пожалуйста, помогите понять, почему FirewallD позволяет мне подключаться к одному порту, но блокирует второй.
Есть Docker-контейнер с передачей:
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
Оба порта (9091 и 51413) не указаны в правилах 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:
Но! Соединение успешно для порта 9091, но не для порта 51413. Порт 51413 доступен только для 127.0.0.1
решение1
Вы не увидите их в firewalld, потому что Docker открывает порты самостоятельно, за пределами firewalld.
Чтобы увидеть, что делает Docker, выполните:
iptables -L DOCKER
iptables -t nat -L DOCKER
Докер будетоткрыть порты брандмауэра самдля любого порта ваши контейнеры EXPOSE
, если вы явно не отключите это. Это также позволяет контейнерам, которым нужно общаться друг с другом, делать это, поэтому вам следует оставить это включенным, если выДействительнознай, что делаешь.