nft list rulesetについてお探しですね。

広告

nftablesのルールセット管理:設定の確認・保存・削除コマンド実例集

Linuxのファイアウォール機能が、従来のiptablesから新しいnftablesへと切り替わりつつあります。

多くのサーバー管理者やエンジニアが、この新しいコマンド体系を覚える必要に迫られているのが現状です。

nftablesはiptablesとは文法や構造が異なるため、「設定がちゃんと反映されているか確認したい」「再起動しても設定が消えないように保存したい」「いらないルールだけを安全に削除したい」といった基本的な操作でつまずいてしまうことがよくあります。

この記事では、nftablesを実際に運用する上で欠かせない「確認・保存・削除」という3つの重要な操作について、具体的なコマンド例を交えながら詳しく説明していきます。

この記事を読めば、nftablesの動きをしっかり理解して、安全で管理しやすいファイアウォール運用ができるようになりますよ。

今の設定を正確に把握する:表示コマンドの基本と便利な使い方

nftablesで現在動いているファイアウォールの設定を見るには、`nft list ruleset` というコマンドが基本になります。

このコマンドを実行すると、システム上のすべてのテーブル、チェイン、ルールが一覧で表示されます。

ただ、実際の運用では単に表示するだけでは足りない場面が多いんです。

たとえば、後から特定のルールを削除したり変更したりするときには、それぞれのルールに付いている「ハンドル(handle)」という識別番号が必要になります。

このハンドルを表示させるには、`–handle` または `-a` オプションを付けて `nft –handle list ruleset` と実行します。

すると、各ルールの最後に `# handle 5` のような番号が表示されます。

この番号がルールを個別に操作するときの重要な鍵になるので、確認するときは常にハンドルを表示させる習慣をつけておくといいですよ。

また、設定が増えてくると全体表示では情報が多すぎて、目的の設定を探すのが大変になってきます。

そんなときは、表示する範囲を絞り込むコマンドが便利です。

たとえば、IPv4のフィルタリング設定だけを見たいなら `nft list table ip filter`、その中でも入力パケットの設定だけを確認したいなら `nft list chain ip filter input` と指定できます。

さらに、スクリプトで処理したい場合は `–json` オプションを使えば、JSON形式で出力することもできます。

状況に応じて適切な確認コマンドを使い分けることは、トラブルを素早く解決したり、設定ミスを防いだりするための大切なスキルです。

設定を再起動後も残す:ルールセットの保存と読み込み

nftablesで初心者が最もつまずきやすいのが、「コマンドで設定したルールは、そのままだと再起動したら消えてしまう」という点です。

`nft add rule` などのコマンドで追加した設定は、あくまでメモリ上に一時的に保存されているだけ。

永続的に残すには、ファイルに書き出して、システム起動時にそのファイルを読み込むように設定する必要があります。

一般的に、nftablesの設定ファイルは `/etc/nftables.conf`(ディストリビューションによって異なる場合あり)に置かれます。

今メモリ上にある設定をそのまま保存したいときは、シェルのリダイレクト機能を使って `nft list ruleset > /etc/nftables.conf` とするのが簡単で確実です。

これで、現在動いているファイアウォールの状態がそのまま設定ファイルに保存されます。

設定をファイルに保存したら、次はシステム起動時にそのファイルが自動で読み込まれるようにしておく必要があります。

多くのLinuxディストリビューションではsystemdが使われているので、`systemctl enable nftables` コマンドを実行してnftablesサービスの自動起動を有効にしましょう。

これで、サーバーが再起動したときに `/etc/nftables.conf` の内容が自動的に読み込まれ、ファイアウォール設定が復元されます。

手動で設定ファイルを読み込みたいときは `nft -f /etc/nftables.conf` コマンドを使います。

この `-f`(file)オプションの動作には少し注意が必要です。

通常、設定ファイルの先頭には `flush ruleset` という記述が含まれていることが多く、これによって既存のルールをすべて消してから新しい設定を適用する、という流れになります。

