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

mhe*_*ier 6 firewall iptables 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 admin@mydomain.com -L 8000:localhost:8000.

小智 6

也有同样的场景。发现从 lo 到 docker0 的数据包被 CSF 的 OUTPUT 规则集阻止。

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