web-dev-qa-db-ja.com

LinuxでのDNSキャッシュ

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

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

では、ブラウザ/ proxy_serverはOS DNSキャッシングをどのように使用しますか? DNSキャッシングについては、プロキシ内でLinuxを使用するのではなく、Linuxに依存できるかどうかを確認しようとしています。

ありがとう

50
agent.smith

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

アプリケーションに独自のキャッシュを実装することもできます( diegows のコメントによると、Squidの場合と同様です)が、それはお勧めしません。それは多くの作業であり、間違いを犯すのは簡単です(nscdが間違いを犯しました!!!)、おそらく専用DNSキャッシュほど簡単に調整できず、アプリケーションの外部に既に存在する機能を複製します。

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

74
Celada

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

  • dnsmasq
  • bind

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

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

22
Zan Lynx

ここでは、dnsmasqを使用した DebianでのDNSキャッシング の例を利用できます。

構成の要約:

/ etc/default/dnsmasq

# Ensure you add this line
DNSMASQ_OPTS="-r /etc/resolv.dnsmasq"

/etc/resolv.dnsmasq

# Your preferred servers
nameserver 1.1.1.1
nameserver 8.8.8.8
nameserver 2001:4860:4860::8888

/etc/resolv.conf

nameserver 127.0.0.1

次に、dnsmasqを再起動します。

DNS 1.1.1.1を使用したベンチマークテスト:

for i in {1..100}; do time Dig slashdot.org @1.1.1.1; done 2>&1 | grep ^real | sed -e s/.*m// | awk '{sum += $1} END {print sum / NR}'

ローカルキャッシュDNSを使用したベンチマークテスト:

for i in {1..100}; do time Dig slashdot.org; done 2>&1 | grep ^real | sed -e s/.*m// | awk '{sum += $1} END {print sum / NR}'
9
Tk421

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

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

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

2
Focus Linux