207.1 Grundlagen der DNS Serverkonfiguration

DNS - Domain Name Server


Allgemeine Erläuterung zu DNS verständlich erklärt

  • Auflösung von Computernamen in IP Adressen (und anders herum)
  • /etc/hosts war die ursprüngliche Lösung, die heute noch verwendet werden kann, jedoch mit der wachsenden Zahl an Rechnern nicht mehr mithalten konnte
  • Implementierung unter Linux => BIND
  • BIND ist ebenfalls die Grundlage für die Namensauflösung im gesamten Internet

BIND - Berkley Internet Name Daemon (oder Domain neuerdings)

  • DNS-System ist hierarchisch aufgebaut
    • oberste Stelle = root Server -> hostet die Stammzonen
    • Top-Level Domain (z.B. de; verwaltet von der Organisation denic)
    • Adressname unterste Hierachie
    • daraus ergibt sich eine FQDN (Fully Qualified Domain Name)
      z.B. galileocomputing.de
    • Standard-Port ist 53 (sollte nicht geändert werden)

Cache-only-DNS-Server

  • Ein Cache-only-DNS-Server verfügt über keinerlei Zonendaten
  • Abfragen von Clients werden an andere DNS Server weitergereicht
  • Die Antworten werden im Cache gespeichert, damit die Antwort bei einer erneuten Frage schneller verfügbar ist
  • 2 Möglichkeiten wie der Cache-only-DNS-Server seine Antworten erhält
    • Konfiguration, damit die Anfragen an einen anderen DNS-Server weitergegeben werden
    • Nichts tun, was die direkte Abfrage bei den root-Servern zur Folge hat. Dies wiederum kann einen massiven Performanceverlust bedeuten, wenn eine Abfrage einer Webseite stattfindet, die wiederum 20 Werbebanner von verschiedenen Firmen enthält

Hauptkonfigurationsdatei von BIND /etc/named.conf (Debian /etc/bind/named.conf)

  • kann eine oder mehrere include-Dateien enthalten, die auf weitere Konfigurationsdateien verweisen
    • Diese include-Dateien befinden sich normalerweise in dem gleichen Hauptverzeichnis wie die named.conf
  • Daemon von BIND ist named
  • die verwendeten Root-Server und deren IP-Adressen sind in der Datei /var/named/named.ca enthalten
    • Debian /etc/bind/db.root
  • Unter RHEL/Fedora ist die named.conf wesentlich umfangreicher als unter Debian
    • unter Debian enthält die Datei ausschließlich include-Dateien, die individuelle Konfiguration soll über die Datei /etc/bind/named.conf.local erfolgen
  • RHEL Erweiterung der Konfiguration in der named.conf:
    • Um den DNS Server auch von anderen Computer erreichbar zu machen
      listen-on port 53 { 127.0.0.1; <eigene IP>; };
    • unbedingt auf die Leerzeichen und die Semikolons achten
    • ist eine Firewall aktiv, muss hier der Port 53 für UDP und sicherheitshalber auch für TCP freigegeben werden
    • Um jedem den Zugriff auf den DNS-Server zu erlauben:
      allow-query      { all; }; 
        
      • ursprünglicher Eintrag lautet auf localhost, was bedeutet, dass nur das eigenen System auf den Server zugreifen darf
    • Eintrag forwarder { IP1; IP2; IP3; ... }; komplettiert die Konfiguration und macht den DNS-Server schneller (nur interessant für Webseiten mit komplexen Content)
  • die neue Konfiguration wird mit dem Befehl $ rndc reload neu eingelesen
  • Ruft man nun z.B. mit nslookup eine Webseite auf, wird die neue IP unter listen-on ausgegeben
  • Ich habe diese Konfiguration auch unter Ubuntu ausprobiert, allerdings hat es nicht funktioniert. Es gab eine Fehlermeldung, als ich versuchte die Konfigurationsdatei neu einzulesen

