#DNS関連メモ(Route53含めて)
・エイリアスレコードとは、DNS拡張機能であり、AWSリソースにルーティングするための別名を付けることができる。ELB、S3、API GatewayなどDNS名を持つリソースに対して、直接ドメインを登録することができます。Route 53のエイリアスレコードを使用することで、外部からのアクセスにAレコードとして振る舞います。CNAMEとエイリアスレコードで名前解決を行う際、CNAMEの場合だと、ルートDNSサーバからアクセスを行うが、エイリアスレコードであれば瞬時に名前解決が行われる。
・FQDNとはFully Qualified Domain Name(フリー・クオリファイド・ドメイン・ネーム)のことで、ドメイン名を省略せずに記載していること。
・ホストゾーンとは、レコードのコンテナのこと。パブリックとプライベートがある。
・リゾルバとは、クライアント側のプログラムのことで、DNSサーバにIPアドレスを聞きに行ってくれるプログラムのこと。
・スタブリゾルバとフルサービスリゾルバがある。スタブがとりあえずDNSサーバにIPアドレスを聞きに行ってくれるクライアント側のプログラムのこと。大体がこれ。
・スタブリゾルバはプログラムで、フルサービスリゾルバはDNSサーバである。
・いろいろ問い合わせてくれるDNSサーバのことをフルサービスリゾルバとしたが、DNSキャッシュサーバと呼ばれる。
・権威DNSサーバとDNSコンテンツサーバは、IPアドレスを教えてくれるだけのサーバ
・DNSルートサーバとは、DNSキャッシュサーバが一番初めに聞きに行くDNSサーバのこと。聞きに来られる側のDNSサーバの頂点の役割を持つ。
・トップレベルドメインというものがあり、.comや.jp、.netなどドメインの最後に位置する部分のことを指している。
・DNSサーバは、ドメインやIPを聞かれたときに参照するファイルがある。それを【ゾーンファイル】と呼ぶ。
・DNSラウンドロビンとは、一つのドメイン名に対して複数のIPアドレスを持たせることで、負荷分散を実現する機能のこと。
・レイテンシーベースルーティングとは、最寄りのサーバへ接続させる機能のこと。
・DNSフェイルオーバーとは、アクセスしようとしたプライマリサーバがしんでいるときに、セカンダリサーバへアクセスするよう設定すること。
・ネームサーバ=DNSサーバ
#主要レコードまとめ
・SOAレコード...管理する範囲や動作する範囲の情報が書かれているもの。
・NSレコード...管理を委託しているDNSサーバの名前が記載されているもの。
・MXレコード...ドメイン宛のメールの配送先メールサーバが記載されているもの。
・Aレコード...DNSサーバの最も有力なレコードのことで、ドメイン名に対応するIPアドレスが記載されているもの。(IPv4)
・AAAAレコード...IPv6が記載されているもの。
・CNAMEレコード...ドメイン名に対して別のあだ名が記載されているもの。
#Route53でのレコードの書き方ルール
今回は example.com をドメインとする。
・Zone apexとはexample.comみたいにサブドメインを含めないドメイン名のこと。
・Route53では、Zone apexにCNAMEの定義が出来ない仕様になっている。
・www.example.com やyyy.example.comなどはサブドメインとなる。
【CNAMEレコード作成の注意点】最後のドット(.)を付け忘れない!!!!
www.example.com IN CNAME aaa.example.com.
www.example.com IN CNAME bbb.example.com.
など同じドメインやサブドメインを使用することはできない。
example.com. CNAME example.cname.jp.
などZone ApexにCNAMEは定義できない。
www.example.com. IN CNAME aaa.example.com.
www.example.com. IN A 1.2.3.4
のように別タイプのレコードも書くことはできません。
よってCNAMEレコードはNSレコードやAレコードなどと共存出来ない仕様となっている。
これはDNSのRFC1912に記載されている。
※同じサブドメインでCNAMEレコードを書けないことに要注意。
ホストゾーンを作成するには、ドメインの権威DNSサーバを定義するNSレコードの登録が必要である。例えば
example.com. NS example.content.jp
ちなみにRoute53ではドメイン登録時(ホストゾーン作成時)にNSレコードが自動で定義されています。
【Zone ApexにはNSレコードが必要】であるため、example.comというZone ApexのCNAMEを書くことが出来ない。何が言いたいかというとexample.comのCNAMEレコードは書けないということ。
よってCNAMEを利用する場合はホスト名付きのサブドメインであることが必要。
www.example.com. CNAME yyy.example.com.←←Zone ApexじゃないためOK
#Route53(エイリアスレコード)の使用例
ELBのIPアドレスをAレコードにマッピングしたいけど、ELBは自動で冗長化され、IPアドレスも変動するため、Aレコードを登録するのが現実的でない。また、ELBのDNS名をCNAMEでマッピングしようとすると、Zone Apexにはマッピングできないため、未使用のサブドメインにマッピングすることが必要である。そこでRoute53では、エイリアスレコードという独自の機能が備わっており、AレコードにELBのDNS名を指定することが出来る。
エイリアスレコードを使うことでZone Apex とELBのDNS名を紐づけることが出来ます。
example.com. A ALIAS dualstack elb-〇〇〇
ALIAS dualstack e1b-〇〇〇 A 192.〇.〇.〇
上2つを記述することで、example.com→→192.〇〇.〇〇.〇
さらに、
example.com. A 192.〇.〇.〇
で一発でexample.com→192.〇〇.〇〇.〇
に名前解決が可能。
まとめるとIPアドレスが変動してしまうロードバランサーやS3ウェブサイトホスティング機能を用いるときに、CNAMEレコードを書いてもIPが変わってしまうため、エイリアスレコードを用いることでCNAMEレコードをAレコードとして利用することができ、変化するIPアドレスに沿ってエイリアスレコード内のアドレスも自動的に変わってくれる、またAレコードであることからNSレコードやSOAレコードとも併用可能となっている非常に優れたDNSサービスである。