要确认UFW放行端口、拒绝连接及默认策略,须执行sudo ufw status numbered查看带序号规则,sudo ufw status verbose获取Default: deny (incoming)/allow (outgoing)等默认行为,并用sudo ufw show raw或sudo nft list ruleset验证规则是否真实注入内核。

要快速确认 Ubuntu 系统中 UFW 防火墙当前放行了哪些端口、拒绝了哪些连接、默认策略如何,不能只看一句 status 就以为万事大吉——因为“active”只代表规则已加载,不等于你预期的规则真正在生效。
基础状态与规则概览
执行 sudo ufw status,这是最直接的入口命令。输出中若显示 【Status: active】,说明防火墙策略已启用;若为 inactive,则后续所有规则检查都无意义,需先启用。
这一步会列出 To(目标端口/服务)、Action(ALLOW/DENY)、From(来源)三列,但不显示规则编号、插入顺序或默认策略细节。
如果输出为空或只显示“Status: inactive”,请立即停止后续操作,先运行 sudo ufw enable 并确保 SSH 端口已放行,否则远程连接可能中断。
查看带编号的规则列表
执行 sudo ufw status numbered,它会在每条规则前加上数字序号,比如:
[ 1] 22/tcp ALLOW IN Anywhere
[ 2] 80/tcp ALLOW IN Anywhere
[ 3] 443/tcp ALLOW IN Anywhere
编号决定了匹配优先级:UFW 按数字从小到大逐条匹配,【第一条匹配即终止】,后续更宽松的规则(如 allow from 192.168.0.0/16)若排在 deny 规则之后,将完全失效。
删除某条规则只需运行 sudo ufw delete 2(删除编号为 2 的规则),无需重写整套配置。
Ubuntu 26.04 LTS(代号“Resolute Raccoon”)是Canonical于2026年4月23日发布的下一代长期支持版操作系统,提供长达10年的技术支持。它搭载Linux 7.0内核与GNOME 50桌面环境,全面转向Wayland协议,并引入Rust重写的核心工具以增强安全性。官方提供适用于AMD64和ARM64架构的桌面及服务器ISO镜像,是追求前沿技术与极致稳定的开发者
查看详细策略与默认行为
运行 sudo ufw status verbose,它会额外显示 Default: deny (incoming)、Default: allow (outgoing) 这类关键信息。
注意:Ubuntu 默认对入站流量是 deny,但出站流量默认全放行——很多人误以为“开了防火墙就安全了”,却忽略了恶意程序仍可主动外连。
如果你没手动设置过,默认 incoming 是 deny,但这条策略实际是兜底规则,仅在没有任何显式 ALLOW 匹配时才触发。它不会出现在 ufw status 的主列表里,必须用 verbose 才能看到。
直击内核层:验证规则是否真正注入
方法一:查看原始 iptables/nftables 链
执行 sudo ufw show raw,输出的是 UFW 编译后写入内核的真实规则链,例如:
### RULES ###<br> -A ufw-before-input -p tcp --dport 22 -j ACCEPT
只要这里出现对应端口的 ACCEPT 或 DROP 行,就证明该规则已进入网络栈底层。
方法二:绕过 UFW 直查 nftables(Ubuntu 22.04+ 默认后端)
运行 sudo nft list ruleset | grep -A5 'hook input',定位到 input 链中的 ufw-* 表项。若完全无输出,说明 UFW 虽显示 active,但规则未成功载入内核——常见于 ufw reload 失败或 /etc/ufw/before.rules 文件语法错误。
方法三:用 iptables 兼容命令交叉验证
执行 sudo iptables -L INPUT -n -v | head -15,观察 pkts 字段是否开始计数。如果某条 ALLOW 规则的 pkts 始终为 0,而你确认有流量打到该端口,那很可能是规则顺序错、协议写错(如写了 udp 却测试 tcp),或被更靠前的 REJECT 规则截断。
快速筛查开放端口
执行 sudo ufw status | grep -i allow,能瞬间筛出所有被放行的服务或端口,适合运维巡检。
若结果为空,不代表没开任何端口——有可能你只设置了应用配置文件(如 sudo ufw allow 'Nginx Full'),此时需改用 sudo ufw app list 查看已启用的应用简档,再用 sudo ufw app info 'Nginx Full' 查其实际映射的端口。
别依赖 netstat 或 ss 查“监听端口”来反推防火墙状态,因为服务监听 ≠ 防火墙放行。一个端口可能被 nginx 监听,却被 ufw DENY 挡在门外。

















