30.5. Automatische Netzwerkkonfiguration mit DHCP

Geschrieben von Greg Sutter.

30.5.1. Was ist DHCP?

Über DHCP, das Dynamic Host Configuration Protocol, kann sich ein System mit einem Netzwerk verbinden und die für die Kommunikation mit diesem Netzwerk nötigen Informationen beziehen. FreeBSD verwendet den von OpenBSD 3.7 stammenden dhclient. Die Informationen in diesem Abschnitt beziehen sich daher sowohl auf den dhclient von ISC als auch auf den von OpenBSD. Als DHCP-Server wird in beiden Fällen der DHCP-Server der ISC-Distribution verwendet.

30.5.2. Übersicht

Dieser Abschnitt beschreibt sowohl die Clientseite des ISC- als auch des OpenBSD-Clients sowie die Serverseite des DHCP-Systems von ISC. Das Clientprogramm dhclient ist in FreeBSD integriert, das Serverprogramm kann über den Port net/isc-dhcp42-server installiert werden. Weiter Informationen finden Sie in dhclient(8), dhcp-options(5) sowie dhclient.conf(5).

30.5.3. Wie funktioniert DHCP?

Der DHCP-Client dhclient beginnt von einem Clientrechner aus über den UDP-Port 68 Konfigurationsinformationen anzufordern. Der Server antwortet auf dem UDP-Port 67, indem er dem Client eine IP-Adresse zuweist und ihm weitere wichtige Informationen über das Netzwerk, wie Netzmasken, Router und DNS-Server mitteilt. Diese Informationen werden als DHCP-Lease bezeichnet und sind nur für eine bestimmte Zeit, die vom Administrator des DHCP-Servers vorgegeben wird, gültig. Dadurch fallen verwaiste IP-Adressen, deren Clients nicht mehr mit dem Netzwerk verbunden sind, automatisch an den Server zurück.

DHCP-Clients können sehr viele Informationen von einem DHCP-Server erhalten. Eine ausführliche Liste finden Sie in dhcp-options(5).

30.5.4. Integration in FreeBSD

FreeBSD verwendet den DHCP-Client von OpenBSD. Sowohl während der Installation als auch im Basissystem steht der DHCP-Client zur Verfügung. In Netzen mit DHCP-Servern wird dadurch die Konfiguration von Systemen erheblich vereinfacht.

DHCP wird von sysinstall unterstützt. Wenn Sie eine Netzwerkkarte mit sysinstall konfigurieren, lautet die zweite Frage Do you want to try DHCP configuration of the interface?. Wenn Sie diese Frage bejahen, wird dhclient aufgerufen, und die Netzkarte wird automatisch eingerichtet.

Um DHCP beim Systemstart zu aktivieren, müssen Sie zwei Dinge erledigen:

  • Stellen Sie sicher, dass bpf in Ihren Kernel kompiliert ist. Dazu fügen Sie die Zeile device bpf in Ihre Kernelkonfigurationsdatei ein und erzeugen einen neuen Kernel. Weitere Informationen zur Kernelkonfiguration finden Sie in Kapitel 9, Konfiguration des FreeBSD-Kernels des Handbuchs.

    Das Gerät bpf ist im GENERIC-Kernel bereits enthalten. Für die Nutzung von DHCP muss also kein angepasster Kernel erzeugt werden.

    Anmerkung:

    Wenn Sie um die Sicherheit Ihres Systems besorgt sind, sollten Sie wissen, dass bpf auch zur Ausführung von Paketsniffern erforderlich ist (obwohl diese dennoch als root ausgeführt werden müssen). bpf muss vorhanden sein, damit DHCP funktioniert. Sind Sie sehr sicherheitsbewusst, sollten Sie bpf aus Ihrem Kernel entfernen, wenn Sie DHCP nicht verwenden.

  • Standardmässig läuft die DHCP-Konfiguration bei FreeBSD im Hintergrund oder auch asynchron. Andere Startskripte laufen weiter, während DHCP fertig abgearbeitet wird, was den Systemstart beschleunigt.

    DHCP im Hintergrund funktioniert gut, wenn der DHCP-Server schnell auf Anfragen antwortet und der DHCP-Konfigurationsprozess ebenso schnell abläuft. Jedoch kann DHCP eine lange Zeit benötigen, um auf manchen Systemen fertig zu werden. Falls Netzwerkdienste versuchen, vor DHCP zum Ende zu kommen, werden diese fehlschlagen. Durch die Verwendung von DHCP im asynchronen-Modus wird das Problem verhindert, so dass die Startskripte pausiert werden, bis die DHCP-Konfiguration abgeschlossen ist.

    Um sich zu einem DHCP-Server im Hintergrund zu verbinden, während andere Startskripte fortfahren (asynchroner Modus), benutzen Sie den DHCP-Wert in /etc/rc.conf:

    ifconfig_fxp0="DHCP"

    Um den Start zu pausieren, damit DHCP vorher abgeschlossen werden kann, benutzen Sie den synchronen Modus mit dem Eintrag SYNCDHCP:

    ifconfig_fxp0="SYNCDHCP"

    Anmerkung:

    Ersetzen Sie fxp0, das in diesen Beispielen verwendet wurde, durch den Namen Ihrer Netzwerkschnittstelle, so wie es in Abschnitt 12.8, „Einrichten von Netzwerkkarten“ beschrieben ist.

    Wenn Sie dhclient an einem anderen Ort installiert haben, oder zusätzliche Flags an dhclient übergeben wollen, fügen Sie auch folgende (entsprechend angepasste) Zeilen ein:

    dhclient_program="/sbin/dhclient"
    dhclient_flags=""

