DNSについて理解する

独自ドメインに関してはこちら

DNSをしっかり理解しようと思います

目次
  1. ドメインの管理組織について
  2. DNSの仕組み
    1. リソースレコード
  3. Netlifyに独自ドメインを設定する
    1. Let’s Encrypt
  4. ドメインの移管

ドメインの管理組織について

役割
ICANNDNSの技術的な運営(ルートネームサーバーの運用)
IPアドレス、ドメイン名、 プロトコル、 ポート番号の管理
レジストリを任命
レジストリTLD(トップレベルドメイン)の登録を管理
レジストラにドメインを卸す
.jpはJPRS
.comはVerisign
レジストラドメイン名の販売、データベースへの登録
ドメインをリセラに卸す
リセラドメイン名の販売

DNSの仕組み

DNS
人が読む用のドメイン名とコンピュータ用のIPアドレスを紐付けるシステム
DNSサーバー
ドメイン名とIPアドレスを変換する仕組みを提供するサーバーで、ネームサーバーとフルリゾルバで構成されてる
ネームサーバーはドメインのゾーン(階層)ごとに配置されている
ネームサーバー
リソースレコードが登録されているサーバー
フルリゾルバ(DNSキャッシュサーバ)
全てのネームサーバーにIPアドレスを問い合わせる役目のサーバー
ドメインでアクセスした時のDNSで名前解決している流れのイメージ図
DNSで名前解決している流れのイメージ図
  1. URLにアクセスすると、ブラウザはフルリゾルバに「URLのIPアドレス」を問い合わせる
  2. フルリゾルバはルートネームサーバーに「URLのIPアドレス」を問い合わせ、ルートネームサーバーは「TLDのネームサーバー」を教える
  3. フルリゾルバはTLDのネームサーバーに「URLのIPアドレス」を問い合わせ、TLDのネームサーバーは「下のゾーンのネームサーバー」を教える…
    最終ゾーンのネームサーバーで「URLのIPアドレス」を教えてもらう
  4. こうしてフルリゾルバは「URLのIPアドレス」をブラウザに伝える
  5. ブラウザは「IPアドレスに紐ずくWebサーバー」にリクエストを送る

実際には、1度アクセスするとフルリゾルバが情報をキャッシュするのでルートネームサーバーに問い合わせることはほぼない

*リゾルバには、パソコンの中からDNSサーバに問い合わせをするDNSクライアント(スタブリゾルバ)もあります(リゾルバに参照されるファイル:/etc/resolv.conf)

ドメイン名→IPアドレス(正引き)
IPアドレス→ドメイン名(逆引き)

リソースレコード

リソースレコードとは
ネームーサーバーで管理されるドメイン名やホスト名の設定を定義したひとまとまりのデータ
フルリゾルバの問い合わせに応じて提供される

リソースレコード内容
Aレコードドメイン名に対するIPv4アドレス
IPv4は最初から使われている32ビットのIPアドレス
AAAAドメイン名に対するIPv6アドレス
IPv6はIPアドレスが足りない問題解決の為の128ビットのIPアドレス
NSレコードドメインのゾーンを管理するネームサーバー
CNAMEドメイン名に対する正式名を表すドメイン名
(エイリアスのように機能)
MXレコードドメインに紐ずくメール受信サーバー
SOAドメインのゾーンの管理情報
TXTそのドメイン名で1文字以上の文字列を保持(コメント等)
PTRIPアドレスに対するドメイン名を指定(逆引きDNS)

など

独自ドメインを取得した場合

サーバーのIPアドレスと取得したドメインを紐付けする
ドメインを購入した会社がドメイン情報を管理する窓口になるので、TLDネームサーバーにNSレコード(ドメインのゾーンを管理するネームサーバー)を伝える役割がある
ほとんどの場合、ドメインを購入した会社がネームサーバーを提供し、利用する場合はリソースレコードなどの情報を設定する

Netlifyに独自ドメインを設定する

今回、独自ドメインは「Xserverドメイン」で購入

