背景
使用firewall-cmd --reload想要重新加载防火墙配置的时候,提示以下错误:
Error: COMMAND_FAILED: Direct: '/usr/sbin/iptables-restore -w -n' failed: Bad argument `destination'
Error occurred at line: 2
Try `iptables-restore -h' or 'iptables-restore --help' for more information.
清除iptables规则
自己认为既然是Iptabels-restore报错,显然是iptables规则写的不对引起的,干脆全部清了规则,在一翻
iptables -F -t nat
iptables -F -t mangle
iptables -F -t security
iptables -F -t raw
iptables -F -t filter
iptables -F
iptables -X
iptables -Z
重新安装iptables和firewalld
操作后仍然不能解决问题,还是提示那个问题,自己还是认为要么是iptables规则没有清空,要么是firewalld没有清空,干脆重新安装Iptables和firewalld
yum reinstall iptables
yum reinstall firewalld
还是不行,我把/etc/firewall/zone/public.xml内容全部删除,仍然不行。
仍不放弃
昨天弄了一天没有搞定,本来想放弃,想着使用systemctl restart firewalld还是可以重新加载配置的,不过,想想仍心有不甘,继续谷歌,无意间又发现了网友的一个提醒: 想到我也有加过direct的规则,于是查看direct的规则文件
[root@localhost-203-root-all apaas]# cat /etc/firewalld/direct.xml
<?xml version="1.0" encoding="utf-8"?>
<direct>
<rule priority="0" table="filter" ipv="ipv4" chain="OUTPUT">destination address=10.10.10.100 port protocol=tcp port=80 reject</rule>
<rule priority="0" table="filter" ipv="ipv4" chain="OUTPUT">-p tcp -m tcp --dport 80 -j reject</rule>
</direct>
发现貌似上面有一条有问题,将第一条给删除掉,再次执行firewall-cmd --reload,提示还报错,干脆两条都删除,重新加载,提示success
总结
看来还是学艺术不精,看网上写的direct规则随便拿来改,也不知道规则写错了,并且他的配置文件路径/etc/firewalld/direct.xml
,之前要是能再去查找一下/etc/firewalld目录底下其他文件,说不定能发现问题
参考链接:https://serverfault.com/questions/901220/reset-firewalld-rules-to-default