ubuntuusers.de

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.

Für die Funktionalität eines DHCP-Servers liefern die offiziellen Ubuntu-Paketquellen mehrere Alternativen:

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-Adresse 192.168.33.129 und entsprechend für die DHCP-Client-ID 0A:99:23:55:66:77 die IP-Adresse 192.168.33.130 reserviert.

  • ein lokales Netzwerk 192.168.33.0/24 mit Broadcast-Adresse 192.168.33.255

  • einen Leitweg ins Internet mit dem Gateway 192.168.33.11 (sog. "default route")

  • zwei DNS-Namensserver 192.0.2.53 und 203.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 und PoolSize 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 mit DNS= und Domains=.

    • Die IP-Adresse des Gateways ergibt sich immer automatisch als Adresse der Schnittstelle.

    • Die Zeilen DNS= und Domains= 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 Angabe infinite 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!

Diese Revision wurde am 22. Juni 2022 14:36 von kB erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: System, Netzwerk, Router