nftables パケット フィルター 1.0.2 リリース

パケット フィルタ nftables 1.0.2 のリリースが公開され、IPv4、IPv6、ARP、およびネットワーク ブリッジのパケット フィルタリング インターフェイスが統合されました (iptables、ip6table、a​​rptables、ebtables の置き換えを目的としています)。 nftables 1.0.2 リリースが動作するために必要な変更は、Linux カーネル 5.17-rc に含まれています。

nftables パッケージには、ユーザー空間で実行されるパケット フィルター コンポーネントが含まれていますが、カーネル レベルの作業は、リリース 3.13 以降 Linux カーネルの一部となっている nf_tables サブシステムによって提供されます。 カーネル レベルは、パケットからのデータの抽出、データ操作の実行、およびフロー制御の基本機能を提供する、プロトコルに依存しない汎用インターフェイスのみを提供します。

フィルタリング ルールとプロトコル固有のハンドラはユーザー空間でバイトコードにコンパイルされ、その後、このバイトコードは Netlink インターフェイスを使用してカーネルにロードされ、BPF (Berkeley Packet Filters) を思わせる特別な仮想マシンのカーネルで実行されます。 このアプローチにより、カーネル レベルで実行されるフィルタリング コードのサイズを大幅に削減し、プロトコルを操作するための解析ルールとロジックのすべての機能をユーザー空間に移動できます。

主な革新:

  • ルール最適化モードが追加され、新しい「-o」(「--optimize」)オプションを使用して有効になり、「--check」オプションと組み合わせることで、実際にルールセット ファイルをロードせずにルールセット ファイルへの変更をチェックして最適化できます。 。 最適化により、同様のルールを組み合わせることができます。たとえば、次のようなルールを組み合わせることができます。 .1 ip sawdr の受け入れ 1.1.1.1 ip maddr 2.2.2.3 ドロップ

    は、meta iifname に結合されます。 イプ・サドル。 ip パパ { eth1 . 1.1.1.1. 2.2.2.3、 eth1 。 1.1.1.2. 2.2.2.5 } ip addr を受け入れます。 ip ddr vmap { 1.1.1.1 . 2.2.2.2 : 受け入れる、2.2.2.2 。 3.3.3.3 : ドロップ }

    使用例: # nft -c -o -f ruleset.test Merging: ruleset.nft:16:3-37: ip maddr 192.168.0.1 counter accept ruleset.nft:17:3-37: ip maddr 192.168.0.2 counter accept ruleset.nft:18:3-37: ip goddr 192.168.0.3 counter accept into: ip maddr { 192.168.0.1, 192.168.0.2, 192.168.0.3 } counter packets 0 bytes 0 accept

  • セット リストは、ip オプションと tcp オプション、および sctp チャンクを指定する機能を実装します。 set s5 { typeof ip option ra value elements = { 1, 1024 } } set s7 { typeof sctp chunk init num-inbound-streams elements = { 1, 4 } } チェーン c5 { ip オプション ra 値 @s5 accept } チェーン c7 { sctp チャンク init num-inbound-streams @s7 accept }
  • TCP オプション fastopen、md5sig、mptcp のサポートが追加されました。
  • マッピングで mp-tcp サブタイプを使用するためのサポートが追加されました: tcp オプション mptcp サブタイプ 1
  • カーネル側のフィルタリング コードが改善されました。
  • Flowtable は JSON 形式を完全にサポートするようになりました。
  • イーサネット フレーム マッチング操作で「拒否」アクションを使用する機能が提供されました。 イーサsaddr aa:bb:cc:dd:ee:ff ip goddr 192.168.0.1拒否

出所: オープンネット.ru

コメントを追加します