はじめに
こんにちは。kosukein38です。
ローカルで作成したアプリやWebサイトをデプロイしようとなったときに、必ずといっていいほど行う作業が独自ドメイン化だと思います。
独自ドメイン化は記事もたくさんあって、見よう見まねでやっていればなんとなく設定できてしまうと思います。
しかし、ちょっと外れたことをやりたいなと思ったときに、用語の知識がなく、どこをいじっていいのか分からないという事態に陥ります(それが僕です😇)
そこで今回はDNSについて、基本的な用語を確認しながら知識整理をしていきたいと思います。
対象者
- DNS初心者
内容
DNS
DNSは(Domein Name System)の略でドメインをIPアドレスへと変換する仕組みのことを指します。
DNSサーバーの種類
権威DNSサーバー
特定のドメインのIPアドレス情報などを保持するDNSサーバー。
Webクライアントからのドメイン名に関する名前解決のリクエストを受け取り、それに対応するドメイン名を管理する権威DNSサーバに問い合わせます。その後、該当するドメイン名に対応するIPアドレス情報をクライアントに返答し、同時に問い合わせ結果をキャッシュします。
キャッシュDNSサーバー
クライアントに代わって権威DNSサーバーに問い合わせるDNSサーバー。
クライアントはまずこのキャッシュDNSサーバーに名前解決を依頼します。もしキャッシュに保存されていれば、その結果をクライアントに返しますし、無ければ今度は権威DNSサーバーに問い合わせします。
上位のDNSサーバから解決結果がかえってくると、キャッシュDNSサーバはそれをクライアントへ返却し、同時にキャッシュへ保存します。
名前解決
先ほどから何度も登場している「名前解決」とは、ドメインとIPアドレスを紐づけることを指します。
DNSレコード
DNSレコードは、ドメイン名とそれに関連する情報を対応付けるためのデータです。
主に以下のようなものがあります。
(マイナーなものも含めると他にもたくさんあります😇)
レコードタイプ | 説明 |
---|---|
A(Address)レコード | ドメイン名からIPv4アドレスを解決するためのレコード |
AAAA(IPv6 Address) レコード | ドメイン名からIPv6アドレスを解決するためのレコード |
CNAME(Canonical Name)レコード | ドメイン名のエイリアスを作成するためのレコード |
NS(Name Server)レコード | そのドメインの権威サーバーを指定するためのレコード |
MX(Mail Exchange) レコード | メールの配送先メールサーバーのドメイン名を指定するためのレコード |
SOA (Start of Authority)レコード | ドメインに関する管理情報を格納しているレコード |
TXT (Text)レコード | テキストメモを登録できるレコード(主にメールのセキュリティに利用) |
ちなみにRoute53ではエイリアスレコードというのを設定することができます。
これはRoute53固有の拡張機能になっていて、S3など他のAWSサービスを使っている場合に便利です。
使用しているAWSリソースがデフォルトで持っているDNS名をIPアドレスの代わりに設定することができます。
例えば、ALBのようなロードバランサーのIPアドレスは変わる可能性があります。
そういった場合に、ALBのもっているデフォルトのDNS名を指定することで、Route53がうまいこと名前解決してくれるようです。
エイリアスレコードについて詳しくは以下の記事に書いてあります。
https://dev.classmethod.jp/articles/amazon-route-53-alias-records/
Route53
AWSが提供する権威DNSサーバーのことです
(ポート53で動作することからRoute53と呼ばれるらしい)
ドメイン登録・管理、DNSのルーティング、ヘルスチェックが主な機能になっています。
ドメイン登録と管理は日常的に行っている方が多いのではないでしょうか?
DNSにおけるルーティング、ヘルスチェックとは果たしてなんでしょうか??
ルーティングとポリシー
DNSのルーティングは、特定のドメイン名に関連するIPアドレスや他のリソースレコードに対するリクエストを適切なサーバーに転送するプロセスを指します。
そして、そのルーティング方式(ルール)をポリシーと呼んでいます。
Route53には多くのルーティングポリシーが用意されています。
Route53には複数値回答ルーティングのように、ロードバランサーに近いような機能を提供するDNSルーティング方法もあるようです。
ヘルスチェック
Route53のヘルスチェック(Health Check)は、ユーザーが定義したエンドポイントやリソースの可用性や状態を監視するための仕組みです。
これにより、Route53はトラフィックを正常なエンドポイントにリダイレクトすることが可能になり、アプリケーションの可用性を向上させることができます。
※可用性は"システムが継続して稼働できる能力"を指します。
仕組みとしては、Route53からエンドポイントに対してクエリを送信して応答があれば正常、応答がなければ異常のステータスとなり、CloudWatchで監視や通知を送るといった感じです。
まとめ
DNSはドメイン名からIPアドレスを特定してくれるものっていうことくらいしか頭になかったのですが、奥深いです。
(2023年末に書いています。皆様良いお年を!)
参考
https://www.udemy.com/course/aws-associate/
https://dev.classmethod.jp/articles/route53-alias-crossaccount/