74

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

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

では、browser/proxy_server は OS DNS キャッシングをどのように使用するのでしょうか? プロキシ内で独自に行うのではなく、DNS キャッシングを Linux に依存できるかどうかを調べています。

ありがとう

4

4 に答える 4

101

Linux (およびおそらくほとんどの Unix) では、 nscdがインストールされて実行されていない限り、OS レベルの DNS キャッシュはありません。それでも、nscd の DNS キャッシング機能は、壊れているため、少なくとも Debian ではデフォルトで無効になっています。実際の結果として、あなたの Linux システムはおそらく OS レベルの DNS キャッシングをまったく行っていないということです。

アプリケーションに独自のキャッシュを実装することもできます ( diegowsのコメントによると、Squid で行ったように) が、私はそれをお勧めしません。これは大変な作業であり、間違えやすい (nscd は間違っている!!!)、専用の DNS キャッシュほど簡単に調整できない可能性が高く、アプリケーションの外部に既に存在する機能を複製します。

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

于 2012-06-13T18:35:53.510 に答える
24

Linux での DNS キャッシングに使用できる他の 2 つのソフトウェア パッケージを次に示します。

  • dnsmasq
  • 練る

DNS 転送とキャッシュ用にソフトウェアを構成したら、/etc/resolv.conf でシステムの DNS リゾルバーを 127.0.0.1 に設定します。

システムが NetworkManager を使用している場合は、dns=dnsmasqオプションを使用するか/etc/NetworkManager/NetworkManager.conf、接続設定を [自動 (アドレスのみ)] に変更してから、/etc/NetworkManager/dispatcher.dディレクトリ内のスクリプトを使用して DHCP ネームサーバーを取得し、それを DNS 転送サーバーとして設定します。 DNS キャッシュ ソフトウェアにアクセスし、設定のリロードをトリガーします。

于 2012-06-13T21:27:20.020 に答える
2

Firefox には dns キャッシュが含まれています。DNS キャッシュを無効にするには:

  1. ブラウザを開く
  2. アドレスバーに about:config と入力します
  3. プロパティのリストを右クリックし、コンテキスト メニューで [新規] > [整数] を選択します。
  4. 設定名として「network.dnsCacheExpiration」を入力し、整数値として 0 を入力します

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

于 2012-12-23T19:44:43.740 に答える