トップQs
タイムライン
チャット
視点

Nftables

Linuxパケットフィルタリング用ユーザースペースユーティリティ ウィキペディアから

Nftables
Remove ads

nftablesは、パケット/データグラム/フレームパケットフィルタリングと分類機能を提供するLinuxカーネルのサブシステムである。2014年1月19日に公開されたLinux 3.13以降で利用可能である[2]

概要 作者, 開発元 ...
Thumb
tc英語版Linuxカーネルのパケットスケジューラーに対して、Netfilter英語版に対するiptablesや、nftablesに対するnftのような関係のツールである。これらは全てLinuxカーネルサブシステムを構成するために使用されるユーザー空間ユーティリティーである。

nftablesはNetfilter英語版の特定の部分のみを置き換え、それ以外の部分は維持および再利用することになっている。Netfilterに対するnftablesの利点は、フィルタリングルールを纏めることができる (重複コードを減らすことができる) ことと、スループットが高いことである。nftablesの設定はユーザー空間ユーティリティーnftを介して行うが、Netfilterではiptablesip6tablesarptables英語版およびebtablesフレームワークを介して設定を行う。

nftablesは、ネットワークスタックへの既存のフック、接続追跡システム、ユーザー空間のキューイングコンポーネント、ログサブシステムなどのNetfilterインフラストラクチャーの構成要素を利用している。

Remove ads

nft

コマンドラインの構文

宛先のIPアドレス1.2.3.4のパケットを破棄するnftのコマンドは、次のように書ける。

nft add rule ip filter output ip daddr 1.2.3.4 drop

iptablesのコマンドの構文はnftとは異なり、次のようになる。

iptables -A OUTPUT -d 1.2.3.4 -j DROP

また、互換レイヤーが提供されており、バックエンドとしてnftablesを使用している場合でも、従来のiptablesのフィルタリングルールの構文でパケットフィルタリングを行うことができる。

歴史

このプロジェクトは、NetfilterのコアチームのPatrick McHardyによってNetfilter Workshop 2008で公開された[3]カーネルおよびユーザー空間の実装の最初のプレビュー版は2009年3月に公開された[4]。nftablesは「2001年にiptablesが導入されて以降、Linuxのファイアウォールでの最大の変更点」と呼ばれているが、ほとんど報道されていない[5]。著名なハッカーであるFyodor Vaskovich英語版(Gordon Lyon)は「メインストリームのLinuxカーネルで公開されることを楽しみにしている。」と述べている[5]

2012年10月、Pablo Neira Ayusoがiptablesの互換レイヤーを提案し[6]、プロジェクトをメインストリームのLinuxカーネルに含める可能性を発表した。

2013年10月26日、Pablo Neira Ayusoは、nftablesの中核部分をメインストリームのLinuxカーネルにマージするためのプルリクエストを提出した[7]。このプルリクエストは2014年1月19日にマージされ、Linux 3.13として公開された[2]

Remove ads

概要

nftablesカーネルエンジンはLinuxカーネルに単純な仮想機械を追加する。この仮想機械はバイトコードを実行して、パケットを検査することで、パケットの処理方法を決定することができる。この仮想機械によって行われる操作の実装は意図的に基本的なものになっている。この仮想機械はパケットからデータを取得し、関連するメタデータ (インバウンドインタフェースなど) を確認し、接続追跡データを管理することができる。算術演算子、ビット単位演算子および比較演算子を使用して、そのデータに基づいて決定を下すことができる。また、仮想機械はデータセット (通常はIPアドレス) を操作できるので、複数の比較操作を単一のフィルタリングルールに置き換えることができる[8]

上記の内容は、iptablesのフィルタリングルールに反している。iptablesのフィルタリングルールではプロトコルを識別する機能が仕組みの奥深くに組み込まれているので、フィルタリングルールを4回(IPv4IPv6ARPおよびイーサネットブリッジ)呼び出す必要がある。これは、エンジンがプロトコル毎に固有であり、汎用的には使用できないからである[8]

iptablesに対するnftablesの主な利点は、LinuxカーネルABIの簡素化、重複コードの削減、エラーメッセージの改善およびフィルタリングルールのより効率的な実行、保存および増分変更である。従来使用されていたiptables(8)ip6tables(8)arptables(8)およびebtables(8)(それぞれIPv4、IPv6、ARPおよびイーサネットブリッジ用)は、単一の実装としてnft(8)に置き換えられる予定であり、カーネル内仮想機械上にファイアウォール設定を提供する。

nftablesは単一のNetlink英語版トランザクション内で、1つ以上のファイアウォールルールのアトミックな置き換えができるように改良されたユーザー空間APIも提供する。これによって、大きなフィルタリングルールを持つファイアウォール設定の変更が高速化される。また、ルールの変更中に競合が発生することを避けるためにも役立つ。nftablesには以前のファイアウォールからの移行を容易にする互換性機能、iptablesのフィルタリングルールを変換するユーティリティー[9]、バックエンドとしてnftablesを使用している場合のiptablesのフィルタリングルールの互換構文が含まれている[10]

脚注

関連項目

外部リンク

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads