Nameserver mit PowerDNS

Joe Belanger, 123RF

Geballte Power

Der BIND-Server ist die Standardsoftware für den Betrieb eines Nameservers. Der PowerDNS-Server ist eine Alternative, die einen Kompatibilitätsmodus zu BIND besitzt, aber auch mit zahlreichen Datenbank-Backends eigene Wege geht.
Termine planen, Nachrichten austauschen, Kundendaten verwalten, am besten auch vom Smartphone aus. Das alles und noch viel mehr sollen moderne ... (mehr)

Glücklicherweise leben wir nicht mehr in den Zeiten des Arpanets, als Administratoren große Host-Dateien von Rechner zu Rechner kopieren mussten, um andere Knoten im Netz zu erreichen. Heute haben wir das Domain Name System (DNS), das einen hierarchischen Namensraum implementiert, der Host- und Domainnamen auf IP-Adressen abbildet. Der De-facto-Standard für die entsprechende Nameserver-Software ist BIND (Berkeley Internet Name Domain), der schon seit den achtziger Jahren existiert und durch seine zahlreichen Sicherheitslücken bekannt wurde. Mit Version 9 wurde BIND von Grund auf neu geschrieben, um ein sicheres Fundament für den Domain Name Service zu schaffen.

Eine Alternative zu BIND ist PowerDNS [1] , das zuerst als kommerzielles Produkt existierte, bevor die gleichnamige Firma die Software unter der GPL-Lizenz freigab. Sein überschaubarer Code und der Fokus auf Sicherheit, Skalierbarkeit und Zuverlässigkeit machen PowerDNS zu einem guten Kandidaten bei der Auswahl eines Nameservers.

DNS testen

Wenn der PowerDNS-Dienst läuft, können Sie ihn auf der Kommandozeile desselben Rechners testen:

primary:~$dig +norecurs @127.0.0.1 ns1.example.com A
dig +norecurs @127.0.0.1 ns1.example.com A
; <<>> DiG 9.9.2-P1 <<>> +norecurs @127.0.0.1 ns1.example.com A
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62937
;; flags: qr aa; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;ns1.example.com.              IN      A
;; ANSWER SECTION:
ns1.example.com.       86400   IN      A       192.168.1.10

Antwortet der Server nicht, prüfen Sie als erstes mit »ps« , ob der Dienst überhaupt läuft. Weitere Informationen finden sich dann in den Logdateien. Der Detailgrad der Informationen lässt sich in der Konfiguration mit der Anweisung »loglevel« anpassen.

Komponenten

PowerDNS besteht grundsätzlich aus zwei Komponenten: dem autoritativen Nameserver und dem Recursor. Andere Nameserver vereinen die beiden Funktionen, aber bei PowerDNS lassen sich beide auch getrennt voneinander betreiben. Ein autoritativer Nameserver ist in etwa das, wonach es klingt: ein Nameserver, der für eine bestimmte Domain die wichtigen Informationen in einer sogenannten Zone führt, einer Art administrativer Einheit im DNS-System (nicht unbedingt identisch mit einer Domain). Autoritative Domainserver gibt es in zwei Ausführungen:

  • Der »Primary Name Server« , der oft auch Master genannt wird, ist die ursprüngliche und definitive Quelle für die alle Zonen-Einträge einer Domain.
  • Der »Secondary Name Server« , auch Slave genannt, führt die gleichen Informationen, bezieht sie aber vom Master-Server.

Der Recursor von PowerDNS dient im Gegensatz dazu nur als Cache für die rekursiven Anfragen von Clients an DNS-Server im Internet. Der eigene PowerDNS-Server ist also nicht autoritativ für die angefragten DNS-Informationen, sondern nur die erste Anlaufstelle, die gegebenenfalls die Informationen aus dem eigenen Cache holt.

Der Recursor bietet eine ganze Reihe von Features, so implementiert er selbstverständlich alle relevanten Standards, zum Beispiel auch DNS64 [2] . Darüber hinaus implementiert er besondere Maßnahmen, um etwa DNS-Spoofing zu verhindern: Das Fälschen von DNS-Informationen, das Angreifer für Man-in-the-Middle-Angriffe verwenden. Er kann DNS-Abfragen abfangen, umleiten und NXDOMAIN-Antworten verschicken, wenn eine Domain nicht existiert. Zur Steuerung gibt es das Tool »rec_control« , das auch Statistiken für MRTG und RRD ausgeben kann. Seit Version 3.1.7 können Anwender sogar eigene Lua-Skripts schreiben, die Anfragen verarbeiten. Zugriff bietet der Recursor sowohl lokal als auch remote. Neu konfigurieren lässt sich der Recursor auch ohne Neustart. Tabelle 1 fasst noch einmal die wesentlichen Features von PowerDNS zusammen.

Tabelle 1

PowerDNS-Features

Autoritativer DNS-Server

Caching DNS-Server

API zum Anlegen und Ändern von Zonen und Records

Webbasiertes Admin-Frontend

BIND-kompatible Datenspeicherung in Files (optional)

Datenbank-Backends: DB2, Firebird, Interbase, LDAP, MySQL, Microsoft SQL Server, Oracle, PostgreSQL, SQLite, Sybase (optional)

IPv4, IPv6, UDP/TCP, DNSSEC, DNS64

Loadbalancing / Failover

SNMP

Remote abfragbare Statistiken

Eingebauter Webserver (optional)

Debugging-Tools

Lua-Skripting

Plattformen: Linux, BSD, Unix

Backends

PowerDNS bietet eine ganze Reihe von Möglichkeiten, um die Zonendaten zu speichern. Das können wie bei BIND einfache Dateien sein, die dank eines Kompatibilitätsmodus sogar im BIND-Format abgefasst sein dürfen. Alternativ gibt es eine Vielzahl von Datenbank-Backends, etwa für MySQL und PostgreSQL. Dieser Artikel beschränkt sich darauf, die Konfiguration im BIND-Modus sowie die Administration mit dem Poweradmin-Web-Frontend und MySQL vorzuführen. Als Beispielplattform dient im weiteren Verlauf Ubuntu 12.04, das Sie erst einmal mit dem Paketmanager aktualisieren sollten, wenn Sie die Beispiele nachvollziehen wollen.

Einen Recursor, wie er im Folgenden entsteht, sollte man im lokalen Netz hinter einer Firewall platzieren. Ihn öffentlich zugänglich im Internet aufzustellen, ist keine gute Idee. Installiert ist der PowerDNS-Recursor auf Ubuntu schnell:

sudo apt-get install pdns-recursor

Nun müssen Sie die mitgelieferte Konfiguration in »/etc/powerdns/recursor.conf« anpassen. Um der Kürze willen sind in Listing 1 nur die geänderten Variablen abgedruckt. Nach einem Neustart per »sudo service pdns-recursor restart« ist der Recursor einsatzbereit.

Listing 1

recursor.conf

 

Steuern lässt sich der Recursor mit dem kleinen Tool »rec_control« . So testet der Befehl »rec_control ping« , ob der Server läuft. Alle Variablen fragt der Aufruf von »rec_control get-all« ab, während »rec_control get Variable« einen bestimmten Wert ermittelt. Diese Werte können Sie beispielsweise in ein Programm wie RRDTool einspeisen, um Statistiken und Diagramme zu erstellen. Beenden lässt sich der Server mit »rec_control quit« .

comments powered by Disqus
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2023