解决docker容器端口和防火墙的冲突
前言:
在没有安全组的情况下使用 Docker 进行应用部署时,我们可能会遇到一个问题:Docker 会绕过防火墙规则,使得容器内开放的端口可以直接从外部访问。这可能对我们服务器的安全性构成威胁。本文旨在提供一种解决这个问题的方法,即通过修改 Docker 的默认行为,防止其直接修改 IPTABLES 规则。
起因
在 Docker 的默认配置中,Docker 会自动调整 iptables
规则以便容器与外部网络的通信。这一过程并不考虑宿主机已有的防火墙设置,导致 Docker 容器的端口映射可能绕过了我们对防火墙的配置。此时,即使我们在宿主机上设置了防火墙规则以禁止特定端口的访问,只要 Docker 容器映射到了这个端口,外部网络依然能够访问到。
解决方法
打开 Docker 的配置文件/etc/docker/daemon.json
(没有可以新建),并添加此规则:
{
"iptables": false
}
保存并重启docker:
sudo systemctl restart docker
或者直接用自动化脚本:
# 检查 /etc/docker 目录是否存在,如果不存在则创建
[ ! -d /etc/docker ] && sudo mkdir /etc/docker
# 添加 "iptables": false 到 Docker 配置文件
echo '{
"iptables": false
}' | sudo tee /etc/docker/daemon.json
# 重新启动 Docker 服务
sudo systemctl restart docker
这样,Docker 就不会再自动调整 iptables 规则,我们就可以通过防火墙来控制所有的端口访问了。
本文作者:帅屁
本文链接:解决docker容器端口和防火墙的冲突 - https://shuai.plus/web/111.html
版权声明:如无特别声明,本文即为原创文章,仅代表个人观点,版权归 帅屁 所有,未经允许不得转载!