UFW status显示inactive时不可直接enable,须先确认是否预装、清除iptables冲突、设置默认策略deny incoming/allow outgoing,并显式放行SSH端口,否则启用即失联。

ufw status 显示 inactive 就别急着 enable
看到 ufw status 输出 Status: inactive,第一反应不是立刻敲 sudo ufw enable,而是先确认三件事:UFW 是否已安装、是否有冲突防火墙、是否已设默认策略。Ubuntu 24.04+ 和 Debian 12+ 虽预装 UFW,但默认禁用;Kali 也常预装但未启用。执行 sudo ufw status verbose 可一次看到状态、默认策略、日志开关和规则列表。若提示 command not found,说明真没装,得先 sudo apt install ufw -y。更关键的是,如果系统里还跑着 iptables 或 nftables 规则,UFW 启用后可能行为异常——必须先停掉:sudo systemctl stop iptables 并禁用自启,否则规则会打架。
ufw default deny incoming 必须在 enable 前执行
这条命令不是可选项,是保命线。UFW 的默认策略是“全放行”,也就是不设默认策略时,ufw enable 相当于把裸机直接扔到公网。所以务必按顺序操作:sudo ufw default deny incoming(拒绝所有入站)、sudo ufw default allow outgoing(允许所有出站),再加 SSH 规则,最后才 sudo ufw enable。漏掉这一步,启用瞬间就可能失联。注意:这条命令只设置策略模板,不会立即生效,也不影响已有连接,但它决定了后续每条 allow 规则之外的所有流量命运。
ufw allow 8080 不等于开放了 8080 端口
只写 sudo ufw allow 8080 是常见翻车点。UFW 默认只开 TCP,如果你的服务实际走 UDP(比如 DNS、某些监控探针),这条规则完全无效。必须显式声明协议:sudo ufw allow 8080/tcp 或 sudo ufw allow 53/udp。端口范围也不能用短横线,8000-8010/tcp 是错的,正确写法是 8000:8010/tcp。另外,别依赖服务名如 http 或 OpenSSH ——它们只是指向 /etc/ufw/applications.d/ 下的配置文件,而精简系统或自定义镜像中这些文件可能缺失。直接写端口号+协议最可靠。
云服务器上 ufw 规则可能根本收不到包
在阿里云、腾讯云或 AWS 上配完 UFW 还连不上?大概率是卡在安全组了。云平台的安全组是网络入口的第一道过滤器,它在数据包到达操作系统前就做了拦截。UFW 是第二道,运行在内核网络栈里。如果安全组没放行目标端口(比如没开 2222),UFW 根本看不到这个连接请求,ufw status 里自然也不会有匹配记录。因此,线上环境必须分两层控制:安全组只放开最小必要端口+来源 IP(例如仅允许公司出口 IP 访问 SSH),UFW 则负责更细粒度的逻辑,比如禁止某内网 IP 访问 Redis 的 6379 端口。两者配合,不能互相替代。


















