iPhone で DNS サーバーの結果を比較する
Linkalyst の DNS ルックアップは、同じ問い合わせをシステム DNS とほかの最大 4 つのリゾルバに同時に送れます。このガイドでは、比較の設定方法と、返ってきた結果の読み方を説明します。読み取りすぎやすい点にも触れます。
比較で行うこと
比較では、1 つのクエリ(同じドメイン名とレコードタイプ)を、同じ瞬間に複数のリゾルバへ送ります。対象は、現在のネットワークでデバイスが使っているリゾルバであるシステム DNS と、自分で選ぶ最大 4 つのリゾルバです。リゾルバごとにプロトコルを選べます。標準の DNS なら UDP か TCP、暗号化された DNS なら DNS over HTTPS(DoH)か DNS over TLS(DoT)です。
プリセットには Cloudflare、Google、DNSPod があり、独自のサーバーを入力することもできます。カスタムの DoH サーバーは、認証情報を含まず、パスが /dns-query か / のアドレスである必要があります。DoT では、接続先のホストと、証明書の検証に使う名前を別々に設定します。
クエリは Linkalyst からのみ送られます。デバイスの DNS 設定は変わりません。
比較を設定する
数回のタップで設定できます。
- DNS ルックアップを開き、上部で「比較」を選びます。
- 読み込みが遅いサイトなどのドメインを入力し、レコードタイプを選びます。A は IPv4 アドレス、AAAA は IPv6 アドレスを問い合わせます。
- 現在のリゾルバを比較に含めるなら、「システム DNS」にチェックを入れたままにします。チェックを外すこともできますが、比較には少なくとも 2 つのリゾルバが必要です。
- 「追加するプロバイダのプロトコル」で UDP、TCP、DoH、DoT のいずれかを選び、プロバイダの横の丸をタップして追加します。「カスタムサーバ」では独自のサーバーを追加できます。追加したリゾルバの右側の矢印をタップすると変更できます。
- 比較を開始します。1 回の実行で最大 5 つのリゾルバを比べられます。
プロトコルは混在させられます。たとえば同じプロバイダを UDP と DoH の両方で追加すると、このネットワークでプロトコルによる違いがあるかどうかを確かめられます。
応答時間を読む
各行には、そのリゾルバが今回かかった時間が表示されます。「今回の最速」は、応答したリゾルバのうち最も速かったものに付きます。これは今回の実行だけについての表示です。Linkalyst は最適なサーバーを選ぶわけではなく、1 回の結果だけではあまり多くのことはわかりません。
また、時間の測り方はリゾルバによって同じではありません。追加したリゾルバでは毎回新しい接続を開くため、時間には接続の確立が含まれ、DoH と DoT では TLS ハンドシェイクも含まれます。システム DNS はサーバーへどう接続したかを報告せず、キャッシュから応答することもあります。人気のあるドメインでシステム DNS の時間がとても短い場合、クエリがデバイスの外に出ていない可能性があります。行を展開して「応答全体」を開くと、こうした条件を確認できます。
一般的な補足として、日常の利用では暗号化された DNS はクエリの間も接続を保つことが多いため、新しい接続で測った時間はそのコストを大きく見積もることになります。
応答が異なるとき
リゾルバが異なるレコードを返した場合、Linkalyst は「リゾルバによって返されたレコードが異なります」と表示し、最も多い応答と異なる行に「不一致」を付けます。レコードの並び順の違いは不一致として扱いません。
応答が異なるのは、多くの場合ごく普通のことです。大規模なサイトやコンテンツ配信ネットワークは、問い合わせ元と見なした場所に近いアドレスを返します。リゾルバはそれぞれ自分の場所から問い合わせるため、正しい応答同士でも異なることがあります。リゾルバが特定のドメインをフィルタリングしている場合、レコードが変更されたばかりでキャッシュが追いついていない場合、ネットワークが DNS の応答を書き換えている場合にも、応答は異なります。
アドレスを確かめるには、「検索」に切り替えて対象のリゾルバでその名前を調べ、結果のアドレスを遅延テストやポートチェックに入力します。
レコードがないのか、失敗なのか
リゾルバがレコードなしで応答したのと、リゾルバに到達できなかったのとは別のことです。行を展開すると、どちらなのかがわかります。
- NXDOMAIN(「ドメインが存在しません」と表示):リゾルバが、その名前は存在しないと応答しています。
- NODATA:名前は存在するものの、問い合わせたタイプのレコードがありません。たとえば IPv4 アドレスしかない名前に AAAA を問い合わせた場合です。
- タイムアウト:5 秒以内に完全な応答が届きませんでした。追加したリゾルバでは、この時間に接続も含まれます。タイムアウトは、その名前が存在しないことを意味しません。
- 失敗:「応答全体」の「失敗したレイヤー」で、どの段階で失敗したかがわかります。サーバーに到達できなかった場合は「接続」、安全な接続を確立または検証できなかった場合は TLS、DoH サーバーがエラーのステータスや DNS 以外のものを返した場合は HTTP、応答の形式が不正だったりサーバーエラーが報告されたりした場合は DNS です。
システム DNS は応答コードを公開しないため、システム DNS についてはレコードがなかったことしかわからず、NXDOMAIN なのか NODATA なのかは区別できません。
同じプロバイダで UDP は使えるのに DoH や DoT が失敗する場合、ネットワークが暗号化された DNS をブロックまたは傍受している可能性があります。公共、学校、職場のネットワークにはそうしたものがあり、専用のポート(初期値は 853)を使う DoT のほうがブロックされやすくなります。その場合でも Linkalyst は暗号化されていない DNS に切り替えたり、プロバイダを変えたりしないため、失敗はそのまま表示されます。
繰り返して、結果を残す
リゾルバの時間は、時間帯、接続しているネットワーク、すでにキャッシュされている内容によって変わります。判断する前に、同じ比較を何回か行い、時間をおいたり別のネットワークで試したりしてください。1 回最速だったリゾルバが、次も最速とは限りません。
以前の比較は「最近の 5 回」に表示され、各実行は「記録」にレポートとして保存されます。あとで見返したり、DNS の結果を CSV として共有したりできます。
DNS を変更したいとき
Linkalyst がデバイスの DNS 設定を変更することはなく、比較は App からクエリを送るだけです。結果を見て別のリゾルバを試したくなったら、変更は Linkalyst の外で行います。iOS で設定する(たとえば特定の Wi-Fi ネットワークだけ)、DNS プロバイダが提供するプロファイルや App を使う、またはルーターで設定してネットワーク上のすべてのデバイスに配る、といった方法があります。
変更したら、同じ比較をもう一度行ってください。新しいリゾルバが「システム DNS」として応答するので、何か変わったかを確かめられます。
よくある質問
最も速かったリゾルバに切り替えるべきですか?
1 回の結果だけで決めるべきではありません。時間は回ごとに変わり、追加したリゾルバは毎回新しい接続の分だけ時間がかかり、システム DNS はキャッシュから応答することもあります。何回測っても安定して速く、返すアドレスが実際に使えるリゾルバのほうが、よい手がかりになります。速度は要素の 1 つにすぎず、フィルタリング、プライバシー、信頼性も大切ですが、Linkalyst はそれらを評価しません。
「システム DNS」はどのサーバーですか?
現在のネットワークでデバイスが使っているリゾルバです。通常はルーターやプロバイダから割り当てられ、VPN や DNS のプロファイルで設定されることもあります。どの上位サーバーが、どのプロトコルで、どの応答コードで応答したかを、システムは App に伝えません。「このデバイス」には、システムが報告する DNS サーバーのアドレスが表示されます。
UDP は使えるのに、DoH や DoT が失敗するのはなぜですか?
多くの場合、ネットワークが暗号化された DNS をブロックまたは傍受しているか、公共のネットワークのログインページでの手続きがまだ済んでいないためです。サーバーの証明書を、入力した名前で検証できない場合も TLS の失敗になります。別のネットワークで同じ比較を試し、そちらで成功するなら、最初のネットワークが原因です。
実行するたびに違うアドレスが返るのはなぜですか?
多くのサイトは複数のアドレスを順番に使ったり、場所や負荷に応じて異なる応答を返したりするため、応答が変わるのは通常のことです。TTL の短いレコードは頻繁に取得し直されます。Linkalyst は各レコードを、受け取ったままの TTL とともに表示します。