当默认传出策略为“拒绝”时,UFW 会阻止 Docker 接口

当默认传出策略为“拒绝”时,UFW 会阻止 Docker 接口

鉴于我配置了 UFW

ufw default deny incoming
ufw default deny outgoing

并且只允许某些端口进行传出和传入连接。它工作正常,除非在同一台机器上的不同接口之间进行连接,例如为 Docker 的桥接网络创建的接口。(我实际上还没有检查任何其他接口)。

例如我有一个 Docker 容器

docker run --network some-net -p 127.0.0.1:50100:80 image-name

现在我无法与容器建立连接,因为它超时并显示以下消息:

$ curl localhost:50100
curl: (56) Recv failure: Connection reset by peer

allow我可以通过将传出策略更改为,或添加规则以允许来解锁连接输出来自特定接口的连接:

ufw allow out on br-03a38c6b9c51

UFW配置如下:

DEFAULT_INPUT_POLICY="DROP"
DEFAULT_OUTPUT_POLICY="DROP"
DEFAULT_FORWARD_POLICY="ACCEPT"
DEFAULT_APPLICATION_POLICY="SKIP"

我已经尝试添加--iptables=falseDocker 选项,以消除 Dockers 在初始化网络时创建的规则出现这种情况的情况。一旦容器在 UFW 规则中打开其端口,从容器调用任何外部主机都没有问题。

感谢您的任何想法。

答案1

也许你可以在这里看看这些问题:

  1. Ubuntu ufw:根据每个接口设置规则
  2. https://askubuntu.com/questions/703896/forward-only-web-traffic-to-another-interface

ufw 默认将规则应用于所有接口。因此必须指定哪条规则应用于哪个接口。

我认为链接中的问题可以更好地解释这一点。

相关内容