Upline: Infos & Dokus Administration Linux

DHCP Server unter Debian Linux einrichten


Hinweis: Dieses Tutorial wurde im Mai 2006 erstellt, zu diesem Zeitpunkt gab es bereits seit l�ngerem Debian Sarge 3.1, trotzdem basiert diese Anleitung auf der Konfiguration in einem Debian Woody 3.0. �nderungen gegen�ber neueren Debian-Versionen (z.B. Debian Sarge) sollten minimal sein. Bei anderen Linux-Distributionen wie z.B. SuSE oder RedHat muss die Paketinstallation entsprechend angepa�t werden, evtl. k�nnten auch die Pfade zu den conf-Dateien etwas abweichen. Die daraus resultierenden Unterschiede sind nicht in diese Linux DHCP HowTo eingeflossen.


Allgemeines �ber DHCP

Was ist DHCP und wozu ist es gut?

DHCP wird ben�tigt, um Netzwerkger�te (also z.B. die Netzwerkkarte eines Computers) automatisch mit einer IP-Adresse zu versorgen. Heutzutage ist es auch in kleineren (privaten) Netzwerken v�llig normal, einen DHCP-Server zu verwenden, da diese in allen aktuellen DSL-Routern bereits integriert sind. Die in solchen Routern integrierten Server haben meistens nicht den vollen Funktionsumfang, der theoretisch m�glich ist, bieten aber zumindest die wichtigsten Grundeinstellungen. Was diesen Low-Cost-DSL-Routern nahezu immer fehlt, ist die M�glichkeit, einer bestimmten MAC-Adresse eine vordefinierte IP-Adresse zuzuweisen. Einige k�nnen dies allerdings wenigstens f�r WLAN. Zum einen w�re dies f�r die Hersteller ein in 99% der F�lle �berfl�ssiger Mehraufwand und zum anderen kann man leistungsf�higere Hardware somit immer noch gewinnbringender verkaufen ;) Mit einem entsprechend konfigurierten Linux-Rechner ist es jedoch kein Problem, auch diese feste Vergabe bequem per vi einzustellen.

Wie funktioniert DHCP?

DHCP steht f�r das in der RFC 2131 definierte Dynamic Host Configuration Protocol und ist zu BOOTP r�ckw�rts kompatibel. Um einer Netzwerkkarte per DHCP eine IP-Adresse zuweisen zu k�nnen, muss der Client sich beim Server melden. Zu diesem Zeitpunkt besitzt die Netzwerkkarte allerdings noch keine IP-Adresse. Daher wird die DHCP-Anfrage �ber die Broadcastadresse 255.255.255.255 auf Port 67 ins Netz geschickt und enth�lt die MAC-Adresse der Netzwerkkarte. Alle DHCP-Server, die diesen Broadcast erhalten, k�nnen diesen auswerten und entsprechend ihrer Einstellungen beantworten. Deshalb ist unbedingt darauf zu achten, dass es zu keinerlei Konflikten und �berschneidungen zwischen mehreren Servern kommt! Empf�ngt der zust�ndige DHCP-Server ein DHCP-Request, so antwortet er ebenfalls auf der Broadcast-Adresse, allerdings mit Port 68.

Installation und Konfiguration des DHCP-Servers

Paketinstallation

Die Paketinstallation erfolgt unter Debian wie �blich:
apt-get install dhcp3-dev dhcp3-server dhcp3-client dhcp3-common
Alternativ kann man die deb-Pakete nat�rlich auch per Hand herunterladen und mit dpkg -i installieren. Bei anderen Linuxen installiert man die entsprechenden Pakete entweder per Hand aus den zugeh�rigen rpm-Files oder verwendet z.B. bei SuSE den Yast.

Anpassung der Konfigurationsdateien

/etc/network/interfaces

