たとえば、ロシアから米国にあるWebサイト(NSサーバーが存在する可能性が高い)を開こうとして、プロバイダーのDNSキャッシュにドメインが見つからなかった場合、ギガビットインターネット上でも、おそらく1秒でも長い間待たなければなりません:私たちが実際にDNSリクエストを送受信するまで、海を渡ってNSドメインサーバーの名前を受け取ります。
数年前、GoogleはパブリックDNSサーバーを開始し、それらへの移行を扇動するために、NameBench ユーティリティを開発しました。これは 、サーフィン履歴でDNSテストを実行し、Google DNSがプロバイダーのDNSサーバーよりも高速であることを示します。
しかし、Google Public DNSよりも高速な独自のDNSサーバーを作成することができました。この簡単なメモでは、結果を共有したいと思います。
PDNSD
pdnsdは、キャッシングDNSプロキシです。 DNSクエリの通常のキャッシング(最小TTLを厳密に設定する機能-非常に悪いインターネット上で必要になる可能性がある)に加えて、複数の「親」DNSサーバーに同時に要求を送信し、クライアントに最初の応答を返すことができます。並列ポーリングを含めることで、速度の主な利点が得られます 。 いずれかのプロバイダーのキャッシュで結果を見つけると、結果を非常にすばやく取得し、最初のプロバイダーがキャッシュに応答を持たない場合、完全で遅い解決を待たない。
Ubuntuにインストールされます-ありふれたapt-get。
構成内のいくつかのポイント
global { perm_cache=10240; // . // 1024, . cache_dir="/var/cache/pdnsd"; [...] min_ttl=60m; // . // TTL 60 - 60 max_ttl=1w; // neg_ttl=5m; // (.. ) [..] par_queries=3; // "" DNS } server { label = "main"; ip = 85.21.192.5 // 4 , 3 , 4- , 213.234.192.7 // 2 - , - , 8.8.4.4 // Google Public DNS - , 8.8.8.8 ; [..] }
原則として、キャッシングはそれほど積極的ではありません(たとえば、min_ttl = 1m)が、運用中に特別な問題はありませんでした。 問題が発生した場合-必要に応じて、キャッシュから1つのエントリを消去できます。
または一度に:sudo pdnsd-ctl record 3.14.by delete
sudo pdnsd-ctl empty-cache
NameBenchのテスト結果
リクエストの50%については10ミリ秒以内に回答が得られ、Google Public DNSよりも85%高速であることがわかります。その場合、結果は自然にGoogleと一致します。
テスト結果によると、NameBenchは私たちに喜んで知らせてくれます。
8.8.8.8 SYS-192.167.0.98の遅いレプリカ[192.167.0.98] 8.8.4.4 SYS-192.167.0.98の遅いレプリカ[192.167.0.98]
したがって、並列クエリを備えたスマートキャッシングDNSプロキシ-100メガビットのインターネットでも高速化できます。 また、遅延とパケット損失が大きい低速(無線)リンクの場合、違いは天国と地球の間にあります。