在 docker-compose 网络和一个外部服务器中打开 iptables

在 docker-compose 网络和一个外部服务器中打开 iptables

我正在尝试使用包含 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 规则和端口映射。

相关内容