いらない設定を安全に消す:ルールの削除とハンドルの活用

運用を続けていると、一時的に追加した制限を解除したり、古くなったルールを整理したりする必要が出てきます。

iptablesでは行番号を指定して削除する方法が一般的でしたが、nftablesでは先ほど説明した「ハンドル」を使って削除するのが最も安全で確実な方法です。

まず `nft –handle list ruleset` コマンドで削除したいルールのハンドル番号を確認します。

その番号を使って `nft delete rule <family> <table> <chain> handle <番号>` という形で削除を実行します。

たとえば、ipテーブルのfilterテーブル内にあるinputチェインで、ハンドル番号5のルールを削除するなら `nft delete rule ip filter input handle 5` となります。

この方法は、ルールの中身(IPアドレスやポート番号など)を全部入力して削除する方法に比べて、タイプミスによる事故が起こりにくく、狙ったルールをピンポイントで消せるのでおすすめです。

特定のルール単体ではなく、チェイン内やすべてのルールをまとめて削除したいときは `flush` コマンドを使いますが、これには十分な注意が必要です。

`nft flush ruleset` を実行すると、システム上のすべてのルールが即座に消去され、ファイアウォールが事実上無効化された状態になります。

場合によってはすべての通信が遮断される可能性もあるので要注意です。

特定のテーブルだけをクリアしたいなら `nft flush table ip filter`、特定のチェインだけなら `nft flush chain ip filter input` のように対象を限定して実行することが大切です。

また、テーブルそのものを削除する `delete table` やチェインを削除する `delete chain` コマンドもありますが、中にルールが残っているとエラーになることがあるので、通常は先に `flush` で中身を空にしてから `delete` を実行します。

削除操作はすぐにネットワーク通信に影響するので、特にリモート接続しているときは接続が切れないよう十分注意して作業してください。

**削除操作のポイント:**

* **ハンドルの確認**: `nft –handle list ruleset` で削除対象のIDを特定
* **個別削除**: `nft delete rule <family> <table> <chain> handle <ID>`
* **一括削除(危険)**: `nft flush ruleset` は全設定を消すので慎重に

事故を防ぐための運用テクニック:構文チェックと安全な更新

nftablesの設定を変更するとき、いきなり本番環境に適用してしまうと、構文エラーでファイアウォールの読み込みが失敗したり、意図しない通信遮断が起きたりするリスクがあります。

こうした事故を防ぐために活用したいのが、`nft` コマンドの構文チェック機能です。

設定ファイルを編集した後、適用する前に `nft -c -f /etc/nftables.conf` コマンドを実行してみてください。

`-c`(check)オプションを付けることで、実際にはルールを適用せず、ファイルの構文チェックだけを行えます。

記述ミスや論理的な矛盾がないかを事前に確認できるんです。

特に複雑なルールセットを書いたときや、重要なサーバーの設定を変更するときは、このチェック工程を挟むことで、再起動後にファイアウォールが起動しないといった致命的なトラブルを未然に防げます。

また、nftablesの大きなメリットの一つに、ルールセットの更新を「アトミック(原子的)」に行えるという特徴があります。

iptables時代は、スクリプトで一行ずつルールを追加していく過程で、一時的にファイアウォールのルールが不完全な状態になる瞬間がありました。

しかし、nftablesでは `nft -f <ファイル名>` コマンドでファイルを読み込むとき、そのファイル内の記述(特に `flush ruleset` を含む全体設定)が一括で処理され、カーネル内で瞬時に新しいルールセットへと切り替わります。

これにより、ルール適用中にパケットが漏れたり、設定途中の矛盾した状態で通信が処理されたりする可能性がなくなります。

安全な運用のためのベストプラクティスとして、直接コマンドを打って継ぎ足していくのではなく、設定ファイルを編集して、構文チェックを通した上で、ファイル読み込みによる一括適用を行う流れを確立することをおすすめします。

 

広告