DNSキャッシングを設定する最良の方法は?


28

DNSルックアップを高速化するために、DNSキャッシュまたはプロキシをインストールします。

bind9、pdnsd、またはdnsmasqの3つのプログラムが表示されます。

いずれかをインストールする場合、パフォーマンスまたはセキュリティの観点から不適切に構成されたままにしないでください。だから、人々は何をお勧めしますか、インストール後にすぐに行うべき構成の変更はありますか?


1つのワークステーションの場合、正しいですか?それとも、LAN / ISPの話ですか?

はい、これはLANではなく、個々のワークステーションを高速化するためです。

回答:


15
  1. bind9をインストールする
  2. resolv.confを127.0.0.1にポイントします

これを行うには、次の手順を実行します。

Bind9をインストールするには

  1. 「Ubuntu Software Center」を開きます(アプリケーション-> Ubuntu Software Center)
  2. bind9を検索
  3. 「技術的なアイテム」を表示するためにチェックします
  4. bind9をマークしてインストールする

/etc/resolv.confを更新します

  1. ネットワークマネージャーを開きます([システム]-> [設定]-> [ネットワークマネージャー])
  2. 接続を見つけて編集します(有線または無線)
  3. 「IPV4構成」タブを切り替えます
  4. [DNSサーバー]フィールドに127.0.0.1と書き込みます

終わった!

テストする

gnome-terminalを開き([アプリケーション]> [アクセサリ]> [ターミナル])、入力します

dig ubuntu.com 

(お持ちでない場合は、bind9の説明に従ってdnsutilsパッケージをインストールしてください)

例として、最後の回答を確認してください。

ubuntu.comでの最初のクエリ

;; Query time: **209 msec**
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat Jan 22 12:20:12 2011
;; MSG SIZE  rcvd: 196

2番目のクエリ:

;; Query time: **0 msec**
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat Jan 22 12:18:23 2011
;; MSG SIZE  rcvd: 156

サーバー127.0.0.1は、ローカルで解決していることを意味します。クエリ時間(**で囲まれている)を見てください。2番目のキャッシュはキャッシュされています。


ありがとう、イゴール。私はこのアプローチを試みましたが、名前のルックアップにはうまく機能しますが、逆IPアドレスルックアップをキャッシュしないようです。bind9を使用してこれを行うにはどうすればよいですか?

これは私の設定では何もしませんでした。クエリ時間はまだ
〜100msです-Ashfame

両方:うまくいかないようなら、どのサーバーの発掘が答えを得たかを確認してください。127.0.0.1と表示されていない場合は、適切に設定されていません。注:resolv.confを設定する手順は、Ubuntuのバージョンによって異なる場合があります。
thomasrutter

あなたはGUIボックスでキャッシングネームサーバーを実行していますか?はい、もちろん可能です。これを読んでいるほとんどの人がサーバーをインストールする可能性が高いです-GUIはオプションです。シンプルsudo apt install bind9かつsudo nano /etc/resolv.conf代替案として、あなたの答えに追加する必要があります。
bshea

私はすべてをしましたが、セットアップは機能していません。私がやったresolv.conf最後で127.0.0.1に。これで失敗することはありますか?dig ubunut.com「接続がタイムアウトになりました。サーバーに接続できませんでした」
サティヤプラカシュ

9

私はdnsmasqをお勧めします、

こちらの素敵なチュートリアルをご覧ください。http://embraceubuntu.com/2006/08/02/local-dns-cache-for-faster-browsing/

ここで比較を読むことができます。

http://en.wikipedia.org/wiki/Comparison_of_DNS_server_software


DNSキャッシュにdnsmasqを使用します。/ etc / hostsおよびDHCPからのローカルマッピングも提供(オプションで/ etc / ethersを使用)
BillThor

私はdnsmasqを試しましたが、名前検索をキャッシュするためにbind9と同様に動作しますが、IPアドレス検索をキャッシュするようにも見えません。これはdnsmasqを使用して可能ですか?

1
Network Managerが起動するたびにresolv.confを上書きすることに注意してください。
daithib8

6

「DNSルックアップを高速化するために、DNSキャッシュまたはプロキシをインストールしたい。」

OK。しかし、もっと簡単な方法もあります。OpenDNS / Googleのネームサーバーを使用すると、OpenDNS / Googleのキャッシュに既に存在する名前に対して、独自のローカルキャッシュよりも高速になります。208.67.222.222、208.67.220.220、および/または8.8.8.8を名前のサービスとして使用すると、ほとんど常に高速になります。これtime nslookup www.google.com 208.67.222.222をテストして、OpenDNSネームサーバーの1つ、time nslookup www.google.com 8.8.8.8Google、またはtime nslookup www.google.com 127.0.0.1ローカルキャッシュで速度をテストできます。速く言うと、技術的に速く、それほど速くはないので、人は簡単に違いに気付くことができます。

「仕事をするだろうと思う少なくとも3つのプログラムを見ることができます:bind9、pdnsd、またはdnsmasq。」

