我有一台装有 Ubuntu 服务器和 UFW 防火墙的服务器。服务器运行 docker,docker 中有两个容器。一个是代理服务器,另一个是其他在端口 42111 上有 WebUI 的服务。此服务无法在 WebUI 上进行身份验证。
因此,我想以某种方式阻止从 Internet 到端口 42111 上的 WebUI 的连接(这是 UFW 的默认设置),但允许来自机器上的代理服务器的连接。
我该如何正确设置它?
答案1
正确的答案是,你应该首先将 UFW 配置为拒绝所有流量,然后仅允许具有以下功能的 IP 地址:
sudo ufw allow in from ipaddress to any port 42111 proto tcp
但这不是最佳做法。您不需要 UFW 来阻止它。正确配置 docker 网络已经可以作为防火墙了。您只需不从 WebUI 的容器公开端口 42111,这样只有代理容器才能通过容器的网络连接到它。
使用容器的 IP 地址也不是一个好习惯,因为它们是自动生成的,而且可能会发生变化。您应该将容器添加到一个新的命名网络,以便它们可以使用其名称相互通信。
答案2
好吧,我不确定我做了什么,但是这句话有帮助。
ufw allow in from 172.17.0.2 to any port 42111 proto tcp
PS 不要忘记,除非使用参数 --iptables=false 启动,否则 Docker 会干扰 UFW