Route53で取得したドメインで名前解決できない

# はじめに

以前にaws学習のために`Route53でドメインを取得した。`

教材学習を終えて、`awsサービスによっては料金が掛かることを考え`
`いらないサービスは削除して整理することに。`

ただ、ドメインは
`本番環境で独自ドメインを設定する際に使えば良い`
と考えていたので、`そのまま残しておいた。`

`その後、本番環境でRoute53でそのドメインを使ってDNS設定したはずなのに
何故かアプリが表示されなかった。`

もしかしたら、同じ境遇の方もいるかもしれないので
情報として残しておく。



# 説明前に注意点（大事）

後述もするが、私はawsサービスを整理しようと感覚で色々消してしまったけど
**`・ドメインをroute53で取得した`**
**`・aws料金怖いし、これから安全策でサービスを削除しようとしてる`**
に該当する人は、**`ドメインに関連するホストゾーンの削除`**は気を付けたほうが良い。

後からでも新しいホストゾーンのネームサーバーを
取得したドメインのネームサーバーに上書きして
データを反映する事は可能！！！

だが、**`最大で２日間の時間を要す`**可能性があるらしい…
（なのでaws整理は慎重にしたほうが良いかも）

ポートフォリオ作成中で２日間の日数取られるの厳しいなーと
個人的にショックを受けたので、ちょっとしたご案内まで。笑
（私は正午辺りに変更して翌日朝には変更完了されたので、半日くらい無駄にした。）



# 起きた問題

awsのEC２にアプリ（rails）をあげているが、

ブラウザに
`URL（http://取得したドメイン）を入力しても`
`アプリが表示されず、DNS_PROBE_FINISHED_NXDOMAINというエラーが返ってくる。`

一方で、`ElasticIPを入力するとアプリが表示される。`

これはDNSの問題だろう…

親切なことに、aws公式ページに解決策があった。

https://aws.amazon.com/jp/premiumsupport/knowledge-center/route-53-troubleshoot-nxdomain-responses/



# 検証

awsより検証するためのコマンドが案内されているので
そちらに従って入力してみる。

```:ターミナル

% dig +trace 取得したドメイン名

〜〜　以下返答　〜〜

一部省略
　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　↓　ネームサーバー
ドメイン名    172800  IN      NS      ns-〇〇.awsdns-〇〇.com.
ドメイン名    172800  IN      NS      ns-〇〇.awsdns-〇〇.net.
ドメイン名    172800  IN      NS      ns-〇〇.awsdns-〇〇.co.uk.
ドメイン名    172800  IN      NS      ns-〇〇.awsdns-〇〇.org.

```

返答されたネームサーバーと新しく作成したホストゾーンのネームサーバーを比較すると
一致していなかった…

**ホストゾーンのネームサーバー確認方法**

`Route53　→ ホストゾーン　→　ドメイン名をクリック　→　ホストゾーンの詳細をクリック`
`ページ右側にネームサーバーが４つ表示される`

![スクリーンショット 2021-12-24 13.41.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1380401/0c3f061e-c224-969a-81a3-32e9e9148308.png)


先ほどターミナルで返答されたネームサーバーと照らし合わせると
やはり一致しない…やっちまってる…

でも、これでアプリ表示できない仮説が立った。



# 原因

私がやらかしてしまったのが、`awsサービスを整理した際に
ホストゾーンも一緒に削除してしまったこと。`

通常route53でドメイン取得時にはホストゾーンも自動生成される。
そのホストゾーンをもとにドメイン設定してしていれば、今回のエラーに至っていなかった。

全く何をしているんだか…笑


# 解決策

■解決策：
`新しく作成したホストゾーンのネームサーバーを
取得したドメインのネームサーバーと一致するように内容を更新する`

これも公式ページに手順が記載されているので、そちらに従って入力していく。

https://docs.aws.amazon.com/ja_jp/Route53/latest/DeveloperGuide/domain-name-servers-glue-records.html#domain-name-servers-glue-records-adding-changing


着手する作業は
・取得したドメインの設定画面にアクセス
・新しく作成したホストゾーンのネームサーバー名で更新する
のみなので、シンプル。

最後にターミナルからdigコマンドで更新できているか、確認する。

```:ターミナル

% dig +trace 取得したドメイン名

〜〜　以下返答　〜〜

一部省略
　　　　　　　　　　　　　　　　　　　　　　↓　ネームサーバーが変更されているはず！！
ドメイン名    172800  IN      NS      ns-〇〇.awsdns-〇〇.com.
ドメイン名    172800  IN      NS      ns-〇〇.awsdns-〇〇.net.
ドメイン名    172800  IN      NS      ns-〇〇.awsdns-〇〇.co.uk.
ドメイン名    172800  IN      NS      ns-〇〇.awsdns-〇〇.org.

```



# 名前解決の内部処理には時間が掛かる…

上記手順までで作業は終わりだったが
変更した内容が`すぐにはDNSサーバーに反映されない`ようだ。

試しに、nslookupコマンドでドメイン名を入力してみると
名前解決されていない…
（ドメイン名ではなくElasticIPを入力してもダメだった…）

```:ターミナル

% nslookup 取得したドメイン名

% nslookup EC２に設定済みのElasticIP

```

このコマンドを打ったことで、まさか別の要因もあるのか…と思い
aws問合せ窓口に質問したが原因は特定できず
その日は諦めて寝ることに。

翌日、確認のために再度nslookupコマンドを入力してみると
名前解決されている…
（他のcurlコマンドも返答があった）

```:ターミナル

% nslookup 取得したドメイン名


〜〜以下返答〜〜


一部省略


Non-authoritative answer:
Name:   ドメイン名
Address: 　設定済みのElasticIP
　　　　　　↑名前解決できてる

```

確実な原因特定まで至らなかったけど
恐らく内部処理に時間が掛かるのだろうと推測してる。



# 終わりに

私は、ドメインのネームサーバーを変更した後に１日待つことになったので
くれぐれも皆さんはawsサービスの削除にはご注意を。笑

割と教材学習時にroute53でドメイン取得した後に、
ホストゾーン削除してまう人いるのではないかなーと思うんだけども。

同じケースに巻き込まれる人が解決するヒントになれば良いな。

では、失礼します。