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
Kommentar veröffentlichen