Entspannt ans Netz
DHCP-Server fürs lokale Netzwerk
Die Freiheit der Konfiguration
Allgemein gesprochen finden sich in der Konfigurationsdatei zwei Arten von Einträgen: solche, die mit dem Wort option beginnen und die anderen. Die "Optionen" (zusammengefasst in Tabelle 2) gibt der dhcpd unverändert an die anfragenden Rechner (Clients genannt) weiter. Ob ein Client mit dem Wert etwas anfangen kann, hängt jedoch von seinem Betriebssystem ab. Unter Umständen lässt ihn der Administrator mit einem extra geschriebenen Skript weiterverarbeiten.
Die anderen Angaben sind für den Serverprozess dhcpd selbst bestimmt – Tabelle 1 fasst sie zusammen.
Tabelle 1: dhcpd-Settings
| Eintrag | Parameter | Bedeutung |
|---|---|---|
default-lease-time
|
Zeit in Sekunden | Wie lange sind die vergebenen Daten gültig? Vor Ablauf dieser Zeit muss ein Client erneut um eine IP-Adresse bitten. Überschreitet er das Zeitfenster, kann diese spezielle IP-Adresse an andere Rechner vergeben werden. |
max-lease-time
|
Zeit in Sekunden | Wie lange sind vergebene Daten maximal gültig? Falls der Client eine besonders lange default-lease-time anfordert, legt dieser Parameter die Obergrenze fest.
|
subnet
|
Netzwerkadresse | Netzsegment, für das die Konfiguration gilt (siehe Kasten 1). |
netmask
|
Netzwerkmaske | Maske des Netzsegments (siehe Kasten 1). |
range
|
kleinste und größte zu vergebende IP-Adresse | Bereich der vom DHCP-Server zu verwaltenden IP-Adressen. |
fixed-address
|
IP-Adresse oder Hostname | Die einem bestimmten Client zugedachte feste Adresse. |
filename
|
Dateiname | Bootimage eines bestimmten Clients (siehe Abschnitt "DHCP für Anspruchsvolle"). |
hardware ethernet
|
MAC-Adresse | Hardware-Adresse eines Clients. |
Kasten 1: IP-Adresse, Netzwerkmaske und Netzwerk-Adresse
Neben der IP-Adresse gehören zur Konfiguration eines Netzwerkgeräts die Angaben zur Broadcast-Adresse und zur Netzwerkmaske. Die Netzwerkmaske sorgt für eine künstliche Aufteilung eines Netzwerks in kleinere Subnetze. Um den Zusammenhang zwischen IP-Adresse und Netzwerkmaske zu verstehen, muss man sich auf die unterste Bitebene begeben.
Zu diesem Zweck nimmt man sich jeweils die einzelnen, durch Punkt abgetrennten Dezimalzahlen vor und rechnet sie einzeln ins binäre Zahlensystem (zur Basis 2) um:
255=1*2^7+1*2^6+1*2^5+1*2^4+1*2^3+1*2^2+1*2^1+1*2^0
So wird aus der dezimalen Netzwerkmaske 255.255.255.0 die binäre Darstellung
11111111.11111111.11111111.00000000
Viel gerechnet wurde bisher nicht, es handelt sich jeweils nur um die Darstellung derselben Zahl in unterschiedlichen Zahlensystemen. Auffällig sind die 24 Einsen, man spricht von einem /24-Netz.
Aus der dezimalen IP-Adresse 192.168.2.3 wird auf dieselbe Weise die Binärdarstellung
11000000.10101000.00000010.00000011
Nach einer bitweisen Und-Verknüpfung von IP-Adresse und Netzwerkmaske erhält man die Netzwerkadresse. Dabei kommt immer an die Stelle eine 1, wo sowohl bei der IP-Adresse als auch bei der Netzmaske eine 1 steht:
11000000.10101000.00000010.00000000
Diese Netzwerkadresse lautet in Dezimaldarstellung 192.168.2.0.
Da die IP-Adresse mit der 0 am Ende für das Netzwerk selbst und eine weitere Adresse (meist die .255) für Broadcasts reserviert bleibt, bietet das Netzwerk aus dem Beispiel 254 Rechnern Platz.
Tabelle 2: Werte für die Clients
|
Eintrag (ohne vorangestelltes | Parameter | Bedeutung |
|---|---|---|
routers
|
Hostname oder IP-Adresse | Router bzw. Gateway ins Internet. |
domain-name-servers
|
Hostnamen oder IP-Adressen | Domain-Nameserver. |
host-name
|
Hostname | Rechnername des Clients. |
ntp-servers
|
Hostname oder IP-Adressen | Timeserver für Zeitabgleich. |
netbios-node-type
|
1, 2, 4 oder 8 (empfohlen) | Methode der Namensauflösung unter Windows. 1 steht für Broadcast, 2 für Unicast, 4 für Mixed Mode (zuerst Broadcast, dann Unicast versuchen) und 8 für einen Hybridmodus, bei dem zuerst Unicast, alternativ Broadcast zum Einsatz kommt. |
netbios-name-servers
|
Hostname | WINS-Server zur Internet-Naming-Service-Auflösung unter Windows. |
domain-name
|
Domainname | Name der Netzwerkdomain. |
nis-domain
|
Domainname | Name der NIS-Domain. |
nis-servers
|
Hostname oder IP-Adressen | Zuständiger NIS-Server. |
subnet-mask
|
Netzwerkmaske | Netzwerkmaske des Netzsegments. |
Feste Bindung
Entschließt man sich dazu, im gesamten Netzwerk auf DHCP zu setzen, gibt es einige Rechner die ständig dieselbe IP-Adresse haben sollten. Schließlich möchte niemand erst die aktuelle Adresse eines Gateway- oder Multimediaservers ermitteln müssen, bevor er ihn nutzen kann.
Auch um eine solche, clientabhängige Adressvergabe kümmert sich die /etc/dhcpd.conf. Damit der dhcpd die um eine IP-Adresse bittenden Rechner richtig identifizieren kann, zieht er die eindeutige MAC-Adresse der Netzwerkkarte heran.
Auf PCMCIA-Netzwerkkarten oder Wireless-LAN-USB-Sticks ist sie stets aufgedruckt. Kommt man nicht so leicht an den Aufkleber der Netzwerkkarte, hilft Software dabei, die MAC-Adresse zu ermitteln. Unter unixoiden Betriebssystemen dient dazu der Befehl ifconfig, die Betriebssysteme aus dem Hause Microsoft bringen das Kommandozeilenprogramm ipconfig für diesen Zweck mit. Listing 2 zeigt das Beispiel eines Linux-Rechners, dessen MAC- oder "Hardware"-Adresse 00:02:2D:34:90:85 lautet.
Listing 2
MAC-Adresse mit
ifconfigermittelt
renner@lyra:~$ /sbin/ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:02:2D:34:90:85
inet addr:10.32.130.79 Bcast:10.32.135.255 Mask:255.255.248.0
UP BROADCAST NOTRAILERS RUNNING MULTICAST MTU:1500 Metric:1
RX packets:15695 errors:0 dropped:0 overruns:0 frame:0
TX packets:10988 errors:204 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:5201433 (4.9 MiB) TX bytes:1559490 (1.4 MiB)
Interrupt:10 Base address:0x100
Aber auch, wer keinen direkten Zugriff auf den fraglichen Rechner hat, muss nicht verzagen – sofern der DHCP-Server ihm bereits auf Zufallsbasis eine Adresse zuordnet. In der Datei /var/lib/dhcp/dhcpd.leases protokolliert dhcpd nämlich, wer für welchen Zeitraum welche IP-Adresse bekommt.
Alternativ kann man einen ping auf das gesamte Netzwerk absetzen, um so eine Reaktion aller erreichbaren Rechner zu provozieren. Anschließend schaut man mit Befehl arp -a nach, welche Rechner und MAC-Adressen bekannt sind (Listing 3). Der einleitende ping ist notwendig, da die arp-Tabelle, die unter anderem die MAC-Adressen aller bekannten Computer im lokalen Netzwerk enthält, nur Rechner kennt, zu denen bereits ein wie auch immer gearteter Netzwerkkontakt bestand.
Listing 3
MAC-Adresse mit
pingund
arpermittelt
renner@lyra:~$ ping -c3 192.168.2.0 PING 192.168.2.0 (192.168.2.0): 56 data bytes 64 bytes from 192.168.2.1: icmp_seq=0 ttl=64 time=0.2 ms 64 bytes from 192.168.2.52: icmp_seq=0 ttl=64 time=3.5 ms (DUP!) 64 bytes from 192.168.2.53: icmp_seq=0 ttl=64 time=4.2 ms (DUP!) 64 bytes from 192.168.2.62: icmp_seq=0 ttl=64 time=4.7 ms (DUP!) […] renner@lyra:~$ /usr/sbin/arp -a ? (192.168.2.1) at 00:03:E3:00:18:F1 [ether] on eth0 ? (192.168.2.52) at 00:30:05:55:02:ED [ether] on eth0 ? (192.168.2.53) at 00:0C:6E:1F:32:C4 [ether] on eth0 ? (192.168.2.62) at 00:30:05:55:03:7F [ether] on eth0
Welche der vielen MAC-Adressen nun die richtige ist, muss man jedoch raten oder im Ausschlussverfahren ermitteln. In ganz verzwickten Fällen sucht man in einer speziellen Datenbank [3] den zu einer MAC-Adresse gehörenden Netzwerkkartenhersteller (Abbildung 1), um mit diesem Wissen bei der Zuordnung weiterzukommen.
Hat man die Hardware-Adresse herausgefunden, lässt sich dhcpds Konfiguration um eine feste IP-Zuordnung zum jeweiligen Rechner ergänzen:
host lyraA {
hardware ethernet 00:02:2D:34:90:85;
fixed-address lyra.mtr.mynet;
}Verfügt ein Rechner über mehrere Netzwerkkarten (z. B. eine zusätzliche Wireless-LAN-Karte), darf man die MAC-Adressen beider Karten demselben Hostnamen zuordnen, sofern sie nie gleichzeitig zum Einsatz kommen:
host lyraB {
hardware ethernet 00:80:C7:C1:3D:76;
fixed-address lyra.mtr.mynet;
}Unter Umständen lässt sich das Netzwerkmedium im laufenden Betrieb wechseln, ohne dass bestehende Verbindungen abbrechen! Statt eines Hostnamens, der eine funktionierende Adressauflösung voraussetzt, kann man auch die IP-Adresse angeben.



