route53とは?
route53(ルート53)はwebブラウザ上から簡単に操作できるDNSサービスです。
route53はAWSのサービスの一つですが、AWSでドメインを購入しなくても
お名前.comなどでドメインを購入した場合でも設定をすることでroute53が使えます。
もちろんドメインを取得したお名前.com上でもDNS設定は可能です!
route53は無料枠もなく、ネイキッドドメインあたり(ホストゾーン)お金がかかりますが、それでもroute53を利用するメリットはあります。
- ブラウザ・コマンドライン上からレコードを追加・削除可能
- awsサービスと連携しやすい(LB,ACM, CDN, DKIM..)
- 反映が早い
- 可用性が高い(障害がおこりにくい)
- エイリアスレコードが使用できる
AWSのサービスをメインで使用してる人はroute53を利用することをおすすめします。DNSの操作もしやすいです。
route53の使い方
AWSのサービスですから、route53を使用するにはawsのアカウントが必要です。
必要なもの
- awsアカウント
- ドメイン(route53で取得する場合は不要、若干高い?ので別で取得してよい)
- 追加したいレコード
- ホストゾーン作成費用(毎月0.5ドル)
お名前.comで取得したドメインをroute53で設定できるようにする
アカウント作成後に「サービス」から「route53」を選択します。
ホストゾーンの作成をクリックし、ドメイン名に取得したドメインを入力します(example.com)
- パブリックホストゾーン -> 基本はこっち、外部からアクセスできるURLを作りたい時
- プライベートホストゾーン -> awsサービスを利用中、VPC内のプライベートネットワークで利用する場合
ホストゾーンを作成するとNSレコードが作成されます。
NSレコードの「値/トラフィックのルーティング先」にある下記のレコード値をメモしておきます。
ns-xxx.awsdns-xx.net.
ns-xxx.awsdns-xx.com.
ns-xxx.awsdns-xx.org.
ns-xxx awsdns-xx.co.uk.
お名前.comの管理画面にログインして、下記URLの「他社レンタルサーバー・お客様独自のネームサーバーにて運用する場合」の項目を参照して、上のレコードを追加します。上の全部を追加します。反映されるまで時間がかかります。
https://www.onamae.com/guide/p/67
設定が変更されたかどうか確認するにはコマンドを実行して確認します。nsレコードが先程登録したawsdnsのものになっていたら設定完了しています。
# dig example.com ns
レコードの追加
レコードにはいくつかありますがよく追加するレコードを紹介します。
- Aレコード
- MXレコード
- CNAMEレコード
- TXTレコード
ゾーンに作成するレコードはいくら入れても請求されません。ホストゾーンごとです。ホストゾーンを選択して「レコードを作成」のオレンジボタンをクリックします。
Aレコード
AレコードはドメインとIPアドレスを紐付けるレコードです。
- www.example.com A IN 203.0.113.14
TTLは理由がなければデフォルトで良いです。
IPの切り替えテストを行うときはTTLを60や30など短く設定しよう!
→DNS設定が変更されるまで待つ時間が短くなります。
Aレコードの使い道のひとつが「webページの公開」です。例えば以下の条件の時を考えます。
- webページのドメイン「site.example.com」
- webサーバのIPアドレス「202.0.113.14」
ドメインを取得して、webサーバの設定を行ってもwebサイトがすぐにみられるわけではありません。ドメインとIPの紐付けが(DNS設定)が必要です。site.example.comにはサーバの住所であるIPアドレスが入っていません。そこで、
- site.example.com IN A 203.0.113.14
というAレコードを入れてドメインとIPの紐づけを行います。
こうすることで初めてドメインsite.example.comをブラウザに打ち込むとDNSのAレコードにあるIPアドレスを参照してサーバに到達、webサイトが表示されます。
route53で登録する際は
- example.comというホストゾーンを作成した後
- (route53以外でドメインを取得した場合はネームサーバ設定を行った後)
- レコード作成で下記の情報を入力して作成します。
- Aレコードに登録するサブドメイン(site)
- レコードタイプ (A レコード)
- IPアドレス(203.0.113.14)
- TTL (デフォルト 300)
とっても簡単です。
MXレコード
MXレコードはメールを使う時に登録するレコードです。
メールサーバを自前で建てるということは最近あまりないと思うので使う機会は少ないかもしれません。
Aレコードと同じくメールサーバのIPをドメインに指定します。
TXTレコード
TXTレコードは文字通りDNSに特定の文字列を登録できるレコードです。
基本的にはそのドメインの所有者しかDNSをいじれない(レコードの追加はできない)ので認証周りでよく使われます。
無償のSSL証明書を取得できるLet’sEncryptはドメインのTXTレコードに認証文字列を入れて、認証局がドメインに登録されたTXTレコードの認証文字列を読みにいって認証するというDNS認証方式が利用できます。spfやdkimなどでも利用されています。
CNAMEレコード
CNAMEレコードはドメインのあだ名をつける時に使うレコードです。
sub.example.comというドメインにwww.example.comと同じIPのAレコードを追加したい場合
- www.example.com IN A 192.168.0.1
- sub.example.com IN A 192.168.0.1
と複数のAレコードを追加してもよいですが、www.example.comと同じというのを表すcnameレコードを追加してもよいです。
- www.example.com A IN 192.168.0.1
- sub.example.com CNAME IN www.example.com
sub.はwww.のあだ名なので、IPはwww.の192.168.0.1になります。
CNAMEを使う意味としては、例えばwwwとsubは常に同じIPを追加するという場合にもしwwwのIPを変更するとなった場合
wwwのAレコードのIPを変更するだけでsubのIPは変更する必要がないので楽です。
つまりwwwのIPを変更すればsub.のIPも変更できます。
Aレコードを別々に登録していた場合はすべて変更しなおす手間がかかります。
CNAMEの制約
CNAMEには制約があります。CNAMEとして登録したドメイン(左側)はそのドメインの他のレコードを追加できないというのものです。
- www.example.com IN A 192.168.0.1
- sub.example.com IN CNAME www.example.com
こちらの例ではsub.はcnameレコードとして登録されています。そのため、下記のような別のレコードは追加できません。気をつけてください。
- sub.example.com IN A 192.168.0.34
- sub.example.com IN MX 10 192.168.0.1
これが問題になるのはCDNを利用する場合です。
CDN(contents delivery network)は設定したwebサーバ上のデータを一時的に保存(キャッシュ)してwebサーバの代わりに配信してくれるサービスで、もとのwebサーバ(オリジンと呼ぶ)のスペックを上げなくてもデータの大きいファイルの配信やアクセスの多い静的サイトを公開する時によく利用されています。
CDNの利用はwebサーバの複製をフロントにつくるようなもので、www.example.com にアクセスが来た時にまずはCDNのサーバにアクセスしにいくようにDNSを登録する必要があります。
CDNの利用を開始するとドメインが発行されます(例:cdn.contents-delivery)が、CDNは全世界の各地に設定していてどのサーバから配信されるかは決まっていないので、決まったIPをこちらで把握することはできません。
つまり、www.example.com のAレコードをCDNのIPに割り当てる といったことはできません。
そこでCNAMEを使います。
CDNで発行されたドメイン cdn.example-contents-delivery をCNAMEに登録します。
- www.example.com IN CNAME cdn.example-contents-delivery
これでwww.example.comにアクセスしてきた通信がCDN側に行くようになります。
どんなときに問題になるのか?
このときCNAMEで登録するドメインがexample.comだった場合に問題がおこります。
- example.com IN CNAME cdn.example-contents-delivery
このようにexample.com のCNAMEを登録したくなりますがこれはできません。なぜならCNAMEの制約でCNAMEのレコードがあるものは他のレコードを追加できないからです。example.comはネイキッドドメイン(APEXドメイン)でありNSレコードが存在するドメインだからです。そのためCNAMEを登録できません。
CDNを利用するときはネイキッドドメインのサイトは使わないようにしましょう。
とはいえ、こういった事例が多いためか対策方法もありネイキッドドメインでもCDNに設定できる方法が提供されています。その一つがエイリアスレコードです。
route53ではエイリアスドメインというものが使えるので(AWSのサービス用など制約あり)CDNにcloudfrontを使用するときはネイキッドドメインでもCDN利用が可能です。