[[Vorlage(fortgeschritten)]] [[Vorlage(Getestet, general)]] {{{#!vorlage Wissen [:Pakete installieren: Installation von Programmen] [:Programme_starten: Starten von Programmen] [:Terminal: Ein Terminal öffnen] [:mit Root-Rechten arbeiten:] [:Router:] [:Router/Multifunktionsgerät:] }}} [[Inhaltsverzeichnis()]] 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 [:ISC-DHCPD: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. {{{#!vorlage 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: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 [#Links 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/systemd-resolved: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/#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=,, 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 [#Links 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. {{{#!vorlage Hinweis * Jede Schnittstelle muss unabhängig von dnsmasq selbst bereits eine IP-Adresse besitzen! }}} = Links = * [http://www.networksorcery.com/enp/protocol/bootp/options.htm DHCP-Optionen] {en} ## Dies gehört woanders hin: ## Auf die Konfiguration, mit welcher für LAN und WLAN ein gemeinsamer Adressbereich verwendet werden kann, wird in [:WLAN_Router#Netzwerkbruecke:WLAN_Router - Netzwerkbrücke] näher eingegangen. # tag: Netzwerk, Router, System