![DNS: サブドメインの解決を別のネームサーバーに委任する](https://rvso.com/image/1502893/DNS%3A%20%E3%82%B5%E3%83%96%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E3%81%AE%E8%A7%A3%E6%B1%BA%E3%82%92%E5%88%A5%E3%81%AE%E3%83%8D%E3%83%BC%E3%83%A0%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%AB%E5%A7%94%E4%BB%BB%E3%81%99%E3%82%8B.png)
私は、自宅に 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.com
ns1
;
; 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.com
がmedia.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 で競合するレコードが存在することがなくなります。