DNS: サブドメインの解決を別のネームサーバーに委任する

DNS: サブドメインの解決を別のネームサーバーに委任する

私は、自宅に DNS サーバーをセットアップして、ローカル サーバーのエイリアスを簡単に作成できるようにしています。また、DNS をより深く理解するためのプロジェクトでもあります。私はこの分野に不慣れなので、用語の間違いがあったらご容赦ください (訂正していただける場合は訂正してください)。

ローカル DNS サーバーの目的は、自分のドメインを使用してローカル マシンの一部にアクセスすることです。 たとえば、自分のドメインが だとしますmy-domain.com。 自宅に としてアクセスしたいメディア サーバーがありmedia.my-domain.com、この目的で使用するローカル DNS サーバーが 2 つあります。 これらの DNS サーバーは、他のクエリについては Google DNS に委任します。

以下は、ローカル DNS サーバーにmy-domain.com保存されている のゾーン ファイルです。/etc/bind/zones/db.my-domain.comns1

;
; BIND data file for local loopback interface
;
$TTL    604800
@   IN  SOA ns1.my-domain.com. admin.my-domain.com. (
                  3     ; Serial
             604800     ; Refresh
              86400     ; Retry
            2419200     ; Expire
             604800 )   ; Negative Cache TTL
;
; name servers - NS records
@   IN  NS  ns1.my-domain.com.
@   IN  NS  ns2.my-domain.com.
;
; name servers - A records
ns1.my-domain.com.  IN  A   10.55.55.55
ns2.my-domain.com.  IN  A   10.55.55.56
;
; 10.55.55.0/24 - A records
media.my-domain.com.    IN  A   10.55.55.100

/etc/bind/named.conf.options以下は、ローカル DNS サーバーに保存されているオプション ファイルですns1

acl "trusted" {
    10.55.55.0/24; # home network
};
options {
    directory "/var/cache/bind";

    recursion yes;
    allow-recursion { trusted; };
    listen-on { 10.55.55.55; };
    allow-transfer {none; }; # disable zone transfers

    forwarders {
        8.8.8.8; # google1
        8.8.4.4; # google2
    };

    //========================================================================
    // If BIND logs error messages about the root key being expired,
    // you will need to update your keys.  See https://www.isc.org/bind-keys
    //========================================================================
    dnssec-validation auto;

    auth-nxdomain no;    # conform to RFC1035
    listen-on-v6 { any; };
};

こちらは10.55.55.0/24私のローカル サブネットで、ns1と はns2それぞれプライマリ DNS サーバーとセカンダリ DNS サーバーです。

私はmy-domain.comインターネット上で他の目的で使用しています。たとえば、アクセスすると、admin.my-domain.com公開されている Web サイトの管理コンソールに移動します。つまり、Google の DNS サーバーから実行すると、nslookupグローバルadmin.my-domain.comにアクセス可能なパブリック IP アドレスにマッピングされていることがわかります。

残念ながら、ローカル DNS サーバーを実装した後、admin.my-domain.com正しく解決できません。nslookupリクエストは、このサブドメイン用に構成されていないローカル DNS サーバーにヒットし、ローカル DNS から「応答なし」が返されます。

代わりに、DNS サーバーが のリクエストを Google DNS に転送しmy-domain.com、 、 、 に対してのみ回答を提供するようにns1.my-domain.comしたいです。私の質問と似たような質問をいくつか見たことがありますns2.my-domain.commedia.my-domain.com、回答ではサブドメインごとに 1 つのゾーン ファイルを作成するという傾向があります。これが本当に唯一の方法でしょうか。「 のルールを指定した場合は、x.my-domain.comそのルールに従います。それ以外の場合は、チェーンを上位に委任します (私の場合は Google DNS に)」と本当に言えるようにしたいです。

用語がよくわからないので、Google でこの問題を解決する方法がわかりません。また、まったくの初心者なので、自分で修正するにはどこから始めればよいかわかりません。私が求めていることは可能なのでしょうか? この動作を実装する方法や検索方法について、ご助言いただければ幸いです。ありがとうございます!

答え1

問題は、 全体に対して Bind が権限を持つように設定されていることですexample.com

したがって、内部 DNS レコードだけでなく、 のゾーン ファイル内のすべてのパブリック DNS レコードのコピーも保持するようにローカル Bind を構成する必要がありますexample.com

あるいは、内部使用のために example.com のサブドメインを予約するために Bind を権威あるものにするのではなくexample.com、内部 DNS をそのサブドメインに対してのみ権威あるものにします。つまり、 というゾーンを作成しhome.example.com、 を使用しますmedia.home.example.com。こうすることで、内部 DNS とパブリック DNS で競合するレコードが存在することがなくなります。

関連情報