Ubuntu/Debian默认使用ufw,CentOS/RHEL/Rocky/AlmaLinux默认使用firewalld;二者不可混用,需通过systemctl list-unit-files确认启用服务,再对应使用ufw或firewall-cmd管理。

确认当前系统用的是 ufw 还是 firewalld
别一上来就敲命令,先看清楚系统默认用哪个——Ubuntu/Debian 默认是 ufw,CentOS/RHEL/Rocky/AlmaLinux 默认是 firewalld。混用会导致规则不生效甚至冲突。
执行 systemctl list-unit-files | grep -E "(ufw|firewalld)" 可快速定位:如果 ufw.service 是 enabled 或 static,优先走 ufw;如果 firewalld.service 是 enabled,则用 firewall-cmd。
-
sudo ufw status返回Inactive?说明没启用,也可能是根本没装 -
sudo firewall-cmd --state返回not running?说明 firewalld 没启动,不是“没装”,是服务停了 - Debian 12+、Ubuntu 22.04+ 默认预装 ufw,但状态为 inactive;CentOS 8+ 默认预装 firewalld,但可能被手动 disable
ufw 放行端口的正确写法和常见翻车点
ufw 命令看着简单,但漏掉协议或权限会导致规则无效。比如只写 sudo ufw allow 8080,ufw 默认只开 TCP,而你的服务跑在 UDP 上,就白忙活。
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
- 必须显式指定协议:
sudo ufw allow 8080/tcp或sudo ufw allow 53/udp - 开放端口范围要写成
sudo ufw allow 8000:8010/tcp,不能用短横线(8000-8010是错的) - 规则添加后不会自动生效,得确认
sudo ufw status verbose输出里有对应条目,且状态是Active - 如果 SSH 端口不是默认 22(比如改成了 2222),ufw 启用前必须先加规则:
sudo ufw allow 2222/tcp,否则启用后立刻失联
firewalld 放行端口必须带 --permanent 且 reload
firewalld 的临时规则(不加 --permanent)在重启或 systemctl restart firewalld 后就消失。线上服务千万别只加临时规则。
- 永久放行单个端口:
sudo firewall-cmd --permanent --add-port=3306/tcp - 永久放行端口段:
sudo firewall-cmd --permanent --add-port=9000-9010/tcp - 加完必须 reload:
sudo firewall-cmd --reload,否则规则只是写进了配置文件,没加载进运行时 -
firewall-cmd --list-ports显示的是当前运行时已开放的端口(含临时+永久),而firewall-cmd --permanent --list-ports只显示永久配置里的端口,二者不一致说明 reload 漏了
验证端口是否真被放行,别只信命令输出
很多用户执行完命令就以为搞定了,结果外网还是连不上。防火墙只是其中一环,得逐层验证。
- 先查本机监听:
ss -tlnp | grep :端口号,确认服务确实在 listen,且绑定的是0.0.0.0或具体公网 IP,不是127.0.0.1 - 再查防火墙是否放行:
sudo ufw status numbered或sudo firewall-cmd --list-all,确认端口出现在输出里 - 云服务器还要看安全组(阿里云/腾讯云/AWS 控制台),安全组没开,操作系统防火墙再怎么配也没用
- 最后从外部测试:
telnet 公网IP 端口号或nc -zv 公网IP 端口号,别只在本机curl localhost:端口
最常被忽略的是区域(zone)配置——firewalld 默认 zone 是 public,但如果你用 firewall-cmd --set-default-zone=internal 改过,又没在 internal 区域里加端口,那 --zone=public 的规则就完全不起作用。

















