Automatische DNS-Updates per DHCP

Automatische DNS-Updates per DHCP

Mühsam ist es, Informationen zu einem Host an mehr als einer Stelle zu pflegen. Einfacher wird die Sache, wenn man den Domain Name Service (DNS) mit DHCP verbindet, um die Hostnamen dynamisch im DNS einzutragen. Dabei gibt es einiges zu konfigurieren, was dieser Artikel näher erklärt.

Als Linux-Distribution kommt Debian 8 "Jessie" zum Einsatz, aber die Konfiguration sollte auf anderen Distributionen ähnlich aussehen. Glücklicherweise liefert Debian den BIND-Server (apt-get install bind9) schon mit einer modularen Konfiguration aus, was es einfacher macht, die eigenen Änderungen strukturiert zu pflegen. Die Hauptkonfiguration ist in der Datei /etc/bind/named.conf zu finden. Sie bindet die beiden Dateien /etc/bind/named.conf.options und /etc/bin/named.conf.local ein. Gedacht ist erstere für globale Konfigurationsoptionen, während Sie in der zweiten Datei die DNS-Zonen eintragen.

Für dynamische DNS-Updates, wie sie der DHCP-Server für die Updates verwendet, brauchen Sie einen kryptografischen Key, der von Debian ebenfalls schon nach der Installation erzeugt wurde. Er ist in der Datei /etc/bind/rndc.key zu finden. Einen eigenen Key erzeugen Sie mit dem Befehl dnssec-keygen:

 

Den Schlüssel finden Sie anschließend in jeder der beiden entstandenen Dateien in der Zeile "Key". In die BIND-Konfiguration integrieren Sie ihn so:

 

Diese Zeilen schreiben Sie entweder direkt in die Konfigurationsdatei /etc/bind/named.conf.local oder in eine eigene Datei wie ddns.key, die Sie per include "/etc/bind/ddns.key"; in die Konfiguration einbinden.

Damit für eine Zone dynamische DNS-Updates erlaubt sind, muss die Zonen-Konfiguration etwa so aussehen:

 

Für Zonen, die dynamische Updates erlauben, ist das Verzeichnis /var/lib/bind vorgesehen, damit der BIND-Server nicht in das Konfigurationsverzeichnis schreiben muss und man die Dateirechte dort restriktiver halten kann.

Auch den Reverse Lookup der zugehörigen IP-Adressen sollten Sie dynamisch gestalten, damit die IP-Adresse und Hostnamen auch in umgekehrter Richtung zusammenpassen. Die Konfiguration dafür ist analog zu der der Zone:

 

Die Konfiguration der DNS-Zonen selbst zu beschreiben, würde hier zu weit führen. Deshalb nur zwei Beispiele von Zonen mit dem obligatorischen SOA-Record (Start of Authority) und einem Nameserver-Eintrag:

 

Wer will, kann nach dem Neuladen der BIND-Konfiguration die dynamischen DNS-Updates testen. Dazu bietet die Software das Tool nsupdate:

 

Alles funktioniert, wenn nach den send-Befehlen keine Fehlermeldungen auftauchen.

Dynamische DNS-Updates vom DHCP-Server

Den DHCP-Server (hier: ISC-DHCP-Server) müssen Sie anweisen, DNS-Updates an BIND zu schicken, wenn ein Rechner per DHCP eine Adresse bezieht. Dazu dient in der Datei /etc/dhcp/dhcpd.conf die Anweisung:

 

Verwenden Sie den ddns-update-style interim, der ab ISC DHCP 4.3 die Standardeinstellung ist. Damit auch statische Einträge in der DHCP-Konfiguration die DNS-Updates auslösen, verwenden Sie die Anweisung update-static-leases on;.

Am einfachsten ist es, den DNS-Update-Key direkt in die DHCP-Konfiguration zu kopieren, statt eine Datei einzubinden. Dann müssen Sie sich nicht darum kümmern, die Rechte und Besitzverhältnisse so festzulegen, dass DHCP-Server und BIND darauf zugreifen dürfen.

 

Zusätzlich müssen Sie noch den beiden Zonen (Forward und Reverse) den Key zuweisen:

 

In der Konfiguration des von DHCP verwalteten IP-Netzwerks fügen Sie den zugehörigen Domainnamen hinzu:

 

Schließlich richten Sie noch für jeden Host einen Eintrag ein, der die MAC-Adresse der IP-Adresse und dem Hostnamen zuordnet:

 

Den Namen für das DNS-Update bezieht der DHCP-Server aus der Zeile mit ddns-hostname. Diese wie alle anderen Einstellungen sind in der Manpage von dhcpd dokumentiert.

Der von einem Rechner selbst gespeicherte Hostname lässt sich so nicht ändern, weil die DHCP-Clients die entsprechende Einstellung meist ignorieren (auch wenn man sie im DHCP-Server mit use-host-decl-names aktiviert). Auf der sicheren Seite sind Sie, wenn der Host schon den Hostnamen trägt, den er bei DHCP-Requests an den DHCP-Server schickt. Installieren Sie beispielsweise automatisiert eine virtuelle Maschine, können Sie ihn bei der Installation festlegen, etwa über Preseed- (Debian/Ubuntu) und Kickstart-Dateien (Red Hat usw.). Ansonsten müssen Sie durch die DHCP-Settings sicherstellen, dass der mitgeschickte Hostname nicht den im DNS eingestellten Namen beeinflusst. Klappt alles, sehen Sie im Syslog ähnliche Meldungen wie in Abbildung 1.

Abbildung 1: Das dynamische DNS-Update durch den DHCP-Server hat geklappt.

Denken Sie daran, dass Sie mit dynamischen Updates nicht mehr einfach die BIND-Zonendateien editieren können. Wenn Sie das tun wollen, müssen Sie sie vorher mit dem Befehl rndc freeze "einfrieren". Sind Sie fertig mit dem Editieren, tauen Sie die Zone-Files wieder mit rndc thaw auf.

Ähnliche Artikel

comments powered by Disqus
Mehr zum Thema

Der moderne DHCP-Server Kea

Wer einen DHCP-Dienst betreibt, setzt meistens den Server des ISC (Internet Systems Consortium) ein. Mit Kea hat das ISC eine moderne Alternative für das alte Programm entwickelt.

Artikel der Woche

Systeme mit Vamigru verwalten

Auch wer nur kleine Flotten von Linux-Servern verwaltet, freut sich über Werkzeuge, die ihm diese Arbeit erleichtern. Vamigru tritt mit diesem Versprechen an. Wir verraten, was es leistet und wie Sie es in der eigenen Umgebung in Betrieb nehmen. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Container

Wie setzen Sie Container ein?

  • Gar nicht
  • Docker standalone
  • Docker mit Kubernetes
  • Docker mit Swarm
  • Docker mit anderem Management
  • LXC/LXD
  • Rocket
  • CRI-O auf Kubernetes
  • Container auf vSphere
  • Andere (siehe Kommentare auf der Ergebnisseite)

Google+

Ausgabe /2018

Microsite