Yuki's Tech Blog

仕事で得た知見や勉強した技術を書きます。

【AWS:ゼロから実践するAmazon Web Services。手を動かしながらインフラの基礎を習得】セクション5: 【Route53】ドメインを登録しようで知らなかったことをざっくりまとめてみた

目次

概要

パブリックサブネットに設置したWebサーバーにドメインを登録して、アクセスしやすいようにします。今回は実際にドメインを購入して、Route53を使ってそのドメイン名でWebサイトにアクセスできるようにします。

ドメイン名とは

ドメイン名とは、 IPアドレスと同様に、インターネット上のコンピュータを識別するための文字列です。

パブリックIPアドレスをブラウザのURLバーに入力すれば、Webサイトにアクセスできます。しかし、覚えにくいかつ打つのがめんどくさいです。そのため、ドメイン名をURLバーに直接入力してWebサイトにアクセスします。

(※)文脈にもよりますが、IPアドレスの話題でドメインと言われたら一般的にはドメイン名のことを指します。

ドメイン名の構造

ドメイン名は、ピリオドで区切られた構造をしています。

www.example.co.jp

ドメイン名を構成する要素それぞれに呼び名があります。

ドメインの構成要素 呼び名
www 第4レベルドメイン
example 第3レベルドメイン
co 第2レベルドメイン
jp トップレベルドメイン

ドメインICANNという団体が統括管理しているので、一意です(パブリックIPアドレスICANNが管理しています)。それゆえ、ドメイン名でWebサイトを一意に特定することができます。

ドメインを購入しただけでWebサイトが見れるようになるのか

ドメインを購入するだけではWebサイトは見れません。ドメインでWebサイトを見れるようにするためには、ドメインとサーバーのIPアドレスDNSで紐づける必要があります。

DNS(Domain Name System)とは

DNSとは、 IPアドレスドメイン名の対応を管理する仕組みのことです。

DNSの仕組みはネームサーバーとフルリゾルバで実現されています。

種類 意味
ネームサーバー ネームサーバーとは、ドメイン名とそれに紐づくIPアドレスが登録されているサーバーです。ドメインの階層ごとにネームサーバーが配置され、そのネームサーバーが配置された階層のドメインに関する情報をネームサーバーが保持しています。
フルリゾル フルリゾルバとは、「任意のドメインに紐づくIPアドレスを取得したい」と問い合わせると、色々なネームサーバーに聞いてIPアドレスを教えてくれるサーバーのことです。

(注)ネームサーバーはDNSサーバーと呼ばれることがあります。

リソースレコード

ネームサーバーに登録されている「ドメイン名とIPアドレスの紐付け」一つ一つのことをリソースレコードと呼びます。リソースレコードにはタイプがあり、IPアドレス以外にもいろいろな情報を管理しています。

リソースレコードのタイプ 意味
Aレコード ドメインに紐づくIPアドレス
NSレコード ドメインのゾーンを管理するネームサーバー
MXレコード ドメインに紐づくメール受信サーバー
CNAME ドメインの別名でリソースレコードの参照先
SOA ドメインのゾーンの管理情報

ドメイン名でなぜWebサイトにアクセスできるのか

DNSを通じて、 ドメイン名からIPアドレスを引き出すことを名前解決と言います。ブラウザはドメイン名でWebサーバーにアクセスしているように見えますが、実際はWebサーバーにアクセスする前にドメイン名を名前解決して、受け取ったIPアドレスでブラウザはWebサーバーにアクセスしています。

Route53(ルートフィフティスリー)とは

Route53とは、 AWSDNSサービスです。ネームサーバーの役割を果たしています。

Route53の3つの特徴

  1. 高可用性。SLA100%
  2. エッジロケーション(Route53のサービスを提供する場所)の中で最も近いロケーションから応答を返すため、通信が高速です。
  3. フルマネージドサービスであるため、DNSサーバーの設計・構築・維持管理が不要です。運用が楽です。

Route53を利用するにあたって知るべき重要概念

Route53を利用するにあたって知るべき重要概念を以下にまとめます。

