ブラックジャックとより高速なGoogle Public DNSを使用して、ローカルDNS(PDNSD)を作成する

毎年、インターネットの速度-ラストマイルとトランクチャネルの両方が高速化しています。 不変のものは1つだけです-遅延は物理的な制限にかかっています。光ファイバーの光速度は1秒あたり約20万kmであり、したがって、大西洋をまたがるサーバーから予見可能な将来に〜150ms以内に応答を得ることができません(もちろん、光ファイバーのような喜びもあります)空芯または無線リレーですが、これは単なる人間にはほとんどアクセスできません)。



たとえば、ロシアから米国にある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メガビットのインターネットでも高速化できます。 また、遅延とパケット損失が大きい低速(無線)リンクの場合、違いは天国と地球の間にあります。



All Articles