[AWS] Route53でドメインの権限委譲を行う

このブログのドメインはblog.katsubemakito.netですが、例えばfoo.blog.katsubemakito.netなどと更に階層を深くしたサブドメインが作りたくなった際にやる設定です。本来はサブドメインの管理を本家のDNSサーバではなく、別のサーバで行う場合にやったりします。要は権限移譲ですね。

AWSではRoute53がDNSやドメイン回りを担当するサービスですが、非常にかんたんにこのあたりの設定が行えるようになっています。

Route53で権限移譲

katsubemakito.netに、新たにfoo.katsubemakito.netというサブドメインを新しいホストゾーンで作っていきます。

今回はすでにRoute53で管理しているドメインがある状態からスタートします。またホストゾーンは両方同じアカウントにあります。

移譲先のホストゾーンを作成

最初に権限を移譲する先のホストゾーンを作成します。親分と子分でいうところの子分の方ですね。

AWSのマネジメントコンソールへサインインし、Route53へ移動、「ホストゾーンの作成」をクリック

画面横にニョキッと入力欄が現れるので、サブドメインを含めたドメイン名を入力し、「作成」ボタンをクリック。

成功すると以下のようにネームサーバの一覧と、SOAレコードが最初から登録されています。このあと使いますのでネームサーバのドメイン一覧をどこかにメモしておきます。

移譲元の設定

ところ変わって移譲元であるkatsubemakito.netのホストゾーンを開いています。親分の方です。

画面上にある「レコードセットの作成」をクリックすると、右側に入力欄が表示されますので、必要な情報を入れます。

名前
先ほど作成した子分の方のサブドメインを入力。ここではfoo
タイプ
「NS - ネームサーバ」を選択
先ほどメモした子分のネームサーバのドメインを貼り付けます。

最後に「作成」ボタンをクリックすれば完了です。

もし以下のようなエラーが出たら、ネームサーバのドメインの入力をミスっているかプルダウンで「NS」を選択しているか確認してください。ドメインは末尾にドット(.)がある形で正常です(というかこちらが正式)。

次の理由により、レコードセットを保存できませんでした。 - [値] フィールドに無効な文字が含まれるか、無効な形式です。

TTLは好きな値を設定してください。運用が安定するまでは少し短めでも良いかもしれませんね。

以上で移譲に関する設定は終了です。拍子抜けするほど簡単でしたよねw あとは移譲先のホストゾーンにAレコードなどを必要に応じて設定することが出来ます。

確認してみる

実際に試してみます。

子分の方、移譲先のホストゾーンにAレコードを2つ登録しました。foo.katsubemakito.netbar.foo.katsubemakito.netです。

digります。

$ dig A @8.8.8.8 foo.katsubemakito.net

; <<>> DiG 9.10.6 <<>> A @8.8.8.8 foo.katsubemakito.net
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15367
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;foo.katsubemakito.net.     IN  A

;; ANSWER SECTION:
foo.katsubemakito.net.  299 IN  A   160.16.84.237

;; Query time: 117 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Sat Dec 07 01:12:26 JST 2019
;; MSG SIZE  rcvd: 66

もういっちょ。

$ dig A @8.8.8.8 bar.foo.katsubemakito.net

; <<>> DiG 9.10.6 <<>> A @8.8.8.8 bar.foo.katsubemakito.net
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13957
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;bar.foo.katsubemakito.net. IN  A

;; ANSWER SECTION:
bar.foo.katsubemakito.net. 299  IN  A   160.16.84.237

;; Query time: 52 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Sat Dec 07 01:12:41 JST 2019
;; MSG SIZE  rcvd: 70

大丈夫そうですね。

おまけ

削除するには?

今回作成した移譲先のホストゾーンをいきなり削除しようとすると、以下のようなエラーメッセージが表示されます。

ホストゾーンを削除するには、最初に Zone Apex の NS および SOA リソースレコードセット以外のすべてのリソースレコードセットを削除する必要があります。

メッセージの通り先に先ほど追加したAレコードをすべて削除したあとで、もう一度やると今度は消すことができます。移譲元のNSレコードの削除もお忘れなく。

参考ページ