Dieser Artikel wurde archiviert, da er - oder Teile daraus - nur noch unter einer älteren Ubuntu-Version nutzbar ist. Diese Anleitung wird vom Wiki-Team weder auf Richtigkeit überprüft noch anderweitig gepflegt. Zusätzlich wurde der Artikel für weitere Änderungen gesperrt.
pdnsd ist ein DNS-Proxy-Server für Linux. Im Vergleich mit z.B. dnsmasq speichert er DNS-Abfragen in einem lokalem Zwischenspeicher permanent, wodurch sich der Internetzugriff auch über einen Neustart hinaus beschleunigen lässt. pdnsd unterstützt parallele Anfragen, mehrere DNS-Server und kann umfangreich konfiguriert werden.
pdnsd kann direkt aus den Quellen installiert werden [1]:
pdnsd (universe)
mit apturl
Paketliste zum Kopieren:
sudo apt-get install pdnsd
sudo aptitude install pdnsd
pdnsd wird hauptsächlich über die Datei /etc/pdnsd.conf konfiguriert. Hier müssen einige wenige Anpassungen vorgenommen werden, um das Programm sinnvoll nutzen zu können.
Es ist ratsam, vor der Bearbeitung der Datei mittels
sudo cp /etc/pdnsd.conf /etc/pdnsd.conf.backup
ein Backup anzulegen.
Die Konfigurationsdatei verwendet zwar eine einfache, aber in einigen Punkten von anderen Dateien dieser Art abweichende Syntax. Es gibt verschiedene Abschnitte, welche mit dem Namen des Abschnitts starten (global
,server
,source
,neg
).
In jedem Abschnitt gibt es eine Reihe von Optionen nach dem Muster:
option_name=option_wert;
Das Semikolon muss am Ende jeder Option gesetzt sein. Kommentare werde mit //
statt #
eingeleitet. Komplette Bereiche werden mit einem /*
am Anfang und einem */
am Ende auskommentiert.
Hier lassen sich grundlegende Einstellungen vornehmen. Die Voreinstellungen sind bereits sinnvoll, lassen sich allerdings durchaus noch verbessern. Die vollständigen Optionen sind in den Hilfeseiten des Programms beschrieben.
pdnsd löst automatisch alle Einträge der Datei /etc/hosts auf und speichert sie zwischen. Sind sehr viele Einträge vorhanden (falls man die Datei z.B. zum Blocken von Werbung verwendet), ist die voreingestellte Größe für den Festplattenspeicher möglicherweise zu klein. Dies führt dazu, dass pdnsd nicht mehr alle Abfragen speichern kann. Über den Eintrag perm_cache
in den globalen Einstellungen lässt sich die Größe des zu verwendenden Festplattenspeichers erhöhen.
Als Alternative kann mit der Option authrec=off;
im Abschnitt 'Source' das Vorladen der in der Datei /etc/hosts eingetragenen Seiten komplett abgeschaltet werden.
In diesem Bereich lassen sich die DNS-Server angeben, die pdnsd abfragt. Mindestens ein DNS-Server muss eingetragen sein. In der Beispielkonfiguration unten ist OpenDNS voreingestellt. Es können durchaus mehrere DNS-Server mit eigenen Sektionen eingetragen sein. (Siehe auch GoogleDNS in der Beispielkonfiguration.)
Ist die Konfiguration abgeschlossen, muss pdnsd noch mitgeteilt werden, dass die Datei /etc/pdnsd.conf verwendet werden soll. Hierzu öffnet man in einem Editor [4] mit Root-Rechten [3] die Datei /etc/default/pdnsd und setzt die Option AUTO_MODE
auf OFF
. Unterlässt man dies, ignoriert pdnsd die Datei und somit auch die eigenen Einstellungen.
Abschließend muss die /etc/resolv.conf noch auf den lokalen Proxy verweisen. Dazu muss der folgende Eintrag vorgenommen und gespeichert werden:
nameserver 127.0.0.1
Hinweis: verwendet man den NetworkManager (der in Ubuntu Standard ist), muss wie unten angegeben vorgegangen werden.
Diese Beispielkonfiguration verwendet OpenDNS als Nameserver und dürfte für die meisten Anwender direkt funktionieren.
global { perm_cache=4096; cache_dir="/var/cache/pdnsd"; run_as="pdnsd"; server_ip = 127.0.0.1; // Hier eth0 verwenden, wenn andere Rechner im Netzwerk // auf pdnsd zugreifen sollen. // debug=on; // Schaltet den Debugmodus ein status_ctl = on; // paranoid=on; //Diese Option reduziert die Wahrscheinlichkeit eines korrupten //Zwischenspeichers, macht pdnsd aber weniger effizient. // query_method=tcp_udp; // pdnsd muss mit tcp-Unterstützung kompiliert sein, // um diese Option verwenden zu können. min_ttl=15m; // Behalte gespeicherte Abfragen mindestens 15 Minuten. max_ttl=1w; // Behalte gespeicherte Abfragen höchstens eine Woche. timeout=10; // Globale Zeitüberschreitung (10 Sekunden). } /* Mit status_ctl=on und installiertem resolvconf ist diese Konfiguration direkt nutzbar Dies ist für mobile Endgeräte empfohlen */ server { label="resolvconf"; } server { label = "OpenDNS"; ip = 208.67.222.222 , 208.67.220.220; timeout = 5; uptest = query; interval = 30m; // Teste einmal alle 30 Minuten. ping_timeout = 300; // 30 Sekunden. purge_cache = off; exclude = .localdomain; policy = included; preset = off; } /* // Beispiel für einen zweiten DNS-Server. Zur Verwendung auskommentieren (/* und */ löschen) server { label = "GoogleDNS"; ip = 8.8.4.4 , 8.8.8.8; timeout = 5; uptest = query; interval = 30m; // Teste einmal alle 30 Minuten. ping_timeout = 300; // 30 Sekunden. purge_cache = off; exclude = .localdomain; policy = included; preset = off; } */ source { owner=localhost; // serve_aliases=on; // authrec=off; //Schaltet das Vorladen der Inhalte der /etc/hosts ab. file="/etc/hosts"; } rr { name=localhost; reverse=on; a=127.0.0.1; owner=localhost; soa=localhost,root.localhost,42,86400,900,86400,86400; } /* // Hier können Adressen eingetragen werden, die blockiert werden sollen neg { name=doubleclick.net; types=domain; # Damit werden alle Unterseiten der Domain blockiert. } */
Vor dem Start sollte man per Konsole [2] mit folgendem Befehl die aktuelle Antwortzeit abfragen:
dig google.com | grep "Query time"
Hier dürfte man in den meisten Fällen einen zweistelligen Wert erhalten. Gestartet wird pdnsd nun manuell mit
sudo /etc/init.d/pdnsd start
Sollte alles problemlos verlaufen, dürfte der Test von oben nun bei Wiederholung einen deutlich kleineren, einstelligen Wert ausgeben.
Falls man den NetworkManager verwendet (in Ubuntu Standard), überschreibt dieser den manuellen Eintrag in der resolv.conf. In diesem Fall muss das Programm nm-connection-editor mit Root-Rechten [3] aufgerufen und in den Einstellungen (IPv4/IPv6) die "Methode" auf "Automatisch (DHCP), nur Adressen" umgestellt werden. Dann trägt man unter DNS-Server die Adresse 127.0.0.1 ein und verlässt das Programm wieder.
Um bei Fehlern oder zur weiteren Verbesserung der Geschwindigkeit detailliertere Ausgaben des Programms zu erhalten, kann in den globalen Einstellungen der Debugmodus mit debug=on;
aktiviert werden. Nach einem Neustart stellt pdnsd diese Informationen unter /var/cache/pdnsd/pdnsd.debug zur Verfügung.
Die Option sollte nicht im alltäglichem Gebrauch aktiviert sein, da sie die Geschwindigkeit verringert.
Existieren mehrere Computer in einem Netzwerk, kann man pdnsd auch als DNS-Server für alle Computer einrichten. Damit verwenden alle angeschlossenen Rechner einen einzelnen DNS-Zwischenspeicher, was sich wiederholende Abfragen beschleunigt. Hierfür muss lediglich die Server-IP in den globalen Einstellungen auf den Namen des Netzwerkadapters umgestellt werden (in der Regel eth0). Falls eine Firewall aktiv ist, muss man noch Verbindungen über Port 53 erlauben.
Nun kann der Rechner, auf dem pdnsd läuft, auf den anderen Computern im Netzwerk als primärer DNS-Server eingestellt werden.
pdnsd erlaubt es, verschiedene Hosts oder Domänen anzugeben, die es nicht abfragen soll. So lässt sich ein einfacher Werbeblocker aufsetzen. Dafür verwendet man die 'neg'-Sektion in der Konfigurationsdatei, wo entsprechende Einträge vorgenommen werden können.
pdnsd-ctl erlaubt einige zusätzliche Kommandos, unter anderem das Löschen des Zwischenspeichers mittels
sudo pdnsd-ctl empty-cache
oder dessen Ansicht mit
sudo pdnsd-ctl dump
Um pdnsd-ctl nutzen zu können, muss die Option status_ctl=on;
gesetzt sein.
Diese Revision wurde am 4. November 2013 09:10 von frustschieber erstellt.