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

公開済み パケットフィルター解除 nftables 0.9.3、IPv6、IPv4、ARP、およびネットワーク ブリッジのパケット フィルタリング インターフェイスを統合することにより、iptables、ip6table、a​​rptables、ebtables の代替として開発されています。 nftables パッケージには、ユーザー空間で実行されるパケット フィルター コンポーネントが含まれていますが、カーネル レベルの作業は、リリース 3.13 以降 Linux カーネルの一部となっている nf_tables サブシステムによって提供されます。 nftables 0.9.3 リリースが機能するために必要な変更は、次期 Linux 5.5 カーネル ブランチに含まれています。

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

主な革新:

  • 時間によるパケットのマッチングのサポート。 ルールがトリガーされる時間と日付の両方の範囲を定義し、個々の曜日にトリガーを構成できます。 また、エポカルタイムを秒単位で表示するための新しいオプション「-T」も追加されました。

    メタタイム \»2019-12-24 16:00\" — \»2020-01-02 7:00\"
    メタアワー「17:00」~「19:00」
    メタデー「金曜日」

  • SELinux マーク (secmark) の回復と保存のサポート。

    ct 秒マーク セット メタ 秒マーク
    メタ secmark セット ct secmark

  • synproxy マップ リストのサポートにより、バックエンドごとに複数のルールを定義できます。

    テーブル IP foo {
    シンプロキシ https-synproxy {
    ミリ秒 1460
    wスケール7
    タイムスタンプサックパーマ
    }

    synproxy 他の synproxy {
    ミリ秒 1460
    wスケール5
    }

    チェーンプレ {
    タイプ フィルタ フック プリルーティング優先度 raw。 ポリシーを受け入れます。
    tcp dport 8888 tcp フラグ syn notrack
    }

    チェーンバー{
    タイプフィルターフックフォワード優先度フィルター。 ポリシーを受け入れます。
    ct 状態が無効、追跡されていない synproxy 名 ip maddr マップ { 192.168.1.0/24 : “https-synproxy”, 192.168.2.0/24 : “other-synproxy” }
    }
    }

  • パケット処理ルールからセット要素を動的に削除する機能。

    nft ルールの追加 ... @set5 { ip6 saddr を削除します。 ip6パパ}

  • ネットワーク ブリッジ インターフェイスのメタデータで定義された ID とプロトコルによる VLAN マッピングのサポート。

    メタ IBRPID 100
    メタ irvproto vlan

  • ルールを表示するときにセットの要素を除外するオプション「-t」(「--terse」)。 「nft -t list ruleset」を実行すると、次のように出力されます。

    テーブル IP x {
    セットy {
    ipv4_addr と入力します
    }
    }

    そして「nftリストルールセット」を使うと

    テーブル IP x {
    セットy {
    ipv4_addr と入力します
    要素 = { 192.168.10.2、192.168.20.1、
    192.168.4.4、192.168.2.34 }
    }
    }

  • netdev チェーンで複数のデバイスを指定して (カーネル 5.5 でのみ機能)、共通のフィルタリング ルールを組み合わせる機能。

    テーブル netdev x を追加
    チェーンを追加 netdev xy { \
    タイプフィルターフック入力デバイス = { eth0, eth1 } 優先度 0;
    }

  • データ型の説明を追加する機能。

    #nft は ipv4_addr を記述します
    データタイプ ipv4_addr (IPv4 アドレス) (ベースタイプ整数)、32 ビット

  • libreadline の代わりに linenoise ライブラリを使用して CLI インターフェイスを構築する機能。

    ./configure --with-cli=linenoise

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

コメントを追加します