[[Vorlage(archiviert )]] {{{#!vorlage Wissen [:Pakete installieren: Installation von Programmen] [:Terminal: Ein Terminal öffnen] [:sudo: Root-Rechte] [:Editor: Einen Editor öffnen] }}} [[Inhaltsverzeichnis()]] [[Bild(Wiki/Icons/service.png, 48, align=left)]] [http://members.home.nl/p.a.rombouts/pdnsd.html pdnsd] {en} ist ein [wikipedia:Domain_Name_System:DNS]-Proxy-Server für Linux. Im Vergleich mit z.B. [:Dnsmasq:] speichert er [wikipedia:Domain_Name_System#Aufl.C3.B6sung_eines_DNS-Requests: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 [wikipedia:Domain_Name_System#Nameserver:DNS-Server] und kann umfangreich konfiguriert werden. = Installation = pdnsd kann direkt aus den Quellen installiert werden [1]: {{{#!vorlage Paketinstallation pdnsd, universe }}} = Konfiguration = 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 {{{#!vorlage Befehl sudo cp /etc/pdnsd.conf /etc/pdnsd.conf.backup }}} ein Backup anzulegen. {{{#!vorlage Hinweis 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. == Globale Einstellungen == Hier lassen sich grundlegende Einstellungen vornehmen. Die Voreinstellungen sind bereits sinnvoll, lassen sich allerdings durchaus noch verbessern. Die vollständigen Optionen sind in den [:man:Hilfeseiten] des Programms beschrieben. == Festplattenspeicher == 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. == DNS-Server == In diesem Bereich lassen sich die DNS-Server angeben, die pdnsd abfragt. Mindestens ein DNS-Server muss eingetragen sein. In der [#Beispielkonfiguration Beispielkonfiguration] unten ist [http://www.opendns.com/ OpenDNS] {en} voreingestellt. Es können durchaus mehrere DNS-Server mit eigenen Sektionen eingetragen sein. (Siehe auch [https://code.google.com/intl/de/speed/public-dns/ GoogleDNS] {en} in der [#Beispielkonfiguration Beispielkonfiguration].) == Konfiguration abschließen == 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 [#NetworkManager-ueberschreibt-resolv-conf wie unten angegeben] vorgegangen werden. = Beispielkonfiguration = Diese Beispielkonfiguration verwendet [http://www.opendns.com/ OpenDNS] {en} 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. } */ }}} = Start und Test = Vor dem Start sollte man per Konsole [2] mit folgendem Befehl die aktuelle Antwortzeit abfragen: {{{#!vorlage Befehl 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 {{{#!vorlage Befehl 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. = Problembehandlung = == NetworkManager überschreibt resolv.conf == 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. == Fehleranalyse == 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. {{{#!vorlage Hinweis Die Option sollte nicht im alltäglichem Gebrauch aktiviert sein, da sie die Geschwindigkeit verringert. }}} = Extras = == Gemeinsamer DNS-Server im Netzwerk == 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. == Werbeblocker == 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 == pdnsd-ctl erlaubt einige zusätzliche Kommandos, unter anderem das Löschen des Zwischenspeichers mittels {{{#!vorlage Befehl sudo pdnsd-ctl empty-cache }}} oder dessen Ansicht mit {{{#!vorlage Befehl sudo pdnsd-ctl dump }}} Um pdnsd-ctl nutzen zu können, muss die Option `status_ctl=on;` gesetzt sein. = Links = * [http://members.home.nl/p.a.rombouts/pdnsd.html pdnsd-Homepage] {en} – (Vorläufige) Offizielle Homepage * [wikipedia:Domain_Name_System:Infos zum DNS-System] – Wikipedia #tag: Netzwerk, Internet, System, Server