プログラマーのメモ書き

伊勢在住のプログラマーが気になることを気ままにメモったブログです

サブドメインを Route53 の DNS サーバーに委任してみる

ちょっと DNS について改めて調べていて、そういやサブドメインの管理を別の DNS サーバーに委任するのを試したことないな、となりました。

まあ、実際にこんなのを設定する必要性なんてまずないんですが、思いついたら吉日ということで、せっかくなので、サブドメインの DNS サーバーの委任を試してみます。自分で DNS サーバー立ち上げるのはさすがに面倒なのですが、今はクラウドサービスがあるので、 Route53 を使って遊んでみます。

ネタ元は下記の記事などになります。

なお、今回試す際に使ったドメイン(独自ドメイン)は、 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 レコードを登録するという話が載っています。ふと、今回の設定方法とは違うぞ、となりました。なんでだろうか?

軽く調べてみると、

@IT:DNS Tips:サブドメインを委任するには

ここに回答がありました。

権限を委任する先のサブドメイン内にネームサーバーがある場合、 NS レコードのみを親側のネームサーバーに登録してある状態だと、サブドメインのネームサーバーの A レコードにたどり着けない、ということですね。

確かに、言われてみれば、その通りですね。なるほど、納得納得。