Skip to content

💡 实战经验

永远先放行 SSH,最后改默认策略

不管用 UFW 还是 firewalld,第一步永远是 ufw allow 22/tcp 或 firewall-cmd --add-service=ssh。然后才改默认策略为 deny。顺序反了你就被锁在门外了。

ufw enable 之前先开另一个终端

SSH 连着服务器执行 ufw enable,如果 SSH 规则没写对——恭喜你,连接断了,进不去了。开两个终端,一个改规则,一个验证 ufw status 确认 SSH 仍然放行。

Docker 和 UFW/firewalld 是两条平行线

Docker 直接操作 iptables,完全绕过了 UFW 和 firewalld。你在 UFW 里封了 8080 端口,但 Docker 容器的 8080 仍然对外开放。要控制 Docker 端口,优先在 DOCKER-USER 链里操作。禁用 Docker 的 iptables 管理属于高级方案,会影响端口映射、NAT 和容器网络,除非你准备自己维护这些规则,否则不要作为默认做法。

规则测试用临时规则

不确定一条规则是否会影响正常服务?先用临时规则测试:ufw deny 3306/tcp 测试完 ufw delete deny 3306/tcp。firewalld 里不加 --permanent 就是临时的,重启自动消失。

日志是排错的眼睛

防火墙默默丢了包,你不知道为什么。出问题时第一件事开日志ufw logging highfirewall-cmd --set-log-denied=all。看到日志里的 DROP 记录,才能定位是哪条规则在作怪。