【エヌエフテーブルズ】

nftables(パケットフィルタ) とは?

最終更新:
💡 Linuxの通信ルールを管理するパケット処理基盤

Linuxのパケット処理基盤とnftコマンドによるルール管理の仕組み。テーブル・チェーン・ルール、hook、acceptとdropの意味、設定確認と移行の注意点を解説します。

📌 このページのポイント
nftables:ルールを整理する入れ物テーブル:inet filter の例ベースチェーン:inputという名前の例type・hook・priorityで入口を指定ルール:パケットの条件と処理条件に一致したときの処理を指定未判定ならpolicy。既定はaccept入れ子は整理の階層。パケットの流れではないaccept後も別のチェーンでdropされる場合がある
テーブル・チェーン・ルールの包含関係で、実行可能な設定ファイルではありません。入口と順番、管理ツールと実際の通信を確認し、名前だけで適用されるとは考えません。
ひよこ ひよこ
nftablesは、Linuxのファイアウォール?
ペンギン先生 ペンギン先生
パケットを選別して許可・破棄したり、NATなどを扱ったりする基盤だよ。カーネル側の仕組みと、ルールを管理するnftコマンドがある。上位の管理ツールから利用する場合もある。
ひよこ ひよこ
テーブルとチェーンは、何をするの?
ペンギン先生 ペンギン先生
テーブルはルール群を整理する入れ物で、チェーンはルールを並べる入れ物だ。通信の処理位置に接続したベースチェーンと、ほかのチェーンから呼ばれる通常チェーンがある。名前だけで通信に接続されるわけではない。
ひよこ ひよこ
inputという名前なら、受信を守れる?
ペンギン先生 ペンギン先生
ベースチェーンには種類、hook、priorityが必要だ。hookは入力などの処理位置、priorityは同じ位置での順番を指定する。未判定のパケットをどうするかはpolicyで決める。チェーン名だけでは足りないよ。
ひよこ ひよこ
iptablesの設定を、そのまま使える?
ペンギン先生 ペンギン先生
nftの文法は違う。iptablesの文法を使ってnftables基盤へ設定する互換レイヤーもあるが、使っているバックエンドや管理ツールを確認しよう。複数の仕組みで同じ設定を書き換えないようにする。
ひよこ ひよこ
設定する前に、何を見ればいい?
ペンギン先生 ペンギン先生
nft list rulesetで現在のルールを確認できる。nft -c -f rules.nftは、変更を適用せずコマンドの妥当性を確認する例だ。ただし検査に通ることと、必要な通信が実際に通ることは別だ。接続を失わない確認手順も用意しよう。
もっと詳しく知りたい人へ

acceptが出たら、必ずアプリへ届く?

保証ではありません。公式マニュアルでは、acceptは現在のベースチェーンの評価を終えますが、後続のチェーンでdropされる可能性があります。ほかのネットワーク設定で破棄される場合もあるため、ルール全体と実際の通信を確認します。

table→chain→ruleの順に、パケットが流れる?

これは整理の階層です。パケットはネットワークのhookに接続したベースチェーンで評価されます。テーブルを作っただけではフィルタリングの入口になりません。図でも、入れ物の関係をパケットの処理矢印と混同しないようにしています。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「nftables」って出てきたら「Linuxの通信ルールを管理するパケット処理基盤」と思えばだいたいOK!
📖 おまけ:英語の意味
「nftables」 = Netfilterのパケット処理・ルール管理の仕組み
💬 公式プロジェクトは、カーネル内のパケット分類基盤と、新しいnftコマンドを提供すると説明しています。

参考資料

← 用語集にもどる