Der in diesem Paket enthaltene DHCP Server ist eine Open Source Software und unterliegt dem Copyright des Internet Systems Consortium, Inc. („ISC“). Die Verwendung erfolgt nach den Bestimmungen der ISC-Lizenz (ähnlich der BSD License).
Die ebenfalls enthaltenen Bestandteile des Syslinux Projekts und des Etherboot Projekts unterliegen der GNU General Public License Version 2 oder aktueller.
Die in diesem eisfair -Paket zusätzlichen, eisfair -spezifischen Bestandteile unterliegen ebenfalls der GNU General Public License Version 2 oder aktueller.
Achtung: Ich gebe weder eine Garantie auf die Funktionsfähigkeit des dhcpd Pakets, noch hafte ich für Schäden, z.B. Datenverlust, die durch den Einsatz des dhcpd Pakets entstehen.
Das DHCP (Dynamic Host Configuration Protocol) wird zur Automatisierung
der Konfiguration von Computern in TCP/IP-Netzwerken genutzt. DHCP kann
dabei die IP-Adressen automatisch vergeben, TCP/IP-Stack Konfigurationen
wie die Subnet-Mask und den Standard-Gateway übergeben und andere
Konfigurationen wie Adressen der Drucker-, Zeit- oder Newsserver
verteilen.
(Übersetzt von DHCP)
Dieses Paket enthält den Server (=Daemon) zur Vergabe von IP-Adressen in lokalen und entfernten Netzwerken.
Leistungsmerkmale des Pakets:
Ziel bei der Erstellung dieses Paketes war die möglichst vollautomatische Erstellung der Konfigurationsdatei. Dazu werden die auf dem Server bekannten Einstellungen und Dienste als Basis genutzt. Ein Anwender soll im Sinne der Philosophie von eisfair möglichst „easy“ dieses Paket konfigurieren können. Deshalb wurde bewusst eine minimalistische Konfiguration und ein weitreichender Automatismus implementiert.
Für fortgeschrittene Anwender und individuelle Netztopologien bzw. Anforderungen kann auf eigenes Risiko die Plugin-Schnittstelle genutzt werden.
Der DHCP Server vergibt IP-Adressen in lokale Netzwerken. Dafür gibt es einen Pool von Adressen, die vergeben werden dürfen. Zudem bestimmt der Server eine Zeitspanne, für die die vergebenen Adressen gültig sind. Nach dieser Zeit muss der Client die Adresse erneuern. Im Normalfall bekommt der Client die selbe Adresse erneut, aber darauf kann man sich nicht verlassen.
Zusätzlich zur IP-Adresse sendet der Server Informationen über das Standard Gateway und den Nameserver. Daher müssen diese Werte nicht am Desktop PC eingegeben werden, solange das am DHCP Server korrekt konfiguriert wurde. In diesem Paket werden diese Werte für die gängigsten Netztopologien automatisch ermittelt und müssen daher nicht manuell gepflegt werden. Unter Windows muss eine Option wie „IP-Adresse automatisch beziehen“ gewählt werden. Leider unterscheidet sich hier die Konfiguration von Version zu Version.
Zusätzlich zu normalen dynamischen IP-Adressen hat der Server eine Funktion um einem Client immer die selbe IP-Adresse zuzuweisen. „So ein Unfug“ – werden nun viele denken, aber es gibt dafür gute Gründe. So müssen nicht sämtliche Client PCs neu konfiguriert werden, falls sich etwas in der Netzwerkkonfiguration geändert hat (z.B. die Adresse des Standard Gateways oder der Nameserver).
Die Konfiguration kann über den Menüpunkt „Edit Configuration“ geändert werden. Nach dem beenden des Editors wird diese dann geprüft. Sofern ein Fehler aufgetreten ist sollten Sie diesen dann beheben.
Gültige Werte: yes,no
Standardeinstellung: START_DHCPD='no'
Standardeinstellung: DHCPD_DYNAMIC_N='1'
Gültige Werte: yes,no
Standardeinstellung: DHCPD_DYNAMIC_1_ACTIVE='yes'
Standardeinstellung: DHCPD_DYNAMIC_1_RANGE='192.168.6.100 192.168.6.150'
Beispiel: DHCPD_CLIENT_N='2'
Beispiel: DHCPD_CLIENT_1_NAME='fixed-ip-1'
Gültige Werte: yes,no
Standardeinstellung: DHCPD_CLIENT_1_ACTIVE='no'
Beispiel: DHCPD_CLIENT_1_MAC='00:01:02:03:04:06:07'
Beispiel: DHCPD_CLIENT_1_IPV4='192.168.6.2'
Als IPv6 Adressen können nur folgende Adresstypen verwendet werden: * Site Local IPv6 Addresses der Form fecx, fedx, feex, fefx * Unique Local IPv6 Addresses der Form fcxx, fdxx * Global Unicast Addresses der Form 2xxx, 3xxx (x steht für beliebige Hexadezimalzeichen 0-9 und a-f)
ACHTUNG: Diese Option ist noch nicht verfügbar!
Beispiel: DHCPD_CLIENT_1_IPV6='2001:db8:0:f101::123'
Für den Einsatz von pxelinux über die Optionen DHCPD_CLIENT_x_PXE_KERNEL usw. muss diese Option leer bleiben.
Durch die Angabe von 'yes' wird der Standard pxelinux.0 (in diesem Paket enthalten) aktiviert. Zur Verwendung des PXE-Menüs muss diese Option auf 'yes' gesetzt werden und die zu diesem Client gehörigen PXE-Parameter müssen leer bleiben.
Um ein spezielles Netboot-Image (z.B. Etherboot) booten zu können, muss dieses im Verzeichnis /srv/tftpboot abgelegt werden und der hier angegebene Dateiname darf das führende /srv/tftpboot nicht enthalten (z.B. DHCPD_CLIENT_1_NETBOOT='3c90x.zpxe').
Standardeinstellung: DHCPD_CLIENT_1_NETBOOT='yes'
Der Kernel muss im Verzeichnis /srv/tftpboot/DHCPD_CLIENT_x_NAME abgelegt sein und den hier angegebenen Namen bekommen. Zur Übertragung des Kernel wird pxelinux verwendet, die Konfiguration von pxelinux wird automatisch erstellt.
Um von der lokalen Festplatte oder Diskette zu booten oder um ein Image mittels memdisk zu booten, muss diese Option leer gelassen werden.
Standardeinstellung: DHCPD_CLIENT_1_PXE_KERNEL=”
Bei der Verwendung von memdisk wird hier in analoger weise das zu bootende Image angegeben.
Um von der lokalen Festplatte oder Diskette zu booten, muss diese Option leer gelassen werden.
Standardeinstellung: DHCPD_CLIENT_1_PXE_INITRD=”
Standardeinstellung: DHCPD_CLIENT_1_PXE_ROOTFS=”
Standardeinstellung: DHCPD_CLIENT_1_PXE_APPEND=”
Standardeinstellung: DHCPD_EXTRA_N='0'
Gültige Werte: yes,no
Standardeinstellung: DHCPD_EXTRA_1_ACTIVE='no'
Beispiel: DHCPD_EXTRA_1_RANGE='192.168.70.100 192.168.70.150'
Standardeinstellung: DHCPD_EXTRA_1_NETMASK='255.255.255.0'
Standardeinstellung: DHCPD_EXTRA_1_DNS_SERVER='192.168.6.1'
Standardeinstellung: DHCPD_EXTRA_1_GATEWAY='192.168.70.1'
ACHTUNG: Bei Aktivierung eines Plugins kann es zu unvorhersehbaren Fehlfunktionen kommen. Die Sicherstellung der korrekten Funktion obliegt dem Autor des jeweiligen Plugins.
Gültige Werte: yes,no
Standardeinstellung: DHCPD_PLUGIN_x='no'
Als Basis dieses Beispiels dient das ISO–Image der unter SystemRescueCD, heruntergeladen werden kann. Im weiteren wird von der Version 2.0.1 ausgegangen.
Das ISO-Image wird unter /tmp/systemrescuecd-x86-2.0.1.iso abgelegt. Dann werden die notwendigen Dateien extrahiert:
modprobe loop cd /tmp mkdir -m 0755 iso mount -o loop -t iso96600 systemrescuecd-x86-2.0.1.iso iso mkdir -p -m 0755 /srv/tftpboot/sysrcd cp iso/isolinux/initram.igz /srv/tftpboot/sysrcd/initram.igz cp iso/isolinux/rescuecd /srv/tftpboot/sysrcd/rescuecd cp iso/sysrcd.md5 /srv/tftpboot/sysrcd/sysrcd.md5 cp iso/sysrcd.dat /srv/tftpboot/sysrcd/sysrcd.dat umount iso rmdir iso
Danach kann man in der Konfiguration des dhcpd Pakets die entsprechenden Eintragungen vornehmen. Dazu wird zunächst ein neuer Eintrag dem PXE-Menü hinzugefügt. Dann werden dort folgende Einstellungen vorgenommen:
DHCPD_PXE_*_NAME sysrescd DHCPD_PXE_*_ACTIVE yes DHCPD_PXE_*_DESCRIPTION System Rescue CD DHCPD_PXE_*_KERNEL sysrcd/rescuecd DHCPD_PXE_*_INITRD initram.igz DHCPD_PXE_*_ROOTFS DHCPD_PXE_*_APPEND dodhcp netboot=tftp://192.168.6.1/sysrcd/sysrcd.dat
Anstatt der 192.168.6.1 muss hier natürlich die IP-Adresse des DHCPD und TFTP Servers eingetragen werden.
Nach dem aktivieren der Konfiguration steht dann den per PXE bootenden Clients die System Rescue CD als zusätzliche Option zur Verfügung.
Zur Administration des DHCP Servers gibt es ein Untermenü im Setup. Dort kann die Konfiguration bearbeitet (Edit Configuration), der Status des Servers angezeigt bzw. dieser gestartet oder gestoppt werden.
Der Server kann von der Kommandozeile aus mit dem Script in /etc/init.d gesteuert werden:
/etc/init.d/dhcpd start|stop|status|restart
Die Plugin-Schnittstelle wurde geschaffen, um Paketen Zugriff auf die Funktionalitäten des dhcpd Pakets zu ermöglichen. Ein Beispiel dafür wäre ein Paket, das ein über PXE bootbares Betriebssystem enthält. Mittels eines Plugins kann dieses Betriebssystem in das PXE-Menü eingehängt werden, ohne dass dazu die Konfiguration des dhcpd Pakets angepasst werden muss.
Als Beispiel hierfür steht das Paket dhcpd_pxe_diag zur Verfügung, das ein paar einfache Tools zur Hardwarediagnose (z.B. memtest86+) enthält.
Als weiteres Beispiel könnte ein Paket spezielle Hardware direkt in die dhcpd Konfiguration mit eintragen lassen, sodass der Anwender hier nicht mehr eingreifen muss.
Als weitere Anwendungsmöglichkeit der Plugin-Schnittstelle kann über ein Plugin die Erstellung der dhcpd Konfiguration beeinflusst werden. So kann bei umfangreicheren Netztopologien z.B. ein veränderter Gateway oder ein spezieller WINS-Server oder NTP-Server zugesteuert werden. Notfalls kann sogar am Ende des Erstellungsprozesses die gesamte dhcpd Konfiguration (dhcpd.conf) nochmals angepasst oder überschrieben werden.
Alle Plugins werden im Verzeichnis /var/install/plugin.d abgelegt und müssen einen Namen der Form dhcpd.[function].[pos][plugin-name].[extra].sh haben.
Der Name (plugin-name) muss dabei dem package name des eisfair Pakets des Plugins entsprechen, wobei dem eigentlichen Namen noch die Startpriorität (pos) bei mehreren installierten Plugins mittels 2 führender Ziffern vorangestellt wird. Der optionale Block extra kann paketspezifisch frei gewählt werden.
Als Exits (function) stehen derzeit folgende Einstiegspunkte zur Verfügung:
ACHTUNG: Die Plugins werden inline ausgeführt, somit stehen sämtliche Funktionen der eislib direkt zur Verfügung und auch die Variablen der dhcpd Konfiguration können direkt verändert werden. Allerdings darf das Plugin keinesfalls mittels exit beendet werden. Der Rücksprung sollte daher mittels return erfolgen.
Neben dem Hinzufügen weiterer Einträge in einem pre-Plugin ist wohl die Modifikation der Konfiguration während der main-Phase der häufigste Anwendungsfall. Ein wichtiger Punkt hierbei ist, daß die Konfiguration der Vergabe der lokalen dynamischen und statischen IP-Adressen (DHCPD_DYNAMIC_* und DHCPD_CLIENT_*) unterhalb der Konfiguration der jeweiligen Netzwerkkarte (DHCPD_NIC_x_RANGE_x bzw. DHCPD_NIC_x_STATIC_x) verschoben wurde.
In diese Phase stehen neben den bereits aus der Konfiguration bekannten Variablen (unter anderen) noch die Folgenden zur Verfügung:
Als interessantes Beispiel können die in diesem Paket unter /usr/share/doc/dhcpd/dhcpd.config.*.99trace.sh beiliegenden Plugins dienen. Diese schreiben die zum Abschluß der jeweiligen Phase vorliegenden Konfigurationsvariablen in eine Datei /tmp/dhcpd.*.trace.
Plugins können ihre Benutzeroberflächen oder Konfigurationseditoren im Untermenü „DHCPD Server Plugins“ einhängen indem sie das Menu wie folgt benennen setup.services.dhcpd.plugins.${meinplugin}.menu damit werden automatisch eigene Einträge in das Menü setup.services.dhcpd.plugins.menu hinzugefügt.