
初めに
先日こちらの記事で、トップレベルドメインにindex.htmlを追加し、これで「ドメインの所有権を証明できる」と記した。すっかり失念していたが、ドメイン所有権の証明は通常のサイト所有権の証明とは違い、HTMLコードをサイトの<head>タグ内に追加するのではなく、ネームサーバーに「DNSレコード」というものを追加する必要があったのだ。
以前それを行おうとして失敗し、その原因すら分かっていない状態で放置してしまっていた一件だったので、そろそろ本気で解決したいと思い至った。そこで今回は、ロリポップのサーバーを使用しながら、独自ドメイン側が提供するネームサーバーや、別で用意したネームサーバーを使用し、DNSレコードの編集を行って、かつウェブサイトが事前のように安定動作するための方法を記していく。
そのためにまず予備知識を学習していこう。
ネームサーバー(DNSサーバー)とは
「ネームサーバー」とは、別名「DNS(Domain Name System)サーバー」とも言い、ドメイン名をIPアドレスに変換するためのサーバーである。通常インターネット上のウェブサイトにアクセスする際、我々は覚えやすいドメイン名(例:example.com)を使用しているが、実際にはそのドメイン名に対応するIPアドレス(例:192.0.2.1)にアクセスしている。この変換を行うのがネームサーバーの役割で、この変換のことを「名前解決」という。
ロリポップのネームサーバー
ロリポップには以下のようなネームサーバーが存在している。
- uns01.lolipop.jp
- uns02.lolipop.jp
これらはロリポップのレンタルサーバーを利用する全てのユーザーに共通して設定されており、独自ドメインを設定する際にも、これらのネームサーバー情報をドメイン登録サービスの管理画面で設定する必要がある。しかしロリポップが提供するネームサーバーでは、ユーザーが「DNSレコード」の編集を行うことができない仕様になっており、このせいで後述するいくつかの不都合が生じてしまう。
なぜ複数ある?
上記のロリポップのネームサーバーのように、通常ネームサーバーは複数用意されている。それらは同じデータを持ったサーバーで、そういうシステム形態にしている理由は主に三つある。まず一つ目は、もし一つのサーバーがダウンした場合でも、他のサーバーがサービスを代行できるようにするためである(冗長性の確保)。二つ目は、複数のネームサーバーを使用することで、トラフィックを分散させ、各サーバーの負荷を軽減させるためである(負荷の分散)。
そして三つ目が、ネームサーバーを地理的に異なる場所に配置することで、地域ごとのアクセス速度を向上させ、また災害により障害が発生するリスクを分散させるためである(地理的分散)。このようにミラーサーバー(同じサービス提供できる複製されたサーバー)は、多ければ多いほどセキュリティやパフォーマンスに優れているが、無尽蔵に用意できる資源ではないため、通常はロリポップのように「プライマリ」と「セカンダリ」の二つが用意されている。
DNSレコードとは
「DNSレコード」は、ドメイン名とIPアドレスを紐付けるためのデータのことで、例えばブラウザでウェブサイトにアクセスする際、ブラウザがドメイン名をIPアドレスに変換するために、このDNSレコードを参照している。DNSレコードには以下のような種類が存在する。
- Aレコード: ドメイン名に対応するIPv4アドレスを指定。Aは”Address”のこと。
- AAAAレコード: ドメイン名に対応するIPv6アドレスを指定。
- MXレコード: メールサーバーの情報(メールの配送先)を指定。
- CNAMEレコード: ドメイン名の別名(エイリアス)を指定。
- TXTレコード: ドメインに関するテキスト情報を指定。TXTは”Text”のこと。Googleのサイト所有権確認などに使われる「通常のTXTレコード」の他に、特別な役割を持たせた以下のようなレコードも存在する。
- SPFレコード: メール送信元の認証に使用されるTXTレコード。
- DKIMレコード: メールの改ざん防止のために使用される公開鍵を含むTXTレコード。
- DMARCレコード: SPFやDKIMと連携してメールの認証結果を処理するためのポリシーを定義するTXTレコード。
つまりネームサーバーの仕組みをまとめると、以下のようになる。
①ユーザーがブラウザにドメイン名を入力する
②ブラウザがドメイン名に対応するネームサーバーに問い合わせる
③ネームサーバーはドメイン名に対応するDNSレコード(通常はAまたはAAAAレコード)を返す
④ブラウザは取得したIPアドレスにアクセスし、ウェブサイトを表示する
なぜロリポップのネームサーバーではダメ?
先の仕組みに当てはめてみると、あなたのドメイン(ホスティングサービスが提供する初期ドメインか、別で取得した独自ドメイン)をブラウザに打ち込んだ場合、あなたのウェブサイトが問題なく表示されるのであれば、あなたのドメインに紐づけられた「ネームサーバー」に、あなたのウェブサイトのIPアドレスを示す「DNSレコード(AかAAAAレコード)」が保存されていることになる。
通常のウェブサイト運営では、それで最低限のサービスは提供していることになり、特段問題もないため、ことロリポップにおいては、ユーザーが勝手にDNSレコードを編集できない仕様にしていると思われる。よってそれでは困るときというのはつまり、ユーザーが「別のDNSレコードを追加・編集したいとき」である。具体的には以下のような状況でDNSレコードを追加・編集する必要がある。
- GoogleサーチコンソールやSSL証明書の新規発行に際して、ドメイン所有権を証明(DNS認証)するためのTXTレコードを追加する場合。
- ウェブサイトの存在するサーバーとは別のメールサーバーを使用するために、既存のMXレコードを削除するか、それよりも優先度の高いMXレコードを追加し、そこで指定した新しいドメインを名前解決するためのAレコードも追加する場合。
- メールサーバーでそれぞれの機能を使用するために、SPFレコードなどをTXTレコードとして追加する場合。
ネームサーバーを変更する方法
今回は俺が使用しているドメイン登録サービス「お名前ドットコム」を例に解説する。お名前ドットコムで取得した独自ドメインに、現在はロリポップのネームサーバーが紐づいているわけだが、これをお名前ドットコムのネームサーバー(以下の四つ)に戻してあげて、そのうえでロリポップのウェブサーバーに名前解決されるようにするには、まずお名前ドットコムのネームサーバーにDNSレコードを追加してやる必要がある。
- 01.dnsv.jp
- 02.dnsv.jp
- 03.dnsv.jp
- 04.dnsv.jp
まず「お名前ドットコム Navi」の管理画面にログインし、「ドメイン設定」→「ネームサーバーの設定」→「DNS設定/転送設定」と進み、表示されるドメインの一覧から、設定を行いたいドメインを選択して「次へ」を押す。表示された「DNSレコード設定」画面にて、以下の二つのAレコードを追加する。
ホスト名 | TYPE | TTL | VALUE |
空欄のまま | Aレコード | 3600のまま | ウェブサーバーのIPアドレス |
www | Aレコード | 3600のまま | ウェブサーバーのIPアドレス |
ロリポップの場合、自身のウェブサーバーのIPアドレスを知るには、管理画面左側のメニューから「ユーザー設定」→「アカウント情報」と進み、初期ドメインの場合「ロリポップ!のドメイン」という項目に表示されているドメイン名をコピー、独自ドメインの場合「独自ドメイン」の項目に表示されているドメイン名をコピーし、「Google Admin Toolbox dig」などのDNS Lookupツールにアクセスして、「名前」の欄にペーストすればいい。表示されるAレコードの「DATA」欄に表示されているのが、サーバーのIPアドレスだ。
Aレコードを二つ追加し終えたら、下までスクロールして、「DNSレコード設定用ネームサーバー変更確認(転送用のネームサーバーに変更する)」の項目にチェックを“いれない”で、下の「確認画面へ進む」を押す。確認画面をよく確認し、もし問題なければ「設定する」で変更を確定する。設定が完了したら、一旦ここから一時間が経過するまで待つ。その理由は先ほど追加したAレコードのTTLが3600に設定されているからだ。
TTL(Time to Live)とは?
「TTL(Time to Live)」はDNSキャッシュサーバーがそのレコードをキャッシュに保持する時間を指定する値で、一般的に以下のような値が設定される。
- 短いTTL: 300秒(5分) – 頻繁に変更がある場合に適している。
- 標準的なTTL: 3600秒(1時間) – 一般的な設定。
- 長いTTL: 86400秒(24時間) – 変更が少ない場合に適している。
これで指定した秒数が切れると、キャッシュサーバーは再度権威DNSサーバーに問い合わせて最新の情報を取得することになる。その頻度が高いとDNSレコードの変更が迅速に反映される分、サーバーの負荷が増加し、逆に頻度が低いと、負荷が軽減される代わりに変更反映に時間がかかるようになる。このようにTTLは、ネットワークパフォーマンスのバランスを取るための重要な機能であり、先ほど設定した3600はバランス重視の一般的な設定ということになる。つまるところ現状は、その反映に1時間を要するため、大人しく待つしかないのである。
さて、一時間以上が経過したなら、ようやっとドメインに紐づいたネームサーバーを変更することができる。先ほどの画面で「DNSレコード設定用ネームサーバー変更確認(転送用のネームサーバーに変更する)」の項目にチェックを入れて設定してもいいし、「ネームサーバーの変更」から目的のドメインを選択し(ロリポップなどの外部ネームサーバーを使用している場合、「現在のネームサーバー情報」の欄が「その他」になっているだろう)、下の「ネームサーバーの選択」から「お名前.comのネームサーバーを使う」にチェックを入れ、下の「確認」を押す。
設定が完了した後、ドメイン内の各サイトが問題なく表示されれば、作業は完了である。
お終いに
ロリポップはサーバーの初期設定に際して、独自ドメインを使用する場合はロリポップのネームサーバーに変更するよう示される。よって素人は何の疑いもなくそれに従ってしまうのである。そんな状況でドメインの所有権を証明するために、ネームサーバーにTXTレコードを追加しようにも、ロリポップ側ではその機能を提供しておらず、かといってお名前ドットコム側のネームサーバーに保存しても、ドメインとは紐づいていないために証明されず、当時の俺は不思議な気持ちになって挫折したのだ。
今回その仕組みを学んだことで、もしまた同じ状況に陥ったとしても、もう脳内に?マークが大量出現することなく、設定を見直すことができるだろう。素人はいつだってベストな選択を行う術を持たず、安易な説明を鵜呑みにしてしまうものである。この手の初期設定ではもう少し警戒心を持って、正しい判断を下せるような予備知識を頭に入れてから臨むべきだ。うん……全部自分を戒めるために書いている(笑)
それでは今回の記事はここまでだ。最後まで読んでくれてありがとう。また次の記事で会おう。
コメント