DHCP-Server
Artikel für fortgeschrittene Anwender
Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Für die Funktionalität eines DHCP-Servers liefern die offiziellen Ubuntu-Paketquellen mehrere Alternativen:
isc-dhcp-server: DHCP-Server BIND vom Internet Systems Consortium (ISC)
kea-dhcp4-server und kea-dhcp6-server (auch vom ISC)
dnsmasq ist ein kleiner zwischenspeichernder DNS-Proxy und DHCP/TFTP-Server.
systemd-networkd enthält einen integrierten DHCP-Server.
NetworkManager benutzt den DHCP-Server von dnsmasq.
Die beiden DHCP-Server des ISC sind von Vorteil bei großen Installationen mit tausenden von Clienten, insbesondere wenn diese individuelle Konfigurationen benötigen oder mehrere Schnittstellen bedient werden sollen. Im Consumer-Bereich reichen die drei zuletzt genannten Varianten aus. dnsmasq war vor Ubuntu 17.10 als Standardsoftware immer installiert und ist auch bei späteren Versionen oft schon installiert. systemd-networkd ist bei jedem Ubuntu-System bereits installiert und NetworkManager bei jedem Ubuntu-Desktop-System. Diese Anleitung beschränkt sich daher auf diese drei zuletzt genannten Varianten.
Hinweis:
Zur Konfiguration müssen zuerst die an die anfragenden Teilnehmer zu verteilenden Informationen festgelegt werden. In dieser Anleitung wird dafür angenommen:
eine individuelle IPv4-Adresse aus dem Bereich
192.168.33.64-192.168.33.127
(64 Adressen)Der Rechner mit der DHCP-Client-ID
0A:01:02:42:25:67
soll immer die IP-Adresse192.168.33.129
und entsprechend für die DHCP-Client-ID0A:99:23:55:66:77
die IP-Adresse192.168.33.130
reserviert.ein lokales Netzwerk
192.168.33.0/24
mit Broadcast-Adresse192.168.33.255
einen Leitweg ins Internet mit dem Gateway
192.168.33.11
(sog. "default route")zwei DNS-Namensserver
192.0.2.53
und203.0.113.53
eine DNS-Domäne
ubuntuusers.example.net
Die Netzwerk-Schnittstelle, über welche der DHCP-Server Anfragen annimmt und Daten verteilt, heißt LAN
.
DHCP-Server mit systemd-networkd¶
Der Artikel zu systemd-networkd wird vorausgesetzt.
Die Datei zu Konfiguration der Schnittstelle LAN
erhält diesen Inhalt:
# /etc/systemd/network/50-LAN.network [Match] Name = LAN [Network] Description = Interne Schnittstelle eines kleinen Multifunktions-Routers DHCPServer = yes Address = 192.168.33.11/24 [DHCPServer] PoolOffset = 64 PoolSize = 64 EmitRouter = yes EmitDNS = yes DNS = 192.0.2.53 203.0.113.53 EmitDomains = yes Domains = ubuntuusers.example.net #SendOption = option:type:value
Die Option "
DHCPServer = yes
" schaltet den DHCPv4-Server auf dieser Schnittstelle ein.Die Angabe "
Address = 192.168.33.11/24
" hat an dieser Stelle mehrere Effekte:Sie gibt der Schnittstelle diese Adresse, ordnet der Schnittstelle einen entsprechenden Leitweg zu und definiert die Broadcast-Adresse für dieses Netzwerk.
Außerdem wird der DHCP-Server nur Adressen aus diesem Netzwerk vergeben.
Der DHCP-Server selbst wird in einem eigenen Abschnitt weiter konfiguriert:
PoolOffset
undPoolSize
steuern, welche Adressen vergeben werden können,die Optionen
EMITusw
verlangen, dass Router, DNS-Namensserver und DNS-Suchdomänen per DHCP an die Clienten verteilt wird; dabei stehen die Werte für diese Optionen als Liste in den Zeilen mitDNS=
undDomains=
.Die IP-Adresse des Gateways ergibt sich immer automatisch als Adresse der Schnittstelle.
Die Zeilen
DNS=
undDomains=
könnte man auch weglassen, dann würden diese Werte ebenfalls automatisch bestimmt auf Grund dessen, was dieser Router ohnehin selbst schon darüber weiß.Mit dem mehrfach verwendbaren Schlüsselwort
SendOption
kann man bei Bedarf eine beliebige DHCP-Option definieren.
Die feste Zuordnung von IP-Adressen ist über den DHCP-Server von systemd-networkd nicht möglich.
DHCP-Server mit NetworkManager¶
NetworkManager startet automatisch auf einer Schnittstelle LAN
einen DHCP-Server, wenn im zugeordneten Verbindungsprofil für die IPv4-Methode der Wert shared
gewählt wird. Dies wird in der GUI als „Gemeinsam mit anderen Rechnern“ dargestellt. Man kann in der GUI nm-connection-editor das Netzwerk definieren oder man verwendet die Vorgabe 10.42.X.0/24
. Im dritten Byte wird „X“, beginnend mit 0
hochgezählt, wenn man mehrere Schnittstellen in diesem Modus konfiguriert. Der Schnittstelle selbst kann man als Gateway für hier angeschlossenen Rechner eine benutzbare Adresse aus dem hier definierten Netz geben. Man kann aber Netzwerk und Vergabebereich der IP-Adressen nicht unabhängig voneinander festlegen. Die oben gestellte Aufgabe kann deshalb mit NetworkManager nur näherungsweise gelöst werden. Entweder muss man die Gateway-Adresse ändern oder den Vergabebereich für die Adressen erweitern. In der Datei für das Verbindungsprofil im Verzeichnis /etc/NetworkManager/system-connections/ sieht das so aus:
[ipv4] # Gateway-Adresse anders als in Aufgabenstellung: address1=192.168.33.64/26,192.168.33.80 # Vergabebereich anders als in Aufgabenstellung: #address1=192.168.33.0/24,192.168.33.11 method=shared
Die DNS-Server und DNS-Suchdomänen werden automatisch entsprechend den bereits für den Rechner geltenden Verhältnisse bestimmt. Da NetworkManager bei Desktop-Installationen normalerweise systemd-resolved als DNS-Cache einrichtet, wird in der Regel dieser Rechner der DNS-Nameserver für die an dieser Schnittstelle LAN
angeschlossenen Rechner.
Die feste Zuordnung von IP-Adressen ist über den DHCP-Server von NetworkManager nicht möglich.
NetworkManager benutzt den DHCP-Server aus dem Paket dnsmasq-base.
DHCP-Server mit dnsmasq¶
Der Artikel zu Dnsmasq wird vorausgesetzt. Dort ist auch die Konfiguration eines DHCP-Servers ausführlich erklärt. Dnsmasq (Abschnitt „Konfiguration-als-DHCP-Server“)
Datei /etc/dnsmasq.conf
interface=LAN interface=AUX no-dhcp-interface=Welt # dhcp-range=interface:LAN,AUX,192.168.33.64,192.168.33.127,12h # dhcp-range=interface:AUX,192.168.33.64,192.168.33.79,1h # dhcp-range=interface:LAN,192.168.33.80,192.168.33.127,infinite dhcp-range=192.168.33.64,192.168.33.127,12h # dhcp-host=<MAC-Adresse>,<IP-Adresse>,<Verleihdauer> dhcp-host=0A:01:02:42:25:67,192.168.33.129,infinite dhcp-host=0A:99:23:55:66:77,192.168.33.130,infinite dhcp-option=3,192.168.33.11
interface
schaltet den DNS-/DHCP-Server auf der genannten Schnittstelle ein.no-dhcp-interface
schaltet nur den DHCP-Server auf der genannten Schnittstelle aus.dhcp-range
legt für die genannte Schnittstellen-Liste (oder einzelne Schnittstelle) den zu vergebenden Adressbereich und die Verleihdauer fest.12h
bedeutet, dass die IP-Adresse 12 Stunden lang gültig ist und dann vom Client erneuert werden muss. Mit der Angabeinfinite
statt einer konkreten Verleihdauer verschenkt man die IP-Adresse auf ewig. Wenn man hier die Schnittstellen wegläßt, gilt die Option für alle Schnittstellen.dhcp-host
ermöglicht es Rechnern über deren DHCP-Client-ID (d.h. in der Regel die benutzte Ethernet-Adresse) eine feste IP-Adresse zuzuweisen.Mit
dhcp-option
kann man den Wert für einen beliebige DHCP-Option festlegen. Dies wird hier benutzt zur Definition des Gateways (= DHCP-Option 3). Genauso kann man auch DNS-Nameserver (= DHCP-Option 6), Suchdomänen (= DHCP-Option 119) und beliebige weitere Daten definieren.
Hinweis:
* Jede Schnittstelle muss unabhängig von dnsmasq selbst bereits eine IP-Adresse besitzen!