1.7. DNS レコードをオーバーライドするために BIND でレスポンスポリシーゾーンを設定する


DNS ブロッキングとフィルタリングを使用し、特定のドメインまたはホストへのアクセスをブロックするために DNS 応答を書き換えるには、BIND でレスポンスポリシーゾーン (RPZ) を設定します。NXDOMAIN エラーを返す、クエリーに応答しないなど、ブロックされたエントリーに対してさまざまなアクションを設定できます。

DNS サーバーが複数ある場合は、プライマリーサーバーで RPZ を設定した後、ゾーン転送を設定してセカンダリーサーバーでも RPZ を利用できるようにします。

前提条件

  • BIND をキャッシュネームサーバーとして設定済みである。
  • named または named-chroot サービスが実行されている。
  • 管理者権限がある。

手順

  1. /etc/named.conf ファイルを編集して、options ステートメントに response-policy の定義を追加します。

    options {
        ...
    
        response-policy {
            zone "rpz.local";
        };
    
        ...
    }

    response-policyzone ステートメントで RPZ のカスタム名を設定できます。ただし、次のステップのゾーン定義で同じ名前を使用する必要があります。

  2. 前のステップで設定した RPZ の zone 定義を追加します。

    zone "rpz.local" {
        type master;
        file "rpz.local";
        allow-query { localhost; 192.0.2.0/24; 2001:db8:1::/64; };
        allow-transfer { none; };
    };
    • このサーバーは、rpz.local という名前の RPZ のプライマリーサーバー (type master) です。
    • /var/named/rpz.local ファイルはゾーンファイルです。この例では、相対パスを設定した場合、そのパスは options ステートメントの directory で設定したディレクトリーからの相対パスとなります。
    • allow-query で定義されたホストは、この RPZ をクエリーできます。ただし、アクセスを制限するには、IP アドレス範囲か、BIND アクセス制御リスト (ACL) のニックネームを指定してください。
    • どのホストもゾーンを転送できません。ゾーン転送を許可するのは、セカンダリーサーバーをセットアップする際に限られ、セカンダリーサーバーの IP アドレスに対してのみ許可します。
  3. /etc/named.conf ファイルの構文を確認します。

    # named-checkconf

    コマンドが出力を表示しない場合は、構文に間違いがありません。

  4. 以下の内容で /var/named/rpz.local ファイルを作成します。

    $TTL 10m
    @ IN SOA ns1.example.com. hostmaster.example.com. (
                              2022070601 ; serial number
                              1h         ; refresh period
                              1m         ; retry period
                              3d         ; expire time
                              1m )       ; minimum TTL
    
                     IN NS    ns1.example.com.
    
    example.org      IN CNAME .
    pass:[].example.org IN CNAME .example.net IN CNAME rpz-drop.pass:[].example.net    IN CNAME rpz-drop.

    このゾーンファイル:

    • リソースレコードのデフォルトの有効期限 (TTL) 値を 10 分に設定します。時間の h などの時間接尾辞がない場合、BIND は値を秒として解釈します。
    • 必要な Start of Authority (SOA) リソースレコードが含まれており、ゾーンに関する詳細が記載されています。
    • このゾーンの権威 DNS サーバーとして ns1.example.com を設定します。ゾーンを機能させるには、少なくとも 1 つのネームサーバー (NS) レコードが必要です。ただし、RFC 1912 に準拠するには、少なくとも 2 つのネームサーバーが必要です。
    • このドメイン内の example.org およびホストへのクエリーに対して NXDOMAIN エラーを返します。
    • このドメイン内の example.net およびホストにクエリーを破棄します。
  5. /var/named/rpz.local ファイルの構文を確認します。

    # named-checkzone rpz.local /var/named/rpz.local
    zone __rpz.local/IN__: loaded serial __2022070601__
    OK
  6. BIND をリロードします。

    # systemctl reload named

    change-root 環境で BIND を実行する場合は、systemctl reload named-chroot コマンドを使用してサービスをリロードします。

検証

  1. RPZ が NXDOMAIN エラーを返すように設定されている example.org ドメイン内のホストの解決を試みます。

    # dig @localhost www.example.org
    ...
    ;; ->>HEADER<<- opcode: QUERY, status: **NXDOMAIN**, id: 30286
    ...

    この例では、BIND が同じホスト上で稼働しており、localhost インターフェイスでクエリーに応答することを前提としています。

  2. RPZ がクエリーを破棄するように設定されている example.net ドメイン内のホストの解決を試みます。

    # dig @localhost www.example.net
    ...
    ;; connection timed out; no servers could be reached
    ...
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

Red Hat ドキュメントについて

Legal Notice

Theme

© 2026 Red Hat
トップに戻る