Dateien, Verzeichnisse und Kommandos

  • /usr/sbin/named                                    ausführbares Programm von BIND
  • $ /etc/init.d/named start
    $ /etc/init.d/bind9 start
    $ systemctl start named
    $ systemctl start bind9
     
               starten von BIND bzw. named
  • $ rdnc reload
    $ /etc/init.d/named restart
    $ kill -HUP `pidof named`
    $ systemctl reload named
           Konfigurationsdatei neu einlesen
  • $ rdnc                                              Steuerung von BIND
    • reload      Konfigurationsdatei und Zonendateien neu einlesen
    • halt            beendet named sofort; Schreibvorgänge, etc. werden abgebrochen
    • stop           beendet named normal; Schreibvorgänge, etc. werden abgeschlossen
    • freeze      friert Schreibvorgänge auf die Zonendateien ein
      • sinnvoll zur Bearbeitung von Zonendateien, da normalerweise dynamische Aktualisierungen des Clients in die Zonendateien durch named geschrieben werden
    • thaw        taut Schreibvorgänge wieder auf
      • nach der Bearbeitung von Zonendateien; reload ist danach zu empfehlen
  • /var/named/       enthält die Zonendateien eines BIND-Servers
    • ggf. auch weitere Verzeichnisse und Dateien, die zu named gehören
    • tatsächliche Position dieses Verzeichnisses ist flexibel
    • Position des Verzeichnisses wird in der named.conf unter Optionen vermerkt
      directory      "/var/named";
      Debian: Eintrag in der ausgelagerten Konfigurationsdatei /etc/bind/named.conf.options
      directory      "/var/cache/bind";
  • /etc/named.conf (/etc/bind/named.conf)
    • Hauptkonfigurationsdatei
    • BIND verwendet syslogd zur Protokollierung. In der /etc/named.conf können jedoch auch alternative Anweisungen zur Protokollierung eingetragen werden
    • Eintrag erfolgt unter logging { ... };
      • channel_default_debug      Definition für den Eintragstyp logging. Kann es mehrfach geben
      • file                           repräsentiert den Eintrag der unter directory gemacht wurde. Dahinter wird das eigentlich zu verwendente log-file definiert
      • severity                  definiert den Logging-Level
      • category lame-servers { null; }; unterdrückt die Protokollierung fehlerhafter Delegierungen
  • Forward-Lookup-Zonen
    • in der /etc/named.conf werden auch Zonendateien für den Server definiert
    • Forward-Lookup-Zonen, sind Zonen, die für die Auflösung von Hostnamen in IP-Adressen verwendet werden
    • Definition einer solchen Zone sieht folgendermaßen aus:
      zone "homelinux.net" IN {
              type master;
              file "homelinux.net.zone";
      };
      • 1.Zeile     Name der Zone. IN ist optional und kann auch weggelassen werden
      • 2.Zeile     Typ der Zone
      • 3.Zeile     verwendeter Dateiname der Zone (keine Namenskonvention)
        • in Verbindung mit file ergibt sich dann der vollständige Pfad, wo die Datei gefunden werden kann
      • Beispiele für die Deklaration können in der /etc/named.rfc1912.zones (/etc/bind/zones.rfc1918) betrachtet werden
  • Reverse-Lookup-Zonen
    • Auflösung von IP-Adressen in Hostnamen
    • identische Deklaration wie Forward-Lookup-Zonen
    • Konvention für die Bezeichnung der Zone ist einzuhalten, damit named die Zone laden kann
    • Zone für das Netzwerk 192.168.50.0/24
      zone "50.168.192.in-addr.arpa" IN {
              type master;
              file "192.168.50.zone";
      };
  • Root-Server
    • Hinweise auf die Root-Server erhält BIND ebenfalls über Zonendefinitionen
    • als type wird "hint" verwendet
    • der Server hostet die Zone nicht selbst. Die Zone wird von den Servern gehostet, die in der Datei aufgelistet sind
    • soll ein BIND-Server als Root-Server agieren, muss der Typ auf "master" geändert werden und eine neue Zonendatei erstellt werden
  • dig, host, nslookup
    • Programme, die zur Diagnose bei Verbindungsproblemen verwendet werden können
    • nslookup ist schon älter und soll abgelöst werden
    • alle 3 Programme können in beide Richtungen auflösen
    • alle 3 Programme fragen direkt selbst bei den Nameservern an (nicht über das Betriebssystem)
      • lokaler Client-Fehler kann damit ausgeschlossen werden
    • host liefert kurze und klare Antworten, ohne jede Zusatzinformation
      • verwendet den DNS-Server, der in /etc/resolv.conf eingetragen ist
      • es kann auch der Typ der Abfrage mit übergeben werden
        -t MX       Abfrage auf einen MX-Eintrags (Mail Exchange/ Mailserver)
      • -v            liefert mehr Informationen 
    • dig liefert per Voreinstellung mehr Informationen, als nur die IP-Adresse
      • in der Kommandozeile kann direkt ein DNS-Server mit angegeben werden
      • Antwort enthält auch die für die Einträge zuständigen DNS-Server
    • nslookup kann auch interaktiv verwendet werden, wenn z.B. mehrere Abfragen hintereinander gestartet werden sollen
      • nslookup ist auch für Windoof verfügbar
      • Ausgabe ist recht übersichtlich
      • es kann ebenfalls ein alternativer DNS-Server mit übergeben werden

Alternative DNS-Server

  • dnsmasq
    • leicht konfigurierbarer DNS-Server und DHCP-Server
    • nimmt nach der Installation bezüglich des DNS-caching sofort seine Arbeit auf
      • Forwarder entnimmt er aus der /etc/resolv.conf
    • benötigt keine Zonendateien
      • Einträge können in der /etc/hosts vorgenommen werden
      • pro zu verwendetem Server ist eine Zeile einzutragen
    • DHCP Funktionalität ist in der /etc/dnsmasq.conf schon eingetragen, jedoch auskommentiert
      • Um die Funktionalität zu aktivieren, ist lediglich das Kommentarzeichen zu entfernen und der Bereich der Verteilung einzutragen
      • Der Eintrag 12h repräsentiert die Lease-Dauer
      • Werden mehr als ein DHCP-Bereich benötigt, trägt man einfach mehrere Zeilen ein
  • djbdns
    • für jede Aufgabe, die der DNS-Server ausführen soll, wird ein eigener Daemon gestartet. Z.B.
      • einen für die Beantwortung von Anfragen
      • einen für das Caching
      • einen für den Zonentransfer
      • usw.
  • PowerDNS
    • DNS-Server, der auf verschiedenste Backends zugreifen kann
      • normale BIND-Zonendateien
      • LDAP
      • mySQL
      • Oracle
      • PostgreSQL
      • SQLite
      • OpenDBX
      • IBM DB2
    • kann unter verschiedensten Betriebssystemen laufen
    • Pakete beginnen mit der Bezeichnung pdns
      • pdns-server           DNS-Server
      • pdns-recursor       DNS-Cache-Server, mit einem separaten Daemon
    • Zur Verwaltung des Servers existiert ein Webfrontend, welches auf einem PHP5 Webserver laufen kann
    • nimmt keine dynamischen Aktualisierungen entgegen

Kommentare