「自分の地域に最適なDNSは?」は、このサイトに読者を連れてくる検索の中でも特に多いもので、正直な答えは「外からは誰にも分からない」です。できるのは、なぜそうなのかを説明し、2分で自分で測る方法を示すことです。
万人向けの答えがない理由
Cloudflare、Google、Quad9 をはじめとする大手リゾルバーは anycast で動いています。たとえば 1.1.1.1 という同じアドレスが世界中の数百のノードから広告され、問い合わせはプロバイダーのネットワークが「最も近い」と判断したノードに届きます。ここでいう「近い」は経路上の話で、距離のことではありません。同じ都市の隣人同士でも、プロバイダーが違えば別のノードと話していて、片方は6ミリ秒、もう片方は40ミリ秒ということが起こります。
そこにキャッシュが加わります。あなたが問い合わせたドメインが直前に同じノードで解決されていれば、応答は即座です。そうでなければ、リゾルバーは権威サーバーまでの連鎖を全部たどる必要があり、そこでは距離よりプロバイダーのネットワーク品質が効いてきます。だから良い計測はこの2つを分けます。キャッシュ済みの問い合わせと、「コールド」な問い合わせです。
自分の回線から測る方法
手っ取り早いのはDNS速度テストです。ブラウザから7つのリゾルバーに5ラウンドの問い合わせを行い、どれもキャッシュから答えられないようにランダムな名前を使って、平均レイテンシ順に並べます。何もインストールせず、何も保存しません。
結果を意味あるものにするコツを2つ。
- 実際に使うネットワークから実行する。家のルーターを設定したいのに、スマホのモバイル回線から測っても意味がありません。
- 別の時間帯にもう一度実行する。プロバイダーの網は夜に混み、順位が入れ替わることがあります。
ターミナル派なら dig が仲介なしで同じ情報をくれます。
dig @1.1.1.1 example.com | grep "Query time"
dig @8.8.8.8 example.com | grep "Query time"
dig @9.9.9.9 example.com | grep "Query time"
各リゾルバーへの最初の問い合わせはキャッシュを埋めるぶん長くかかりがちなので、各行を2〜3回繰り返して安定した値を採ってください。Windows の nslookup は時間を表示しません。ブラウザのテストか、PowerShell の Measure-Command を使ってください。
良い数値の目安
- 20ミリ秒未満:優秀。リゾルバーがあなたの都市か隣の都市にノードを持っているときの値です。
- 20〜50ミリ秒:まったく普通。ブラウジングで上の帯との差は感じません。
- 50〜100ミリ秒:許容範囲ですが、多数のドメインからリソースを読み込むページでは効いてきます。
- 100ミリ秒超:ほぼ確実に、もっと良い選択肢があります。
そしてレイテンシより大事な数値が、取りこぼしです。8ミリ秒で応答するのに問い合わせの10%に答えないリゾルバーは、25ミリ秒でも必ず答えるリゾルバーより劣ります。取りこぼし1回ごとに、システムが再試行するまで1〜2秒待たされるからです。マドリードからの当サイトの計測では DNS.WATCH が77%、Comodo が42%の問い合わせを取りこぼしました。応答するときにどれだけ速くても、どちらも選択肢にはなりません。
参考として:マドリードからの計測
キャッシュ済みの応答では、Quad9 が5ミリ秒、Cloudflare、CleanBrowsing、DNS4EU、xdp.es が6ミリ秒、いずれも Telefónica の網からです。Google は7ミリ秒。コールド、つまり完全な解決を強制した場合は Cloudflare が22ミリ秒、残りは30〜35ミリ秒の間に収まり、小規模なリゾルバーやフィルタの重いリゾルバーだけが100を超えました。
この表が描いているのは、特定の日の特定のネットワークです。マドリードで Telefónica を使っているならそのまま役立ちますが、東京や大阪や福岡にいるなら、「良い数値とはどのくらいか」の参考にしかなりません。
地域ごとに変わること
日本。 Cloudflare と Google は東京と大阪にノードを持ち、Quad9 も国内に拠点があります。大手プロバイダーからならどれも数ミリ秒で応答するのが普通ですが、地方や小規模なプロバイダーでは経路が海外に出ることがあり、結果が大きく変わります。だからこそ測ってください。
ヨーロッパ。 大手はほぼすべての首都にノードを持ち、差は数ミリ秒です。DNS4EU は欧州の公共リゾルバーで、スペインからは Cloudflare と同じ速さで応答します。
中東・北アフリカ。 この質問が最も多く届く地域で、それには理由があります。ノードのカバー範囲が国ごとに大きく異なり、各プロバイダーのピアリング契約によって同じ都市内でも結果が変わるからです。ここでは計測は助言ではなく、唯一の方法です。
ロシアと中国。 ローカルのリゾルバー(ロシアの Yandex DNS、中国の AliDNS)は、ネットワーク上の近さから西側のものよりレイテンシで勝つのが普通です。そこからの比較が公平になるよう、テストには AliDNS を含めています。
よくある落とし穴:プロバイダーによるDNSの横取り
テストでどのリゾルバーもほぼ同じ時間、同じ結果を返すなら、疑ってください。一部のプロバイダーはポート53のDNSトラフィックを横取りし、どのアドレスを設定していようと自分で応答します。あなたが測っているのは Cloudflare ではなく、Cloudflare のアドレスを入力したプロバイダーです。
ブラウザのテストは DNS over HTTPS を使うので、この方法では横取りできず、数値は本物のリゾルバーのものです。もし当てはまるなら、システムに DoH か DoT を設定するのが、選んだDNSに本当に応答してもらう方法です。
プライマリとセカンダリ
最速が分かったら、それをプライマリにしてください。セカンダリが使われるのはプライマリが応答しないときだけで、負荷分散ではありません。「最速と最も安全なもの」を組み合わせて両方の良いとこ取りを期待しても、ほとんど意味がないのです。同じプロバイダーの2つ、または最速と2番目に速いものを入れてください。設定ガイドに、Windows、macOS、Android、iOS、ルーターでの入力場所をまとめています。