はじめに
以前、お名前.comで購入したドメインがあって、そのドメインをどうにかしてAWS(特にELB)で使用したいと思い、いろいろ調べたのでその結果を書きます。
Agenda
- お名前.comのドメインをRoute53に移管する
- お名前.comにRoute53のDNSを登録してサブドメインを委任する
- お名前.comのレコードに直接AWSサービスのFQDNをCNAMEで設定する
- Route53でドメインを購入し、お名前.comのドメインからCNAMEで参照する
前提条件
- お名前.comでドメイン取得済み
- AWSアカウント作成済み
1.お名前.comのドメインをRoute53に移管する
ドメインをRoute53に移管するには以下の制約をクリアしなくてはいけない。
- お名前.comで購入したドメインが購入から60日以上経過していること
- 移管対象のドメインがRoute53に登録できるドメインであること
お名前.comでの設定
-
ドメイン設定
->ドメイン移管ロック
の状態を未設定
にする -
Navi TOP
で対象のドメインをクリックし、ドメイン詳細
の画面でAuthCode
をメモる - 同じく
ドメインの詳細
画面でドメイン情報(Whois情報)
を編集する
Route53での設定
- 移行するドメイン名で
Hosted Zone
の作成 - 以下のように
Transfer Domain
で移管対象のドメインを入力し、移管可能か調べる - 以下のように
AuthCode
を入力し、キャプチャのように設定する - Whois情報を確認し、
購入
する -
Pending requests
にドメインが登録されていればOK
メール承認
- しばらくするとwhoisに登録したメールアドレスにメールが届くので、承認する
完了待ち
- 全ての移管が完了するまでに数日かかる。
続いて、現在のレジストラと協力して、ドメインの移管作業が開始されます。
現在のレジストラが移管リクエストに応答しない場合(これはレジストラではよくあることです)、移管は 5~7 日後に自動的に実行されます。
現在のレジストラが何らかの理由で移管リクエストを拒否した場合は、現在のレジストラに連絡して移管に関する問題を解決できるように、登録者にメールが送信されます。
ということですので、気長に待ちます。
2.お名前.comにRoute53のDNSを登録してサブドメインを委任する
Route53設定
- Route53でHostedZonesを作成する
- 作成後以下のように
NSレコード
とSOAレコード
が作成される - このうち、
NSレコード
4つを後に使うのでメモをしておく - 以下のようにAWSサービスをレコードに追加(今回は
ELB
をALIAS
で追加)
お名前.comの設定
-
ドメイン設定
->DNS関連機能の設定
に進む - 該当ドメインを選択して
次へ進む
を押下 - 以下のように、
DNSレコードを利用する
の横にある設定する
を押下 - 以下のように
Route53
のNSレコード
を4つ登録し、下にある確認画面へ進む
を押し、確定させる。
設定確認
- NSレコード確認(反映までに時間が掛かる)
$ dig NS sub1.sadayukimatsuno.com
; <<>> DiG 9.8.3-P1 <<>> NS sub1.sadayukimatsuno.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7626
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;sub1.sadayukimatsuno.com. IN NS
;; ANSWER SECTION:
sub1.sadayukimatsuno.com. 894 IN NS ns-433.awsdns-54.com.
sub1.sadayukimatsuno.com. 894 IN NS ns-1778.awsdns-30.co.uk.
sub1.sadayukimatsuno.com. 894 IN NS ns-781.awsdns-33.net.
sub1.sadayukimatsuno.com. 894 IN NS ns-1151.awsdns-15.org.
;; Query time: 50 msec
;; SERVER: 192.168.13.1#53(192.168.13.1)
;; WHEN: Fri Feb 19 14:10:59 2016
;; MSG SIZE rcvd: 179
-
http://sub1.sadayukimatsuno.com/
にアクセス
ELBにおけるHTTPSの設定
- 証明書取得(
let's encrypt
でやる場合はこちらを参考に) - ELBに配置
-
https://sub1.sadayukimatsuno.com
にアクセスできるようになる。
注意点
- ELBの証明書登録時に証明書の名前として「-」を使わない
- お名前.com側のFQDNとRoute53側のFQDNは一致させる
- 複数のサブドメインを委任して、全ての向き先が同一の
ELB
だとしてもきちんと動作する
追加検証
複数のドメインからのHTTPSアクセスをELBを通して1つのインスタンスに向けられるか。
回答:頑張れば可能
ELB
には1つのSSL証明書しか載せることはできないので、ELB
1つだと無理。
したがって、ドメイン分ELB
を用意して、全てのELB
の向き先を1つのインスタンスにする。なお、コンソールでは1つのインスタンスに複数のELB
を設定できないため、APIを使用して設定する必要がある。
複数のサブドメインからのHTTPSアクセスをELBを通して1つのインスタンスに向けられるか。
回答: 可能(難易度は証明書の数次第)
ワイルドカード証明書があれば、1台のELB
で大丈夫なので、特に問題なく使えるだろう。
let's encryptなどでFQDN単位で証明書作ったら、その数だけELB
が必要になってしまう。
3.お名前.comのレコードに直接AWSサービスのFQDNをCNAMEで設定する
お名前.comの設定
設定確認
- CNAMEレコード確認(反映までに時間が掛かる)
$ dig CNAME sub1.sadayukimatsuno.com
; <<>> DiG 9.9.5-3ubuntu0.6-Ubuntu <<>> CNAME sub1.sadayukimatsuno.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13634
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;sub1.sadayukimatsuno.com. IN CNAME
;; ANSWER SECTION:
sub1.sadayukimatsuno.com. 3594 IN CNAME matsuno-test-1586476005.ap-northeast-1.elb.amazonaws.com.
;; Query time: 1 msec
;; SERVER: 172.31.0.2#53(172.31.0.2)
;; WHEN: Fri Feb 19 07:30:52 UTC 2016
;; MSG SIZE rcvd: 120
これが一番簡単ではある。
サブドメインのサブドメインとか管理しようと思ったら大変だけど。
4.Route53でドメインを購入し、お名前.comのドメインからCNAMEで参照する
Route53での設定
上の方で幾つかすでに基本的な設定方法についてはキャプチャを使って説明したので、ここからは、キャプチャの頻度を下げます。
- Route53でドメイン購入
Route53
->Registerd domains
->Register Domain
- 購入後、作成された
Hosted Zone
の任意のサブドメインでELB
へのALIAS
レコードを作成
お名前.comでの設定
- DNSレコード設定で、
CNAME
を先ほど作成したサブドメインに向けるレコードを追加
注意点
-
CNAME
は他のレコードと共存できないため、ドメインのトップ階層(Zone Apex)に設定できない。(Zone ApexにはNSレコードが設定されているはずだから) - 参考情報
追加検証
先ほどの3. お名前.comのレコードに直接AWSサービスのFQDNをCNAMEで設定する
というものと、4. Route53でドメインを購入し、お名前.comのドメインからCNAMEで参照する
というものの違い
- 3のメリット
- ドメイン購入費用がかからない
- Route53を利用しなくてよい
- 4のメリット
- ALIASレコードが使える(ALIASとCNAMEの比較はこちら)
- 一つの
Hosted Zone
で複数のドメインを受けることができる(しかしHTTPSの場合はELB
を分けなくてはいけないので、適当なサブドメインを切って、レコードセットを分ける必要がある) - ELBの変更時にAWS内の設定変更のみで完結する(
ELB
andRoute53
)
この比較は時と場合による気がしている。
というよりも管理するなら、2. お名前.comにRoute53のDNSを登録してサブドメインを委任する
というやり方がやっぱりいい。
最後に
様々な環境でいろんな制約がある中でベストな方法を選択する必要があると思います。
他にも、「こんな方法でやったほうがこんな時おいしいよ!」みたいな意見があれば、教えて下さい。