Docker 发布的端口,ufw 管不住
ufw status 显示只放行了 22 和 80,docker run -p 3306:3306 之后,外网直接能连 3306。
因为 Docker 在 iptables 的 nat 表里加 DNAT,流量在 FORWARD 链被放行,根本不经过 ufw 的 INPUT 规则。ufw 看到的“拒绝入站”对容器端口无效。
三种处理:
一,端口只绑回环:-p 127.0.0.1:3306:3306。最简单,也最容易被忘。
二,在 DOCKER-USER 链里加规则,这是 Docker 官方留的钩子。
三,用 iptables=false 让 Docker 不碰防火墙,自己配 NAT——麻烦,不推荐。
检查方法:iptables -t nat -L DOCKER -n,看有哪些端口被 DNAT 出去。