In der interfaces wird eingestellt, wie die Netzwerkarte(n) ihre IP-Adressen erhalten. Hierzu verwendet man die Schreibweise iface x inet y, wobei f�r x das jeweilige K�rzel (z.B. eth0 f�r die erste Netzwerkarte oder lo f�r das Loopback-Device) verwendet wird. Das y ersetzt man f�r lo durch loopback und f�r die "echten" Netzwerkkarten eth0/eth1/... entweder durch dhcp oder static. Bei der Einstellung dhcp bezieht die Netzwerkkarte ihre IP-Adresse von einem DHCP-Server, bei der Einstellung static wird hingegen anschlie�end eine feste IP-Adresse inkl. aller n�tigen Angaben (Netzmaske, Netzwerkadresse, Broadcastadresse, Gatewayadresse) definiert. Da ein DHCP-Server im Normalfall seine IP-Adresse nicht von einem anderen DHCP-Server bezieht, muss die IP wie im folgenden Beispiel festgelegt werden:
auto lo eth0
iface lo inet loopback
iface eth0 inet static
 address 192.168.2.2
 netmask 255.255.255.0
 network 192.168.2.0
 broadcast 192.168.2.255
 gateway 192.168.2.1
Die Gateway-Adresse gibt hierbei den Router an - �bernimmt der Server selbst die Routingfunktion, so muss dies nat�rlich ber�cksichtigt werden. Als IP-Adresse f�r den DHCP-Server wurde hier die 192.168.2.2 gew�hlt, um Probleme mit evtl. vorhandenen DHCP-Servern (z.B. aus DSL-Routern) mit ihren Standardnetzen 192.168.0.0 und 192.168.1.0 zu vermeiden, weiterhin sollte man die statischen Serveradressen entweder von unten (also z.B. die *.2, weil die *.1 schon vom Router belegt ist) oder von oben (also z.B. *.254) beginnend festlegen.

/etc/dhcp3/dhcpd.conf mit dynamischer IP-Vergabe

In der Konfigurationsdatei des dhcp-Deamon dhcpd.conf muss folgendes erg�nzt werden:
subnet 192.168.2.0 netmask 255.255.255.0 
{ 
 option domain-name "proteino.local";
 option domain-name-servers 192.168.2.2;
 option routers 192.168.2.1;
 option broadcast-address 192.168.2.255;
 option subnet-mask 255.255.255.0;
 default-lease-time 86400;
 max-lease-time 604800;
 range 192.168.2.10 192.168.2.20;
}
Erkl�rung der einzelnen Parameter:
  • option domain-name "x"; - nennt den lokalen(!) Domainnamen x
  • option domain-name-servers x; - nennt die IP-Adresse des Nameservers (im Bsp. ist ein bind9 auf dem dhcp-Server installiert)
  • option routers x; - nennt die IP-Adresse des Routers (Gateway)
  • option broadcast-address x; - nennt die Broadcast-Adresse des Netzwerks
  • default-lease-time x; - definiert die Zeit in Sekunden, die ein DHCP-Lease standardm��ig g�ltig ist. Oft wird als Wert 86400 (entspricht 24h) verwendet, in gut gesicherten kleinen lokalen Netzwerken kann man aber auch ruhig gr��ere Werte verwenden.
  • max-lease-time x; - definiert die Zeit in Sekunden, die ein DHCP-Client f�r das Lease maximal anfordern kann, meist verwendet man hier 604800 (=7d).
  • range x y; - legt die per DHCP zu vergebende Startadresse x und die Endadresse y fest. Dieser Bereich muss in evtl. vorhandenen anderen DHCP-Servern f�r das gleiche Netz ausgeschlossen werden und darf keine festen IPs anderer Rechner des Netzwerks beinhalten!
Diese Angaben gelten f�r im Internet stehende DHCP-Server von Internet Service Providern (ISP) nat�rlich nur in entsprechend angepa�ter Form. Weiterhin ist zu beachten, dass die option- und lease-time-Parameter auch au�erhalb der geschweiften Klammer um das subnet stehen k�nnen und somit f�r die dhcpd.conf globale G�ltigkeit erhalten. Besonders interessant wird dies bei der IP-Vergabe �ber mehrere Subnetze hinweg, die die gleiche Subnetzmaske haben. Besonderes Augenmerk sollte man hierbei auf die korrekte Klammerung legen.

/etc/dhcp3/dhcpd.conf mit statischer IP-Vergabe

