巨坑!docker 无视系统防火墙,在防火墙端口未开启的情况下允许公网访问,造成重大安全隐患。 官方无视该问题:https://github.com/moby/moby/issues/4737 万能的网友通过以下方法解决:
修改docker配置文件
新增配置 文件路径 /etc/docker/daemon.json 禁止docker修改iptable配置
"iptables": false启用封包转发
ufw default allow routed修改防火墙配置
文件路径 /etc/ufw/before.rules 在文件最后新增
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING ! -o net -s 172.18.0.0/16 -j MASQUERADE
COMMIT注:网桥IP:172.18 通过命令docker network inspect net名称查看,配置错误宿主机无法访问映射的docker端口。
运行容器访问宿主机端口
ufw allow from 172.18.0.0/16注:如果不设置容器没有links配置是不能访问到其他容器端口的,也不能访问到宿主机端口。
重启ufw
ufw disable
ufw enable重启docker
systemctl daemon-reload
systemctl restart docker未被允许访问的端口公网无法访问了。
评论