Red Hat Training

A Red Hat training course is available for RHEL 8

47.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(8) の man ページ。
  • 開発者であり、xdp-filter のコードに関心がある場合は、Red Hat カスタマーポータルから対応するソース RPM (SRPM) をダウンロードしてインストールします。