43.2. xdp-filter ルールに一致するネットワークパケット以外のネットワークパケットをすべて削除
xdp-filter
を使用して、ネットワークパケットのみを許可できます。
- 特定の宛先ポートから、あるいは指定された宛先ポートへ
- 特定の IP アドレスから、あるいは特定の IP アドレスへ
- 特定の MAC アドレスから、あるいは特定の MAC アドレスまで
これを行うには、特定のルールに一致するネットワークパケット以外のネットワークパケットをすべて破棄する xdp-filter
の deny
ポリシーを使用します。たとえば、ドロップするパケットのソース IP アドレスがわからない場合は、この方法を使用します。
インターフェイスで xdp-filter
を読み込む際にデフォルトのポリシーを deny
に設定すると、特定のトラフィックを許可するルールを作成するまで、カーネルはこのインターフェイスからのパケットをすべて直ちに破棄します。システムからロックアウトしないようにするには、ローカルにコマンドを入力するか、別のネットワークインターフェイスからホストに接続します。
前提条件
-
xdp-tools
パッケージがインストールされている。 - ホストにローカルにログインするか、トラフィックのフィルタリングを予定しないネットワークインターフェイスを使用してホストにログインします。
- XDP プログラムをサポートするネットワークドライバー。
手順
xdp-filter
を読み込み、enp1s0
などの特定のインターフェイスのパケットを処理します。# xdp-filter load enp1s0 -p deny
オプションで、
-f feature
オプションを使用して、tcp
、ipv4
、ethernet
などの特定の機能のみを有効にします。すべての機能をロードするのではなく、必要な機能のみをロードすることで、パケット処理の速度が向上します。複数の機能を有効にするには、コンマで区切ります。コマンドがエラーで失敗した場合、ネットワークドライバーは XDP プログラムをサポートしません。
ルールを追加して、一致するパケットを許可します。以下に例を示します。
パケットのポート
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) をダウンロードしてインストールします。