仅在 csf 防火墙后面本地运行 docker 容器

仅在 csf 防火墙后面本地运行 docker 容器

我只想在远程 Ubuntu 服务器上的 csf 防火墙后面本地访问 docker 容器。我更改了DOCKER设置选项以/etc/csf/csf.conf允许1docker 更改 iptable 规则。

如果我使用 启动容器-p 8000:8000,端口8000将暴露给全世界(我可以使用 访问网站mydomain.com:8000,正如预期的那样,但这不是我想要的)。如果我使用 启动容器,则-p 127.0.0.1:8000:8000无法使用 访问它mydomain.com:8000(这很好),但在这两种情况下,调用localhost:8000都会导致ERR_EMPTY_RESPONSEChrome 或curl: (52) Empty reply from server终端出现错误。

尝试了不同的容器和不同的端口。禁用 csf 后,它就可以正常工作,不会出现空回复错误,因此这一定与 csf 有关。

如何配置 csf 以仅在本地通过特定端口公开和访问 docker 容器?

旁注:我正在使用 远程在服务器上工作。ssh [email protected] -L 8000:localhost:8000

答案1

遇到了同样的情况。发现从 lo 到 docker0 的数据包被 CSF 的 OUTPUT 规则集阻止。

通过将“docker0”添加到 ETH_DEVICE_SKIP 来解决,这会导致 CSF 向此接口的 INPUT 和 OUTPUT 链添加一条全面的 ACCEPT 规则。这应该不是问题,因为据我所知,docker0 永远不应该绑定到物理接口,但拥有更多 Docker 经验的人可能会知道情况并非如此。

相关内容