在将系统从 6.5 升级到 7 后,我开始学习实现动态防火墙,但是,我错误地添加了以下规则
防火墙命令 --permanent --direct --add-rule ipv4 过滤器 OUTPUT 1 -j DROP
这导致机器将所有输出都丢弃到外部,
我尝试使用
防火墙命令 --permanent --direct --remove-rule ipv4 过滤器 OUTPUT 1 -j DROP
欢迎大家回来。
然而,之后
防火墙-cmd——重新加载
和
防火墙命令--direct --get-all-rules
,我发现这个规则又自动回来了。
我甚至尝试过
防火墙-cmd——complete-reload
但没有效果。
我现在能做什么?
答案1
最后我发现删除命令只能一次性工作,因为规则记录在direct.xml
因此,解决方案很简单,编辑direct.xml
并注释相应的行或删除它们。
答案2
在与顽固的重定向规则搏斗之后,我通过测试意识到了以下问题:
iptables
规则数据库是暂时的firewall-cmd --permanent
规则数据库在重启后仍然存在,iptables
重启后重写规则数据库firewall-cmd --permanent --direct
规则数据库存储在/etc/firewalld/direct.xml
尽管firewall-cmd [--permanent] --direct --remove-rule
数据库文件被删除firewall-cmd [--permanent] --direct --query-rule
会撒谎关于规则的持久性/etc/firewalld/direct.xml
答案3
刚刚尝试了同样的事情,运行后我的 direct.xml 被清空了
firewall-cmd --direct --remove-rule ...
没有 --permanent 选项。
重新加载后,没有直接删除的规则。
使用此选项后,规则将在重新加载后恢复。
答案4
无需命令 direct.xml 文件。执行以下操作:
# systemctl restart firewalld
那就行了。