从 iptables 迁移到 firewalld 并使用 firewall-cmd 更新规则后,我的服务被正确过滤。然后我使用 Docker 将所有服务移动到容器中,并使用 docker-compose 运行所有内容。
我的默认区域是“公共”。我已经手动添加了 docker0、我的外部(以太网)接口,以及 Docker 容器似乎与外界通信的接口(br-304604a31e79)到“公共”区域。我已经运行命令将接口移动到带有和不带有--permanent
标志的“公共”区域。
当我nmap
用来扫描我的服务器时,在 Docker 容器中运行的服务仍然可以访问(仍然是“开放的”,而不是“过滤的”)。
为什么 firewalld 不过滤在我的 Docker 容器中运行的服务?
Docker 有自己的防火墙,只有在配置容器时明确公开的端口才会在防火墙中打开。只有对外暴露的端口需要在docker-compose.yml中设置。您定义的容器始终可以相互通信。