Beste Weg, um DNS-Caching einzurichten?

28

Um die DNS-Suche zu beschleunigen, möchte ich einen DNS-Cache oder -Proxy installieren.

Ich kann mindestens drei Programme sehen, von denen ich denke, dass sie die Arbeit erledigen: bind9, pdnsd oder dnsmasq.

Ich möchte sicherstellen, dass, wenn ich eines von beiden installiere, es aus Leistungs- oder Sicherheitssicht nicht schlecht konfiguriert bleibt. Was würden die Leute empfehlen und gibt es Konfigurationsänderungen, die ich sofort nach der Installation vornehmen sollte?


quelle
Für eine Workstation, richtig? Oder sprechen wir LAN / ISP?
Ja, dies dient zur Beschleunigung einzelner Workstations, nicht für ein LAN.

Antworten:

15
  1. Installieren Sie bind9
  2. Zeigen Sie resolv.conf auf 127.0.0.1

Führen Sie dazu die folgenden Schritte aus:

So installieren Sie Bind9

  1. Öffne "Ubuntu Software Center" (Programme-> Ubuntu Software Center)
  2. Suchen Sie nach bind9
  3. Aktivieren Sie dieses Kontrollkästchen, um "Technische Artikel" anzuzeigen.
  4. Markiere bind9 und installiere es

Aktualisieren Sie /etc/resolv.conf

  1. Öffnen Sie den Netzwerkmanager (System-> Einstellungen-> Netzwerkmanager)
  2. Finde deine Verbindung und bearbeite sie (verkabelt oder kabellos)
  3. Schaltet die Registerkarte "IPV4-Konfiguration" um
  4. In das Feld "DNS-Server" schreiben Sie 127.0.0.1

Es ist fertig!

Zu testen

Öffnen Sie das Gnome-Terminal (Anwendungen> Zubehör> Terminal) und geben Sie Folgendes ein

dig ubuntu.com 

(Wenn Sie es nicht haben, installieren Sie das dnsutils-Paket wie in bind9 beschrieben.)

Überprüfen Sie die letzten Antworten als Beispiel:

Meine erste Anfrage bei 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

Meine zweite Frage:

;; 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

Der Server 127.0.0.1 bedeutet, dass Sie lokal auflösen. Schauen Sie sich die Abfragezeit an (umgeben von **), die zweite wird zwischengespeichert.

Lin
quelle
Danke, Igor. Ich habe diesen Ansatz ausprobiert und er funktioniert gut für Namenssuchvorgänge, scheint jedoch keine umgekehrten IP-Adresssuchvorgänge zwischenzuspeichern. Wie würde ich das mit bind9 machen?
Dies hat nichts an meinem Setup geändert. Die Abfragezeit beträgt noch ~ 100ms
Ashfame
Sie beide: Wenn es nicht zu funktionieren scheint, überprüfen Sie, von welchem ​​Server dig die Antwort stammt. Wenn dort nicht 127.0.0.1 steht, haben Sie es nicht richtig eingerichtet. Hinweis: Die Anweisungen zum Einstellen von resolv.conf können für verschiedene Versionen von Ubuntu unterschiedlich sein.
Thomasrutter
Sie betreiben also einen Caching-Nameserver auf der GUI-Box? Ja, das ist natürlich möglich. Höchstwahrscheinlich wird für die meisten Leute, die dies lesen, ein Server installiert - und die grafische Benutzeroberfläche ist optional. Ein einfaches sudo apt install bind9und sudo nano /etc/resolv.confsollte als Alternative zu Ihrer Antwort hinzugefügt werden.
bshea
Ich habe alles getan, aber das Setup funktioniert nicht. Ich habe resolv.confes endlich mit 127.0.0.1 gemacht. Kann das scheitern? dig ubunut.comsagt "Zeitüberschreitung der Verbindung; es konnten keine Server erreicht werden"
Satya Prakash
9

Ich würde dnsmasq empfehlen,

Sehen Sie sich hier ein nettes Tutorial an. http://embraceubuntu.com/2006/08/02/local-dns-cache-for-faster-browsing/

Vielleicht möchten Sie hier einen Vergleich lesen.

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

dblang
quelle
Ich benutze Dnsmasq für DNS-Caching. Es wurden auch lokale Zuordnungen von / etc / hosts und DHCP bereitgestellt (optional unter Verwendung von / etc / ether.)
BillThor
Ich habe dnsmasq ausprobiert und es funktioniert genauso gut wie bind9 zum Zwischenspeichern von Namenssuchen, aber es scheint auch keine IP-Adresssuchen zu zwischenspeichern. Ist das mit dnsmasq möglich?
1
Passen Sie auf, dass Network Manager Ihre resolv.conf bei jedem Start überschreibt.
Daithib8
6

"Um die DNS-Suche zu beschleunigen, möchte ich einen DNS-Cache oder -Proxy installieren."

Okay. Aber es gibt auch einen einfacheren Weg. Die Verwendung von OpenDNS- und / oder Google-Nameservern ist schneller als Ihr eigener lokaler Cache für Namen, die bereits in den OpenDNS- / Google-Caches vorhanden sind. Die Verwendung von 208.67.222.222, 208.67.220.220 und / oder 8.8.8.8 als Namensserves ist fast immer schneller. Sie können dies mit time nslookup www.google.com 208.67.222.222testen, um die Geschwindigkeit auf einem der OpenDNS-Nameserver time nslookup www.google.com 8.8.8.8für Google oder time nslookup www.google.com 127.0.0.1in Ihrem lokalen Cache zu testen . Wenn ich schneller sage, meine ich technisch schneller und nicht so viel schneller, dass eine Person leicht einen Unterschied bemerken könnte.

