Red Hat Training

A Red Hat training course is available for RHEL 8

50.2. xdp-filter ルールに一致するネットワークパケット以外のネットワークパケットをすべて削除

本セクションでは、xdp-filter を使用して、ネットワークパケットだけを許可する方法を説明します。

  • 特定の宛先ポートから、あるいは指定された宛先ポートへ
  • 特定の IP アドレスから、あるいは特定の IP アドレスへ
  • 特定の MAC アドレスから、あるいは特定の MAC アドレスまで

これを行うには、特定のルールに一致するネットワークパケット以外のネットワークパケットをすべて破棄する xdp-filterdeny ポリシーを使用します。たとえば、ドロップするパケットのソース IP アドレスがわからない場合は、この方法を使用します。

警告

インターフェースで xdp-filter を読み込む際にデフォルトのポリシーを deny に設定すると、特定のトラフィックを許可するルールを作成するまで、カーネルはこのインターフェースからのパケットをすべて直ちに破棄します。システムからロックアウトしないようにするには、ローカルにコマンドを入力するか、別のネットワークインターフェースからホストに接続します。

前提条件

  • xdp-tools パッケージがインストールされている。
  • ホストにローカルにログインするか、トラフィックのフィルタリングを予定しないネットワークインターフェースを使用してホストにログインします。
  • XDP プログラムをサポートするネットワークドライバー。

手順

  1. xdp-filter を読み込み、enp1s0 などの特定のインターフェースのパケットを処理します。

    # xdp-filter load enp1s0 -p deny

    オプションで、-f feature オプションを使用して、tcpipv4ethernet などの特定の機能のみを有効にします。すべてではなく必要な機能のみを読み込むと、パッケージ処理の速度が向上します。複数の機能を有効にするには、コンマで区切ります。

    コマンドがエラーで失敗した場合、ネットワークドライバーは XDP プログラムをサポートしません。

  2. ルールを追加して、一致するパケットを許可します。以下に例を示します。

    • ポート 22 を対象としたパケットを許可するには、次のコマンドを実行します。

      # xdp-filter port 22

      このコマンドは、TCP および UDP トラフィックに一致するルールを追加します。特定のプロトコルのみと一致するように、-p protocol オプションをコマンドに渡します。

    • 192.0.2.1 からのパケットを許可するには、次のコマンドを実行します。

      # xdp-filter ip 192.0.2.1

      xdp-filter は IP 範囲に対応していないことに注意してください。

    • MAC アドレス 00:53:00:AA:07:BE からのパケットを許可するには、次のコマンドを実行します。

      # xdp-filter ether 00:53:00:AA:07:BE
    重要

    xdp-filter ユーティリティーは、ステートフルパケットの検査に対応していません。これには、-m mode オプションでモードを設定せず、マシンが送信トラフィックに応答して受信トラフィックを許可する明示的なルールを追加する必要があります。

検証手順

  • 以下のコマンドを使用して、破棄されたパケットおよび許可されるパケットに関する統計を表示します。

    # xdp-filter status

関連情報

  • xdp-filter の詳細は、xdp-filter(8) の man ページを参照してください。
  • 開発者であり、xdp-filter のコードに関心がある場合は、Red Hat カスタマーポータルから対応するソース RPM (SRPM) をダウンロードしてインストールします。