home Sonstiges Linux OpenBSD Links

dynamisches DNS mit DHCP

Jeder Rechner hat einen Hostnamen (naja, sollte er zumindest ;) ), auch wenn er seine IP per DHCP bezieht. Dynamisches DNS dient dazu, diesen Hostnamen mit in die Domain aufzunehmen. Beispiel: Rechner laptop besorgt sich per DHCP eine IP, der dhcpd veranlaßt dann auch gleich, das der Rechner ab sofort unter laptop.meine.domain zu erreichen ist.
Ich gehe davon aus, das der DHCP und DNS Server schon eingerichtet sind. Die Konfiguration muß nur etwas angepaßt werden.

1. Einen Schlüssel erzeugen
Bei bind gibt es da zu das Programm dnssec-keygen:

www:# cd /etc
www:/etc# dnssec-keygen -a HMAC-MD5 -b 128 -n USER DHCP_UPDATER
Man sollte nun zwei Dateien erhalten, die mit Kdhcp_updater anfangen (das Ende das Dateinamens wird per Zufall bestimmt):
www:/etc# ls -l Kdhcp_updater*
-rw-------   1 root     root           54 Jun  4 15:09 Kdhcp_updater.+157+56418.key
-rw-------   1 root     root           81 Jun  4 15:09 Kdhcp_updater.+157+56418.private
Uns interessiert nur die Datei mit der Endung private. Darin ist der Schlüssel enthalten. Dieser sollte aber kein \ enthalten, also dies mit cat, less oder einen Editor seiner Wahl überprüfen. Im Zweifelsfall die beiden Dateien löschen und noch mal einen neuen Schlüssel erstellen:
www:/etc# cat Kdhcp_updater.xxxxxxxxxx.private
Private-key-format: v1.2
Algorithm: 157 (HMAC_MD5)
Key: gh0FSO+nOmpgYjdfz2Ealq=2
Den Schlüssel kopieren (dank gpm oder Daves Telnet ;) ), er wird gleich wieder gebraucht.

2. Konfiguration des dhcpd anpassen
Als erstes ändern wir in der Datei /etc/dhcpd.conf die Zeile:

ddns-update-style ad-hoc;
in
ddns-update-style interim;
Bevor die subnet Auflistung kommt, werden noch folgene Zeilen eingefügt:
ddns-domainname "marty44.net";
update-static-leases true;

key DHCP_UPDATER { algorithm HMAC-MD5.SIG-ALG.REG.INT; # -- secret Schlüssel -- secret gh0FSO+nOmpgYjdfz2Ealq=2; }

# -- hier natürlich an die eigene Zonen anpassen, zur Not mit der bind Konfiguration vergleichen --

zone marty44.net. {
        primary 192.168.44.1;
        key DHCP_UPDATER;
}

zone 44.168.192.in-addr.arpa. {
        primary 192.168.44.1;
        key DHCP_UPDATER;
}
authoritative;
3. Anpassen der bind Konfiguration
Im wesentlichen wird nur der Schlüssel eingefügt und festgelegt, welche Zonen ein Update erfahren dürfen.
In der Datei /etc/named.conf nach dem options Block folgendes einfügen:
key DHCP_UPDATER {
        algorithm HMAC-MD5.SIG-ALG.REG.INT;
        secret gh0FSO+nOmpgYjdfz2Ealq=2;
};
In den Zonenblöcken (hier in diesen Beispiel marty44.net. und 44.168.192.in-addr.arpa.) folgende Zeile eintragen:
        allow-update    { key DHCP_UPDATER; };
Jetzt wird es Zeit zu testen.
Als erstes mal bind und dhcpd stoppen. Danach empfiehlt es sich, ein tail -f /var/log/daemon.log (je nach Distri auch wo anders) mitlaufen zu lassen. Die beiden Server nun wieder starten, sie sollten nicht meckern ;)
Jun  8 17:01:23 www named[322]: starting BIND 9.2.2
Jun  8 17:01:23 www named[322]: using 1 CPU
Jun  8 17:01:23 www named[322]: loading configuration from '/etc/named.conf'
Jun  8 17:01:23 www named[322]: no IPv6 interfaces found
Jun  8 17:01:23 www named[322]: listening on IPv4 interface lo, 127.0.0.1#53
Jun  8 17:01:23 www named[322]: listening on IPv4 interface eth0, 192.168.44.1#53
Jun  8 17:01:23 www named[322]: couldn't add command channel 127.0.0.1#953: not found
Jun  8 17:01:23 www named[322]: zone 0.0.127.in-addr.arpa/IN: loaded serial 2002062901
Jun  8 17:01:23 www named[322]: zone 44.168.192.in-addr.arpa/IN: loaded serial 2003060602
Jun  8 17:01:23 www named[322]: zone localhost/IN: loaded serial 2002062901
Jun  8 17:01:23 www named[322]: zone marty44.net/IN: loaded serial 2003060602
Jun  8 17:01:23 www named[322]: running
Jun  8 17:01:23 www named[322]: zone localhost/IN: sending notifies (serial 2002062901)
Jun  8 17:01:23 www named[322]: zone 0.0.127.in-addr.arpa/IN: sending notifies (serial 2002062901)
Jun  8 17:01:29 www dhcpd: Internet Software Consortium DHCP Server V3.0.1rc11
Jun  8 17:01:29 www dhcpd: Copyright 1995-2003 Internet Software Consortium.
Jun  8 17:01:29 www dhcpd: All rights reserved.
Jun  8 17:01:29 www dhcpd: For info, please visit http://www.isc.org/products/DHCP
Nun wird es Zeit, einen Rechner mit DHCP starten zu lassen:
Jun  8 17:05:12 www named[322]: client 192.168.44.1#1028: updating zone 'marty44.net/IN': deleting an rrset
Jun  8 17:05:12 www named[322]: client 192.168.44.1#1028: updating zone 'marty44.net/IN': adding an RR
Jun  8 17:05:12 www named[322]: client 192.168.44.1#1028: updating zone '44.168.192.in-addr.arpa/IN': deleting an rrset
Jun  8 17:05:12 www named[322]: client 192.168.44.1#1028: updating zone '44.168.192.in-addr.arpa/IN': adding an RR
Diese Anleitung basiert in großen Teilen auf http://www.pl-berichte.de/t_netzwerk/dhcpunddns.html.

zurück zur Linux-Übersicht
Letzte Aktualisierung dieser Seite: 8. Juni 2003