1
AoEiuV020 2021-06-02 11:17:09 +08:00
firewalld 也是用的 iptables,可以直接 iptables -vnL 检查一下当前实际使用中的配置,是不是默认放行了或者其他问题,
|
2
julyclyde 2021-06-02 11:18:34 +08:00
用 iptables-save 查看配置比较好
-L 显示的形式比较奇怪 |
3
dzdh 2021-06-02 12:01:50 +08:00
要看有没有接管接口
如果没有 firewall-cmd --zone=X --add-interface=ethX |
4
davoola OP |
6
davoola OP @dzdh 执行 firewall-cmd --get-active-zones 显示如下结果:
docker interfaces: br-25239aa44ec6 docker0 public interfaces: ens160 这是不是有接管接口? 在 iptables -vnL 中有 9000 接口 4 200 ACCEPT tcp -- !br-25239aa44ec6 br-25239aa44ec6 0.0.0.0/0 172.18.0.2 tcp dpt:9000 |
8
davoola OP @dzdh 现在执行 firewall-cmd --zone=public --add-interface=eth160 吗?
|
9
raysonx 2021-06-02 12:37:46 +08:00
br-25239aa44ec6 这个 bridge 名看起来像是 docker 创建的。
Docker 默认情况下会自己插入防火墙规则放行-p 参数指定的端口。 |
10
davoola OP @raysonx 对,服务器装好后,后面上线的产品都是商业公司部署的,刚刚发现在他们装了三个容器( PHP,mysql 和 nginx),分别开放了三个端口 9000,3306 和 80.查看端口映射时显示结果是
9000/tcp -> 0.0.0.0:9000 9000/tcp -> :::9000 3306/tcp -> 0.0.0.0:3306 3306/tcp -> :::3306 80/tcp -> 0.0.0.0:80 80/tcp -> :::80 是不是映射时,把 9000 和 3306 这两个端口的地址 0.0.0.0 改成本地 localhost 或者 127.0.0.1 ?除了 80 需要对外服务,这两个端口应该都是容器与服务器本身之间的通讯吧。 |
11
davoola OP 在网上看到一段话:
>>> 默认情况下, docker 启动后参数中如果加了端口映射, 就会自动将端口开放给所有网络设备访问,并且这种情况下即使在本机的系统防火墙中加规则也无效, 因为 docker 会自动添加一个优先级最高的针对这个映射端口全开放规则 参考: 1.https://www.fullstackmemo.com/2019/01/10/standalone-docker-firewall-set/ 2.https://www.binss.me/blog/docker-pass-through-system-firewall/ |
14
davoola OP 问题解决,谢谢各位
参考: https://blog.csdn.net/Jailman/article/details/111591811 禁止 docker 管理防火墙 修改 /etc/docker/daemon.json { “iptables”:false } 重启 docker |