9.2. パケットのフィルタリング
9.2.1. nftables
が、iptables
を、デフォルトのネットワークパケットフィルタリングのフレークワークとして置き換え
nftables
フレームワークは、パケットの分類機能を提供し、iptables
ツール、ip6tables
ツール、arptables
ツール、ebtables
ツール、および ipset
ツールの後継となります。利便性、機能、パフォーマンスにおいて、以前のパケットフィルタリングツールに多くの改良が追加されました。以下に例を示します。
- 線形処理の代わりにルックアップテーブルを使用
-
IPv4
プロトコルおよびIPv6
プロトコルに対する 1 つのフレームワーク - 完全ルールセットのフェッチ、更新、および保存を行わず、すべてアトミックに適用されるルール
-
ルールセットにおけるデバッグおよびトレースへの対応 (
nftrace
) およびトレースイベントの監視 (nft
ツール) - より統一されたコンパクトな構文、プロトコル固有の拡張なし
- サードパーティーのアプリケーション用 Netlink API
iptables
と同様、nftables
は、チェーンを保存するテーブルを使用します。このチェーンには、アクションを実行する個々のルールが含まれます。nft
ツールは、以前のパケットフィルタリングフレームワークのツールをすべて置き換えます。libnftables
ライブラリーは、libmnl
ライブラリーの Netlink API nftables
で、低レベルの対話のために使用できます。
iptables
ツール、ip6tables
ツール、ebtables
ツール、および arptables
ツールは、nftables ベースの同じ名前のドロップインツールに置き換えられました。外部の挙動は従来のものと同じですが、内部的には必要に応じて互換インターフェイスを通して、従来の netfilter
カーネルモジュールを使用した nftables
を使用します。
nftables
ルールセットに対するモジュールの効果は、nft list ruleset
コマンドを使用して確認できます。これらのツールは、テーブル、チェーン、およびルールを nftables
ルールセットに追加するため、nft flush ruleset
コマンドなどの nftables
ルールセット操作は、先に別の従来のコマンドを使用してインストールしたルールセットに影響を及ぼす可能性があることに注意してください。
どの種類のツールが存在するかをすばやく特定するために、バージョン情報にバックエンド名が追加されるようになりました。RHEL 8 では、nftables ベースの iptables
ツールで、次のバージョン文字列が出力されます。
$ iptables --version iptables v1.8.0 (nf_tables)
一方、従来の iptables
ツールが存在する場合は、次のバージョン情報が出力されます。
$ iptables --version iptables v1.8.0 (legacy)
9.2.2. RHEL 8 で、フィルターテーブルから Arptables
FORWARD が削除される
arptables
の FORWARD チェーン機能は、Red Hat Enterprise Linux (RHEL) 8 から削除されました。ebtables
ツールの FORWARD チェーンを使用して、ルールを追加できるようになりました。
9.2.3. iptables-ebtables
の出力の一部が、ebtables
との完全な互換性がない
RHEL 8 では、ebtables
コマンドは、iptables-ebtables
パッケージが提供します。ここには、このツールが nftables
ベースで再実装されています。このツールには別のコードベースがあり、その出力は、側面が異なる場合があるため、無視できるか、設計上の選択を慎重に検討する必要があります。
したがって、ebtables
出力を解析するスクリプトを移行する際に、以下を反映するスクリプトを調整します。
- MAC アドレスの書式が、長さが固定されるように変更されました。octet 値では、2 文字の書式を維持するために、必要に応じて、個々のバイト値の前にゼロが含まれます。
- IPv6 接頭辞の形式が、RFC 4291 に準拠するように変更になりました。スラッシュ文字の後ろの終了部分には、IPv6 アドレスフォーマットのネットマスクが含まなくなりましたが、接頭辞長は含まれます。この変更は、有効な (左連続の) マスクにしか適用されませんが、それ以外の場合は、古い形式で印刷されます。
9.2.4. iptables
を nftables
に変換する新しいツール
今回の更新で、既存の iptables
ルールまたは ip6tables
ルールを、nftables
で同等のルールに変換する iptables-translate
ツールおよび ip6tables-translate
ツールが追加されました。拡張機能によっては変換機能がない場合もあります。対応する機能がない拡張機能が存在する場合は、ツールにより、その前に #
記号が付いた未変換ルールが出力されます。以下に例を示します。
| % iptables-translate -A INPUT -j CHECKSUM --checksum-fill | nft # -A INPUT -j CHECKSUM --checksum-fill
また、ユーザーは、iptables-restore-translate
ツールおよび ip6tables-restore-translate
ツールを使用して、ルールのダンプを変換できます。その前に、iptables-save
コマンドまたは ip6tables-save
コマンドを使用して、現在のルールのダンプを出力できます。以下に例を示します。
| % sudo iptables-save >/tmp/iptables.dump | % iptables-restore-translate -f /tmp/iptables.dump | # Translated by iptables-restore-translate v1.8.0 on Wed Oct 17 17:00:13 2018 | add table ip nat | ...