Als Grundlage dient die dhcpd.conf aus dem vorhergehenden Punkt zur dynamischen IP-Adressvergabe, lediglich die als global gew�nschten Parameter werden hier ausgelagert und weiterhin werden zwei statische IPs vergeben:
# globale Werte
option domain-name "proteino.local";
option domain-name-servers 192.168.2.2;
option routers 192.168.2.1;
option broadcast-address 192.168.2.255;
option subnet-mask 255.255.255.0;

subnet 192.168.2.0 netmask 255.255.255.0
{
 host barfoo
 {
  hardware ethernet 00:20:af:1c:90:1b;
  fixed-address 192.168.2.8;
 }
 host foobar
 {
  hardware ethernet 00:20:af:1c:90:1c;
  fixed-address 192.168.2.9;
 }
 range 192.168.2.10 192.168.2.20;
}
In dieser Beispiel-Konfiguration sieht man bereits sehr sch�n eine kleine Verschachtelung der Klammerung und wie einem host �ber seine MAC-Adresse eine statische IP-Adresse zugewiesen werden kann. Um zus�tzlich zu den statischen IP-Adressen auch einen dynamischen Bereich f�r weitere Netzwerkger�te verwenden zu k�nnen, wird wieder eine range angegeben. Nunmehr sind folgende IP-Adressen (nur letztes Octet von 192.168.2.x) vergeben:
  • 0 - Netzwerkadresse
  • 1 - Router/Gateway
  • 2 - der DHCP-Server h�chstpers�nlich, dieser enth�lt hier auch den DNS-Server (Domain Name System)
  • 8 - ein Client oder Server namens barfoo mit einem Netzwerkinterface mit der MAC-Adresse 00:20:af:1c:90:1b
  • 9 - ein Client oder Server namens foobar mit einem Netzwerkinterface mit der MAC-Adresse 00:20:af:1c:90:1c
  • 10-20 - reserviert f�r DHCP-Clients
  • 255 - Broadcastadresse

/etc/default/dhcp3-server

In dieser Datei muss das Netzwerkger�t genannt werden, auf welchem der DHCP-Server l�uft. Nach dem Aufruf von dhcpd3 eth0 sollte dort folgendes stehen:
INTERFACES="eth0"



Start und Test des DHCP-Servers

Mit /etc/init.d/dhcp3-server start wird der DHCP3-Server gestartet, falls noch nicht automatisch bei der Installation angelegt, muss man noch manuell die Start- und Stopscriptlinks in die entsprechenden Runlevel-Verzeichnisse packen.
Die Funktionalit�t kann man anschlie�end wie folgt testen:
  • unter Linux: Rechner mit automatisch startendem dhcp-Client (bzw. fest in den Kernel integriertem dhcp-Client) hochfahren - fertig. L�uft der Rechner bereits und hat noch keine automatische DHCP-Aktualisierung (z.B. �ltere 2.4-Kernel), so gen�gt ein /etc/init.d/dhcpd restart. Das dhcpd muss entsprechend dem im System verwendeten Client (z.B. dhclient) namentlich angepa�t werden. Ob man auch wirklich eine IP bezogen hat, kann man mit ifconfig �berpr�fen. Klappt das trotz vorhandenem DHCP-Client nicht, kann evtl. ein etwas rabiateres /etc/init.d/networking restart weiterhelfen.
  • unter Windows NT, Windows 2000, Windows XP, Windows 2003 und folgenden: in der Kommandozeile ipconfig /renew eingeben, mit ipconfig /all kontrollieren. Wichtig: die Eigenschaften des TCP/IP-Protokolls m�ssen auf DHCP (IP-Adresse automatisch beziehen) stehen!
  • unter Windows 95, Windows 98, Windows 98SE und Windows ME: in der Kommandozeile winipcfg eingeben im folgenden Konfigurationsprogramm die entsprechenden Einstellungen vornehmen.
Hat alles funktioniert? Na dann herzlichen Gl�ckwunsch zu Deinem eigenen Linux-DHCP-Server und weiterhin viel Erfolg und Spa� mit Debian/GNU Linux!

Fehler, Anmerkungen, Kritik?

Falls mir irgendwo Fehler unterlaufen sind, bitte ich darum, diese in meinem IT-Forum so genau wie m�glich (evtl. inkl. Berichtigung) zu posten. Danke!