自作DNSサービスにおけるネットワーク体験の向上方法

ネットワーク品質とネットワーク体験

何もしないで、最高のネットワーク体験を享受できる

明確にする必要がありますが、ここでのネットワーク品質ネットワーク体験は異なる概念です。通信はプロセスであり、複数のデバイスが関与します。個々のデバイスの上下り性能をネットワーク品質と呼び、端対端の通信全体の表現をネットワーク体験と呼びます。

ネットワーク品質の測定方法

ネットワーク品質を測定するには、通常複数の指標と方法が関与します。以下は一般的なネットワーク品質測定の方法と指標です:

  1. 帯域幅(Bandwidth):帯域幅はネットワークのデータ転送能力を指し、通常は1秒あたりのデータ量(ビット/秒)で測定されます。より高い帯域幅は一般的により良いネットワーク品質を示します。
  2. 遅延(Latency):遅延はデータが送信元から受信先に到達するまでの時間を指します。低い遅延はデータ転送速度が速く、ネットワーク応答が早いことを意味します。
  3. パケット損失率(Packet Loss Rate):パケット損失率はデータ転送中に失われるデータパケットの割合を指します。低いパケット損失率は一般的により良いネットワーク品質を意味します。
  4. ジッタ(Jitter):ジッタはデータパケットの転送中の変動や揺らぎを指します。小さいジッタはネットワークの安定性が高いことを示します。
  5. スループット(Throughput):スループットはネットワークの実際のデータ転送量を指し、通常は単位時間あたりのデータ転送量で測定されます。より高いスループットはより良いネットワーク品質を示します。
  6. ネットワークトポロジ(Network Topology):ネットワークトポロジはネットワーク内のノード間の接続方法と構造を記述します。合理的なネットワークトポロジ設計はネットワーク性能と品質を向上させることができます。
  7. サービス品質(Quality of Service, QoS):QoSはネットワークデータ転送で許容できるサービス品質を実現するための技術とメカニズムのセットです。QoSは流量制御や優先度キューなど様々な方法で実装できます。
  8. ネットワークプロトコル分析(Protocol Analysis):ネットワークプロトコルとデータパケットを分析することで、ネットワークの性能指標と問題を把握できます。例えばWiresharkなどのネットワーク分析ツールを使用します。

これらの指標と方法を総合的に活用することで、ネットワーク品質を包括的に評価し、ネットワーク性能の強みと改善の余地を特定できます。しかし、これらは事業者が関心を持つ指標であり、一般ユーザーにとっては適切な価格のルーターを購入すれば十分です。現代のルーターにはネットワーク品質を自動調整する機能が備わっています。

ネットワーク体験の測定方法

まずアクセス可能性です。アクセスできることが最も重要な基盤です。したがって、ドメイン名解決サービスは基本的な能力を満たす必要があります:

  • 包括的であること:上位DNSサービスは権威的で、より多くのドメインを解決できる必要があります
  • 正確性:解決結果は正確でなければならず、解決エラーがあってはなりません。一部のDNSプロバイダーは特定のドメインを乗っ取ったり汚染したりして、広告ページにリダイレクトすることがあります
  • 及時性:IPアドレスが変更された後、古いIPアドレスを返すのではなく、迅速に解決結果を更新する必要があります

次に、DNS解決結果のIPが提供できるサービスのネットワーク品質です。

インターネットサービスが提供できるネットワーク品質は通常地域に強く依存し、サーバーとクライアントが地理的に近いほどサービス品質は良くなります。

多くの有料DNS解決プロバイダーは地域ごとに異なるIPを解決する機能をサポートしています。例えば、以下はアリババクラウドが提供できる一部のサービスです:

(1)キャリア回線:中国联通、中国電信、中国移動、教育ネットワーク、鵬博士、広電ネットワークへのスマート解決をサポートし、省レベルまで細分化可能
(2)海外地域回線:サポート可能、大陸と国レベルまで細分化可能
(3)アリババクラウド回線:サポート可能、各地域まで細分化可能
(4)カスタム回線:カスタムIPアドレス範囲のスマート解決をサポート

地域ごとに異なるIPを解決するメカニズムにより、異なる地域のユーザーが同じドメイン名にアクセスしても異なる解決結果を得られ、自然とユーザーに近いサーバーに優先的に解決され、より良いネットワーク体験が得られます。

ユーザーのネットワーク体験を最適化することは、一般的にサービスプロバイダーがユーザーの実際のIPアドレスに基づいて行うものです。つまり、ほとんどのユーザーにとって何もしないで、最高のネットワーク体験を享受できるということです。

自作DNSサービスの上流DNSサービス選定方法

中国語インターネットで検索できるすべての資料は、アリババクラウド、騰訊雲、Cloudflare、Googleなどの大手企業のDNSサービスを推奨しています。これらのDNSはネットワークサービスのアクセス可能性を満たすことができます。なぜなら、それらは包括的で正確かつタイムリーだからです。しかし、必ずしも最も近いサーバーIPに解決してくれるとは限りません。

インターネット上の大量の資料が大手企業のDNSサービスを推奨するには歴史的背景があります。

