鉴于我配置了 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=false
Docker 选项,以消除 Dockers 在初始化网络时创建的规则出现这种情况的情况。一旦容器在 UFW 规则中打开其端口,从容器调用任何外部主机都没有问题。
感谢您的任何想法。
答案1
也许你可以在这里看看这些问题:
- Ubuntu ufw:根据每个接口设置规则
- https://askubuntu.com/questions/703896/forward-only-web-traffic-to-another-interface
ufw 默认将规则应用于所有接口。因此必须指定哪条规则应用于哪个接口。
我认为链接中的问题可以更好地解释这一点。