システムを6.5から7にアップグレードした後、動的ファイアウォールの実装を学び始めましたが、次のルールを追加するのに失敗しました
firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 1 -j DROP
これにより、マシンはすべての出力を外部にドロップします。
使ってみた
firewall-cmd --permanent --direct --remove-rule ipv4 filter OUTPUT 1 -j DROP
皆様をお迎えします。
ただし、
firewall-cmd --reload
そして
firewall-cmd --direct --get-all-rules
、私はこのルールが再び自動的に戻ってくるのを見つけました。
私も試しました
firewall-cmd --complete-reload
効果はありません。
私は今何ができますか?
ルールはdirect.xml
に記録されているため、最終的には削除コマンドが一度にしか機能しないことがわかります
したがって、解決策は簡単です。direct.xml
を編集して、対応する行をコメント化するか、jsutで削除します。
頑固に永続的なリダイレクトルールに取り組んだ後、次のテストを通じて気付きました。
iptables
ルールDBは一時的ですfirewall-cmd --permanent
ルールDBは再起動後も保持され、iptables
ルールDBは再起動後に書き換えられます
firewall-cmd --permanent --direct
ルールDBが/etc/firewalld/direct.xml
に保存されているのは、DBファイルが削除されない限り、firewall-cmd [--permanent] --direct --remove-rule
にもかかわらず存続します。
firewall-cmd [--permanent] --direct --query-rule
は/etc/firewalld/direct.xml
のルールの永続化について嘘をつきます
firewall-cmd
[--permanent
] --direct --remove-rules
{ipv4
| ipv6
| eb
}テーブルチェーン
同じことを試してみたところ、実行後にdirect.xmlが空になりました
firewall-cmd --direct --remove-rule ...
--permanentオプションなし。
リロード後、削除された直接のルールはありません。
このオプションを使用すると、ルールはリロード後に戻ってきました。
Direct.xmlファイルを指定する必要はありません。次を実行します。
# systemctl restart firewalld
それで十分です。