linux防火墙无统一开关命令,需按发行版匹配工具:firewalld(centos/rhel)用systemctl启停并firewall-cmd reload;ufw(ubuntu/debian)用ufw enable/disable;iptables(arch等)需start/stop服务并手动保存规则,操作前须用systemctl list-unit-files和is-active确认当前服务。

先确认当前用的是哪个防火墙
打开终端,依次运行以下命令:
- `sudo systemctl list-unit-files | grep -E "(firewalld|ufw|iptables)"` —— 看哪些服务被安装并设为启用
- `sudo systemctl is-active firewalld ufw iptables` —— 查哪个正在运行(只有一项会显示 active)
- `cat /etc/os-release | grep -E "(NAME|VERSION_ID)"` —— 辅助判断发行版(如 CentOS/RHEL/Fedora 多用 firewalld;Ubuntu/Debian 默认带 ufw)
例如:输出中 firewalld.enabled 且 is-active 返回 active,说明当前生效的是 firewalld。
按类型执行开启或关闭
● firewalld(CentOS 8+、Fedora、RHEL、部分麒麟桌面版)
- 开启:
sudo systemctl start firewalld && sudo systemctl enable firewalld - 关闭:
sudo systemctl stop firewalld && sudo systemctl disable firewalld - 注意:规则默认不持久,修改后需加
--permanent参数,并运行sudo firewall-cmd --reload生效
● ufw(Ubuntu、Debian、Linux Mint)
- 开启:
sudo ufw enable(自动加载策略、启用内核模块) - 关闭:
sudo ufw disable(立即清空所有规则链,卸载 netfilter 模块) - 建议开启前先设安全基线:
sudo ufw default deny incoming
● iptables(Arch Linux、部分定制系统或旧版 CentOS 6)
- 开启:
sudo systemctl start iptables(前提是已配置好/etc/iptables/iptables.rules) - 关闭:
sudo systemctl stop iptables && sudo systemctl disable iptables - 关键:规则不会自动保存,重启即丢失。需手动持久化:
• Debian/Ubuntu:sudo iptables-persistent save
• RHEL/CentOS:sudo service iptables save
• Arch:sudo iptables-save > /etc/iptables/iptables.rules
操作后务必验证
别只信命令没报错,要亲眼确认:
- 服务状态:
sudo systemctl is-active firewalld(返回active或inactive) - 规则效果:
sudo ufw status、sudo firewall-cmd --state或sudo iptables -L -n - 关键端口连通性:
sudo ss -tuln | grep :22(检查 SSH 是否仍可访问)
远程管理服务器时,切忌未放行 SSH 就直接禁用防火墙——容易被锁在外。











