DNS変更後にサイトが表示されないときの確認方法|原因を順番に調べる手順
ドメインのDNS設定を変更したのに、Webサイトが表示されない。
そんなときは、すぐにサーバーの設定を変更するのではなく、まずDNSが正しい情報を返しているかを確認することが大切です。
DNSを変更した直後は、以前の情報がキャッシュとして残っていることもあります。
また、DNS設定が間違っているのではなく、DNSは正常に動作していて、その先のWebサーバーやHTTPS設定に問題があるケースもあります。
つまり、
「サイトが表示されない=DNSが原因」ではありません。
DNS変更後にトラブルが発生した場合は、
DNS → IPアドレス → Webサーバー → HTTPS
という順番で切り分けていくと原因を見つけやすくなります。
まず確認したいポイント
DNS変更後にサイトが表示されない場合は、次の項目を順番に確認します。
| 確認項目 | 確認する内容 |
|---|---|
| ドメイン | 入力したドメインが正しいか |
| DNSレコード | A・AAAA・CNAMEなどの設定が正しいか |
| 名前解決 | ドメインから正しいIPアドレスが返っているか |
| DNSキャッシュ | 古い情報が残っていないか |
| Webサーバー | 接続先のサーバーが動作しているか |
| HTTPS | SSL/TLSの設定に問題がないか |
| サーバー設定 | ドメインを正しいサイトへ割り当てているか |
最初からすべてを確認する必要はありません。
まずはドメインがどのIPアドレスに向いているのかを確認しましょう。
DNS変更後にサイトが表示されない原因
よくある原因には、次のようなものがあります。
- AレコードのIPアドレスが間違っている
- AAAAレコードが古いまま残っている
- CNAMEの設定が間違っている
- ネームサーバーの変更が正しく行われていない
- DNSキャッシュが残っている
- サーバー側でドメインが設定されていない
- Webサーバーが停止している
- HTTPS設定に問題がある
この中でも初心者が分かりにくいのが、DNSは正常なのにWebサイトだけ表示されないケースです。
そのため、DNSとWebサーバーを分けて考える必要があります。
まずDNSがIPアドレスを返しているか確認する
LinuxやmacOSなどでは、digコマンドを使ってDNSの情報を確認できます。
dig example.com
特にAレコードを確認したい場合は、
dig example.com A
とします。
結果の中に、
ANSWER SECTION:
example.com. 300 IN A 192.0.2.1
のような情報があれば、ドメインからIPv4アドレスを取得できています。
ここで重要なのは、表示されたIPアドレスが実際にWebサイトを設置しているサーバーのIPアドレスと一致しているかです。
192.0.2.1は説明用のIPアドレスなので、実際の環境では自分のサーバーのIPアドレスを確認してください。
Windowsではnslookupも使える
Windowsの場合はnslookupが使いやすい方法です。
コマンドプロンプトなどで、
nslookup example.com
と入力します。
結果としてドメインに対応するIPアドレスが表示されます。
ここで確認したIPアドレスが、現在Webサイトを設置しているサーバーのIPアドレスと一致しているか確認してください。
もし以前のサーバーのIPアドレスが返ってくる場合は、DNS設定の変更がまだ反映されていないか、キャッシュされた情報を参照している可能性があります。
DNSが正しいのにサイトが表示されない場合
ここが重要なポイントです。
digやnslookupで正しいIPアドレスが返ってきているのにサイトが表示されない場合、DNS以外に原因がある可能性があります。
たとえば、
- Webサーバーが停止している
- 80番・443番ポートに接続できない
- NginxやApacheの設定が間違っている
- ドメインが正しいWebサイトに割り当てられていない
- SSL/TLS設定に問題がある
- ファイアウォールで通信が遮断されている
などです。
つまり、ここまで確認できた時点で、
「DNSは少なくともIPアドレスを返している」
というところまで原因を切り分けられます。
Webサーバーに直接アクセスできるか確認する
DNSが正しいか確認した後は、Webサーバーが応答しているかを確認します。
たとえば、
curl -I http://example.com
を使うと、HTTPレスポンスのヘッダーを確認できます。
正常にWebサーバーから応答が返ってくれば、少なくともHTTP通信が成立していることが分かります。
一方で、
Could not resolve host
のようなエラーが出る場合は、名前解決の問題を疑います。
また、
Connection refused
であれば、接続先サーバーのサービスやポート設定などを確認する必要があります。
このように、curlを使うことでDNSの問題なのか、Webサーバーとの通信の問題なのかをさらに切り分けられます。
AレコードだけでなくAAAAレコードも確認する
DNS設定を変更した後に、「一部の環境では表示できるのに、別の環境では表示できない」というケースがあります。
この場合はIPv6用のAAAAレコードも確認してみてください。
dig example.com AAAA
AレコードはIPv4アドレスを指定します。
一方、AAAAレコードはIPv6アドレスを指定します。
たとえば、
A → 新しいサーバー
AAAA → 古いサーバー
という状態になっていると、IPv4を利用する環境とIPv6を利用する環境で接続先が異なる可能性があります。
DNSを変更したのに特定の環境だけ古いサイトが表示される場合は、AレコードだけでなくAAAAレコードも確認すると原因を見つけやすくなります。
CNAMEを使っている場合は接続先を確認する
サブドメインなどでは、AレコードではなくCNAMEを利用している場合があります。
たとえば、
www.example.com
↓
example.com
のように別のホスト名を参照する設定です。
CNAMEを確認する場合は、
dig www.example.com CNAME
を使えます。
CNAMEを設定した場合は、CNAMEそのものだけでなく、最終的にどのIPアドレスへ解決されるのかまで確認することが重要です。
DNSキャッシュが残っている場合
DNS設定を変更した直後は、すべての環境で同じ結果になるとは限りません。
DNS情報はさまざまな場所でキャッシュされることがあります。
たとえば、
- PC
- Webブラウザ
- ルーター
- ISPなどのDNSリゾルバー
- OS
- DNSサービス
などです。
そのため、自分のPCでは古いIPアドレスが返っている一方、別の環境では新しいIPアドレスが返っていることがあります。
この場合、設定そのものが間違っているとは限りません。
まず複数の環境からDNSを確認し、現在どのIPアドレスが返っているのかを比較すると状況を把握しやすくなります。
DNSの反映には時間がかかることがある
DNS設定を変更しても、すべてのDNSサーバーが同時に新しい情報へ切り替わるわけではありません。
DNSレコードにはTTLという値があり、DNS情報をどの程度の時間キャッシュするかを示す目安になります。
そのため、DNS設定を変更した直後に古いIPアドレスが返ってくることがあります。
ただし、「DNSは必ず○時間で反映される」と一律に考えるのは避けたほうがよいでしょう。
レコードのTTLや、変更前のキャッシュ状況などによって状況が異なるためです。
ネームサーバーを変更した場合は特に注意
DNSレコードそのものではなく、ドメインのネームサーバーを変更した場合は確認する範囲が少し広くなります。
たとえば、
ドメイン
↓
ネームサーバー
↓
DNSレコード
↓
IPアドレス
↓
Webサーバー
という関係になります。
ネームサーバーの変更が正しく行われていなければ、設定したDNSレコードが利用されない可能性があります。
そのため、DNS管理画面でAレコードを正しく設定したつもりでも、そもそも別のDNSサーバーを参照しているということがあります。
「DNSは正しいのにサイトが違う」とき
DNSが正しいIPアドレスを返しているのに、別のWebサイトが表示される場合があります。
これはWebサーバー側のドメイン設定が原因になっている可能性があります。
1台のサーバーで複数のドメインを運用している場合、NginxやApacheなどの設定によって、アクセスされたドメインごとに表示するサイトを切り替えることがあります。
そのため、
DNS → 正しいサーバー
まで到達していても、
サーバー → 正しいWebサイト
の設定が間違っている可能性があります。
この場合はDNSを何度変更しても解決しません。
HTTPSだけ表示されない場合
HTTPでは表示できるのに、
https://example.com
では表示できない場合、DNSだけでなくHTTPSの設定を確認します。
代表的な確認ポイントは、
- SSL/TLS証明書
- 443番ポート
- NginxやApacheのHTTPS設定
- リダイレクト設定
- CDNやプロキシの設定
などです。
DNSが正しいIPアドレスを返しているなら、次はWebサーバーとHTTPSの設定へ調査範囲を移します。
DNS変更後の確認手順
原因が分からない場合は、次の順番で確認すると整理しやすくなります。
1.DNSのAレコードを確認
dig example.com A
返されたIPアドレスが現在のサーバーと一致しているか確認します。
2.AAAAレコードを確認
dig example.com AAAA
IPv6の設定が残っていないか確認します。
3.CNAMEを確認
サブドメインなどを利用している場合は、
dig www.example.com CNAME
などで確認します。
4.別の環境から確認する
PCだけでなく、別のネットワークやDNS環境から結果を比較します。
5.Webサーバーへアクセスする
curl -I http://example.com
HTTPレスポンスが返ってくるか確認します。
6.Webサーバーを確認する
NginxやApacheなどが動作しているか確認します。
7.HTTPSを確認する
HTTPは動くのにHTTPSだけ動かない場合は、443番ポートやSSL/TLS設定を確認します。
DNS変更後にやってはいけないこと
DNS変更後にサイトが表示されないからといって、何度もDNSレコードを書き換えるのはおすすめできません。
特に、
- Aレコードを何度も変更する
- AレコードとAAAAレコードを確認せず変更する
- ネームサーバーを何度も切り替える
- DNSが原因だと決めつけてサーバー設定を変更する
- キャッシュを確認せず設定を戻す
といった対応は、状況をさらに分かりにくくする可能性があります。
まず現在のDNS応答を確認し、どの段階まで正常に動いているのかを切り分けることが重要です。
DNS変更後にサイトが表示されないときのチェックリスト
最後に、実際のトラブル対応で使えるようにまとめます。
□ ドメイン名が正しいか
□ ネームサーバーが正しいか
□ Aレコードが正しいか
□ AAAAレコードが残っていないか
□ CNAMEが正しいか
□ dig / nslookupで現在のIPを確認したか
□ DNSキャッシュの可能性を確認したか
□ サーバーが起動しているか
□ Webサーバーが動作しているか
□ 80番・443番ポートに接続できるか
□ ドメインが正しいWebサイトに割り当てられているか
□ HTTPSの設定に問題がないか
この順番で確認していけば、「DNSが悪いのか」「サーバーが悪いのか」をかなり整理しやすくなります。
まとめ
DNSを変更した後にWebサイトが表示されなくなった場合、まずDNSが正しいIPアドレスを返しているか確認しましょう。
LinuxやmacOSでは、
dig example.com A
Windowsでは、
nslookup example.com
などを使って名前解決の状態を確認できます。
正しいIPアドレスが返っている場合は、DNS以外に原因がある可能性があります。
その場合は、
DNS → IPアドレス → Webサーバー → ポート → HTTPS
という順番で確認していくと、原因を切り分けやすくなります。
また、AレコードだけでなくAAAAレコード、CNAME、ネームサーバー、DNSキャッシュなども確認することが重要です。
DNSの変更は単純に見えても、複数の仕組みが関係しています。
「サイトが表示されないからDNSを何度も変更する」のではなく、現在どの情報が返されているのかを確認してから次の設定を調べることが、トラブルを早く解決するポイントです。
DNSを変更したのにサイトが表示されないのはなぜですか?
Aレコードなどの設定が間違っている場合だけでなく、DNSキャッシュ、AAAAレコード、ネームサーバー、Webサーバー、HTTPS設定などが原因になっている可能性があります。
DNS変更後、どのくらい待てばいいですか?
一律に決まっているわけではありません。DNSレコードのTTLや変更前のキャッシュ状況などによって異なります。待つだけでなく、digやnslookupを使って現在どのIPアドレスが返されているか確認すると状況を把握しやすくなります。
DNSは正しいのにサイトが表示されない場合は?
DNSが正しいIPアドレスを返しているなら、Webサーバーやファイアウォール、80番・443番ポート、ドメインのサーバー設定、HTTPS設定などを確認します。
AレコードとAAAAレコードは両方確認したほうがいいですか?
IPv6を利用している可能性がある場合は、両方確認することをおすすめします。AAAAレコードに古いIPv6アドレスが残っていると、環境によって接続先が異なる可能性があります。