djbdnsのdnscache部分を開いていますか?以下の手順。ただし、パッチなしではキャッシュは保存されません...

sudo apt-get remove bind9 dnsmasq-base
sudo apt-get install djbdns dnscache-run
sudo killall -9 dnsmasq
sudo update-rc.d -f bind9 remove

次に、システムにキャッシュを使用するように指示する必要があります。

sudo gedit /etc/resolv.conf

この例のようにファイルを編集します。このファイルは、使用するネームサーバー、デフォルトドメイン、および検索サフィックスを定義します。検索接尾辞を使用すると、完全修飾ドメイン名のホスト名部分のみを使用してクエリを実行できます。たとえば、example.comが「search」パラメータの値である場合、「nslookup www」は自動的に「nslookup www.example.com」になります。

nameserver 127.0.0.1      # Use the local resolver first.
nameserver 208.67.222.222 # OpenDNS
nameserver 8.8.8.8        # Google
domain example.com
search example.com

これは少し凝っていますが、最新のルートネームサーバーを取得する必要があります。

sudo dnsip $(dnsqr ns . | sed -e '/answer/!d;s/\(.*\)NS \(.*\)/\2/') | sudo tee /etc/dnscache/root/servers/@

DHCPを使用すると、resolv.confファイルは上書きされると思います。私は自分に静的IPアドレスを与え、それをつぶすソフトウェアを削除し、インターフェイスファイルを編集して静的IPアドレスを設定することにしました。しかし、もしあなたがそんなに傾いているなら、あなたはNetwork Managerで仕事をしようとするかもしれません。

sudo apt-get purge network-manager network-manager-gnome
sudo gedit /etc/network/interfaces

私のインターフェースファイルは次のように見えますが、あなたの設定を変更してください。

# Loopback
#
auto lo
iface lo inet loopback

# First network card (attached to NAT router, attached to cable internet)
#
auto eth0
iface eth0 inet static
address 192.168.1.254
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1

今すぐ再起動しましょう。

sudo reboot

現在、ローカルリゾルバと最新のルートサーバーを使用しています。しかし、OpenDNSとGoogleが実際に高速に応答していることに気付くでしょう(最も一般的なドメインであるキャッシュにある名前に対して)。ソフトウェアが既に安全になっている可能性がある追加の構成はありません。


クリストファーに感謝します。Google DNSがローカルキャッシュより速い理由を説明できますか?私はそれが速いと信じていますが、ローカルキャッシュに行くよりも、サーバーに行く方が速いのはどうしてですか?
エリックジョンソン

もう一度調べる必要なく、答えがすでにある可能性が非常に高いからです。

@Christopher:しかし、ローカルキャッシュに保存されると、検索はすぐに行われます。Google DNSを使用する場合、クエリを実行するたびに80ミリ秒待機する必要があります。
ザンリンクス

@Zan Lynx Yeah ..だからあなたのローカルキャッシュにグーグルに聞いてもらう ウーフー!

6
@ user8290にはポイントがありますが、GoogleDNSの使用がローカルの場合より速いとは思いません。ええ、グーグルには結果がキャッシュされていますが、来てください-あなたの国際的な速度が下がれば、グーグルが世界中のすべてのDNS結果を持っていても問題ではありません。通常、ローカルネットワークには100mbps +があるため、ローカルネットワークDNSサーバーに応答を要求する方が、8.8.8.8 / 8.8.4.4を要求するよりも少なくとも10倍高速になります(国際速度に依存します)。もちろん、これは、DNSサーバーにキャッシュされた結果があるという意味です。
tftd

3

私は " dnscache "(パッケージ "dnscache-run")を使用していますが、これは非常に簡単です。何も設定する必要はありません。
DNS 要求(ポート53)をキャプチャし、応答をキャッシュします。次にLinuxがそのドメインを要求すると、dnscacheはすぐにIPを返します。
このプログラムを改善するために変更できる2つのパラメーターがありますが:

echo 16000000 > /etc/sv/dnscache/env/CACHESIZE
echo 16777216 > /etc/sv/dnscache/env/DATALIMIT

0

どのツールを使用する場合でも、ポート53がファイアウォールで受信可能になっていないことを確認してください。キャッシュアウトバウンドアクセスを持つホストのみを許可したい場合があります。

DNSMasqはセットアップが簡単で、十分に文書化されています。ファイアウォールにインストールする場合は、インターネットインターフェイスを除くバインドするインターフェイスを指定します。

バインドは構成がより難しく、小規模ネットワークのキャッシュとしては過剰になる可能性があります。デフォルトの設定はキャッシュのみだと思います。ACLを追加して、サーバーを使用できるアドレスを制限することができます。


0

dnscache-runパッケージは、ブリッジネットワーキングとdnsmasqを使用するlibvirtなどの他のパッケージとの競合が最も少なくなっています。

sudo apt-get install dnscache-run

このパッケージはresolvconf(/etc/resolv.conf)を削除するため、構成を表示するには/ etc / network / interfacesまたはネットワークマネージャーを使用する必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.