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:

dnssec-keygen -a hmac-md5 -b 128 -r /dev/urandom -n USER meinkey

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:

key "ddns-key" {
       algorithm hmac-md5;
       secret "pAY61K6RuV0TPfd0fTBMhA==";
};

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:

zone "cloud.net" IN {
   type master;
   file "/var/lib/bind/db.cloud.net";
   allow-update { key "ddns-key" ; } ;
};

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:

zone "0.0.10.in-addr.arpa." {
    type master;
    file "/var/lib/bind/db.10.0.0";
    allow-update { key "ddns-key" ; } ;
};

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:

$ORIGIN .
$TTL 604800    ; 1 week
cloud.net              IN SOA  ns.cloud.net. hostmaster.cloud.net. (
                               20151213   ; serial
                               604800     ; refresh (1 week)
                               86400      ; retry (1 day)
                               2419200    ; expire (4 weeks)
                               604800     ; minimum (1 week)
                               )
                       NS      ns.cloud.net.
$ORIGIN .
$TTL 604800    ; 1 week
0.0.10.in-addr.arpa    IN SOA  ns.cloud.net. hostmaster.cloud.net. (
                               15         ; serial
                               604800     ; refresh (1 week)
                               86400      ; retry (1 day)
                               2419200    ; expire (4 weeks)
                               604800     ; minimum (1 week)
                               )
                       NS      ns.cloud.net.

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

# nsupdate
> server localhost
> key ddns-key pAY61K6RuV0TPfd0fTBMhA==
> zone cloud.net
> update add test.cloud.net. 600 IN A 10.0.0.123
> send

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:

ddns-updates on;

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.

key "ddns-key" {
 algorithm HMAC-MD5;
 secret "pAY61K6RuV0TPfd0fTBMhA==";
};

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

zone cloud.net {
  primary 127.0.0.1;
  key "ddns-key";
}
zone 0.0.10.in-addr.arpa {
   primary 127.0.0.1;
   key "ddns-key";
}

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

subnet 10.0.0.0 netmask 255.255.255.0 {
    option routers             10.0.0.254;
    option domain-name-servers 10.0.0.254;
    option subnet-mask         255.255.255.0;
    option domain-search       "cloud.net";
    ddns-domainname            "cloud.net";
    default-lease-time         21600;
    max-lease-time             43200;
    next-server                10.0.0.254;
}

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

host nfs {
   hardware ethernet 52:54:00:66:f8:32;
   fixed-address 10.0.0.21;
   ddns-hostname "nfs";
}

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

Support-Ende von SMBv1

Mit dem aktuellen Update für Windows 10 und Windows Server 2016 steht eine Änderung ins Haus, die gerade für Benutzer älterer Linux-Distributionen große Auswirkungen hat. Nachdem Microsoft es über viele Jahre schon angekündigt hat, entfernt der Konzern mit dem aktuellen Update-Release den Support für das SMB-Protokoll 1. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Linux-Backup

Welche Backup-Lösung setzen Sie für Linux im professionellen Umfeld ein?

  • keine
  • eigene Scripts
  • rsnapshot
  • rdiff-backup
  • Bacula
  • Bareos
  • Borg
  • Duplicity
  • Amanda
  • Burp
  • Clonezilla
  • Acronis
  • Arkeia
  • SEP sesam
  • Veeam
  • Redo Backup
  • Relax-and-Recover
  • andere kommerzielle Software
  • andere Open-Source-Software

Google+

Ausgabe /2017

Microsite