Der DHCP-Server dhcpd ist als Teil des Ports net/isc-dhcp42-server verfügbar. Dieser Port enthält die komplette ISC-DHCP-Distribution, inklusive der Dokumentation.

30.5.5. Dateien

  • /etc/dhclient.conf

    dhclient benötigt die Konfigurationsdatei /etc/dhclient.conf. Diese Datei enthält normalerweise nur Kommentare, da die Vorgabewerte zumeist ausreichend sind. Lesen Sie dazu auch dhclient.conf(5).

  • /sbin/dhclient

    dhclient ist statisch gelinkt und befindet sich in /sbin. Weitere Informationen finden Sie in dhclient(8).

  • /sbin/dhclient-script

    Bei dhclient-script handelt es sich um das FreeBSD-spezifische Konfigurationsskript des DHCP-Clients. Es wird in dhclient-script(8) beschrieben und kann meist unverändert übernommen werden.

  • /var/db/dhclient.leases. interface

    Der DHCP-Client verfügt über eine Datenbank, die alle derzeit gültigen Leases enthält und als Logdatei erzeugt wird. Weitere Informationen finden Sie in dhclient(8).

30.5.6. Weitere Informationen

Das DHCP-Protokoll wird vollständig im RFC 2131 beschrieben. Eine weitere, lehrreiche Informationsquelle existiert unter http://www.dhcp.org/.

30.5.7. Einen DHCP-Server installieren und einrichten

30.5.7.1. Übersicht

Dieser Abschnitt beschreibt die Einrichtung eines FreeBSD-Systems als DHCP-Server. Dazu wird die DHCP-Implementation von ISC (Internet Systems Consortium) verwendet.

Der DHCP-Server ist nicht im Basissystem von FreeBSD enthalten, daher müssen Sie als Erstes den Port net/isc-dhcp42-server installieren. Lesen Sie Kapitel 5, Installieren von Anwendungen: Pakete und Ports, wenn Sie weitere Informationen zur Ports-Sammlung benötigen.

30.5.7.2. Den DHCP-Server installieren

Stellen Sie sicher, dass bpf(4) in Ihren Kernel kompiliert ist. Dazu fügen Sie die Zeile device bpf Ihre Kernelkonfigurationsdatei ein und erzeugen einen neuen Kernel. Die Kernelkonfiguration wird in Kapitel 9, Konfiguration des FreeBSD-Kernels beschrieben.

Das Gerät bpf ist im GENERIC-Kernel bereits enthalten. Für die Nutzung von DHCP muss also kein angepasster Kernel erzeugt werden.

Anmerkung:

Wenn Sie um die Sicherheit Ihres Systems besorgt sind, sollten Sie wissen, dass bpf auch zur Ausführung von Paketsniffern erforderlich ist (obwohl diese dennoch als root ausgeführt werden müssen). bpf muss vorhanden sein, damit DHCP funktioniert. Sind Sie sehr sicherheitsbewusst, sollten Sie bpf aus Ihrem Kernel entfernen, wenn Sie DHCP nicht verwenden.

Danach müssen Sie die vom Port net/isc-dhcp42-server erzeugte Vorlage für dhcpd.conf anpassen. Die bei der Installation erzeugte Datei /usr/local/etc/dhcpd.conf.sample sollten Sie nach /usr/local/etc/dhcpd.conf kopieren, bevor Sie Veränderungen vornehmen.

30.5.7.3. Den DHCP-Server einrichten

dhcpd.conf besteht aus Festlegungen zu Subnetzen und Rechnern und lässt sich am besten an einem Beispiel erklären:

option domain-name "example.com";1
option domain-name-servers 192.168.4.100;2
option subnet-mask 255.255.255.0;3

default-lease-time 3600;4
max-lease-time 86400;5
ddns-update-style none;6

subnet 192.168.4.0 netmask 255.255.255.0 {
  range 192.168.4.129 192.168.4.254;7
  option routers 192.168.4.1;8
}

