Red Hat Training

A Red Hat training course is available for RHEL 8

48.10. firewalld を使用した IP セットの設定および制御

firewalld で対応する IP セットタイプの一覧を表示するには、root で次のコマンドを実行します。

~]# firewall-cmd --get-ipset-types
hash:ip hash:ip,mark hash:ip,port hash:ip,port,ip hash:ip,port,net hash:mac hash:net hash:net,iface hash:net,net hash:net,port hash:net,port,net

48.10.1. CLI を使用した IP セットオプションの設定

IP セットは、firewalld ゾーンでソースとして使用でき、リッチルールでソースとして使用できます。Red Hat Enterprise Linux で推奨される方法は、ダイレクトルールで firewalld を使用して作成した IP セットを使用する方法です。

  • 永続的な環境で firewalld に認識されている IP セットの一覧を表示するには、次のコマンドを root で実行します。

    # firewall-cmd --permanent --get-ipsets
  • 新しい IP セットを追加するには、永続化環境を使用し、root で次のコマンドを実行します。

    # firewall-cmd --permanent --new-ipset=test --type=hash:net
    success

    上記のコマンドは、名前 test とタイプ hash:net で、IPv4 の新しい IP セットを作成します。IPv6 で使用する IP セットを作成する場合は、--option=family=inet6 オプションを追加します。ランタイム環境で新しい設定を有効にするには、firewalld を再読み込みします。

  • root で次のコマンドを実行して、新しい IP セットの一覧を表示します。

    # firewall-cmd --permanent --get-ipsets
    test
  • IP セットの詳細は、root で次のコマンドを実行します。

    # firewall-cmd --permanent --info-ipset=test
    test
    type: hash:net
    options:
    entries:

    この時点では IP セットにエントリーがありません。

  • IP セット test にエントリーを追加するには、root で次のコマンドを実行します。

    # firewall-cmd --permanent --ipset=test --add-entry=192.168.0.1
    success

    上記のコマンドは、IP アドレス 192.168.0.1 を IP セットに追加します。

  • IP セットの現在のエントリーを一覧表示するには、root で次のコマンドを実行します。

    # firewall-cmd --permanent --ipset=test --get-entries
    192.168.0.1
  • IP アドレスの一覧を含むファイルを生成します。以下に例を示します。

    # cat > iplist.txt <<EOL
    192.168.0.2
    192.168.0.3
    192.168.1.0/24
    192.168.2.254
    EOL

    IP セットの IP アドレスの一覧が含まれるファイルには、行ごとにエントリーが含まれている必要があります。ハッシュ、セミコロン、また空の行から始まる行は無視されます。

  • iplist.txt ファイルからアドレスを追加するには、root で次のコマンドを実行します。

    # firewall-cmd --permanent --ipset=test --add-entries-from-file=iplist.txt
    success
  • 拡張された IP セットのエントリー一覧を表示するには、root で次のコマンドを実行します。

    # firewall-cmd --permanent --ipset=test --get-entries
    192.168.0.1
    192.168.0.2
    192.168.0.3
    192.168.1.0/24
    192.168.2.254
  • IP セットからアドレスを削除し、更新したエントリー一覧を確認するには、root で次のコマンドを実行します。

    # firewall-cmd --permanent --ipset=test --remove-entries-from-file=iplist.txt
    success
    # firewall-cmd --permanent --ipset=test --get-entries
    192.168.0.1
  • IP セットをゾーンへのソースとして追加し、ゾーンを使用して、IP セットに記載されるアドレスから受信するすべてのトラフィックを処理します。たとえば、IP セットの test をソースとして drop ゾーンに追加し、IP セットの test の一覧に表示されるすべてのエントリーから発信されるパケットをすべて破棄するには、root で次のコマンドを実行します。

    # firewall-cmd --permanent --zone=drop --add-source=ipset:test
    success

    ソースの ipset: プレフィックスは、ソースが IP セットで、IP アドレスまたはアドレス範囲ではない firewalld を示しています。

IP セットの作成および削除は、永続環境に限定されますが、その他の IP セットオプションは、--permanent オプションを使用しないランタイム環境で使用できます。

警告

Red Hat は、firewalld を介して管理していない IP セットを使用することは推奨しません。このような IP セットを使用すると、そのセットを参照する永続的なダイレクトルールが必要で、IP セットを作成するカスタムサービスを追加する必要があります。このサービスは、firewalld を起動する前に起動する必要があります。先に起動しておかないと、firewalld が、このセットを使用してダイレクトルールを追加できません。/etc/firewalld/direct.xml ファイルを使用して、永続的なダイレクトルールを追加できます。