INDEX目次を開く +

ネームサーバーを変更したのに、サイトが表示されない。

設定を間違えたのか、それとも待てばいいのか。

これが分からないまま、設定画面を何度も見直すことになりがちです。

この記事では、原因を切り分ける手順を解説します。実際に独自ドメインの設定を行い、3種類のトラブルをすべて踏んだときの実測データをもとにしています。

先に結論:まずスマホで見てください

スマホのモバイル通信(Wi-Fiを切った状態)でサイトを開いてください。

結果意味
スマホでは表示できるサーバー側の設定は完了しています。手元の環境の問題です
スマホでも表示できないまだ反映されていないか、設定に問題があります

Wi-Fiを切るのは、自宅のルーターを経由させないためです。モバイル回線は別のDNSを使うので、手元のキャッシュの影響を受けません。

この確認だけで、原因が「サイト側」か「自分の環境側」かが分かります。

実際に検証したときも、パソコンではエラーが出続ける一方で、iPhoneでは問題なく表示できていました。

原因は3種類ある

「DNSの浸透待ち」と一括りにされがちですが、実際には原因も待ち時間も対処も違う3つがあります。

症状原因待ち時間の目安対処
NXDOMAINネガティブキャッシュSOAの最終値(多くは1時間)キャッシュ削除
SERVFAIL旧ネームサーバーの情報が残っている親のNS TTL(最大48時間DNSを変更する
見えたり見えなかったり権威サーバー間の同期差数分待つ

ブラウザに出るエラーの種類で、どれかが分かります。

症状1:DNS_PROBE_FINISHED_NXDOMAIN

Chromeでは次のように表示されます。

このサイトにアクセスできません

DNS_PROBE_FINISHED_NXDOMAIN

NXDOMAIN は「そのドメインは存在しない」という意味です。

原因:存在しないという答えがキャッシュされている

DNSは、「見つからなかった」という結果もキャッシュします。これをネガティブキャッシュと呼びます。

ネームサーバーを変更した直後、まだ移行先にDNSの設定(ゾーン)が無い状態でアクセスすると、「存在しない」という答えが返ります。その答えが一定時間保持されます。

その後に設定が完了しても、キャッシュが切れるまでは「存在しない」と言い続けます。

待ち時間の調べ方

保持される時間は、SOAレコードの最後の数値で決まります。

dig @ns1.example-dns.jp example.com SOA +short

返り値の例です。

ns1.example-dns.jp. root.example-dns.jp. 0 10800 3600 604800 3600
                                                            ↑
                                                  ネガティブキャッシュTTL

実測した環境では 3600秒(1時間) でした。

対処

パソコンのDNSキャッシュを削除します。macOSの場合はこちらです。

sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder

これで直れば、原因はパソコンのキャッシュです。

直らない場合は、キャッシュがもっと上流にあります。次の症状2を確認してください。

症状2:SERVFAIL(ルーター再起動でも直らない)

ブラウザでは同じようなエラー画面になりますが、コマンドで調べると違いが分かります。

dig example.com A

応答に status: SERVFAIL と表示されたら、こちらです。

;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 64819

SERVFAIL は「答えを返せなかった」という意味です。「存在しない」とは違います。

原因:旧ネームサーバーに問い合わせている

ネームサーバーを変更すると、元のネームサーバーはそのドメインの情報を持たなくなります。

実際に、変更後に旧ネームサーバーへ問い合わせると次のようになりました。

ns1.xserver.jp   status: REFUSED
ns2.xserver.jp   status: REFUSED
ns3.xserver.jp   status: REFUSED

REFUSED(応答拒否)です。

つまり、こうなっています。

  1. 手元のDNSが、古い委任情報(旧ネームサーバー)を保持している
  2. そこへ問い合わせる
  3. 旧ネームサーバーは「もう持っていない」と拒否する
  4. 手元のDNSは答えを返せず、SERVFAIL になる

なぜ待ち時間が長いのか

委任情報のTTLを調べると、原因が分かります。

dig @a.gtld-servers.net example.com NS +noall +authority
example.com.    172800    IN    NS    ns1.example-dns.jp.
                  ↑
              172800秒=48時間

.com の委任情報は48時間キャッシュされます。

そのため、ネガティブキャッシュより大幅に長くなります。

対処

ルーターの再起動では直らないことがあります。

実測では、ルーターを再起動しても SERVFAIL のままでした。これはルーターが転送しているだけで、キャッシュを保持しているのはプロバイダのDNSだったためです。プロバイダ側のキャッシュは、こちらから消せません。

確実なのは、パソコンのDNS設定を変更することです。

提供元IPv4IPv6
Cloudflare1.1.1.12606:4700:4700::1111
Google8.8.8.82001:4860:4860::8888

IPv4だけ設定しても効かない場合があります。

IPv6のDNSが自動取得のまま残っていると、そちらが優先されることがあるためです。

IPv6のアドレスも設定するか、一時的にIPv6を無効にしてください。

macOSでDNSを変更する際の注意

システム設定 → ネットワーク → Wi-Fi → 詳細 → DNS で設定します。

ここで手動のDNSを1つでも追加すると、元から表示されていた自動取得のアドレスが一覧から消えます。

これは故障ではありません。

手動設定が優先される仕様で、自動取得分は使われなくなるため非表示になります。

元に戻すときは、追加した項目をすべて「−」で削除してください。空欄にすれば自動取得に戻ります。

症状3:見えたり見えなかったりする

アクセスするたびに結果が変わる、別の人には見えている、という状態です。

原因:権威サーバー間で同期が終わっていない

ドメインのネームサーバーは通常、複数台で構成されます。設定直後は、そのうち一部だけが情報を持っている状態になることがあります。

実測では、ドメインを追加した直後に次の状態を観測しました。

問い合わせ先結果
ns1(1台目)REFUSED
ns2(2台目)正常に応答
ns3(3台目)正常に応答

3台のうち1台だけが応答しない状態です。

問い合わせは3台のいずれかに振り分けられるため、当たったサーバー次第で結果が変わります。

さらに、この影響はパブリックDNSにも出ていました。

DNS結果
Google(8.8.8.8)解決できない
Cloudflare(1.1.1.1)解決できる

同じ時刻でも、使っているDNSによって結果が違いました。

対処:数分待つ

実測では、約3分後に1台目も応答を開始し、同時にGoogleのDNSでも解決できるようになりました。

この状態で設定を触り直さないでください。

正しく設定できているのに、変更を繰り返すと状態がさらに複雑になります。

切り分けの手順

上から順に確認してください。

1. スマホのモバイル通信で開く

表示できれば、サーバー側の設定は完了しています。

以降は手元の環境の問題です。

2. ブラウザのエラーを確認する

NXDOMAIN なら症状1、それ以外なら症状2の可能性があります。

3. コマンドで確認する

dig example.com A
dig @8.8.8.8 example.com A

1行目は手元のDNS、2行目はGoogleのDNSに問い合わせます。

結果判断
両方とも答えが返る正常。ブラウザのキャッシュを疑う
手元だけ答えが返らない手元のキャッシュの問題。サイト側は正常
両方とも答えが返らないまだ反映されていない。または設定に問題がある

4. 権威サーバーに直接聞く

dig @ns1.example-dns.jp example.com A
dig @ns2.example-dns.jp example.com A

設定したネームサーバーに直接問い合わせます。ここで答えが返れば、設定自体は完了しています。

一部のサーバーだけ REFUSED を返す場合は、症状3です。数分待ってください。

やってはいけないこと

設定を元に戻す

見えないからといってネームサーバーを戻すと、また48時間かけて元の状態に戻すことになります。切り分けが終わるまで触らないでください。

何度も設定し直す

DNSの反映は、変更のたびにやり直しになるわけではありません。繰り返しても早くはなりません。

ブラウザだけで判断する

ブラウザは独自のキャッシュを持っています。シークレットウィンドウか、コマンドで確認してください。

すぐに旧サーバーを解約する

旧サーバーを解約すると、切り戻しができなくなります。表示を確認し、数日様子を見てから解約してください。

メールも使っている場合は、切り替え順の検討が必要です。サーバー移行でメールを止めないための準備を確認してください。

実測した反映時間

未使用のドメイン(.com)でネームサーバーを変更したときの記録です。

経過出来事
0分ネームサーバーを変更
10分以内.com の管理元(レジストリ)へ反映済み
24分移行先にDNSゾーンを作成
27分すべてのパブリックDNSで解決できる状態に
36分サイトがhttpsで表示される

公式案内は「数時間から2日程度」ですが、実際には36分で完了しました。

ただしこれは1回の実測値です。ドメインの種類、管理会社、タイミングによって変わります。最大2日かかる前提で計画してください。

そして、手元のパソコンだけは、この時点でもまだ見えていませんでした。

プロバイダのキャッシュが残っていたためです。

よくある質問

「DNSの浸透」とは何ですか?

世界中のDNSが新しい情報に入れ替わるまでの期間を指す言葉として使われます。

ただし実際には、何かが少しずつ広がっていくわけではありません。

各DNSが持っているキャッシュが、それぞれのTTL(保持時間)に従って期限切れになり、順次新しい情報を取り直すだけです。

そのため、キャッシュを持っていないDNSは即座に新しい情報を得られます。

スマホのモバイル回線で見えるのは、これが理由です。

どれくらい待てばいいですか?

キャッシュの種類によって変わります。

種類目安
パソコンのキャッシュ削除すれば即時
ネガティブキャッシュSOAの最終値(多くは1時間)
委任情報のキャッシュ親のNS TTL(.com は48時間)

最大で48時間を見ておくと安全です。

設定が正しいかどうか、確実に確認する方法はありますか?

権威サーバーに直接問い合わせるのが確実です。

dig @設定したネームサーバー ドメイン名 A

ここで正しいIPアドレスが返れば、設定は完了しています。

あとはキャッシュが切れるのを待つだけです。

会社のパソコンだけ見えません

社内のDNSサーバーがキャッシュを保持している可能性があります。社内のネットワーク管理者に、該当ドメインのキャッシュ削除を依頼してください。

SSL証明書のエラーが出ます

DNSとは別の問題です。独自SSLの発行がまだ完了していない可能性があります。

証明書の中身はコマンドで確認できます。

echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -subject

自分のドメイン名ではなく、サーバー会社の共有証明書が返る場合は、まだ発行されていません。

まとめ

ネームサーバーを変更してサイトが見えないとき、まずスマホのモバイル通信で確認してください。

表示できれば、サーバー側の設定は完了しています。

残っているのは手元のキャッシュだけです。

原因は3種類あり、それぞれ待ち時間が違います。

  • NXDOMAIN → ネガティブキャッシュ。1時間程度
  • SERVFAIL → 旧ネームサーバーの情報が残っている。最大48時間
  • 見えたり見えなかったり → 権威サーバー間の同期差。数分

設定を元に戻したり、何度もやり直したりしないでください。

正しく設定できていれば、待てば必ず表示されます。

wpX Speedでの具体的な設定手順は、wpX Speedで独自ドメインを使う方法で画面付きで解説しています。