"Ich kann mindestens drei Programme sehen, von denen ich denke, dass sie diese Aufgabe erfüllen: bind9, pdnsd oder dnsmasq."

Sind Sie offen für den dnscache-Teil von djbdns? Anweisungen unten. Allerdings wird der Cache nicht ohne Patch gespeichert ...

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

Dann müssen wir das System anweisen, unseren Cache zu verwenden.

sudo gedit /etc/resolv.conf

Bearbeiten Sie die Datei wie in diesem Beispiel. Diese Datei definiert die zu verwendenden Nameserver, die Standarddomäne und das Suchsuffix. Das Suchsuffix ermöglicht das Ausführen von Abfragen nur unter Verwendung des Hostnamens eines vollständig qualifizierten Domänennamens. Beispielsweise wird 'nslookup www' automatisch zu 'nslookup www.example.com', wenn example.com der Wert des Parameters "search" ist.

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

Das ist ein bisschen schick, aber wir müssen die neuesten Root-Nameserver besorgen.

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

Ich denke, die resolv.conf-Datei wird überschrieben, wenn wir DHCP verwenden. Ich gebe mir selbst eine statische IP-Adresse und entferne die Software, die sie quetscht, indem ich die Interface-Datei bearbeite, um die statische IP-Adresse einzurichten. Sie können jedoch versuchen, mit Network Manager zusammenzuarbeiten, wenn Sie dazu neigen.

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

Meine Interface-Datei sieht wie folgt aus, aber ändern Sie Ihre an Ihre Konfiguration.

# 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

Jetzt starten wir einfach neu.

sudo reboot

Jetzt verwenden Sie einen lokalen Resolver und die neuesten Root-Server. Sie werden jedoch feststellen, dass OpenDNS und Google tatsächlich schneller antworten (für Namen, die sich in ihrem Cache befinden, der die beliebtesten Domains darstellt). Es gibt keine zusätzliche Konfiguration, die dazu führen könnte, dass die Software sicherer wird, als sie bereits ist.


quelle
Danke Christopher. Können Sie erklären, warum Google DNS schneller ist als mein lokaler Cache? Ich glaube, es ist schnell, aber wie könnte es schneller sein, den ganzen Weg zu ihrem Server zu gehen, als meinen lokalen Cache zu durchsuchen?
Eric Johnson
Weil die Chancen sehr gut stehen, dass es bereits die Antwort gibt, ohne dass es erneut nachgeschlagen werden muss.
@ Christopher: Aber sobald Ihr lokaler Cache es hat, sind die Lookups sofort. Wenn Sie Google DNS verwenden, müssen Sie bei jeder Abfrage 80 ms warten.
Zan Lynx
@Zan Lynx Ja, also lass deinen lokalen Cache bei Google erfragen. Woo-hoo!
6
Obwohl @ user8290 einen Punkt hat, würde ich nicht sagen, dass die Verwendung von GoogleDNS schneller ist als eine lokale. Ja, Google hat die Ergebnisse zwischengespeichert, aber komm schon - wenn deine internationale Geschwindigkeit sinkt, ist es egal, ob Google alle DNS-Ergebnisse der Welt hat. Lokale Netzwerke haben in der Regel 100 MBit / s +. Wenn Sie den DNS-Server Ihres lokalen Netzwerks um eine Antwort bitten, ist dies mindestens zehnmal schneller als wenn Sie 8.8.8.8/8.8.4.4 fragen (abhängig von Ihrer internationalen Geschwindigkeit). Dies hängt natürlich damit zusammen, dass Sie das Ergebnis auf Ihrem DNS-Server zwischengespeichert haben.
4.
3

Ich benutze " dnscache " ( Paket "dnscache-run" ) und es ist sehr einfach. Sie müssen nichts konfigurieren.
Es erfasst die DNS-Petitionen ( Port 53 ) und speichert die Antworten zwischen. Wenn Linux das nächste Mal nach dieser Domain fragt, gibt dnscache die IP sofort zurück.
Es gibt zwar zwei Parameter, die geändert werden können, um dieses Programm zu verbessern:

echo 16000000 > /etc/sv/dnscache/env/CACHESIZE
echo 16777216 > /etc/sv/dnscache/env/DATALIMIT
Juan Simón
quelle
0

Unabhängig davon, welches Tool Sie verwenden, stellen Sie sicher, dass Port 53 für Ihre Firewall nicht aktiviert ist. Möglicherweise möchten Sie nur dem Host den ausgehenden Cache-Zugriff erlauben.

DNSMasq ist einfach einzurichten und gut dokumentiert. Wenn Sie es auf einer Firewall installieren, geben Sie die Schnittstellen an, an die das Ausschließen der Internetschnittstelle gebunden werden soll.

Bind ist schwieriger zu konfigurieren und kann als Cache für ein kleines Netzwerk überfordert sein. Ich glaube, die Standardkonfiguration ist nur Caching. Möglicherweise möchten Sie eine ACL hinzufügen, um einzuschränken, welche Adressen Ihren Server verwenden dürfen.

BillThor
quelle
0

Das von dnscache ausgeführte Paket hatte die geringsten Konflikte mit anderen Paketen wie libvirt, die Bridge-Netzwerke und dnsmasq verwenden.

sudo apt-get install dnscache-run

Dieses Paket entfernt resolvconf (/etc/resolv.conf) und Sie müssen / etc / network / interfaces oder den Netzwerkmanager verwenden, um Ihre Konfiguration anzuzeigen.

Rickfoosusa
quelle