Dynamic Host Configuration Protocol: Unterschied zwischen den Versionen
Admin (Diskussion | Beiträge) |
Admin (Diskussion | Beiträge) |
||
Zeile 151: | Zeile 151: | ||
Starten des Servers: | Starten des Servers: | ||
− | + | root@linux # /etc/init.d/dhcp3-server start | |
− | |||
− | |||
− | |||
− | |||
Es empfiehlt sich, mit tail -f /var/log/syslog den Startvorgang zu verfolgen, um zu sehen, ob der Server korrekt läuft. "ps ax" bzw. "pidof dhcpd3" | Es empfiehlt sich, mit tail -f /var/log/syslog den Startvorgang zu verfolgen, um zu sehen, ob der Server korrekt läuft. "ps ax" bzw. "pidof dhcpd3" | ||
Zeile 194: | Zeile 190: | ||
Anmerkung: Wer die Pakete mit ganzem Inhalt sehen möchte, kann für die Aufzeichnung auch ngrep verwenden. | Anmerkung: Wer die Pakete mit ganzem Inhalt sehen möchte, kann für die Aufzeichnung auch ngrep verwenden. | ||
− | Nun sollte ein einfacher DHCP-Server laufen. | + | Nun sollte ein einfacher DHCP-Server laufen. |
===Der Server bekommt weitere Fähigkeiten=== | ===Der Server bekommt weitere Fähigkeiten=== |
Version vom 16. Juli 2009, 07:35 Uhr
Die Automatisierung der TCP/IP-Netzwerkadministration lässt sich mit dem DHCP-Protokoll recht erfolgreich durchführen. In diesem Text werden die Grundzüge des Protokolls erklärt. Außerdem werden einige einfache Beispielkonfigurationen besprochen.
DHCP
Über das Dynamic Host Configuration Protocol (DHCP) werden einem Client-Rechner alle nötigen Netzparameter übermittelt.
Siehe DHCP RFC-2131 und andere.
Leistungsmerkmale
DHCP dient der einfachen Zuteilung von Netzwerkinformationen in lokalen TCP/IP-Netzen. Zu diesen Informationen gehören z.B. IP-Nummer, Domainname, Routing und DNS-Server.
Bei Diskless-Workstations bilden DHCP oder BOOTP die Grundlage.
Kurzbeschreibung der Arbeitsweise
Beim Booten kennt der Rechner nur die MAC-Adresse seiner Netzwerkkarte. Diese ist meistens in der Netzwerkhardware (Ethernet, FDDI, Firewire, Wireless LAN) programmiert. Bereiche für MAC-Adressen werden nach einem internationalen Standard von einem Gremium (siehe http://standards.ieee.org/regauth/oui/index.shtml) an die Hersteller der Hardware vergeben. Diese wiederum teilen jedem Netzwerkport eine eindeutige MAC-Adresse zu.
Mit der MAC-Adresse sendet der Rechner eine Rundfrage (Broadcast) ins Netz mit der Bitte, ihm eine Netzwerkkonfiguration mitzuteilen.
Der DHCP-Server wartet auf solche Rundfragen und teilt dem anfragenden Rechner die entsprechenden Daten mit.
Außerdem speichert der Server sowohl die MAC-Adresse des Clients als auch die ihm zugeteilte IP-Adresse in einer Datei. (dhcp.leases)
Diese IP-Adresse wird für eine bestimmte Laufzeit (Lease Time) für diesen Client reserviert. Nach einiger Zeit versucht der Client, seine Adresse beim Server zu erneuern (renewing). Gelingt ihm dies nicht, so fragt er etwas später alle Server nach seiner Adresse (rebinding).
Wird seine Adresse auch nach dieser Anfrage nicht erneuert, muss er alle Netzwerkaktivitäten beenden. Allerdings darf er das DHCP-Protokoll neu beginnen.
Arten der Zuteilung von IP-Adressen
Feste IP-Adresse aufgrund der MAC-Adresse
MAC-Adressen und IP-Adresse werden fest in die dhcpd.conf eingetragen. Ausschnitt dhcpd.conf
host test{ hardware ethernet 00:00:c0:5d:bd:95; fixed-address 192.168.0.121; }
Feste IP-Adresse, automatisch zugeteilt, mit Zeitbegrenzung
Hierbei wird die IP-Adresse für eine unbegrenzte (schlecht) oder eine lange Laufzeit zugeteilt.
Hier sollte man die Laufzeit (lease-time) auf einen höheren Wert setzen: Ausschnitt dhcpd.conf file
max-lease-time 432000; # 24*60*60*5 -> 5 Tage subnet 192.168.0.0 netmask 255.255.255.0 { range dynamic-bootp 192.168.0.32 192.168.0.40; }
Dynamische Zuteilung
Die Vorgehensweise ist hier dieselbe wie oben, allerdings wird die Laufzeit auf einen niedrigeren Wert gesetzt.
Konfiguration der Clients
Heute sind die meisten Rechner mit Client-seitiger DHCP-Unterstützung vorkonfiguriert. Das DHCP-Protokoll vereinfacht die Netzwerkonfiguration erheblich.
Beim Client müssen keinerlei rechnerspezifische Netzwerkeinstellungen mehr vorgenommen werden. Im Prinzip muss man den Rechnern nur mitteilen, dass DHCP verwendet werden soll.
DHCP-Client
Linux
pump, dhcpclient, dhcpcd, dhclient. .......
Auch DHCP-Clients können umfangreich konfiguriert werden, siehe /etc/dhcpc/config im Paket dhcpcd. So kann man zum Beispiel verhindern, dass vom DHCP-Server Daten übernommen werden, die eine spezielle Netzwerkkonfiguration überschreiben würden.
BSD
Ebenso wie Linux unterstützen auch BSD-Varianten DHCP als Client und Server.
Windows
Auch neuere Windows-Systeme bieten direkt nach der Installation DHCP-Unterstützung.
Mac
Sofort nach der Installation ist die Unterstützung vorhanden, ob man will oder nicht.
DHCP-Server (www.isc.org)
Die Installation des Servers sollte in den gängigen Distributionen kein Problem sein. Bei Debian z.B. sieht sie folgendermaßen aus:
root@linux # apt-get install dhcp3-server
Bei Debian befindet sich nach der Installation die Konfigurationsdatei /etc/dhcp3/dhcpd.conf auf dem System.
Die Datei ist gut kommentiert, und man sollte sie den eigenen Bedürfnissen anpassen (Domain-Name, IP-Adressen usw.)
Falls man den Server in der Testphase nur von Hand starten möchte, sollte man die Links in den entsprechenden Runleveln löschen.
Debian:
root@linux # update-rc.d -f dhcp3-server remove
Nach der Testphase kann man diese wieder aktivieren, bei Debian z.B. folgendermaßen:
root@linux # update-rc.d dhcp3-server defaults
DHCP-Server handling
Starten des DHCP-Servers
root@linux #/etc/init.d/dhcp3-server start * Starting DHCP server dhcpd3
Stoppen des DHCP-Servers
root@linux #/etc/init.d/dhcp3-server stop * Stopping DHCP server dhcpd3
Kontrolle des DHCP-Servers
- Aktiv
root@linux # pgrep dhcpd3 2164
- Inaktiv
root@linux # pgrep dhcpd3
- Status
root@linux #/etc/init.d/dhcp3-server status Status of DHCP server: dhcpd3 is running.
- Anhand des Ports
root@linux #/ netstat -lnup | grep ":67" udp 0 0 192.168.11.50:67 0.0.0.0:* 2671/dhcpd3
Restarten des DHCP-Servers
root@linux # /etc/init.d/dhcp3-server restart * Stopping DHCP server dhcpd3 [ OK ] * Starting DHCP server dhcpd3
Eine erste Konfigurationsdatei
Alles, was man nicht versteht, kommentiert man zunächst einmal aus. Ich habe das meiste der Übersichtlichkeit halber gelöscht.
minimal dhcp.conf file # # Beispielkonfigurationsdatei für ISC dhcpd3 # Debian 3.0 Woody # # Optionsdefinitionen für alle unterstützten # Netzwerke... # option domain-name "local.invalid"; subnet 192.168.0.0 netmask 255.255.255.0 { range dynamic-bootp 192.168.0.31 192.168.0.40; }
Nun kann der DHCP-Server den DHCP-Clients zehn Adressen dynamisch zuweisen.
Testen des Servers
Auf einem Debian-System sollte nochmals geprüft werden, ob in /etc/default/dhcp3-server das richtige Interface angegeben ist (z.B. eth0).
Danach kann man zum Testen (Debuggen) übergehen.
Starten des Servers:
root@linux # /etc/init.d/dhcp3-server start
Es empfiehlt sich, mit tail -f /var/log/syslog den Startvorgang zu verfolgen, um zu sehen, ob der Server korrekt läuft. "ps ax" bzw. "pidof dhcpd3"
Der folgende Aufruf ist zum Debuggen besser geeignet:
root@linux # dhcpd3 -d -f
Bitte unbedingt die Fehlermeldungen beachten!
Auch ein Blick in die Dateien unter /var/log lohnt sich!
Wird auf einem zweitem Rechner, z.B. Knoppix (Debian von CD), getestet, so verwendet man pump:
root@linux # pump -s
Auf dem Server kann die Anfrage mit
root@linux # tcpdump -e
verfolgt werden.
Dabei muss der Client eine Anfrage absetzen, die vom Server beantwortet wird.
tcpdump Ausgabe (ist leider eine lange Zeile mit \ getrennt) 09:47:32.690249 0:48:54:12:4c:df Broadcast ip 342: \ 0.0.0.0.bootpc > 255.255.255.255.bootps: \ xid:0x1c97abed [|bootp] [tos 0x10] 09:47:32.700021 8:0:46:49:60:8d 0:48:54:12:4c:df \ ip 62: lapwoody.local.invalid > 192.168.0.40: \ icmp: echo request (DF)
Der erste Abschnitt ist die Broadcast-Anfrage des Clients. Danach folgt die Antwort des Servers, in der dieser dem Client eine IP-Adresse mitteilt.
Anmerkung: Wer die Pakete mit ganzem Inhalt sehen möchte, kann für die Aufzeichnung auch ngrep verwenden.
Nun sollte ein einfacher DHCP-Server laufen.
Der Server bekommt weitere Fähigkeiten
Als Nächstes sollten die sinnvollen Standard-Angaben wieder aktiviert werden. Die Optionen, die nicht "ausgeklammert" sind, gelten als Vorgaben für alle späteren Angaben.
config-datei ddns-update-style none; # Wir haben unseren DHCP- nicht mit einem # DNS-Server kombiniert. option domain-name "local.invalid"; option domain-name-servers 192.168.0.1; # Unsere Domain und die Nameserver default-lease-time 600; max-lease-time 7200; # Wann müssen die Adressen, die wir verteilt haben, # erneuert werden? Die Laufzeit ist in Sekunden angegeben, # d.h. alle DHCP-Rechner sollten nach 10 min anfangen, # sich neue Adressen zu holen. Falls die Adresse innerhalb # von 2 Stunden nicht erneuert werden konnte, liegt # irgendein Fehler vor und der Client-Rechner sollte # seine IP-Adressen nicht mehr benutzen. authoritative; # Regelt, welcher DHCP-Server Priorität hat. :-) # Aktivieren, sobald wir fertig sind.
Weiteres
Angabe ob ein DNS Update ausgeführt werden soll, wenn eine IP vergeben wurde
ddns-updates [on | off]
Angabe des Netbios-Nameservers
option netbios-name-servers 192.168.240.21;
Zuteilen einer IP aufgrund von MAC Adresse
host wutz { hardware ethernet 00:50:9c:1a:52:9f; fixed-address 192.168.254.252; }
Schlüssel zum Update von dem DHCP Server an den DNS Server
key DHCP_UPDATER { algorithm HMAC-MD5.SIG-ALG.REG.INT; secret pRP5FapFoJ95JEL06sv4PQ==; };
zone EXAMPLE.ORG. { primary 127.0.0.1; key DHCP_UPDATER; }
zone 17.127.10.in-addr.arpa. { primary 127.0.0.1; key DHCP_UPDATER; }
primary gibt den Server an, dessen Zoneninformation aktualisiert werden soll. Auf dem DNS Server sollte der Update vom DHCP Server erlaubt sein.
Übergabe eines Bootloaders und Rootpfad mittels TFTP bei Netzwerkboot
host xyz { ... filename "/lts/2.6.9-ltsp-3/pxelinux.0"; option root-path "192.168.254.25:/opt/ltsp/i386"; }
Weitere Möglichkeiten mit DHCP
Es gibt globale Angaben, die von lokalen Angaben überschrieben werden können.
Einige Optionen aus: "man dhcpd.conf" und "man dhcp-conf" (offizielle Optionen sind in RFC 2132 beschrieben):
config-datei option domain-name "local.invalid"; option domain-name-servers 192.168.0.1, 192.168.0.2;
Übertragung des Domain-Namens und der DNS-Server.
config-datei option routers 192.168.0.1;
Angabe des Default-Gateway.
Links
- http://www.isc.org/products/DHCP/
- http://standards.ieee.org/regauth/oui/index.shtml
- http://www.phystech.com/download/dhcpcd.html
- http://www.rfc-editor.org/ - Bitte dort die Suchmaschine benutzen.
- http://www.linux-praxis.de/linux3/dhcp.html
- http://www.linux-fuer-alle.de/doc_show.php?docid=8
- http://www.linuxwiki.de/DHCP