Ein DHCP-Server ist dafür zuständig, IP-Adressen aus einem Pool an Clients zu vergeben.
Der verbreiteste DHCP-Server ist der ISC DHCP Server (oder Variationen davon).
Homepage: http://www.isc.org/products/DHCP/
Lizenz: BSD-Style
Alternative: udhcp auch für Embedded-Systeme
Konfiguration
/etc/dhcpd.conf
Konfiguration von DDNS
dazu wird Version 3.0 des ISC DHCP Servers benötigt
option domain-name "example.com"; option domain-name-servers 192.168.2.1; option nis-domain "example.com"; default-lease-time 60; max-lease-time 120; use-host-decl-names on; subnet 192.168.2.0 netmask 255.255.255.0 { option routers 192.168.2.1; option subnet-mask 255.255.255.0; range dynamic-bootp 192.168.2.128 192.168.2.254; } subnet 192.168.11.0 netmask 255.255.255.0 { option routers 192.168.11.1; option subnet-mask 255.255.255.0; range dynamic-bootp 192.168.11.128 192.168.11.254; } host rechnerX { hardware ethernet 01:02:03:45:67:89; } host rechnerY { hardware ethernet 01:02:03:45:78:9A; }
Achtung: unvollständig!
mehr unter DHCPServerMitDNS
Konfiguration für PXE- & Etherboot-DisklessClients
dazu wird Version 3.0 des ISC DHCP Servers benötigt
# # dhcpd.conf for kmLinuxTSE # #default-lease-time 86400; # ein Tag # max-lease-time 604800; # eine Woche default-lease-time 21600; max-lease-time 21600; allow booting; allow bootp; # only for DHCPD V. 3 ddns-update-style none; option option-128 code 128 = string; option option-129 code 129 = text; option subnet-mask 255.255.255.0; option broadcast-address 192.168.0.255; option routers 192.168.0.254; #option domain-name-servers 192.168.0.254; option domain-name "ltsp"; option root-path "192.168.0.254:/opt/ltsp/i386"; shared-network WORKSTATIONS { # dynamische Adressvergabe an Clients mit deren Hardware auto-detect funktioniert # (PCI Netzwerk-Karte und PCI oder AGP Grafikkarte) # subnet 192.168.0.0 netmask 255.255.255.0 { range dynamic-bootp 192.168.0.1 192.168.0.20; #MH 3/2003 http://lug-kr.sourceforge.net/cgi-bin/lugwiki.pl?DHCPServerMitDNS # was mach' ich mit der führenden Null ? :-( # option host-name = concat("ws00", binary-to-ascii( # 10,8,"",substring(leased-address,3,1))); option log-servers 192.168.0.254; # trick from Peter Rundle <peter.rundle@au.interpath.net> # MH: needs DHCPd Version 3 if substring (option vendor-class-identifier, 0, 9) = "PXEClient" { filename "/lts/pxe/pxelinux.bin"; # NOTE: kernels are specified in /tftpboot/lts/pxe/pxelinux.cfg/ } else { filename "/lts/vmlinuz.ltsp"; } } } # statische Vergabe von IP Adressen anhand der Hardware-MAC-Adressen # der Clients, das ist z.B. für Clients mit ISA-Netzwerkkarten nötig # #group { # use-host-decl-names on; # option log-servers 192.168.0.254; # # host ws001 { # hardware ethernet 00:E0:06:E8:00:84; # fixed-address 192.168.0.1; # filename "/lts/vmlinuz.monolit"; # option option-128 e4:45:74:68:00:00; # option option-129 "NIC=ne IO=0x300"; # } # host ws002 { # hardware ethernet 00:60:08:2a:2d:3e; # fixed-address 192.168.0.2; # filename "/lts/vmlinuz.ltsp"; # option option-128 e4:45:74:68:00:00; # option option-129 "NIC=3c509"; # } # host ws003 { # hardware ethernet 00:D0:09:30:28:B2; # fixed-address 192.168.0.3; # # kernels are specified in /tftpboot/lts/boot/pxe/pxelinux.cfg/ # filename "/lts/pxe/pxelinux.bin"; # } #}
Frage: Wie kann ich die zugewiesene IPAddresse nicht nur von der MacAddresse, sondern auch von dem vom Client übermittelten Namen abhängen lassen? -- HelmutGrohne 2004-08-25 12:02:51
Vom ISC DHCP Server habe ich keine Ahnung, aber dnsmasq kann das (vgl. man dnsmasq Option -G). -- HenrykGerlach 2004-08-25 14:53:03
Ja, ich suche etwas wie --dhcp-host=id:übermitteltername,... für den ISC DhcpServer. -- HelmutGrohne 2004-08-25 17:56:13
Du suchst die Option dhcp-client-identifier -- HenrykGerlach 2004-08-25 18:43:22
Tips & Tricks
Wer wie ich, andere hardware verbaut und vergisst die MAC-Adresse des betreffenden Rechners der den dhcpd stellt zu änderen in dessen Konfiguration kann sein blaues Wunder erleben.....:-( Das geht los mit Routingproblemen, fehlende Namensauflösungen und man kann sich wirklich "duppelig" suchen wie der Schwabe sagt.
OffeneFrage: Wie bekomme ich die Meldungen heraus die mir der Server übermittelt?
- z.B. if substring (option vendor-class-identifier, 0, 13) = "Etherboot-5.0". Etherboot übermittelt da wohl seine Versionsnummer. Aber ich möchte gern direkt zwischen Etherboot und Etherboot mit PXE unterscheiden. Auch bei gleicher Version.
Scheint nix drin zu stehen. Habe mal mit Ethereal geschaut aber nur die bekannten Strings gesehen.