为什么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) 

正如你所看到的,它默认拒绝传入连接,只允许某些端口。 但是,我仍然在端口8083上设置了一个新的服务,我可以从外部访问它。 为什么这样?

我使用docker集装箱来运行这个新的服务,以防万一。

看起来像

Docker直接用IPTables篡改

。 可以通过向Docker守护进程添加–iptables = false来覆盖此行为。

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

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

作者总结如下:

  • UFW不会告诉你iptables的真实状态(不令人震惊,但仍然)。
  • 切勿在Docker中使用-p选项(或-P)来select不想公开的东西。
  • 只绑定在回送接口或内部IP上。