检查权限设置是否正确
很多人在配置防火墙时习惯用普通账户操作,结果改完规则点保存却没反应。Linux 系统下 iptables 或 firewalld 需要 root 权限才能写入配置。试着在命令前加上 sudo,比如 sudo firewall-cmd --add-port=80/tcp,否则修改不会生效。
Windows 用户也一样,哪怕你是管理员账号,也要右键以“管理员身份运行”高级安全防火墙界面。之前有同事调试远程访问,改了半天端口放行规则,重启后全没了,最后发现根本就没权限写入。
确认配置文件是否被锁定
有些服务器上装了 SELinux 或 AppArmor,这类安全模块会限制程序对系统文件的写入。如果你用的是 CentOS,执行 sestatus 查看状态,临时关闭试试:
sudo setenforce 0如果这时候能保存了,说明是它拦着你。别直接永久关闭,应该调整策略规则,让防火墙服务有写权限。查看后台服务是否正常运行
firewalld 或 ufw 服务如果没启动,你做的修改只是临时生效。Ubuntu 上输入 sudo systemctl status ufw 看状态,要是显示 inactive,先启动服务:
sudo systemctl start ufw
sudo systemctl enable ufw再尝试添加并保存规则。不然每次重启就回到原始状态。避免使用图形界面的坑
某些路由器或第三方防火墙工具的 Web 管理页面,点了“保存”按钮但没点“应用”或“提交”,实际上配置还停留在内存里。有个用户反馈说 OpenWRT 上设置好规则重启就失效,后来发现他一直只点保存没点“生效”。界面上两个按钮挨得近,很容易漏掉。
手动备份和写入配置文件
如果图形或命令行都存不了,可以直接改配置文件。比如 Ubuntu 的 ufw 规则存在 /etc/ufw/user.rules,改完记得重启服务。CentOS 用 firewalld 的可以把当前规则导出:
sudo firewall-cmd --runtime-to-permanent这句能把运行时规则刷进永久配置,比手动编辑更安全。日志里找线索
系统日志往往藏着答案。执行 journalctl -u firewalld --no-pager | tail -20 看最近记录,有没有报“Permission denied”或者“failed to commit”之类的错误。有一次看到日志提示“Cannot open /etc/firewalld/zones/public.xml”,原来是文件被误删了,重建后问题就解决了。
遇到保存不了,别急着重启设备,先一步步查权限、服务、日志,大多数情况都能定位出来。