使用 FirewallD 成功连接到封闭端口

使用 FirewallD 成功连接到封闭端口

请帮助理解为什么 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

您在防火墙中看不到这些,因为 Docker 本身在防火墙之外打开了端口。

要查看 Docker 正在做什么,请运行:

iptables -L DOCKER
iptables -t nat -L DOCKER

Docker 将自行打开防火墙端口任何端口的容器EXPOSE,除非你明确禁用此功能。它还允许需要相互通信的容器这样做,因此除非你明确禁用此功能,否则你应该保持启用状态。真的知道自己在做什么。

相关内容