linux/network/nftables

Last-modified: 2015-06-07 (日) 00:58:53

このページには、書きかけの項目が含まれています。

nftables とは

nftablesは、iptablesの置き換えを目的として作られたものです。
Linux kernel 3.13 以上で利用できるようになりました。(まだ開発中です。)

 

iptables との違い

デフォルトポリシーがなくなりました。(バージョン 0.099 から)

デフォルトポリシーに相当するルールを、必要に応じて付け加える必要があります。

デフォルトの組込フィルタがなくなりました。

デフォルトでは、INPUT、OUTPUT、FORWARDなどのチェーンも存在しません。

色々まとめて、1回の命令で実行できるようになりました。

複数のジャンプ(iptables の-j に相当) 命令が、1コマンドで実行可能になりました。(log とdrop をまとめる など。)

ipsetの機能が組み込まれました

SetやDictionaryなどが使えるようになりました。

コマンドが大幅に変わりました。

コマンドの例 (一部)

機能iptablesの場合nftablesの場合備考
ルールを保存iptables-savenft list ruleset標準出力に表示されます。
nft export xml
nft export json など
ルールの読込iptables-restore < (ファイルの内容)nft -f (ファイル名)要注意 ※1
ルールを表示iptables -Lnft list ruleset
iptables -S など
全ルールを消去iptables -Fnft flush ruleset
全チェーンを消去iptables -Xnft flush ruleset (?)
(またはテーブル毎にflush?)

※1 nft -f で誤った設定を読み込ませると、カーネルを巻き込んで落ちる場合もあるようです。要注意。
(Segmentation Faultなどが発生し、以降のnftコマンドが反応を返さなくなる場合もあります。)

 

ルールの保存と読込

ルールの保存

例:(保留)

ルールの読込

運用中のシステムに投入する際は、事前にテスト環境でテストしましょう。
誤った設定を読み込ませると、最悪、システムが落ちる場合があるようです。(他wikiなどの情報)

nft -fでSegmentation Faultを起こした後に、nft list rulesetなどを実行すると、
一切のコマンドを受け付けない(nftコマンドの停止もできない)状態に陥る場合があります。
仮想コンソールを複数開けない環境では、システムの再起動も難しくなりますので、注意しましょう。

例:

nft -f rule.nft

※既存のルールと重複すると、正しく更新されない場合があります。  (全ルールの消去が必要な理由)

"nft -f"は、アトミックな更新(データベースのトランザクションのようなもの)が、 可能という記述と、そうではないという記述があります。

テーブルの操作

テーブルのルールのテンプレート

テンプレートは、/etc/nftablesにあります。
iptablesのfilterテーブルのデフォルト状態(INPUT、FORWARD、OUTPUTが存在する状態)に近い設定にするには、

nft -f /etc/nftables/ipv4-filter

などのコマンドを実行します。

テーブルの追加

テーブルのクリア、削除

チェーンの操作

チェーンの追加

チェーンののクリア、削除

チェーン単体での消去はかなり複雑になっています。

nftのマニュアル(CHAINS: delete)によると、「消去対象のチェーンは、ルールを含んでいないこと、ジャンプのターゲットにされていないこと」が必要となっています。
従って、(ジャンプ元のルールを削除した後、)消したいチェーンをフラッシュ、その後、チェーンを削除という流れになります。

 

ルールの操作

ルールの追加

ルールのクリア、削除

セット、ディクショナリ

 

リンク

[[公式ページ:http>//www.netfilter.org/projects/nftables/index.html]]
nftables wiki
ArchWiki - nftables
ArchWiki - nftables (英語)