なんかいじりたい季節になってきた。

このブログ (と本家サイト) はAWSのLightsailでホスティングしてます。kiriukun.com のドメインとIPの紐づけもLightsailのDNSゾーンという機能でやってます。

ところで最近インフラ周りをどうしようか色々考えてて、思い付きで kiriukun.com のワイルドカード証明書をAWSのACMで作成しました。

ACMでは作成した証明書を検証するためにCNAMEレコードを使います。

さて kiriukun.com のDNS設定をしてるのはDNSゾーンなので……

CNAMEレコード…
CNAMEレコード…

DNSゾーンにCNAMEレコード追加してみました。

発行済み
発行済み

無事に検証も行えました。

が、なんか気持ち悪いです。仕事でACMの証明書を検証するときはいつもRoute 53なので、見慣れない感じがします。

実はあまりよくわかってなかったのですが、調べてみるとAWSの以下のドキュメントが見つかりました。

でドメインの DNS レコードを管理する DNS ゾーンを作成するAmazon Lightsail | Lightsail ドキュメント
DNS ゾーンを作成することLightsailで、 を使用してドメインの Lightsail DNS レコードを管理できます。最大 3 つの Lightsail DNS ゾーンを作成できます。3 つ以上の DNS ゾーンが必要な場合は、3 つ以上のドメイン名を管理するため、 Amazon Route 53 を使用してすべてのドメインの DNS を管理することをお勧めします。

どうやらDNSゾーンと同じ設定をRoute 53でもできるようです。

ここではドメイン名は1つしかありませんが、後学のためにDNSゾーンからRoute 53に移行してみることにしました。

作業内容

ホストゾーン作成

まず、Lightsailインスタンスに振っている固定IPと、LightsailのDNSゾーンに登録してあるAレコードを全てメモします。

固定IP
固定IP
DNSゾーンのDNSレコード
DNSゾーンのDNSレコード

そしたらRoute 53の画面でホストゾーンを作成します。ここではドメインは kiriukun.com です。

ホストゾーン作成
ホストゾーン作成

「レコードを作成」ボタンを押し、メモしておいたAレコードと同じものを全て登録します。

『レコード名』にはAレコードのサブドメインと同じもの (※ @ は空欄でOK)、『値』にはLightsailインスタンスの固定IPを入力します。

レコード作成
レコード作成
登録後のレコードたち
登録後のレコードたち

一つずつ全て登録しました。

うちはサブドメインをいくつか登録していたので、Aレコードが5つもあります。デフォルトで登録されていたNSレコードとSOAレコードと合わせて7つのDNSレコードが登録されました。これでホストゾーンのできあがりです。

この時点ではまだ何も切り替わっていません。既存のサーバーに接続できなくなったりもしていないはずです。

ネームサーバー切り替え

さて、この時点で kiriukun.com の名前解決を行っているDNSサーバーがどこのものであるかを dig コマンドで確認してみました。

dig kiriukun.com
実行結果
; <<>> DiG 9.16.1-Ubuntu <<>> kiriukun.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13359
;; flags: qr rd ad; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;kiriukun.com.                  IN      A

;; ANSWER SECTION:
kiriukun.com.           0       IN      A       54.199.161.137
ns-139.awsdns-17.com.   0       IN      A       205.251.192.139
ns-721.awsdns-26.net.   0       IN      A       205.251.194.209

;; Query time: 20 msec
;; SERVER: 172.31.32.1#53(172.31.32.1)
;; WHEN: Sat Jun 19 16:48:40 JST 2021
;; MSG SIZE  rcvd: 130

ANSWER SECTIONの ns-139.awsdns-17.comns-721.awsdns-26.net は既存の kiriukun.com DNSゾーンのネームサーバーでした。これはLightsailの当該DNSゾーンの画面の下部で確認できます。

このネームサーバーを、今回新たに作成したRoute 53のホストゾーンのものに切り替えていきます。

まず、ホストゾーンにデフォルトで登録されていたNSレコードのルーティング先 (4つ) を全てメモします。これが新しいネームサーバーです。

そしたら、ドメインに紐づけられているネームサーバーの切り替えはドメインの管理サイトで行います。kiriukun.comスタードメインで買ったあとどこにも移管していないので、スタードメインの管理サイトに行き、ネームサーバーを変更します。

ネームサーバー
ネームサーバー

変更しました。

そしたら5分ほど待って再度 dig を行ってみます。

dig kiriukun.com
実行結果
; <<>> DiG 9.16.1-Ubuntu <<>> kiriukun.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 36638
;; flags: qr rd ad; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;kiriukun.com.                  IN      A

;; ANSWER SECTION:
kiriukun.com.           0       IN      A       54.199.161.137
ns-1473.awsdns-56.org.  0       IN      AAAA    2600:9000:5305:c100::1
ns-84.awsdns-10.com.    0       IN      A       205.251.192.84

;; Query time: 0 msec
;; SERVER: 172.31.32.1#53(172.31.32.1)
;; WHEN: Sat Jun 19 20:40:08 JST 2021
;; MSG SIZE  rcvd: 142

ANSWER SECTIONに出てくるネームサーバーがRoute 53のホストゾーンのものに変わっていました。

念のためブラウザからもアクセスしてみて、問題が無いことを確認しました。これでネームサーバーの切り替えは完了です。

DNSゾーン削除

最後にLightsailの画面からDNSゾーンを削除すれば終わりです。

いきなり消すのが怖かったら、問題無いと判断できるまでそのままにしておいてもいいと思います。何か問題があったらネームサーバーをLightsailのDNSゾーンのものに切り替えれば今まで通り動くはずです。

以上。

雑談

このブログが乗ってる環境を構築した当初、Let's Encryptでワイルドカード証明書を作るのが大変だったので (※今どうだかは知らない)、いま全部のサブドメインに対してLet's Encryptで証明書を発行してHTTPS化してるんですよね。

でも今回せっかくACMでワイルドカード証明書作ったから、Lightsailの手前にその証明書を設定したCloudFrontを立ててHTTPS化する方法に切り替えて、Let's Encryptやめようかなとか思ってる。

そのぶんAWSへの依存度が上がっちゃうけど、Let's Encryptだと3か月ごとに証明書の更新があって (cronで自動化はしてるけど) 毎度ドキドキするのも嫌なので。