概念 意味
ホストゾーン ホストゾーンとは、すべての階層のネームサーバーに登録されているリソースレコードの集合体のことです。
レコードセット レコードセットとは、リソースレコードのことです。
ルーティングポリシー ルーティングポリシーとは、Route53がレコードセットに対してどのようなルーティングを行うかを決めるものです。 別の言い方をするとフルリゾルバからIPアドレスを問われたときに、どのIPアドレスを返すかのルールを決めるものです。Route53では複数のルーティングポリシーを設定できるので、柔軟なルールを作成できます。
ヘルスチェック ヘルスチェックとは、サーバーの稼働状況をチェックすることです。

ルーティングポリシーの種類ついて

ルーティングポリシーには以下のような種類があります

ルーティングポリシー 意味
シンプルルーティング シンプルルーティングとは、ドメインへの問い合わせがあった場合、レコードセットに事前に設定されている値を返すものです。このルーティングポリシーはシンプルなので、最初はこちらを使います。
加重ルーティング 加重ルーティングとは、ドメインへの問い合わせがあった場合、 複数エンドポイント毎に設定された重み付けに基づいて値を返すものです。提供リソースに差がある場合や、ABテストの時に使用します。
レイテンシールーティング リージョン間の遅延が少ない方のリソースへルーティングします。マルチリージョンにリソースが存在する(複数の国にリソースが存在する)場合に使用します。
位置情報ルーティング 位置情報ルーティングとは、ドメインへの問い合わせがあった場合、クラアイントの位置情報に基づいて値を返すものです。コンテンツのローカライズや地域限定配信時に使用します。
フェイルオーバールーティング ヘルスチェックの結果に基づいて、利用可能なリソースへルーティングします。フェイルオーバールーティングを使うことで、障害発生時にSorryサーバーに簡単に切り替えられます。

Route53でDNSを設定する

作業手順の大まかな流れ

手順1: ドメインのネームサーバーをRoute53に変更
ドメインのネームサーバーをRoute53に変更するためには、Route53でドメインのホストゾーンを作成します。次に、お名前.comのネームサーバーをRoute53に変更したいので、お名前.comでネームサーバーの設定をRoute53にします。

手順2: ドメインに紐づくパブリックIPアドレスを登録
ドメインに紐づくパブリックIPアドレスを登録するために、Route53でレコードセットを作成して、ドメインに紐づくIPアドレスを登録します。 このパブリックIPアドレスには、Elastic IPで確保したパブリックIPアドレスを使用します。

作業手順

(注)事前にお名前.comでドメインを取得する必要があります。今回はblog-test.xyzというドメインを取得しました。

手順1:
IAMユーザー用のマネジメントコンソールでRoute53を検索します。Route53ではまずホストゾーンを作成して、その中にレコードセットを登録することで、ドメイン名とIPアドレスの紐付けを登録できます。Route53のページの左サイドバーにある「ホストゾーン」をクリックします。その後、「ホストゾーンの作成」をクリックします。 Image from Gyazo

手順2:
ドメイン名を入力します。その後、タイプを選択します。インターネットからそのドメインにアクセスしたいので、タイプには「パブリックホストゾーン」を選択します。その後「ホストゾーンの作成」をクリックします。これでホストゾーンが作成されました。

Image from Gyazo

手順3:
ホストゾーンを作成すると、NSレコードとSOAレコードが初めから登録されています。NSレコードとは、そのドメインを管理するネームサーバーとの紐付けで、SOAレコードとは、そのドメインのゾーンの管理情報です。

NSレコードを選択して値の部分を見ると、ドメイン(blog-test.xyz)に紐づくネームサーバーが4つ登録されているのがわかります。 Image from Gyazo

手順4:
EC2インスタンスを起動させます。そして、そのEC2インスタンスにElastic IPで確保したパブリックIPアドレスを紐付けます。その後、先ほど紐付けたパブリックIPアドレスを用いてEC2インスタンスSSHでログインします。ログインが成功した場合、以下のような画面になります。

ssh -i ./blog-test-ec2.pem ec2-user@54.250.26.39

