Google ChromeでWebサイトににアクセスできない場合、グレー文字で「dns_probe_finished_nxdomain」というエラーメッセージが表示されていませんか?
このエラーメッセージは、Webサイトにアクセスを試みても、DNSの何らかの原因でWebサイトにたどりつけない、Webサイトが見つからない場合に表示されます。
本記事では、DNSが問題で発生するこのエラーについて、サイトアクセスのブロック、DNSキャッシュ、DNSサーバー設定といった観点から原因を解説するとともに、Windows、MacのPC版Chrome、AndroidやiPhoneのスマホ版Mobile Chromeといったプラットフォーム別に解決方法を説明します。
このエラーの原因と解決方法を通じて、DNSサーバーやDNSキャッシュの動作が理解できるとともに、DNSの一連の動作についてより一層理解を深めることができるようになります。
「dns_probe_finished_nxdomain」ってなに?
「dns_probe_finished_nxdomain」とは「そのドメイン名は存在しません」というエラーメッセージです。
ブラウザからWebサイトへアクセスする場合、ネットワーク上のDNSに「指定したドメインが存在するかどうか」問い合わせを行います。
DNSサーバーまたはDNSキャッシュから「ドメインが存在しない」とレスポンスがあった場合、ブラウザChromeでは「dns_probe_finished_nxdomain」と表示されます。
DNSとは?
DNSは「ドメイン・ネーム・システム」の略で、インターネットにおけるネットワーク技術の一つです。
DNSでは、ドメイン名とそのドメインが持つサーバー機能との紐づけを行い、レコードと呼ばれる表現方法で管理します。例えばDNSのAレコードは、ホスト名とIPアドレスの紐づけを定義します。
DNSで行われること
クライアントPCからWebサイトにアクセスする場合、まずWebサイトのドメイン名とIPアドレスを知る必要があります。
クライアントPCでは、DNSに対してWebサイトのドメイン名をなげかけ、IPアドレスの問い合わせを行います。DNSはAレコードに照らし合わせてIPアドレスを紐づけ、PCにフィードバックします。このDNS機能を名前解決といいます。
初回のDNS問い合わせは、DNSサーバーへ問い合わせます。問い合わせ結果のレコードをOSのDNSキャッシュと呼ばれる領域に保存します。2回目以降はPCのDNSキャッシュに問い合わせを行います。DNSサーバーに問い合わせを行わないため、Webサイトへのアクセス速度を全般的に向上させることができます。
「dns_probe_finished_nxdomain」の原因
「dns_probe_finished_nxdomain」の原因は、DNSレコードへのアクセスがブロックされている、古くなっているか壊れている、存在しない、のいずれかになります。
通常ブラウザからDNSを参照する場合、中間にOSのファイアフォール、アンチウイルスソフト、DNSキャッシュ、DNSサーバーを経由します。
あるドメイン名について、DNSエントリへの問合せがブロックされている、DNSエントリが古くなっているか壊れている、あるいはDNSエントリが存在できない場合、Webサイトにアクセスできないといった問題が発生します。
原因1.ファイアフォール
ファイアウォールでは、セキュリティポリシーに応じてネットワークへのトラフィックをフィルタリングするとともに、悪意のあるページや安全でない可能性のあるページを自動的にブロックします。
これにより、DNSへの問合せ結果がブロックされて存在しないことにすり替わってしまい、Webサイトへの接続が拒否されることがあります。
原因2.アンチウイルスソフト
アンチウイルスソフトでは、マルウェア対策により特定のWebサイトが有害なWebサイトとして認識されることがあり、アクセスがブロックされることがあります。
これにより、ファイアフォール同様、特定のWebサイトへの接続が拒否されることがあります。
原因3.VPN
VPNでは、インターネット上にプライベートな専用線ネットワークを仮想的に構築しますが、接続先IPアドレスに関する管理ポリシーが正しく設定されていない場合、Webサイトへのアクセスができないことがあります。
これにより、ファイアフォールやアンチウイルスソフトと同様、特定のWebサイトへの接続が拒否されることがあります。
原因4.DNSキャッシュが古くなる
OSのDNSキャッシュでは、過去にアクセスしたWebサイトのDNSエントリを保存しますが、DNSエントリが更新されたり、DNSエントリが何らかの原因で壊れてしまうことがあります。
これにより、DNSエントリを参照することができず、Webサイトへの接続が不可能になることがあります。
原因5.DNSサーバー設定
DNSでは、ネットワークの上位にあるDNSサーバーからエントリを取得しますが、参照するDNSサーバーがパブリックDNSでない、古いDNSエントリを使用している中間DNSサーバーに接続している、過負荷やオフラインでDNSサーバーが不調であるといった場合があります。
これにより、DNSエントリが正しく参照されず、Webサイトへの接続ができなくなることがあります。
「dns_probe_finished_nxdomain」の解決方法
「dns_probe_finished_nxdomain」の解決方法は、DNSレコードへのアクセスがブロックを一時的に外す、古くなっている・壊れているDNS情報を更新する、DNSサーバーの接続先を更新する、となります。
クライアントPCからDNSサーバーまでの経路には、ファイアフォール、アンチウイルスソフト、VPNなどがあり、これらの要因の場合、一時的にブロックを外す必要があります。
またクライアントPCに保存されたDNSキャッシュは古くなるか壊れてしまう場合があり、この場合、DNSキャッシュを更新して最新のDNSエントリを参照する必要があります。
また中間DNSサーバーに保存されたDNSエントリが古い場合には、パブリックDNSのエントリを見に行くように変更する必要が出てきます。
解決1.ファイアウォール
ファイアウォールを一時的に無効化して、Webサイトにアクセスできるか試してみます。
これによりアクセスできた場合、そのWebサイトをファイアフォールのセーフリスト(フィルタリスト)に加えて、アクセス許可を設定します。
解決2.アンチウイルスソフト
ウイルス対策ソフトのマルウェア対策プログラムを一時的に無効化して、アクセスできるか試してみます。
これによりアクセスできた場合、ファイアウォールでの対策と同様、そのWebサイトをセーフリスト(フィルタリスト)に加えて、アクセス許可を設定します。
解決3.VPNの無効化
VPNを使用せずにインターネットアクセスが可能な場合、VPNを一時的に無効化して、Webサイトにアクセスできるか試してみます。
これによりアクセスできた場合、VPNを無効化してWebサイトにアクセスします。
解決4.DNSキャッシュのリフレッシュ
OSに保存されているDNSキャッシュをクリアして、アクセスできるかどうか試してみます。
これによりアクセスできた場合、DNSキャッシュを定期的に更新するようにします。
Windows
WindowsのDNSキャッシュ更新は、コマンドプロンプトから行います。
1. コマンドプロンプトを開く。
・コマンドプロンプトを管理者権限で開く
2. 次のコマンドを打ち込み、古いキャッシュを削除
> ipconfig/release
> ipconfig/all
> ipconfig/flushdns
3. 上位のDNSサーバーから新しいDNSエントリを読み込み、キャッシュを更新
> ipconfig/renew
> netsh int ip set dns
> netsh winsock reset
Mac
MacのDNSキャッシュ更新は、ターミナルアプリから行います。
1 ターミナルアプリを開く
・「アプリケーション」
・「ユーティリティ」
・「ターミナル」
2. 管理者権限で次のコマンドを実行し、古いキャッシュを削除
$ sudo killall -HUP mDNSResponder; sleep 2;
Android、iPhone
Android、iPhoneのDNSキャッシュ更新は、電源を一旦OFFし、再度ONすることで行います。
解決5.DNSサーバーの変更
現在設定されているDNSサーバーを他のDNSサーバーに変更して、アクセスできるか試してみます。
インターネットで利用できるパブリックDNSサーバーには、Cloudflareの1.1.1.1、Googleの8.8.8.8、 IBMQuad9の9.9.9.9などがあります。
これによりアクセスできた場合、パブリックDNSサーバーをDNSサーバーとして設定します。
Windows
WindowsのDNSサーバー変更は、コントロールパネルから行います。
1. コントロールパネルを開く。
・Windowsキー+Rキーの両方を押す。
・「ファイル名を指定して実行」
・「コントロールパネル」
2. ネットワークと共有センターを開く。
・「ネットワークと共有センター」
・「Change adapter settings」
・「使用しているネットワーク」を右クリック
・「プロパティ」
3. TCP/IPv4の設定を変更する。
・「Internet Protocol Version 4 (TCP/IPv4)」
・「プロパティ」
・「次のDNSアドレスを使用する」
優先DNSサーバーを8.8.8.8、代替DNSサーバーを8.8.4.4に設定
Mac
MacのDNSサーバー変更は、システム環境設定から行います。
システム環境設定を開く。
・「ネットワーク」を選択
DNSサーバーを変更する。
・変更するネットワークを選択し、「Advanced」をクリック
・「+」ボタンをクリックして、DNSサーバーを追加
・DNSサーバーを8.8.8.8、8.8.4.4に設定
DNSクライアントサービスを再起動する。
Androidの場合
AndroidのDNSサーバー変更は、ネットワークとインターネットから行います。
ネットワークとインターネットを開く。
・「設定」
・「ネットワークとインターネット」
・「Wi-Fi」
・「歯車アイコン」
DNSサーバーを変更する。
・「編集アイコン」
・「詳細設定」
・「IP設定」を「静的」に変更
・DNS1を8.8.8.8、DNS2を8.8.4.4に設定
・「保存」
iPhoneの場合
iPhoneのDNSサーバー変更は、設定メニューから行います。
設定メニューを開く。
・「設定」
・「Wi-Fi」
・Wi-Fiがオンになっているか確認
・ネットワークの右端の「(i)マーク」
DNSサーバーを変更する。
・「DNSを構成」
・「手動」
・先に設定されているDNSサーバーを削除
・「(+)マーク」
・DNSを8.8.8.8、8.8.4.4に設定
・「保存」
まとめ
「dns_probe_finished_nxdomain」は、DNSレコードへのアクセスブロックを一時的に外す、古くなったり壊れたりしたDNS情報を更新する、DNSサーバーの接続先を更新することで、解決することができます。
上記方法で解決できない場合、パブリックDNSサーバーでDNSエントリの不具合が発生している場合があります。世界中のDNSサーバーは、トップレベルから下位に向かって同期がかかるようになっていますが、全ての更新には数時間〜数日かかる場合があるため、一時的に解決できない場合も考えられます。
DNSに関するアクセスブロック、DNSキャッシュ、パブリックDNSサーバーの設定といった対処方法を通じて、DNSの役割を理解するとともに、DNSレコードによるドメイン名とIPアドレスの紐づけについて理解することで、DNSの基本動作をより一層理解できるようになります。