DNS初心者が独自ドメインの設定する時に知っておきたいこと、ざっくりとした設定方法

ホスティングサービスで借りたサーバを独自ドメインで運用したいケースが結構あるのですが、設定するたびに DNS の仕組みを忘れてしまいます。仕組みを忘れるというよりは、自分が今何を設定しているのか、何を設定しなければいけないのかが分からなくなる感じですね。最近またホスティングで借りたサーバに独自ドメイン設定をすることがあったので、設定の際に頭に入れておいたほうが良さそうなことをメモっておきます。

なお、DNS プロトコルの詳細や、実際の具体的な設定方法については書きません。どういう流れで何を設定すればいいのか、それぞれの設定やアクターがどういう関係になっているのかをなんとなく書きます。便宜上、厳密性を欠いた記述があります、間違った記述があったらさーせん。

登場人物

クライアントのアクセスの流れ

ドメインの設定方法の流れを見る前に、クライアントが Web サイトにアクセスする流れを簡単に抑えておきます。アクセスの流れが把握できれば、どのような設定をすべきかがわかります。例として、クライアントが example.comドメイン名を持つ Web サイトにアクセスする場合について考えます。以下、ざっくりとした図(実際には DNS キャッシュサーバなども存在しますがここでは割愛)。

f:id:norikone:20180821152840p:plain

実際の example.com の IP アドレス(3.3.3.3)を知っているのは、ネームサーバです。このドメイン名と IP アドレスの対応情報は DNS レコードとして管理されます(図の黄緑色の長方形)。で、そのネームサーバが誰なのかを知っているのが .com ドメインレジストリが管理するTLD権威サーバです。これもレコードとして管理されます。

Web サイトへのアクセス時には、クライアントはまず TLD 権威サーバに example.com の IP アドレスを知っているネームサーバの在処を問い合わせ①、dns01.piyo.hoge にアクセスすればいいことを知ります②。次に dns01.piyo.hogeexample.com の在処を聞くと③、3.3.3.3 が返り④、無事 Web サイトにアクセスできます⑤。

すなわち、取得した独自ドメインを Web サイトに反映させるためには、「ネームサーバ」「ネームサーバのレコード」「TLD権威サーバのレコード」の用意・設定が必要になるわけです。これらを設定できれば、取得したドメインを自由に好きな場所(サーバ等)に向けることができます。「TLD 権威サーバのレコード」と「ネームサーバのレコード」の組み合わせで最終的なアクセス先が決まるとも言えるかもしれません。

Webサイトのドメイン設定の流れ

上に書いたように、基本的には「ネームサーバ」「ネームサーバのレコード」「TLD権威サーバのレコード」を設定すればOKです。

TLD権威サーバのレコード」はレジストラサービスを使って設定すればいいのですが、ネームサーバの用意・設定にはいくつかの方法があります。で、ネームサーバの準備は基本的には以下のパターンから選ぶことになると思います。

わざわざ自分で立てることはあまり無いと思うので、下の3つについて書きます。

レジストラが用意しているものを使う

f:id:norikone:20180821001239p:plain

レジストラの多くは、DNS ホスティング機能を提供しています。つまり、ネームサーバを貸してくれます。この場合、レジストラサービス(お名前.comなど)内で、借りたネームサーバの DNS レコードを設定します。大体どのレジストラサービスにも "DNSレコードの設定" 的なメニューがあって、そこで例えば以下のようなレコードを設定することになります。

example.com A 3600 3.3.3.3

DNS レコードについての詳細は割愛しますが、example.com を 3.3.3.3 と紐付けるよ、という意味です。なお、設定の際にはドメインを向ける Web サーバの IP アドレス(3.3.3.3)を知っている必要があります。なので、予めホスティングサービスの方で、Web サイトをホストしているサーバの IP を確認しておきます。

ホスティングサービスによっては、外部に公開する IP を隠蔽している場合があります。その場合にはホスティングサービスが指定するエンドポイント(ロードバランサ等)の IP を設定することになります。もしくは、example.hogehoge.com のようにホスティングサービス側で Web サイトのドメイン名を用意してくれるケースでは、CNAME や Arias レコードで example.com と example.hogehoge.com を紐付けることもあります。いずれにせよ、レジストラが提供しているネームサーバを使う場合には、レジストラサービス経由でそのネームサーバの DNS レコードを設定します。

で、先に見たように、クライアントが Web サイトにアクセスする時にはネームサーバよりも先に TLD 権威サーバに DNS 問い合わせをします。まず TLD 権威サーバにネームサーバが誰かを聞きに行くわけです。ので、「TLD権威サーバのレコード」も設定しなければなりませんが、こちらもレジストラサービスで設定できます。レジストラサービスの "ネームサーバを変更する" 的なメニューから、ネームサーバを指定します。すなわち、TLD権威サーバに、example.com を管理しているネームサーバを教えてあげるということです。"ネームサーバを変更する" という表現は、"TLD権威サーバのレコードを書き換える" ことを意味していると言えます(この例では)。

したがって、このパターンでは「ネームサーバのレコード」と「TLD権威サーバのレコード」をレジストラサービス経由で設定することになります。

ホスティングサービスが用意しているものを使う

f:id:norikone:20180821001313p:plain

ホスティングサービスが用意してくれるネームサーバを使う場合には、「ネームサーバのレコード」は基本的にはホスティングサービス側で設定してくれるので、Web サイト運営者側で設定しなくてOKです。

ただ、TLD 権威サーバにそのネームサーバを教えてあげる必要はあります。なので、ホスティングサービスが用意したネームサーバのドメイン名(dns01.piyo.hoge)を控えて、前述の方法と同様にレジストラサービスから設定します。例えば、お名前.com でとったドメインを Netlify でホストする Web サイトに反映させる場合には、お名前.com のネームサーバ設定で、Netlify が用意するネームサーバを指定することになります。

外部のDNSホスティングを使う

f:id:norikone:20180821001345p:plain

AWS の Route53 などの外部の DNS ホスティングサービスのネームサーバを使うパターンです。このパターンでは、DNS ホスティングサービス経由でネームサーバを借りて、その DNS レコードを設定します。

TLD権威サーバのレコード」は、前述のパターンと同じようにレジストラサービスを使ってを設定してあげます。つまり、TLD 権威サーバに DNS ホスティングサービスで借りたネームサーバを教えてあげます。

このパターンでは、レジストラサービスと DNS ホスティングサービスの2箇所で DNS の設定が必要なため、やや複雑です。

おわり

独自ドメインの設定をする際に個人的に頭に入れておいたほうが良さそうと思ったことを書きました。Netlify などのホスティングサービスは非常に簡単にサーバを用意できるため重宝していますが、独自ドメインの設定に若干の面倒臭さを感じてしまいます。ホスティングサービス側に設定したい独自ドメイン名を入力したら、OAuth とかを使って自動的にレジストリやネームサーバに必要な設定をしてくれれば楽なのになあと思いますがそれはそれで仕様的に面倒臭いんでしょうかね。おわり。