Image from Gyazo

手順5:
ログインしたEC2インスタンスのネームサーバーを確認します。digコマンドで確認します。digコマンドは、 ドメインに紐づくIPアドレスの情報や、IPアドレスに紐づくドメインの情報を調べたいときに使用します。 digの後にドメイン名を指定します。ドメインのネームサーバーを知りたいときはNSを指定します。digコマンドはいろいろな情報が表示されるので、シンプルにネームサーバーの情報だけ知りたかったら、+shortというオプションを加えます。

// blog-test.xyzというドメインを管理するネームサーバーを知りたいので、NSを指定した
dig blog-test.xyz NS +short

Image from Gyazo

blog-test.xyzというドメインのネームサーバーを調べると、お名前.comのネームサーバーが表示されました。これは、xyzのネームサーバーにblog-test.xyzのIPアドレスを聞いたときに、お名前.comのネームサーバーにアクセスしてくださいと言っています。なぜこうなっているのかというと、お名前.comでドメインを購入した際に、お名前.comではそのドメインのネームサーバーにデフォルトでお名前.comのネームサーバー(dns1.onamae.comとdns2.onamae.com)を登録して、それをxyzのネームサーバーに報告しているからです。お名前.comのネームサーバーをRoute53に変更したい場合、お名前.comの管理画面で「ゾーンはお名前.comのネームサーバーにあるという情報」を、「ゾーンはRoute53にある」という情報に変更すれば大丈夫です。変更すると、お名前.com経由でxyzのネームサーバーにも変更が報告されます。

(※)ゾーンに関しては以下の説明がわかりやすかったので引用させてもらいます。

引用(DNSゾーン 【DNS zone】)

DNSゾーンとは、インターネットのドメイン名の管理において、あるDNSサーバ(ネームサーバ)が自ら管理するドメインの範囲のこと。管理権限(オーソリティ)を持つドメインとそのサブドメインが含まれるが、管理を他のサーバに委任したサブドメインはそのゾーンから外れる。

手順6:
お名前.comにログインします。その後、「ネームサーバーの設定」をクリックします。ネームサーバーを変更したいドメインをクリックして、「他のネームサーバーを利用」をクリックします。ネームサーバー情報を入力の部分に、Route53のNSレコードの値(ネームサーバー)を4つすべて入力します。その後、「確認画面へ進む」→「設定する」をクリックします。これでドメインのネームサーバーの変更は完了しました。 Image from Gyazo

(注)ネームサーバーの変更が反映されるのに24時間くらいかかります。

手順7:
ドメイン名にEC2インスタンスのパブリックIPアドレスを紐付けます。 そのために、Route53のホストゾーンにドメイン名とパブリックIPアドレスを紐付けるAレコードを登録します。Route53の設定画面から先ほど作成したホストゾーンを作成します。その後、「レコードを作成」をクリックします。レコードタイプはAレコードで大丈夫です。値の部分にはEC2インスタンスのパブリックIPアドレスを入力します。最後に「レコードを作成」をクリックします。

Image from Gyazo

以上で終了です。ドメインのネームサーバーの変更が反映されると、ブラウザのURLバーにドメイン名を入力すると、Aレコードに登録したパブリックIPアドレスが返され、Webサーバーに接続できます。

しばらく時間が経ってEC2インスタンスにログイン後、digコマンドでドメインのネームサーバーを確認すると、Route53のNSレコードに登録されているネームサーバーが表示されます。
Image from Gyazo

また、ドメイン名でWebサーバーにアクセスできます。 Image from Gyazo

インフラ構成図

以前のインフラ構成図にRoute53を追加しました。 Image from Gyazo

参考記事

AWS:ゼロから実践するAmazon Web Services。手を動かしながらインフラの基礎を習得 | Udemy

ドメインとドメイン名の違い

DNS

DNSゾーンとは - 意味をわかりやすく - IT用語辞典 e-Words

DNSド素人がdigコマンドとRoute 53を使って、DNSについてあれこれ学んでみた | DevelopersIO

DNSサーバとゾーン