pdnsd als lokaler DNS Cache Server installieren

fehlt wasgeht sogutsehr guthat geholfen (No Ratings Yet)
Loading ... Loading ...
Werbung




Nutzt man eine Virtualisierungs-Umgebung wie beispielsweise Proxmox, kann es Sinn machen, DNS Abfragen der VMs vom Host beantworten zu lassen, hier bietet sich pdnsd hervorragend an. Dies spart zum einen Traffic und zum anderen erhöht es die Geschwindigkeit, wenn der Host direkt auf Anfragen von DNS Adressen antworten kann.

pdnsd als DNS Cache

pdnsd bietet einige Vorteile gegenüber Bind. Sofern man keinen eigenen DNS Server betreibt, reicht ein pdnsd vollkommen aus. Dieser DNS Server cacht die IPs der angefragten Domainnamen zusätzlich ab. So stehen diese auch nach einem Server-Neustart weiterhin zur Verfügung. Bei bind werden die IPs zu den Hostnamen im Speicher gecacht. Nach einem Serverneustart fängt Bind wieder an, alle IPs zu sammeln. Hier ist pdnsd im Vorteil.

Weiterhin ist pdnsd wesentlich schlanker und auch etwas einfacher zu konfigurieren.

pdnsd DNS Cache installieren

Zunächst muss evtl bind deinstalliert werden, sofern nicht schon geschehen

# aptitude purge bind9

Nun kann der pdnsd installiert werden

# aptitude install pdnsd

Die Konfigurationsdatei von pdnsd liegt in /etc/pdnsd.conf. Diese muss zum Betreiben als Cache angepasst werden.

Der Global-Bereich definiert die globalen pdnsd Einstellungen:

global {
  perm_cache=2048;
  cache_dir="/var/cache/pdnsd";
  min_ttl=900;
  max_ttl=604800;
  run_as="pdnsd";
  paranoid=on;
  status_ctl=on;
  server_port=53;
  server_ip=any;
  timeout=10;
}

Hier steht das Cache-Verzeichnis /var/cache/pdnsd, in dem der Dämon eine pdnsd.cache anlegt. Hier werden die Domainnamen mit den dazugehörigen IP Adressen gecacht. Die maximale Vorhaltezeit dieses Caches liegt bei 604800 Sekunden, was 7 Tagen, also einer Woche entspricht.

Der Server-Bereich, der das Verhalten des Servers steuert

server {
  label = "root-servers";
  root_server=on;
  ip = 8.8.8.8, 8.8.4.4;
  timeout = 5;
  uptest = query;
  interval = 30m;      # Test every half hour.
  ping_timeout = 300;  # 30 seconds.
  purge_cache = off;
  exclude = .localdomain;
  policy = included;
  preset = off;
}

Der Interessante Bereich hier, der auch angepasst werden muss, ist die “ip” Zeile. Hier müssen die DNS Server des Providers eingetragen werden. Diese werden angefragt, wenn pdnsd die Domains nicht selbst auflösen können

ip = 8.8.8.8, 8.8.4.4

Bei “exclude” können Domainnamen angegeben werden, die nicht gecacht werden sollen. Hier wird dann jedes mal bei den DNS Servern nach der aktuellen IP gefragt.

Es fehlt noch der Source Bereich

source {
  ttl=86400;
  owner="localhost.";
#  serve_aliases=on;
  file="/etc/hosts";
}

In diesem Bereich stehen die lokalen Server-Informationen, beispielsweise die eigenen Namen oder eigene IP Definitionen aus der /etc/hosts. Diese haben ebenfalls ein Verfallsdatum, werden aber nicht in der Cache-Datei gespeichert.

Diese 3 Bereiche bilden die Datei /etc/pdnsd.conf

Der Server kann nun gestartet werden

# /etc/init.d/pdnsd start

und die recolv.conf Datei angepasst werden

search localdomain.tld
nameserver 12.7.0.0.1
nameserver 8.8.8.8
nameserver 8.8.4.4

Der Eintrag “nameserver 127.0.0.1″ ist der neu hinzu gekommene Eintrag und sollte an erste Stelle der Nameserver stehen, damit dieser auch als erstes benutzt wird.

Test der pdnsd Konfiguration

Bevor die VMs auf den pdnsd DNS Cache zugreifen sollten, muss getestet werden, ob der pdnsd korrekt arbeitet

# nslookup www.google.de
Server:         127.0.0.1
Address:        127.0.0.1#53

Non-authoritative answer:
www.google.de   canonical name = www-cctld.l.google.com.
Name:   www-cctld.l.google.com
Address: 173.194.69.94

Anhand des Eintrags “Server: 127.0.0.1″ ist erkennbar, dass der lokale pdnsd abgefragt wurde. Und er liefert auch eine Antwort: “Address: 173.194.69.94″. Somit funktioniert der pdnsd Server

Virtuelle Maschinen umstellen

Nun können die virtuellen Server so konfiguriert werden, dass die den lokalen PDNSd Server abfragen.

Hierzu muss die /etc/resolv.conf angepasst werden.
Nach “search” und vor dem ersten “nameserver” Eintrag muss eine neue Zeile eingefügt werden:

nameserver xxx.xxx.xxx.xxx

wobei “xxx.xxx.xxx.xxx” die IP des Servers ist, nicht 127.0.0.1 sondern die reale IP Adresse im Internet.
127.0.0.1 bedeutet localhost, hier würden die VMs sich selbst abfragen – was nicht funktionieren kann, da in der VM selbst kein DNS Server läuft.

Ebenfalls in der VM kann man testen, ob die Abfrage funktioniert:

# nslookup www.google.de
 Server:         IPdesHosts
 Address:        IPdesHosts#53

Non-authoritative answer:
 www.google.de   canonical name = www-cctld.l.google.com.
 Name:   www-cctld.l.google.com
 Address: 173.194.69.94

Traffic wird nun eingespart und man hat einen Zeitgewinn bei der Auflösung von DNS Namen.



Werbung


Eine Kommentar zu: pdnsd als lokaler DNS Cache Server installieren

  1. Erik sagt:

    Ich habe pdnsd mal auf meinem Proxmox-Server installiert. Die Installation war wirklich einfach und problemlos. Persönlich finde ich gut, dass pdnsd die DNS Abfragen cacht und nicht nochmal den DNS Server abfragt, auch nach einem Reboot.

    Ich habe die VMs dann den pdnsd Server abfragen lassen und muss sagen, mein Traffic ist wirklich weniger geworden, zwar nur etwas, aber macht sicht bemerkbar.
    Aber besonders die Geschwindigkeit hat zugenommen, die DNS Abfragen sind jetzt wesentlich schneller beantwortet

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *


*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>