ちょっと DNS について改めて調べていて、そういやサブドメインの管理を別の DNS サーバーに委任するのを試したことないな、となりました。
まあ、実際にこんなのを設定する必要性なんてまずないんですが、思いついたら吉日ということで、せっかくなので、サブドメインの DNS サーバーの委任を試してみます。自分で DNS サーバー立ち上げるのはさすがに面倒なのですが、今はクラウドサービスがあるので、 Route53 を使って遊んでみます。
ネタ元は下記の記事などになります。
- Amazon Route 53 をサブドメインの委任先DNSサーバーとして利用 - サーバーワークスエンジニアブログ
- 親ドメインを移行しないで Amazon Route 53 を DNS サービスとして使用するサブドメインを作成する - Amazon Route 53
なお、今回試す際に使ったドメイン(独自ドメイン)は、 mori-soft.com で、さくらインターネットで取得したものです。
さくらインターネット上でのサブドメインの追加
さくらインターネットで取得したドメイン(独自ドメイン)を、さくらインターネットのレンタルサーバーに追加していると、独自ドメインのサブドメインの追加、ということができます。
さくらインターネットで取得・管理中のドメインを設定したい | さくらのサポート情報
参考までに、先にこちらも試してみます。
この場合は、さくらインターネットのコントロールパネルにログインして、『ドメイン/SSL』->『ドメイン/SSL』を選択します。
サブドメインを追加する場合も、この画面の下部にある『ドメイン新規追加』ボタンを押します。
次に、ドメインの追加画面が表示されるので、
『サブドメインを追加』にチェックをつけて、適当なサブドメイン名を設定します。今回は、sub-test-1としてみました。
これで OK です。設定が完了したら、 dig で調べてみます。ちなみに、設定直後は、
mor@DESKTOP-DE7IL4F:~$ dig sub-test-1.mori-soft.com ; <<>> DiG 9.18.12-0ubuntu0.22.04.3-Ubuntu <<>> sub-test-1.mori-soft.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 8442 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1 (後略)
のように、『ドメインがない』(status が NXDOMAIN )となっていたので、しばらく待ちます。数時間後、再度試すと、
mor@DESKTOP-DE7IL4F:~$ dig sub-test-1.mori-soft.com ; <<>> DiG 9.18.12-0ubuntu0.22.04.3-Ubuntu <<>> sub-test-1.mori-soft.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59671 ;; flags: qr rd ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; WARNING: recursion requested but not available ;; QUESTION SECTION: ;sub-test-1.mori-soft.com. IN A ;; ANSWER SECTION: sub-test-1.mori-soft.com. 0 IN A xxx.xxx.xxx.xxx ;; Query time: 0 msec
のように、サブドメインに対する A レコードがひけます。さくらインターネットでサブドメインを追加した場合、この画面から分かるように
web サーバー名としてサブドメインを割り当てているので、 A レコードが存在しています。
NS レコードを引くと、
mor@DESKTOP-DE7IL4F:~$ dig sub-test-1.mori-soft.com ns ; <<>> DiG 9.18.12-0ubuntu0.22.04.3-Ubuntu <<>> sub-test-1.mori-soft.com ns ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 25409 ;; flags: qr rd ad; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0 ;; WARNING: recursion requested but not available ;; QUESTION SECTION: ;sub-test-1.mori-soft.com. IN NS ;; ANSWER SECTION: sub-test-1.mori-soft.com. 0 IN NS ns2.dns.ne.jp. sub-test-1.mori-soft.com. 0 IN NS ns1.dns.ne.jp. ns1.dns.ne.jp. 0 IN A xxx.xxx.xxx.xxx ns2.dns.ne.jp. 0 IN A xxx.xxx.xxx.xxx ;; Query time: 0 msec
のようになります。サブドメインに対する NS レコードと A レコードも設定されているのがわかります。
でも、さくらインターネットのドメインのゾーン情報の画面を見てみると、こちらに変化はありません。
ということは、コントロールパネルからサブドメインを追加した場合は、直接、さくらのネームサーバーにサブドメインが登録されているけど、ユーザーはそれを触れない、ということになるようです。これは、下記の記事でも指摘されているのと一致します。
サブドメインのDNS設定方法(さくらインターネット) | ONIonDesign -オニオンデザイン-
サブドメインを別のDNSサーバーに委任
さて、いよいよ本命です。今度は、さくらインターネット側でサブドメインを追加するのではなく、 Route53 上でサブドメイン用のネームサーバーを設定して、そちらにサブドメインの権限を委任してみます。
Route53 を設定
まず、ホストゾーンを作成します。 aws のコントロールパネルから Route53 を開いて、『ホストゾーンの作成』を選択します。
ホストゾーン作成画面が開いたら、ドメイン名として、サブドメイン名を入れます。
今回は sub-test-2.mori-soft.com としました。
無事に作成できれば、こんな感じに、 NS レコードと SOA レコードが作成されています。
さくらのゾーン情報を変更
次に、Route53 で作成したサブドメイン用の DNS サーバーを、さくらインターネット側のゾーン情報に NS レコードとして追加します。
こんな感じになります。
設定ができたら、しばらく待ってから dig で引くと、
mor@DESKTOP-DE7IL4F:~$ dig sub-test-2.mori-soft.com ns ; <<>> DiG 9.18.12-0ubuntu0.22.04.3-Ubuntu <<>> sub-test-2.mori-soft.com ns ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14922 ;; flags: qr rd ad; QUERY: 1, ANSWER: 8, AUTHORITY: 0, ADDITIONAL: 0 ;; WARNING: recursion requested but not available ;; QUESTION SECTION: ;sub-test-2.mori-soft.com. IN NS ;; ANSWER SECTION: sub-test-2.mori-soft.com. 0 IN NS ns-xxx1.xxx.xxx. sub-test-2.mori-soft.com. 0 IN NS ns-xxx2.xxx.xxx. sub-test-2.mori-soft.com. 0 IN NS ns-xxx3.xxx.xxx. sub-test-2.mori-soft.com. 0 IN NS ns-xxx4.xxx.xxx. ns-xxx1.xxx.xxx. 0 IN A yyy.yyy.yyy.yyy ns-xxx2.xxx.xxx. 0 IN A yyy.yyy.yyy.yyy ns-xxx3.xxx.xxx. 0 IN A yyy.yyy.yyy.yyy ns-xxx4.xxx.xxx.. 0 IN A yyy.yyy.yyy.yyy ;; Query time: 49 msec
のような感じになります。 sub-test-2.mori-soft.com のネームサーバーは Route53 のサーバーを指していることがわかりますね。
意外と簡単にサブドメインの委任ができました。
おまけ
ちょっと古いのですが、 DNS 回りを知るために『3分間DNS基礎講座』というのを読んだことがあります。
今回の作業にあたり、この本を引っ張り出してきて読み直していると、『第17回 NSレコードと権限委譲』のところには、親ドメインのゾーン情報に、サブドメインの NS レコードと A レコードを登録するという話が載っています。ふと、今回の設定方法とは違うぞ、となりました。なんでだろうか?
軽く調べてみると、
ここに回答がありました。
権限を委任する先のサブドメイン内にネームサーバーがある場合、 NS レコードのみを親側のネームサーバーに登録してある状態だと、サブドメインのネームサーバーの A レコードにたどり着けない、ということですね。
確かに、言われてみれば、その通りですね。なるほど、納得納得。