DNS高速化 · 1 min read · Oct 01, 2025
インフラが非常に少ない地域におけるDNSアクセスの高速化
インフラが非常に少ない地域におけるDNSアクセスの高速化
はじめに
高価な衛星リンクを使用していて、会社のインターネットアクセスに十分な帯域幅を提供できない場合、できる限りこのリンクから多くのものを得るためにできることをしたいと思うでしょう。さらに、時折、電力会社からの電力が失われ、UPSが切れるまでの長い時間がかかります。リンクからより多くのものを得るためにできることはいくつかあります。この記事では、DNSリクエストの応答をハードディスクにキャッシュすることでDNSリクエストを高速化する方法を見ていきます。次のDNSリクエストはキャッシュから提供され、ディスクにコピーがあるため、停電や再起動時に失われることはありません。
このドキュメントの更新版は、www.httpcompression.netにあります。
分析
これが必要ですか?さて、見てみましょう。Linuxから次のコマンドを実行します:
dig www.httpcompression.net他のことの中で、次の結果を得ました:
;; クエリ時間: 583 msec数秒後に再度コマンドを発行し、次のように得ました:
;; クエリ時間: 612 msec明らかに、私のISPのDNSサーバーはリクエストを米国に転送しています(私は西アフリカのガーナのアクラにいて、海底光ファイバーケーブルSAT3を介してインターネットに接続しています)。最初のリクエストの結果はキャッシュされていなかったようです。もしキャッシュされていた場合、2回目のリクエストの時点でタイムアウトしていたでしょう。確かに、そのような環境はこの設定の完璧な候補です。
方法
私はUbuntuサーバーで作業しています。使用するソフトウェアはpdnsdです。ウェブサイトはpdnsdについて次のように述べています:
“pdnsdは、到達不能またはダウンしたDNSサーバー(たとえば、ダイヤルインネットワーク)に対処するために設計された、永続的なキャッシュを持つプロキシDNSサーバーです(キャッシュの内容は終了時にハードディスクに書き込まれます)。バージョン1.1.0以降、pdnsdはネガティブキャッシングをサポートしています。”
Ubuntuまたは他のDebianベースのディストリビューションから次のコマンドを実行します:
apt-get install pdnsd設定ページが表示され、3つのオプション「resolvconf / ルートサーバーを使用 / 手動」があります。「手動」を選択してインストールを続行しました。
デフォルトのインストールには設定ファイルがあり、その一部はコメントアウトされています。行は”//“でコメントアウトされ、複数行は”/ /“でコメントアウトされています。例:
// これは設定ファイルのコメント行です。 /* これらはコメントされた 行です。 */
お気に入りのテキストエディタを使用して、次の設定ファイルを編集します:
- /etc/default/pdnsd START_DAEMONの行を次のように編集します:
START_DAEMON=yes - /etc/pdnsd.conf グローバルスタンザで次の設定を変更することをお勧めします:server_ip = 127.0.0.1; これはpdnsdにアクセスできるIPです。アドレスがデフォルトの127.0.0.1のままにされている場合、サーバー自体のプログラムのみがpdnsdサーバーにアクセスできます。ただし、他のサーバーやPCがこのpdnsdインストールをDNSサーバーとして使用する場合は、クライアントが使用する適切なIPアドレスに変更する必要があります。サーバースタンザを使用して、pdnsdがドメイン名を解決するために参照するDNSサーバーを設定します。デフォルトでコメントアウトされている2つのサーバースタンザがあります。opendnsサーバーは非常に信頼性が高く人気があるため、使用することをお勧めします:
server { label="opendns"; ip = 208.67.220.220,208.67.222.222; }コメントアウトされていないことを確認してください。ISPに信頼できるDNSサーバーがある場合は、それを代わりに使用できます。できるだけ、ルートサーバーを節約してください。 - /etc/resolv.conf このファイルには、サーバー上のプログラム(たとえば、squid、apache)が通常名前解決のために参照するDNSサーバーが含まれています。今、あなたはちょうどインストールしたローカルpdnsdサーバーを参照したいので、ループバックインターフェース(lo)のIPアドレス、すなわち127.0.0.1を入力します。これがこのファイルの唯一のエントリであるべきです。
127.0.0.1
テストと結論
今、pdnsdサーバーを起動します:
/etc/init.d/pdnsd start次に、次のコマンドを発行し、応答の中のクエリ時間を確認して、どれだけうまくいっているかを判断します:
dig www.httpcompression.net; DiG 9.4.2-P2 www.httpcompression.net
;; クエリ時間: 3323 msec
;; サーバー: 127.0.0.1#53(127.0.0.1)
;; 時間: Mon Nov 3 20:02:37 2008
;; メッセージサイズ 受信: 71しばらくしてから、再度コマンドを発行します:
dig www.httpcompression.net; DiG 9.4.2-P2 www.httpcompression.net
;; クエリ時間: 1 msec
;; サーバー: 127.0.0.1#53(127.0.0.1)
;; 時間: Mon Nov 3 20:03:07 2008
;; メッセージサイズ 受信: 71上記の2つの結果から、最初のクエリは3323ミリ秒かかり、30秒後の2回目はわずか1ミリ秒で解決されました。サーバーを再起動した後:
dig www.httpcompression.net;; クエリ時間: 3 msec
;; サーバー: 127.0.0.1#53(127.0.0.1)
;; 時間: Mon Nov 3 20:06:38 2008
;; メッセージサイズ 受信: 71再起動後、クエリはわずか3ミリ秒で解決されました。キャッシュを失いませんでした。マニュアルを読んで、状況に合わせていくつかの設定を変更することをお勧めします。これらの設定のいくつかは:
- min_ttl: キャッシュされた応答が保持されるべきデフォルトの最小時間は15分です。親サーバーに連絡する頻度を減らすために、これを増やすことをお勧めします。副作用として、サイトのアドレスが変更された場合、新しいアドレスのためにqdnsdが親サーバーに連絡するのに時間がかかります。最小時間が十分に長くない場合、長時間の停電後にキャッシュを失うことになります。
- perm_cache: これはキャッシュのためのディスクスペースのサイズです。ネットワークのトラフィックに応じて、少なくとも1週間のデータを快適に保存できる値に増やすことをお勧めします。時間の経過とともにキャッシュファイルのサイズを監視して、あなたにとって適切な値を把握することができます。
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。