Upline: Infos & Dokus
Administration
Linux
DHCP Server unter Debian Linux einrichtenHinweis: 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 DHCPWas 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-ServersPaketinstallationDie Paketinstallation erfolgt unter Debian wie üblich:apt-get install dhcp3-dev dhcp3-server dhcp3-client dhcp3-commonAlternativ 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/interfacesIn 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.1Die 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-VergabeIn 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:
/etc/dhcp3/dhcpd.conf mit statischer IP-VergabeAls 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:
/etc/default/dhcp3-serverIn 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-ServersMit /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:
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! |