巨坑!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
未被允许访问的端口公网无法访问了。
评论