DNS-Server mit Bind
Definition DNS
Domain Name System: Auflösung von Hostnamen in IP-Adressen und umgekehrt.
Möglichkeiten der Namensauflösung
a) lokal
Eine Möglichkeit der Namensauflösung ist eine Eintragung von Hostnamen und zugehörigen IP-Adressen in die /etc/hosts.
Dies ist aber allenfalls ein temporärer Workaround, z.B. für Hosts in abgeschotteten Umgebungen.
b) zentral
In größeren Netzwerken sollte dies zur Entlastung der Clients und Reduzierung des Konfigurationsaufwandes zentral durch (einen) Nameserver erfolgen. Die Namensauflösung sollte vorwärts (Name -> IP-Adresse) und rückwärts (IP-Adresse -> Name) funktionieren. Als zugehörige Software wird hier BIND in der aktuellen Version (9) besprochen.
Varianten
- Caching-Only-Nameserver: Der Nameserver verwaltet selbst keine Zonen, sondern cached nur Informationen anderer Nameserver zwischen.
- Stand-Alone-Nameserver: Ein DNS-Server hält alle Zonendaten alleine vor.
- Master-Slave: Zur Lastverteilung oder Ausfallsicherheit. Der Master überträgt die Zonendaten an den/die Slave(s).
Einrichten des Servers
In unserem Beispiel wird ein Standalone-Server besprochen.
1.) Installation der Software
# aptitude install bind9
2.) Die Konfigurationsdateien im Ordner /etc/bind editieren
Achtung: Kommentarzeichen in den Bind-config-files können „;“ „//“ oder „#“ sein.
Beispiel-Config vom Bind für die lokale Domain example.de:
In der named.conf müssen sogenannte Zonefiles eingetragen werden:
zone “example.de“ { type master; file “/etc/bind/db.example“; };
Falls der Nameserver außerhalb der eigenen Domain auf andere definierte Nameserver zugreifen muss, muss zusätzlich ein Forwarder in die named.conf.options eingetragen werden (der Eintrag muss innerhalb des options-Abschnitts erfolgen):
forwarders {
10.0.1.4;
};
wobei 10.0.1.4 i.d. Fall die IP des übergeordneten Nameservers ist.
Als nächstes wenden wir uns den Hosteinträgen für das lokale Netz zu:
db.example als Kopie von db.local anlegen:
; Zonenfile fuer example.de ; $TTL 604800
example.de. IN SOA server. root.example.de. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 600 ) ; Negative Cache TTL (default 604800) ; Nameserver IN NS server.example.de.
; Rechnername zu zugehoeriger IP-Adresse server IN A <IP> client1 IN A <IP> client2 IN A <IP>
..... (weitere Rechner)
router IN A 192.168.100.254
Beachte immer den Punkt am Ende des FQDN/ der Domain ! (z.B. server.example.de.)
TTL (Time to live) drückt aus, wie lange sich ein abgefragtes Objekt im Cache befinden darf (Default: 1 Woche, optionaler Parameter).
Weitere Parameter:
- serial /seriell
Seriennummer, die nach jeder Änderung hochgezählt werden sollte (Zonentransfer an eventuelle Slaves)
- refresh = aktualisieren
Intervall, in dem sich die Slaves mit dem Master abstimmen sollen, ob sich an der Seriennummer etwas geändert hat
- retry = wiederholen
Wenn der Master nicht antwortet, versucht es der Slave nach Ablauf dieser Zeit nochmal.
- expire = ablaufen
Antwortet der Master innerhalb dieser Zeit nicht, erkennt der Slave, dass seine Zonendaten nicht mehr aktuell sind und stellt sie nicht mehr zur Verfügung
- Negative cache TTL
Minimum, in dem negative Antworten (z.B. NS nicht erreicht) im Cache gehalten werden. Es empfiehlt sich, den Default von 1 Woche auf einen geringeren Wert (z.B. 10 Minuten) herunterzudrehen, weil es sonst im Fehlerfall sehr lange dauern kann, bis der Cache expired.