Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

6.4.2. nftables で名前付きセットの使用

nftables フレームワークは、変更可能な名前付きセットに対応します。名前付きセットは、テーブル内の複数のルールで使用できる要素の一覧または範囲です。匿名セットに対する別の利点として、セットを使用するルールを置き換えることなく、名前付きセットを更新できます。
名前付きセットを作成する場合は、セットに含まれる要素のタイプを指定する必要があります。以下のタイプを設定できます。
  • 192.0.2.1192.0.2.0/24 など、IPv4 アドレスまたは範囲を含むセットの場合は ipv4_addr
  • 2001:db8:1::1 2001:db8:1::1 /64 など、IPv6 アドレスまたは範囲を含むセットの場合は ipv6_addr
  • 52:54:00:6b:66:42 など、メディアアクセス制御(MAC)アドレスの一覧を含むセットの場合は ether_addr
  • tcp など、インターネットプロトコルタイプの一覧が含まれるセットの場合は inet_proto
  • ssh など、インターネットサービスの一覧を含むセットの場合は inet_service
  • パケットマークの一覧を含むセットの場合は mark。パケットマークは、任意の正の 32 ビットの整数値にすることができます(0 から2147483647)

前提条件

  • example_chain チェーンと example_table テーブルが存在する。

手順6.14 nftables で名前付きセットの使用

  1. 空のファイルを作成します。以下の例では、IPv4 アドレスのセットを作成します。

    1. 複数の IPv4 アドレスを格納することができるセットを作成するには、次のコマンドを実行します。
      # nft add set inet example_table example_set { type ipv4_addr \; }
    2. IPv4 アドレス範囲を保存できるセットを作成するには、次のコマンドを実行します。
      # nft add set inet example_table example_set { type ipv4_addr \; flags interval \; }
    重要
    シェルで、セミコロンがコマンドの最後として解釈されないようにするには、セミコロンをバックスラッシュでエスケープする必要があります。
  2. 必要に応じて、セットを使用するルールを作成します。 たとえば、次のコマンドは、example_set の IPv4 アドレスからのパケットをすべて破棄するルールを、example_table の example_chain に追加します。
    # nft add rule inet example_table example_chain ip saddr @example_set drop
    example_set が空のままなので、ルールは現在効果がありません。
  3. IPv4 アドレスを example_set に追加します

    1. 個々の IPv4 アドレスを保存するセットを作成する場合は、次のコマンドを実行します。
      # nft add element inet example_table example_set { 192.0.2.1, 192.0.2.2 }
    2. IPv4 範囲を保存するセットを作成する場合は、次のコマンドを実行します。
      # nft add element inet example_table example_set { 192.0.2.0-192.0.2.255 }
    IP アドレス範囲を指定する場合は、上記の例の 192.0.2.0/24 のようにCIDR(Classless Inter-Domain Routing)表記を使用することもできます。

このページには機械翻訳が使用されている場合があります (詳細はこちら)。