Ubuntu 12.04 Precise Pangolin
Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.
DHCP erleichtert die Vergabe von IP-Adressen im lokalen Netzwerk. Ist ein DHCP-Server im Netzwerk vorhanden, kann dieser neben der Vergabe der IP-Adressen für die Clients diesen auch die IP-Adresse des Routers, eines Namensservers usw. bekanntgeben. In diesem Artikel wird eine Konfiguration des ISC-DHCP-Servers beschrieben.
Für die Konfiguration eines DHCP-Servers sind grundlegende Netzwerkkenntnisse und das Verständnis des DHCP-Protokolls notwendig.
Zur Installation des DHCP-Servers ist das folgende Paket zu installieren [1]:
isc-dhcp-server
mit apturl
Paketliste zum Kopieren:
sudo apt-get install isc-dhcp-server
sudo aptitude install isc-dhcp-server
In älteren Ubuntu-Versionen hieß das Paket noch dhcp3-server.
Während der Installation fragt debconf, an welches Netzwerkgerät der DHCP-Server gebunden werden soll. Die richtige Auswahl ist bei Vorhandensein mehrerer Schnittstellen sinnvoll. Ist nur eine einzige Netzwerkkarte im Rechner vorhanden, lautet der Name üblicherweise eth0
. Nachträglich kann man dieses auch in der Datei /etc/default/isc-dhcp-server mit einem Editor [2] mit Root-Rechten [3] ändern:
interface eth0;
Die Konfiguration des DHCP-Servers geschieht in der Datei /etc/dhcp/dhcpd.conf. Die Syntax ist hier recht selbsterklärend. Die Datei beinhaltet grundlegende Statements, die jeweils aus einem Schlüsselwort und bei Bedarf einem oder mehreren Argumenten bestehen. Argumente werden durch Leerzeichen getrennt und mit einem Semikolon am Zeilenende abgeschlossen.
Parameter Deklaration # Beispiel range 192.168.2.10 192.168.2.40;
Zur Gruppierung der Parameter werden diese mit geschweiften Klammern in Blöcke gefasst. Parameter, die außerhalb eines Blocks stehen, gelten global. Kommentare werden durch das Zeichen # eingeleitet.
DHCP-Server sollten das folgende Statement im globalen Bereich ihrer Konfiguration aufweisen, wenn der Administrator keine falsch konfigurierten "Rogue"-DHCP-Server im eigenen Netzwerk dulden will (also eigentlich immer):
authoritative;
Die Lease-Time beschreibt den Zeitraum, für den der DHCP-Server einem Client eine IP-Adresse zur Verfügung stellt (least, vermietet). Vor dem Ende des Zeitraums fragt der Client beim Server an, ob der Client die IP-Adresse weiternutzen darf oder eine neue IP-Adresse bekommt. Die Voreinstellungen, die man bei der Installation des Servers vorfindet, sind in den meisten Fällen bereits sinnvoll. In einem Heimnetz, wo nur selten neue Rechner hinzukommen, kann man die Werte default-lease-time
und max-lease-time
aber durchaus auf mehrere Stunden oder Tage erhöhen, wenn man möchte. In Netzen mit häufig wechselnden Clients und ggf. knappem Vorrat an IP-Adressen kann man die Lease-Time herabsetzen, damit die Adressen schneller an neue Clients vergeben werden können. Die Angabe erfolgt in Sekunden.
Der DHCP-Server kann mehrere Subnetze bedienen. Diese werden durch Blöcke wie folgt definiert:
# Erstes Subnetz subnet 192.168.2.0 netmask 255.255.255.0 { range 192.168.2.10 192.168.2.40; } # Zweites Subnetz subnet 192.168.3.0 netmask 255.255.255.0 { range 192.168.3.10 192.168.3.40; }
Auch wenn das Netz nicht in Subnetze unterteilt werden soll (Subnetting), muss ein Subnet-Block definiert werden. Dieser Block umfasst dann das gesamte Netzwerk.
Mit dem Parameter range
wird der Bereich der IP-Adressen definiert, die vom Server an die Clients verteilt werden sollen. range
-Statements müssen in Subnetz-Blöcken stehen.
# Anfang Ende range 192.168.2.10 192.168.2.40;
Mit dem Parameter 'interface' wird das Netzwerkinterface gewählt, das heißt über welchen Anschluss die IP- Adressen an andere Rechner verteilt werden. Hinter den Parameter wird nach einem Leerzeichen sofort das Interface angegeben (z.B. eth0
).
# Beispiel interface eth0;
Auf das Schlüsselwort option
folgen jeweils zusätzliche Angaben über das Netzwerk, die der DHCP-Server neben der IP-Adresse an die Clients vermittelt. option
-Statements können sowohl im globalen Bereich definiert werden, als auch in subnet
-Blöcken.
# Beispiele option routers 192.168.1.1; option domain-name-servers 192.168.1.10, 145.253.2.11;
Die vorstehend genannten Optionen routers
und domain-name-servers
sollten auf jeden Fall definiert werden, um die Funktion des Netzwerks und Zugriff auf das Internet zu ermöglichen. Es gibt aber noch eine Vielzahl weiterer Optionen, wie z. B. die Angabe des DNS-Domainnamens mit option domain-name
, die in der Manpage zu dhcpd.conf beschrieben werden.
Mit host
-Blöcken kann man festlegen, dass bestimmte Rechner vom DHCP-Server immer eine bestimmte IP bekommen sollen, anstatt eine zufällig ausgewählte. host
-Blöcke befinden sich innerhalb von subnet
-Blöcken.
host wiki { hardware ethernet 00:00:0e:d2:da:be; fixed-address 192.168.2.5; option host-name "wiki"; }
Insbesondere benötigt man in einem host
-Block die Statements hardware ethernet
(ohne Bindestrich!) und fixed-address
. Die Vergabe eines Namens über option host-name
ist optional.
Die Manpage zur dhcpd.conf geht sehr ausführlich auf weitere Konfigurationsmöglichkeiten ein.
In dem unten angegebene Beispiel ist ein DHCP-Server für ein Netzwerk mit diesen Kenndaten konfiguriert:
der Server bedient das Netzwerk 192.168.2.0
die Clients bekommen IP-Adressen zwischen 192.168.2.10 und 192.168.2.40 zugewiesen
der Übergang (Gateway bzw. Router) in ein anderes Netzwerk hat die IP-Adresse 192.168.2.1
der Nameserver hat die IP-Adresse 192.168.2.1
die Domain heißt "ubuntuusers.home"
einem bestimmten Client wird anhand seiner Hardware-(MAC-)Adresse immer dieselbe IP-Adresse zugewiesen
#Generelle Einstellungen # Rogue-DHCP-Server nicht erlauben (siehe oben) authoritative; # Definition des ersten (einzigen) Subnetzes subnet 192.168.2.0 netmask 255.255.255.0 { range 192.168.2.10 192.168.2.40; # Lease-Time (in Sekunden) default-lease-time 600; max-lease-time 7200; option domain-name "ubuntuusers.home"; option domain-name-servers 192.168.2.1; option broadcast-address 192.168.2.255; option subnet-mask 255.255.255.0; option routers 192.168.2.1; } #Wenn man jetzt auch noch das Interface angeben möchte, kann man das so machen. subnet 192.168.2.0 netmask 255.255.255.0 { range 192.168.2.10 192.168.2.40; #wenn das Interface eth0 ist interface eth0; #hier kommen dann die anderen Optionen } # IP eines Hosts an seine MAC festnageln host wiki { hardware ethernet 00:00:0e:d2:da:be; fixed-address 192.168.2.5; option host-name "wiki"; }
Der DHCP-Server kann als Dienst mit [4]:
/etc/init.d/isc-dhcp-server start
gestartet werden. Das Stoppen erfolgt dementsprechend über:
/etc/init.d/isc-dhcp-server stop
Wenn der DHCP-Server nicht startet und in der Datei /var/log/syslog folgender Eintrag steht:
Can't open lease database /var/lib/dhcpd/dhcpd.leases: No such file or directory -- check for failed database rewrite attempt!
hilft es, das Verzeichnis /var/lib/dhcpd zu erzeugen:
sudo mkdir /var/lib/dhcpd
Dann kann die Datei dhcpd.leases erzeugt und beschrieben werden.
Wenn folgende Fehlermeldung auftaucht:
Nov 20 22:19:07 localhost dhcpd: Not configured to listen on any interfaces! Nov 20 22:19:07 localhost kernel: [ 1457.609470] init: isc-dhcp-server main process (3765) terminated with status 1 Nov 20 22:19:07 localhost kernel: [ 1457.609585] init: isc-dhcp-server main process ended, respawning Nov 20 22:19:07 localhost dhcpd: Wrote 0 leases to leases file. Nov 20 22:19:07 localhost dhcpd: Nov 20 22:19:07 localhost dhcpd: No subnet declaration for eth0 (no IPv4 addresses). Nov 20 22:19:07 localhost dhcpd: ** Ignoring requests on eth0. If this is not what Nov 20 22:19:07 localhost dhcpd: you want, please write a subnet declaration Nov 20 22:19:07 localhost dhcpd: in your dhcpd.conf file for the network segment Nov 20 22:19:07 localhost dhcpd: to which interface eth0 is attached. **
kann mit dem Befehl ifconfig eth0 192.168.2.11
dem Interface eine IP-Adresse zugewiesen werden, welche es aber nach jedem Neustart wieder verliert.
DNS & DHCP Setup - Tutorial
DHCP mini-HOWTO - weiteres Tutorial
http://sourceforge.net/p/webadmin/bugs/3775/ - angepasste Webmin-Konfigurationsdatei
Serverdienste Übersichtsseite
Diese Revision wurde am 2. Januar 2017 17:38 von aasche erstellt.