当サイトのリンクには一部プロモーションを含みますが、一切その影響は受けず、公正・中立な立場で制作しております。
「ホストを解決しています…」にイライラ、イライラ。
ここ最近、閲覧中のWebサイトにある外部リンクをクリックした時に、数秒間、画面が真っ白になり何も表示されなくなることが頻発するようになりました。
Google Chromeの左下には「ホストを解決しています…」の文字が接続するまでずーっと表示されてます。
一旦つながれば、そのサイト内のリンクならサクサク移動できるんですが、別ドメインに移動するたびに画面真っ白で待たされる感じ。
また、調べ物をするときなど、ズラーっと並んでる検索結果すべてのリンクでもれなく待たされるので、各リンク先のサーバの問題ではなく、どうもうちの環境がおかしいんじゃないか、と感じるようになりました。
「ホストを解決しています…」の原因はDNSサーバにあり
「ホストを解決しています…」とはどういう意味かというと、「DNSサーバでドメイン名とIPアドレスを探してる処理をやってますよ」ということ。
DNS(ドメイン・ネーム・システム)とは簡単に言うと、ドメインとIPアドレスを紐づけるシステムのことです。
ドメインとはこのブログだと「blog.skeg.jp」です。ブラウザで「blog.skeg.jp」と入力すると、このドメイン名に割り当てられてるIPアドレスをDNSサーバに問い合わせてブログの情報を保管しているサーバを見つけます。あとはそのサーバにアクセスして取得されたデータがブラウザで表示され、ようやくブログを閲覧できるようになるというわけです。
もっとちゃんと知っておきたいって方は、『イラスト図解式 この一冊で全部わかるWeb技術の基本』が分かりやすくてオススメです。僕も持ってます。
というわけで、「ホストを解決しています…」が表示される原因は、パソコンに設定しているDNSサーバの反応が遅い、という可能性がとても高いことが分かりました。
DNSサーバは、個別に設定しなければ接続しているプロバイダーのものを使うことになります。
うちはビッグローブ光に契約してからDNSサーバは一度も変更したことがないので、ブロバイダーのものを自動的に使ってたことになります。
ということは、プロバイダーのDNSサーバが遅いのか…。
Chromeのキャッシュ削除やIPv6関連の変更じゃ改善せず
ちなみに、「ホストを解決しています…」で検索すると、
- Google ChromeのDNS関連に問題がある
- Chrome設定の「リソースをプリフェッチしてページをより迅速に読み込む」のチェックを外す
- Chromeで「chrome://net-internals/#dns」にアクセスしてDNSキャッシュを削除する
といった解決方法がたくさん出てきますが、うちの場合はこれでは解決しませんでした。
「ホストを解決しています…」という文言は表示されませんが、Safariでも検索結果からのレスポンスが遅い症状が発生してたので、ブラウザの問題ではないのは明らかでした。
あと、うちはIPv6接続なのでホームゲートウェイのPR-500MIの設定に関してもやってみました。
PR-500MIの「DNS設定」で「AAAA送信抑制エラー応答機能」を「使用する」、「IPv6 IPoE通信優先機能」を「優先する」にすると改善された、という方もいらっしゃるようですが、うちは関係なかったようです。
それそれオンオフで試してみましたが、どの設定でも改善しませんでした。
ただ、この画面で「設定」を押すと一時的にレスポンスが向上するのは確認できました。「設定」を押すとDNSのキャッシュがクリアされるのかな?
ただこれも、パソコンを一旦スリープさせてから復帰すると、また遅くなるという謎の症状が発生するので、解決にならず。
DNSサーバは、どこに設定すればいいのか
というわけで、最終手段のDNSサーバ設定を変更することにしました。
うちのネットワーク環境はこういう構成になってます。
プロバイダーはビッグローブ光で、ホームゲートウェイはNTTのPR-500MIです。DHCPv4サーバ設定をオンにしてルーター機能はこれを使ってます。
IPv6接続なので、ホームゲートウェイではDNSサーバの設定は不可でした。
その次がWi-FiルーターのWTR-M2133HP。ここではLANの拡張設置でDNSサーバを設定することができます。
ここで設定できれば、Wi-Fiルーターに接続しているスマホやタブレットやパソコンなど、個別にDNSサーバの設定をする必要がないのでラクなんです。
このようにちゃんとDNS1(プライマリー)とDNS2(セカンダリー)に設定できたんですが(DNSサーバはグーグルのパブリックDNSを使用 後述あり)、「ホストを解決しています…」が表示され、レスポンスは向上せず…。
しょうがないのでMacやiPhoneで個別に設定することにしました。
MacやiPhoneでDNSサーバを変更する方法
まずはMacでDNSサーバを変更する方法から。
「システム設定」→「ネットワーク」で接続しているネットワークの右下にある「詳細…」をクリックします。
あとは「DNSサーバ」にて指定したいDNSサーバのIPアドレスを入力します。あとは「OK」をクリックして適用すれば完了です。
ちなみに、設定前のDNSサーバは「192.168.1.1」など、自宅のルータのIPアドレスが自動取得にて表記されてました。
次に、iPhoneでDNSサーバを変更する方法。
「設定」→「Wi-Fi」で、接続しているWi-Fiの右側にある「i」マークをタップ。
下の方にある「DNSを構成」をタップ。
「自動」を「手動」に変更して、DNSサーバを追加すれば完了です。
Windowsの場合は、スタートメニューから「設定」→「ネットワークとインターネット」を開きます。「アダプターのオプションを変更する」をクリックし、変更する接続アイコンを右クリックしてプロパティを選択。「インターネットプロトコルバージョン4」を選択してプロパティをクリック。「次のDNSサーバーのアドレスを使う」にDNSサーバのIPアドレスを設定します。
Androidの場合は、「設定」→「ネットワークとインターネット」でWi-Fiをタップして接続しているネットワークの設定アイコンを選んで鉛筆マークをタップ。詳細オプションをタップしてIP設定を静的に変更できれば、DNSサーバの設定変更ができます。
Wi-Fiではなくキャリア回線の場合はDNSサーバの変更はちょっと面倒です。iOSは「DNS Override」、AndroidはAndroid 9 Pieである必要があります。その上で「DNS Changer」というアプリで設定変更が可能です。
どのDNSサーバに変更する?
DNSサーバの設定を変更すると言っても、どのIPアドレスを設定すればいいのか分かりませんよね。
今回は、数ある中から人気のある3つのDNSサーバをピックアップしてみました。
まず1つ目はGoogleのパブリックDNS。IPアドレスはプライマリが「8.8.8.8」で、セカンダリが「8.8.4.4」です。今回僕が設定したのがこれです。スピードとセキュリティ、さらにGoogleなので信頼性もあります。IPアドレスのログは48時間以内に削除される設定になってます。
2つ目はCloudFlare。まだ新しいDNSサーバですが、スピードもありプライバシーに配慮してあるので信頼性もあります。IPアドレスはプライマリが「1.1.1.1」で、セカンダリが「1.0.0.1」です。
3つ目はQuad9。スピードと安全性に優れたDNSサーバです。IPアドレスはプライマリが「9.9.9.9」で、セカンダリが「149.112.112.112」です。IBMなどのパートナー企業から提供された脅威インテリジェンスデータベースを使い、安全性とユーザーのプライバシーとセキュリティに配慮されてます。個人情報は保存されず、利用もされないように設計されてます。
DNSサーバを変更したらレスポンスが格段に向上!
うちの環境では、GoogleのパブリックDNSである「8.8.8.8」と「8.8.4.4」をメインマシンのiMac ProとiPhone Xに設定してみました。
その結果、レスポンスが驚くほど大幅に向上しました!
「ホストを解決しています…」の白い画面はほとんど表示されることなく、Googleの検索結果も、どんどんクリックしてももたつくこともなく、サクッとWebサイトが表示されるようになりました。大幅なレスポンスの向上です。
Macをスリープから復帰させてももたつきは発生せず、快適にネットサーフィンができるようになりました。
ここ数週間、ずーっとモヤモヤしてたのでかなりスッキリしました。
検索結果のレスポンスが遅い、「ホストを解決しています…」と表示されたまま繋がりにくくなってる方、ぜひお試しを!