方法1
Xserverドメインはドメインの管理、
Netlifyはネームサーバーを担当する

  1. Netlifyでカスタムドメインを設定(購入したドメインを追加する)
  2. NetlifyのDNSを使用する設定をする
  3. Xserverドメイン側でネームサーバーの変更をする(反映に時間がかかる)

DNSの名前解決の確認は、nslookupコマンドで確認できます
DNSサーバの情報が登録されてNSレコードの問い合わせの場合
対話モードだと(終了はCtrl+C)

nslookup
set type=NS
ドメイン名
  1. Netlifyカスタムドメイン設定画面

    「Domain settings」→「Add custom domain」をクリック 上の画面になるので、取得したドメインを入力して「Verify」をクリック

  2. NetlifyDNS追加選択画面

    Primary domainの「Options」から
    「Set up Netlify DNS」をクリック

  3. NetlifyDNS追加完了画面

    DNS設定の完了画面

  4. Xserverドメインのネームサーバー設定画面

    Xserverドメインのネームサーバー設定画面で「その他のサービスを利用する」を選択して「ネームサーバーの情報を入力」し確定します

方法2
Xserverドメインがドメインの管理とネームサーバーを担当する

  1. Netlifyでカスタムドメインを設定(購入したドメインを追加する)
  2. Xserverドメインでネームサーバー設定して、CNAMEレコードを追加する(反映に時間がかかる)

Netlifyのドキュメントによると
外部DNSを使用している場合は、wwwサブドメイン(または別のサブドメイン)をプライマリドメインとして設定することを強くお勧めします。 APEXドメイン(wwwなし)をプライマリドメインとして設定する場合は、NetlifyDNSを使用することをお勧めしますとのこと

  1. NetlifyDNS追加選択画面

    Netlify側でカスタムドメイン追加後
    「Check DNS configuration」をクリック

  2. NetlifyDNS CNAMEレコードを確認画面

    CNAMEレコードを確認する

  3. Xserverドメインのネームサーバー設定画面で「Xserver Domain」を選択して設定

    完了後「DNSレコード」からCNAMEレコードを追加

Let’s Encrypt

電子証明書の1つにウェブサイトを安全に運営するための「サーバー証明書」があります
「サーバー証明書」は「ウェブサイトの運営者の証明」と「通信を暗号化する」ために使われます

「Let’s Encrypt」は誰でも無料で使える「サーバー証明書」(SSL証明書)です
「Let’s Encrypt」は認証してから数秒で発行され、すぐにサーバーへデプロイできます

Let’s Encrypt(レッツ・エンクリプト)は、非営利団体のInternet Security Research Group(英語版)(ISRG)により運営されている証明書認証局で、TLSのX.509証明書を無料で発行している。証明書の有効期間は90日で、期間内のいつでも証明書の再発行を行うことができる。発行はすべて自動化されたプロセスで行われており、安全なウェブサイトを実現するために、証明書の作成、受け入れテスト、署名、インストール、更新を手動で行う必要があった問題を克服するように設計されている。2016年4月に正式に開始された。

wikipedia
https://ja.wikipedia.org/wiki/Let%27s_Encrypt
Netlifyのドメイン設定画面
Netlify「Domain settings」の画面

Netlifyの「Domain settings」の画面で簡単に「Let’s Encrypt」を取得してHTTPSを有効にできます(もちろん自動更新されます)

ドメインの移管

現在のドメイン管理会社で先にすること

  • Whois代理公開サービスが解除されているか確認
  • 契約者のドメイン登録情報の確認
  • ドメイン取得日と更新日の確認
  • レジストラロック(ドメインロック)の解除(JPドメインは不要)
  • AuthCode(所有者の証明)を確認(JPドメインは不要)

ドメイン取得後60日経っていないと移管できない
更新期限ギリギリの移管は、ドメイン管理会社から移管を拒否される場合がある(1ヶ月前までに)

ドメインと同時にサーバー(ネームサーバー)を移行する場合は要注意
新サーバーの設定を先に完了し、旧サーバーの設定はすぐに削除せず、新サーバーとしばらく併用する
ドメインに新ネームサーバーを登録する(新サーバーのIPアドレスが、有効なネームサーバーに登録されている状態にする)