Ubuntu UFW 中与 Docker 容器的端口连接

Ubuntu UFW 中与 Docker 容器的端口连接

请帮助澄清为什么允许下面的连接。

我设置了一台运行 Ubuntu (IP 10.0.0.9) 的 Hyper-V 的 Windows Server (IP 192.168.10.10)。在 Ubuntu 中,我安装了 Docker,然后安装了一些容器:nginx、mysql (3306)、phpMyAdmin (9010) 和 wordpress (9011)。

Ubuntu UFW 的status active允许列表是:22、80、443、9011。请注意,未列出端口 9010。

在我的桌面(IP 192.168.10.20)上,我可以通过浏览器连接到 phpMyAdmin(http://10.0.0.9:9010)。

据我了解,不应允许连接到 9010。

答案1

有两种可能的解决方案可以解决此问题:

一种解决方案是禁用 Docker 的 iptables 功能,方法是将 --iptables=false 添加到 Docker 守护进程配置文件中。但是,这也会禁用 Docker 管理自身网络的能力,并可能导致容器根本无法访问互联网。您需要手动维护 Docker 容器和自定义网络的 iptables 规则,这可能很复杂且繁琐

另一种解决方案是修改 UFW 的配置文件 /etc/ufw/after.rules,并添加一组规则,允许 UFW 将流量转发到 Docker 容器并遵守 UFW 允许列表。此解决方案更复杂,但它将保留 UFW 和 Docker 的功能。您可以在中找到详细步骤和说明这个 Github 仓库

相关内容