host mailhost {
  hardware ethernet 02:03:04:05:06:07;9
  fixed-address mailhost.example.com;10
}

1

Diese Option beschreibt die Domäne, die den Clients als Standardsuchdomäne zugewiesen wird. Weitere Informationen finden Sie in man.resolv.conf.5;.

2

Diese Option legt eine, durch Kommata getrennte Liste von DNS-Servern fest, die von den Clients verwendet werden sollen.

3

Die den Clients zugewiesene Netzmaske.

4

Ein Client kann eine Lease einer bestimmten Dauer anfordern. Geschieht dies nicht, weist der Server eine Lease mit einer vorgegebenen Ablaufdauer (in Sekunden) zu.

5

Die maximale Zeitdauer, für die der Server Konfigurationsinformationen vergibt. Sollte ein Client eine längere Zeitspanne anfordern, wird dennoch nur der Wert max-lease-time in Sekunden zugewiesen.

6

Diese Option legt fest, ob der DHCP-Server eine DNS-Aktualisierung versuchen soll, wenn Konfigurationsdateien vergeben oder zurückgezogen werden. In der ISC-Implementation muss diese Option gesetzt sein.

7

Dadurch werden die IP-Adressen festgelegt, die den Clients zugewiesen werden können. IP-Adressen zwischen diesen Grenzen sowie die einschließenden Adressen werden den Clients zugewiesen.

8

Legt das Standard-Gateway fest, das den Clients zugewiesen wird.

9

Die (Hardware-)MAC-Adresse eines Rechners (durch die der DHCP-Server den Client erkennt, der eine Anforderung an ihn stellt).

10

Einem Rechner soll immer die gleiche IP-Adresse zugewiesen werden. Beachten Sie, dass hier auch ein Rechnername gültig ist, da der DHCP-Server den Rechnernamen auflöst, bevor er die Konfigurationsinformationen zuweist.

Nachdem Sie dhcpd.conf fertig konfiguriert haben, sollten Sie den DHCP-Server aktivieren, indem Sie folgende Zeilen in /etc/rc.conf aufnehmen:

dhcpd_enable="YES"
dhcpd_ifaces="dc0"

Dabei müssen Sie den Geräteeintrag dc0 durch die Gerätedatei (mehrere Gerätedateien müssen durch Leerzeichen getrennt werden) ersetzen, die Ihr DHCP-Server auf Anfragen von DHCP-Clients hin überwachen soll.

Danach können Sie den Server durch Eingabe des folgenden Befehls starten:

# /usr/local/etc/rc.d/isc-dhcpd start

Sollten Sie die Konfiguration Ihres Servers einmal verändern müssen, reicht es nicht aus, ein SIGHUP-Signal an dhcpd zu senden, weil damit die Konfiguration nicht erneut geladen wird (im Gegensatz zu den meisten Daemonen). Sie müssen den Prozess vielmehr mit dem Signal SIGTERM stoppen, um ihn anschließend neu zu starten.

30.5.7.4. Dateien

  • /usr/local/sbin/dhcpd

    dhcpd ist statisch gelinkt und befindet sich in /usr/local/sbin. Lesen Sie auch die mit dem Port installierte Hilfeseite dhcpd(8), wenn Sie weitere Informationen zu dhcpd benötigen.

  • /usr/local/etc/dhcpd.conf

    dhcpd benötigt die Konfigurationsdatei /usr/local/etc/dhcpd.conf, damit der Server den Clients seine Dienste anbieten kann. Diese Datei muss alle Informationen enthalten, die an die Clients weitergegeben werden soll. Außerdem sind hier Informationen zur Konfiguration des Servers enthalten. Die mit dem Port installierte Hilfeseite dhcpd.conf(5) enthält weitere Informationen.

  • /var/db/dhcpd.leases

    Der DHCP-Server hat eine Datenbank, die alle vergebenen Leases enthält. Diese wird als Logdatei erzeugt. Weitere Informationen finden Sie in der vom Port installierten Hilfeseite dhcpd.leases(5).

  • /usr/local/sbin/dhcrelay

    dhcrelay wird in komplexen Umgebungen verwendet, in denen ein DHCP-Server eine Anfrage eines Clients an einen DHCP-Server in einem separaten Netzwerk weiterleitet. Wenn Sie diese Funktion benötigen, müssen Sie den Port net/isc-dhcp42-relay installieren. Weitere Informationen zu diesem Thema finden Sie in dhcrelay(8).

Wenn Sie Fragen zu FreeBSD haben, schicken Sie eine E-Mail an <de-bsd-questions@de.FreeBSD.org>.

Wenn Sie Fragen zu dieser Dokumentation haben, schicken Sie eine E-Mail an <de-bsd-translators@de.FreeBSD.org>.