真是日了……Docker部署的镜像直接把端口暴露在公网上,设置iptables屏蔽了,拿浏览器试了一下,居然iptables没起作用。
Docker这厮自己也会写iptables,导致用户手动设置的iptables条目失效。那解决思路就明确了:禁止Docker修改iptables!具体做法:
Ubuntu
在文件/etc/default/docker里加一行,然后重启Docker:
DOCKER_OPTS="--iptables=false"
CentOS7
mkdir /etc/systemd/system/docker.service.d
vim /etc/systemd/system/docker.service.d/docker.conf
添加行:
ExecStart=
ExecStart=/usr/bin/dockerd --iptables=false
重启相关服务:
systemctl daemon-reload
systemctl restart docker
更多参考
无法访问外网了?
https://www.binss.me/blog/docker-pass-through-system-firewall/
还是希望保留Docker写iptables的功能:
https://chaifeng.com/to-fix-ufw-and-docker-security-flaw-without-disabling-iptables/