私は長い間CentOS 7を使用しており、さまざまな個人用ボックスとビジネスボックスの両方でカスタムiptables
構成を構築するのに慣れていました。
私は最近CentOS 8を使い始めて、iptables
からnftables
への移行を知ったので、ルールセットを書き換えてすべてを稼働させることができました。問題は、再起動後、カスタムnftルールセットが保持されず、手動でsystemctl restart nftables
自分のルールを有効にするため。
犯人はfirewalld
であることがわかりました。これは私の理解から(CentOS 7では使用しなかったため)、iptables
とnftables
の両方のフロントエンド管理ツールであることがわかりました。 ..正しい?一度 systemctl disable firewalld
および再起動を試みたところ、私のnftables
ルールセットは期待どおりに配置されました。問題が解決しました。
私の質問は、firewalld
を使用しないことの影響は何ですか、nftables
はまだ実行されてアクティブであるため、実際のファイアウォールがまだ適切であると想定しています。 firewalld
を実行したままにし、代わりに設定を調整して、代わりにnftables
ルールセットを使用するようにします。使い方を明確にしていただければ幸いです。
答えはかなり簡単だと思います。最初に、あなたは正確に正しいことをしました...
Firewalldは純粋なフロントエンドです。それ自体は独立したファイアウォールではありません。これは、指示を受け取ってnftablesルール(以前のiptables)に変換することによってのみ機能し、nftablesルールはファイアウォールです。したがって、「nftablesを使用するファイアウォール」を実行するか、「nftablesのみ」を実行するかを選択できます。 Nftablesは、カーネルの一部として直接機能し、そこではいくつかの新しいモジュールを使用します。また、2000年頃にカーネルの一部となったカーネルフックとモジュールの「netfilter」システムを部分的に繰り返します。
一部の人はそうしていると思いますが、firewalldとnftables(以前はiptables)を並行して実行するのはかなり混乱します。とにかく独自のiptablesルールを実行することに慣れている場合は、それらをnftablesルールに変換し、それらをファイアウォールのルールにするのが最適なソリューションです。確かに最良のことは、完全に無効化し、できればファイアウォールをマスクすることです。
Sudo systemctl stop firewalld
Sudo systemctl disable firewalld
Sudo systemctl mask --now firewalld
他に必要なことはありません。私自身もnftablesで直接実行しています。フロントエンドを使用するよりもはるかに透明であることがわかります(もちろん、ファイアウォール以外のものもあります)。これにより、何をしているのかを完全に理解でき、Sudo nft list ruleset > /etc/nftables.conf
を実行することで、ルールの効果を完全に確認できます。そして、/ etc/nftables.dで個別のnftテーブルを使用することは、あなたが何をしたか、そして物事がどこにあるかを追跡するための素晴らしく簡単な方法です...
私はあなたが書いたことから、あなたはこのすべてを知っていると思います。しかし、私はnftablesの少し伝道者です。他の人がこの答えを読んだ場合、それらはこれらの小さなヒントによって助けられるかもしれません。 nftablesのドキュメントは良いですが、過度ではありません。