かつて中国のISP事業者は、DNSハイジャックとHTTPの中間者攻撃だけでユーザーのトラフィックハイジャックを実現し、広告配信を実現していました。現在ではhttpsの普及により、このようなハイジャック方法はあまり見られませんが、一部の地域の集合住宅ブロードバンドではまだこの問題が存在する可能性があります。DNSハイジャックの問題に対処するには、DNS IPを変更しても効果がありません。なぜなら、53番ポートを対象としたハイジャックが可能で、ほとんどのDNS要求は暗号化されていないからです。

さらに、特殊なユーザーは特殊なウェブサイトにアクセスしたいと考えていますが、一部のDNSプロバイダーはIP汚染の問題があり、特殊なウェブサイトのドメイン名を間違ったIPアドレスに解決してアクセス不能にすることがあります。一方、権威的なDNSプロバイダーはこのような問題が少ないです。

したがって、ここでは3つの問題を考慮する必要があります:

  1. IP汚染
  2. DNSハイジャック
  3. 最適サービス体験

権威的なDNSプロバイダーは問題1を解決でき、暗号化プロトコル(DoT/DoH/QUIC)は問題2を解決できます。

問題3を解決したい場合は、ブロードバンド事業者のデフォルトDNSサービスを使用する必要があります。本文の冒頭で述べたように、何もしないで、最高のネットワーク体験を享受できるということです。

しかし、追求心のあるユーザーまたは特殊ユーザーの場合、以下の内容ではAdGuardHomeClashの2つのツールの設定方法を紹介し、この3つの問題を同時に解決する方法を説明します。

権威的かつスマートなDNSサービス

AdGuardHome設定

AdGuardHome、以下ADGと略す。これはネットワーク広告ブロッカーとプライバシー保護ソフトウェアであり、DNSサービスでもあります。カスタム上流DNSサービスとカスタムDNSルールをサポートしています。

ADGのデフォルトの上流DNS要求方法はロードバランシングです。ユーザーは複数の上流を設定でき、ADGは過去のDNSクエリ履歴に基づいて重み付けし、最も速いDNS応答の上流を選択します。簡単に言えば、ADGはより速いDNS上流をより高い確率で選択し、最適でないDNS上流を低い確率で選択します。

3番目のオプション最も速いIPアドレスを選択できます。

このオプションの利点は、ADGが自ら上流DNSのIP解決結果をテストし、遅延が最も低いIPを下流クライアントに返すことです。以下はbilibiliの通常解決結果です。

IPが非常に多くあることがわかります。もしADGがIP解決結果をテストせず、すべてのIPを下流クライアントに返したら、クライアントはどうするでしょうか?

一部のクライアントは最初のIPを選択し、一部は最後のIPを選択し、一部はランダムにIPを選択します。いずれにしても、最適な選択とは限りません。

最も速いIPアドレスオプションを有効にすると、以下はbilibiliの最適化解決結果です。このステップによりネットワーク体験が向上します

なぜ最も速いIPアドレスがデフォルト選択ではないのでしょうか?この機能はとても便利なのに、なぜデフォルトで有効化しないのでしょうか?

その理由はすべての上流DNSのIP解決結果を待つ必要があるためです。上流に複数のDNSプロバイダーがある場合、上流のクエリ時間はその中で最も遅いものに合わせられます。例えば、平均サービス時間50msのアリババと平均サービス時間500msのGoogleの上流がある場合、ADGの上流クエリ時間は500ms+になります。

したがって、ユーザーがこのオプションを設定する際には、上流DNSのサービス品質と数量を慎重に検討し、欲張ってはいけません。 ここでは2つの上流を設定することを推奨します。1つは権威的(https://dns.alidns.com/dns-query)、もう1つはキャリアDNSです。

キャリアのDNS IPは地域によって異なります。自分の地域のキャリアDNSを確認するにはこちらをクリックしてください。

または、ルーターの管理画面でキャリアが推奨するDNSを確認することもできます:

Clash設定

特殊ニーズのユーザーはDNSハイジャックとIP汚染の問題を重視しつつ、最適サービス体験を諦めたくない場合、Clashdnsモジュールを使用できます。

nameserver-policyを使用すると、異なるドメイン名に異なるDNSプロバイダーを使用できます。以下は設定例です:

dns:
  default-nameserver:
    - tls://223.5.5.5:853
    - tls://1.12.12.12:853
  nameserver:
    - https://dns.alidns.com/dns-query
    - https://one.one.one.one/dns-query
    - https://dns.google/dns-query
  nameserver-policy:
    "geosite:cn,private,apple":
      - 202.103.24.68 # 自分の所在地のキャリアDNS
      - https://dns.alidns.com/dns-query
    "geosite:geolocation-!cn":
      - https://one.one.one.one/dns-query
      - https://dns.google/dns-query

その意味は:

  • default-nameserver: 設定nameserver内のDNSサービスのIPを解決するために使用
  • nameserver: ネットワークリクエストのドメイン名を解決するために使用
  • nameserver-policy: 戦略に基づき、異なるドメイン名に異なるDNSサービスを使用指定

閲覧ありがとうございました

この記事がお役に立てば、ぜひいいねをお願いします。コメントでの議論も大歓迎です。