お名前.comのドメインをAWSで使用する4つの方法

  • 129
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

はじめに

以前、お名前.comで購入したドメインがあって、そのドメインをどうにかしてAWS(特にELB)で使用したいと思い、いろいろ調べたのでその結果を書きます。

Domain-name.jpg

Agenda

  1. お名前.comのドメインをRoute53に移管する
  2. お名前.comにRoute53のDNSを登録してサブドメインを委任する
  3. お名前.comのレコードに直接AWSサービスのFQDNをCNAMEで設定する
  4. Route53でドメインを購入し、お名前.comのドメインからCNAMEで参照する

前提条件

  • お名前.comでドメイン取得済み
  • AWSアカウント作成済み

1.お名前.comのドメインをRoute53に移管する

ドメインをRoute53に移管するには以下の制約をクリアしなくてはいけない。

  1. お名前.comで購入したドメインが購入から60日以上経過していること
  2. 移管対象のドメインがRoute53に登録できるドメインであること

お名前.comでの設定

  • ドメイン設定 -> ドメイン移管ロックの状態を未設定にする
  • Navi TOPで対象のドメインをクリックし、ドメイン詳細の画面でAuthCodeをメモる
  • 同じくドメインの詳細画面でドメイン情報(Whois情報)を編集する

Route53での設定

  • 移行するドメイン名でHosted Zoneの作成
  • 以下のようにTransfer Domainで移管対象のドメインを入力し、移管可能か調べる
    • route3.png
  • 以下のようにAuthCodeを入力し、キャプチャのように設定する
    • route4.png
  • Whois情報を確認し、購入する
  • Pending requestsにドメインが登録されていればOK

メール承認

  • しばらくするとwhoisに登録したメールアドレスにメールが届くので、承認する

完了待ち

  • 全ての移管が完了するまでに数日かかる。

続いて、現在のレジストラと協力して、ドメインの移管作業が開始されます。
現在のレジストラが移管リクエストに応答しない場合(これはレジストラではよくあることです)、移管は 5~7 日後に自動的に実行されます。
現在のレジストラが何らかの理由で移管リクエストを拒否した場合は、現在のレジストラに連絡して移管に関する問題を解決できるように、登録者にメールが送信されます。

ということですので、気長に待ちます。

2.お名前.comにRoute53のDNSを登録してサブドメインを委任する

Route53設定

  • Route53でHostedZonesを作成する
  • 作成後以下のようにNSレコードSOAレコードが作成される
    • route1.png
  • このうち、NSレコード4つを後に使うのでメモをしておく
  • 以下のようにAWSサービスをレコードに追加(今回はELBALIASで追加)
    • route2.png

お名前.comの設定

  • ドメイン設定->DNS関連機能の設定に進む
    • onamae1.png
  • 該当ドメインを選択して次へ進むを押下
  • 以下のように、DNSレコードを利用するの横にある設定するを押下
    • onamae2.png
  • 以下のようにRoute53NSレコードを4つ登録し、下にある確認画面へ進むを押し、確定させる。
    • onamae4.png

設定確認

  • NSレコード確認(反映までに時間が掛かる)
console
$ 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証明書しか載せることはできないので、ELB1つだと無理。
したがって、ドメイン分ELBを用意して、全てのELB の向き先を1つのインスタンスにする。なお、コンソールでは1つのインスタンスに複数のELBを設定できないため、APIを使用して設定する必要がある。

参考文献

複数のサブドメインからのHTTPSアクセスをELBを通して1つのインスタンスに向けられるか。

回答: 可能(難易度は証明書の数次第)

ワイルドカード証明書があれば、1台のELBで大丈夫なので、特に問題なく使えるだろう。

let's encryptなどでFQDN単位で証明書作ったら、その数だけELBが必要になってしまう。

3.お名前.comのレコードに直接AWSサービスのFQDNをCNAMEで設定する

お名前.comの設定

  • 以下のようにCNAMEレコードを追加する
    • onamae5.png

設定確認

  • CNAMEレコード確認(反映までに時間が掛かる)
console
$ 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 and Route53

この比較は時と場合による気がしている。
というよりも管理するなら、2. お名前.comにRoute53のDNSを登録してサブドメインを委任するというやり方がやっぱりいい。

# 最後に

様々な環境でいろんな制約がある中でベストな方法を選択する必要があると思います。
他にも、「こんな方法でやったほうがこんな時おいしいよ!」みたいな意見があれば、教えて下さい。