2012-06-13 5 views
38

DNSキャッシュについて混乱します。私は小さなフォワードプロキシサーバーを作成しており、LinuxシステムでOS DNSキャッシュを使用したいと考えています。LinuxでのDNSキャッシュ

私が正しく理解していれば、ブラウザレベルでDNSキャッシュがあります。その後、OSレベルでDNSキャッシュがあります(Windowsにはありますが、Linuxディストリビューションにデフォルトで設定されているかどうかはわかりません)。

ブラウザ/ proxy_serverはOS DNSキャッシュをどのように使用しますか?私は自分のプロキシの中で自分自身で行うのではなく、DNSキャッシュのためにLinuxに頼ることができるかどうかを探そうとしています。 nscdがインストールされ、実行されていない限り

おかげでLinuxの(そしておそらくほとんどのUNIX)で

+0

は、OSキャッシングに依存しています。 –

+0

プロキシがある場合、DNSキャッシュはプロキシにあります。例えば、Squidは独自のDNSキャッシュとリゾルバを持っています。 –

答えて

62

は、何のOSレベルのDNSキャッシュはありません。それでも、nscdのDNSキャッシング機能はデフォルトで少なくともDebianでは無効になっているので、it's brokenです。実用的な結果は、あなたのLinuxシステムは、おそらくOSレベルのDNSキャッシングをしていない可能性が非常に高いということです。

diegowsのコメントによれば、あなたのアプリケーションに独自のキャッシュを実装することができますが(Squidの場合のように)、私はそれに対してお勧めします。これは大変な作業ですが、間違ってしまうのは簡単です(nscdは間違っています!!!)、専用DNSキャッシュと同じように容易に調整できず、アプリケーション外に既に存在する機能を複製します。

DNSクエリの負荷が問題になるほど大きいか、外部DNSサーバーへのRTTが問題になるほど長いため、ソフトウェアを使用するエンドユーザーがDNSキャッシングを必要とする場合は、キャッシングDNSアプリケーションと同じマシン上にUnboundなどのサーバーを作成し、レスポンスをキャッシュし、通常のDNSリゾルバにミスを転送するように設定します。ここで

+0

ねえ、ありがとう。もう1つの質問。あなたはそれがWindows上のブラウザでどのように機能するか知っていますか?私はクロームがOSのDNSキャッシュに依存していると読んだ。つまり、アプリケーションがOSのDNSキャッシュにアクセスできるということですか?一般に、dns解決の流れは何ですか(キャッシングのコンテキストで)。ブラウザは、キャッシュを維持していれば、それ自身のキャッシュをチェックします。その後、OSに尋ねるか、OSのdnsキャッシュを読み込みますか?エントリが見つからない場合、解決のために外に出ます。 –

+5

OSレベルのキャッシュが利用可能な場合、アプリケーションが標準名クエリAPI( 'getaddrinfo() 'など)をバイパスして独自のDNSクエリを直接実装しない限り、すべてのアプリケーションによって自動的に透過的に使用されます。これは無条件にMacOS Xに当てはまり、nscdが動作していて、MS Windowsを話せない場合はLinuxにも適用されます。アプリケーションが独自のキャッシュを実装している場合は、OSレベルのキャッシュに加えて、アプリケーションが存在していてもいなくてもかまいません(アプリケーションがOSをバイパスして直接クエリを実行しない限り)。 – Celada

+2

@Celadaは 'Linux(そしておそらくほとんどのUnix)のソースを提供することができますが、nscdがインストールされ実行されていない限りOSレベルのDNSキャッシングはありません。私は運がないと周りをグーグルで探検しました... – cYrus

19

は、Linux上でDNSキャッシングのために使用することができる2つの他のソフトウェアパッケージです:

  • dnsmasqの
  • バインド

DNSフォワーディングやキャッシングのためのソフトウェアを設定した後は、あなたがして設定しますシステムのDNSリゾルバを/etc/resolv.confの127.0.0.1に設定します。

システムネットワークマネージャを使用している場合は、/etc/NetworkManager/NetworkManager.confdns=dnsmasqオプションを使用して試すことができますいずれか、または[自動(アドレスのみ)に接続設定を変更し、DHCPのネームサーバを取得するために/etc/NetworkManager/dispatcher.dディレクトリ内のスクリプトを使用することができ、それを設定しますDNSキャッシュソフトウェアのDNS転送サーバーとして使用し、構成の再読み込みを開始します。

+1

最近、 'systemd'(これはもう一つです)(https://www.freedesktop.org/software/systemd/man/systemd-resolved.service.html)では、' systemctl enable systemd-resolved'で有効にできます。 –

2

FirefoxにはDNSキャッシュが含まれています。程度でブラウザを開き

  • タイプを

    1. : は、DNSキャッシュを無効にする設定をアドレスバーに
    2. 右コンテキストメニューで[新規]> [整数のプロパティのリストをクリックして選択し
    3. 設定名に「network.dnsCacheExpiration」、整数値として0を入力してください。

    無効にすると、FirefoxはOSによって提供されるDNSキャッシュを使用します。

  • 関連する問題