我正在尝试使用包含 mysql 服务器的 docker compose 部署系统。该服务器在同一网络中的 docker 容器之间共享。
我需要从我们网络中的特定外部服务器访问 mysql db,因此我在 docker compose 文件中发布了 mysql 端口(3306)。
但出于安全考虑,我想阻止任何尝试访问此端口的其他 IP。
我尝试了许多 iptables 规则,它们要么阻止了 docker-compose 中的容器,要么允许其他服务器访问该端口。
ps 我会在mysql服务器内更改所有用户权限,但是阻止端口是我们要做的第一件事。
答案1
您可以在 DOCKER-USER 表中配置 iptables 条目。这在 docker 之外完成。例如,如果您担心 eth0 接口上来自 10.0.0.0/24 以外的任何网络对端口 3306 的请求:
iptables -I DOCKER-USER -i eth0 ! -s 10.0.0.0/24 -p tcp \
-m conntrack --ctorigdstport 3306 -j DROP
请注意,conntrack
需要 conn 跟踪原始目标端口而不是普通的 tcp 端口规则来处理 NAT 规则和端口映射。