为什么 UFW 不阻塞使用 docker 暴露的端口?

Iva*_*van 9 firewall ufw docker

我已经在我的 ufw 上设置了一些规则,但我认为它并没有阻止任何事情。这是它目前的状态:

~# ufw status verbose

Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
22                         ALLOW IN    Anywhere
80                         ALLOW IN    Anywhere
27015:27115/udp            ALLOW IN    Anywhere
27015:27115/tcp            ALLOW IN    Anywhere
22 (v6)                    ALLOW IN    Anywhere (v6)
80 (v6)                    ALLOW IN    Anywhere (v6)
27015:27115/udp (v6)       ALLOW IN    Anywhere (v6)
27015:27115/tcp (v6)       ALLOW IN    Anywhere (v6)
Run Code Online (Sandbox Code Playgroud)

如您所见,它默认拒绝传入连接并且只允许某些端口。但是,我刚刚在端口 8083 上设置了一个新服务,我可以从外部访问它。为什么会这样?

我已经使用 docker 容器来运行这个新服务,以防万一。

Iva*_*van 7

看起来像

Docker 直接篡改 IPTables

. 可以通过将 --iptables=false 添加到 Docker 守护程序来覆盖此行为。

编辑 /etc/default/ docker并取消注释DOCKER_OPTS 行:

DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4 --iptables=false"

作者总结如下:

  • UFW 不会告诉您 iptables 的真实状态(并不令人震惊,但仍然如此)。
  • 切勿在 Docker 中将 -p 选项(或 -P)用于您不想公开的内容。
  • 仅绑定在环回接口或内部 IP 上。