ドメインを取ってサーバーにつなぐとき、「DNSを設定します」「ネームサーバーを変更します」と書かれた説明に出会います。
DNSとは何をするものなのか。
自分は、お名前.comで取ったドメインのネームサーバーをエックスサーバーに切り替えたとき、変更してもすぐには表示が変わらず、焦りました。
公式の説明と一緒に、DNSの基本をまとめます。
先に結論です。
DNSは、ドメイン名を、コンピューターが通信に使うIPアドレスに変換する仕組みです。
ネームサーバーを変えただけではサイトは表示されず、サーバー側にも、そのドメインを追加する設定が要ります。
設定を変えても、キャッシュを持つDNSサーバーが最新の情報を確認するまでに時間がかかるので、すぐ変わらないのは仕組み上、普通のことです。
DNSって、結局なにをするもの?
ドメイン名を、サーバーの住所(IPアドレス)に変えてくれる仕組みだよ。
DNSとは?ドメイン名を、IPアドレスに変換する仕組み
DNSは、Domain Name Systemの略です。
MDNの用語集では、インターネットに接続されたリソースのための、階層化された分散型の名前付けシステムと説明されています。
最も代表的な機能は、人にわかりやすいドメイン名を、コンピューターが通信に使う数字のIPアドレスに変換することです。
MDNの例では、mozilla.orgが192.0.2.172のようなIPアドレスに対応づけられます。
この変換の処理は、名前解決(DNSルックアップ)と呼ばれます。
ブラウザでURLを開いたとき、何が起きている?
MDNのドメイン名の解説によると、ブラウザにドメイン名を入力すると、流れはこうなります。
- ブラウザは、そのドメイン名に対応するIPアドレスを、パソコンのローカルなDNSキャッシュが知っているか確認する
- 知っていれば、そのIPアドレスでウェブサーバーとやり取りする
- 知らなければ、DNSサーバーに問い合わせる。DNSサーバーが、ドメイン名に対応するIPアドレスを返す
- IPアドレスが分かったら、ブラウザはウェブサーバーとコンテンツをやり取りする
どんなときに出てくる?
DNSが出てくる場面は、たとえば3つです。
- ドメインを取得して、レンタルサーバーにつなぐとき(ネームサーバーの設定)
- サイトを別のサーバーに引っ越すとき(向き先の変更)
- メールの設定や、サービスの所有確認のとき(DNSレコードの追加)
ネームサーバーとDNSレコード
DNSの設定には、2つの言葉が出てきます。
- ネームサーバー:そのドメインのDNS情報を持っているサーバー。ドメインの向き先を決める元になる
- DNSレコード:ドメインごとの設定の1行。種類がいくつかある
エックスサーバーの公式マニュアルには、レコードごとの入力ルールが書かれています。
- Aレコード:内容欄にIPv4アドレスを入れる
- AAAAレコード:内容欄にIPv6アドレスを入れる
- CNAMEレコード:内容欄にホスト名を指定する(IPアドレスは登録できない)
- MXレコード:優先度と一緒に設定する。内容欄はホスト名で、数値が小さいほど優先される
設定を変えたのに、すぐ変わらないのはなんで?
DNSサーバーが、情報をしばらく覚えてるからだよ。入れ替わるのを待つんだ。
設定を変えても、すぐ反映されない理由
MDNのドメイン名の解説では、理由が次のように説明されています。
- レジストラーがドメインの情報を作成・更新すると、DNSデータベースの情報を更新する必要がある(MDNの記述)
- 各DNSサーバーは、情報を一定期間保持して、そのあと自動的に無効にして、権威ネームサーバーに問い合わせて最新の情報を取得する
- 結果として、そのドメインを知っているDNSサーバーが最新の情報を得るまでに、時間がかかる
更新の反映に必要な正確な時間は、MDNのページには書かれていません。
ドメインを新規登録した場合は、レジストラーが「数時間以内に、すべてのDNSサーバーが情報を受け取る」と述べている、と紹介されています。
待ち時間は、環境によって変わります。
自分はこう使ってます
ネームサーバーを切り替えて、反映を待った
ブログのドメインは、お名前.comで取得しました。
ネームサーバーをエックスサーバーのものに変更して、保存できたことを確認し、すぐにブラウザで開いてみました。
表示されたのは、変更前のお名前.comの画面のままでした。
自分の環境では、数十分から1時間ほどで、エックスサーバー側に切り替わったのを確認しました。
詳しくは、ネームサーバー切り替えの反映待ちで学んだことに書いています。
反映の確認は、dig で行った
ブラウザで何度も開き直すより、ネームサーバーの情報を調べるコマンドで見るほうが分かりやすい、と感じました。
Macのターミナルで、digコマンドを使いました。
dig NS cats-hand.pro +short
自分のときは、切り替えが済んでいれば、エックスサーバー側のネームサーバー(ns1.xserver.jp.のようなもの)が返りました。
まだなら、前のネームサーバーが返りました。
ただ、結果は、問い合わせ先のDNSサーバーのキャッシュの状態でも変わります。確認手段の1つとして使っています。
ターミナルの基本は、ターミナルの記事にまとめています。
ネームサーバーを変えたら、サイトはもう見える?
まだだよ。サーバー側で、そのドメインを追加する設定も別に要るんだ。
DNSでハマった例
お名前.comからエックスサーバーへの切り替えでは、反映待ちのほかに、手元のネットワークではDNSの問い合わせ自体が通らず、確認方法を変える必要がありました。
経緯は、ネームサーバー切り替えの反映待ちで学んだことにまとめています。
ドメインを取るところからの流れは、ブログのドメインは「お名前.com」で取得しましたと、レンタルサーバーは「エックスサーバー」にしましたに書いています。
迷ったときの確認ポイント
- 変更してすぐは反映されないものと考えて、時間を置いて確認する
- 反映の確認は、ブラウザだけでなく、
digなどでネームサーバーやレコードも調べる(キャッシュの影響は残る) - ネームサーバーを変えただけでは足りない。サーバー側にも、そのドメインを追加する
- 設定が合っていると確認できているなら、焦って追加の変更をしない
あわせて知っておきたい用語
- IPアドレス
- コンピューターが通信に使う、数字のアドレス。ドメイン名は、DNSでこれに変換される。
- ネームサーバー
- ドメインのDNS情報を持っているサーバー。ドメインの向き先を決める元になる。
- DNSレコード
- ドメインごとの設定の1行。A・AAAA・CNAME・MXなどの種類がある。
- ターミナル
- 文字のコマンドでMacを操作するアプリ。詳しくはこちら。