UFW 是什么
一句话总结
UFW(Uncomplicated Firewall)是 Linux 上简化 iptables 配置的工具,用几条规则就能控制端口放行和阻止。曾因默认 deny incoming 导致我们 n1 VPS 的 80/443 端口被锁,引发 Cloudflare 522 故障。
🤔 为什么会有它 / 解决了什么问题
iptables 规则语法复杂、配置门槛高(netfilter 链式判断、表顺序敏感)。UFW 封装了最常用的防火墙场景成简单命令,让非网络工程师也能管理端口开放。
🔍 具体原理 / 运作逻辑
UFW 将用户配置编译为底层 iptables 规则。ufw enable 启用时自动追加规则到 INPUT/OUTPUT/FORWARD 链。配置存储在 /etc/ufw/ 目录下。
更硬核的技术细节(点击展开)
ufw default deny incoming+ufw allow 80/tcp→ UFW 生成 iptables 规则:INPUT 链先处理ctstate ESTABLISHED(放行已建立连接),再处理ufw-user-input链(用户定义的允许规则),最后默认 DROP 其余入站。
🧭 什么情况下会看到 / 什么场景会遇到它
- 新 VPS 初始化后
ufw enable放行 SSH(22)和 Web 端口(80/443) - n1 VPS 的 522 事故:
ufw enable后忘了ufw allow 80/tcp和443/tcp,Cloudflare 连不上源站 - 排查端口不通:先
ufw status确认规则,而不是直接怀疑应用层
🛠️ 怎么上手 / 在哪操作
sudo ufw status 查看规则、sudo ufw allow 80/tcp 放行端口、sudo ufw enable 启用(危险——确保 SSH 端口已放行再执行)。
⚖️ 副作用 / 代价 / 取舍
ufw enable 默认 deny incoming——容易把自己锁在外面。如果 SSH 端口没先 ufw allow 22/tcp,远程连接直接断。n1 的 522 事故就是典型:启用了防火墙但没放行 80/443。
🕰️ 来历
- 谁提出/创造的:Ubuntu 团队(Canonical Ltd.)
- 什么时候出现的:2008 年随 Ubuntu 8.04 LTS 首次引入
🔗 关联 / 经常一起出现的概念
- iptables:UFW 底层实际调用的是 iptables,UFW 只是前端封装
- Cloudflare Tunnel:隧道绕过防火墙——Tunnel 只做出站连接,不需要放行进站端口
⚠️ 注意事项 / 常见误区
ufw enable 默认 deny all incoming。先 ufw allow 22/tcp 再 ufw enable ——这个顺序救过无数人的 SSH 连接。如果已经锁了,只能通过 VPS 控制台的 VNC/noVNC 进去修复。
📎 记忆锚点
UFW 就是防火墙界的”傻瓜相机”——比 iptables 简单一百倍,但一不留意也能把自己拍死(锁在外面的那种死)。
📝 更新日志
| 日期 | 改动 | 原因 |
|---|---|---|
| 2026-07-13 | 首次创建 | - |