Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
DHCP ISC DHC-Relay ArchLinux
DHCP ISC ist ein DHCP-Server, welcher die IP-Adressverteilung in einem Netzwerk realisieren kann. Der DHCP-Server des ISC (Internet System Consortium) ist einer der meist eingesetzten DHCP-Server weltweit.
Hinweis - Die nachfolgenden Ausführungen erheben keinen Anspruch auf Vollständigkeit, sondern stellen eine „Basiskonfiguration“ eins DHC-Relay-Servers für ein kleines privates Netzwerk dar!!!
Ab hier werden zur Ausführung nachfolgender Befehle root
-Rechte benötigt. Um der Benutzer root
zu werden, melden Sie sich bitte als root
-Benutzer am System an, oder wechseln mit nachfolgendem Befehl zum Benutzer root
:
$ su - Password:
Überblick
Im nachfolgenden soll die Konfiguration
- eines DHC-Relays
welches als internes, nicht nach außen agierender DHC-Relay Konstrukt für ein privates Netzwerk mit drei Netzen durchgeführt werden soll. Nachfolgende Netze werden dabei verwaltet:
- IDMZ - Domain: idmz.tachtler.net - IP-Adressbereich: 192.168.0.0/24
- EDMZ - Domain: edmz.tachtler.net - IP-Adressbereich: 192.168.1.0/24
- Intranet - Domain: intra.tachtler.net - IP-Adressbereich: 192.168.2.0/24
Installation
Um eine DHC-Relay unter Linux, hier im speziellen unter ArchLinux zu realisieren, wird ein Programm mit dem Namen
dhcrelay
benötigt.
Dieses Programm mit dem Namen dhcrelay
befindet sich ebenfalls im Paket
WICHTIG - Die Installation des Paketes dhcp
erfolgt auf dem GATEWAY, welches als Router in z.B. das Netz 192.168.2.0/24 - intra.tachtler.net
fungiert !!!
Mit nachfolgendem Befehl, wird das Pakete dhcp
installiert:
# pacman --noconfirm -S dhcp
Mit nachfolgendem Befehl kann überprüft werden, welche Inhalte mit den Paket dhcp
installiert wurden.
# pacman -Qil dhcp Name : dhcp Version : 4.4.2.P1-1 Description : A DHCP server, client, and relay agent Architecture : x86_64 URL : https://www.isc.org/dhcp/ Licenses : custom:isc-dhcp Groups : None Provides : None Depends On : glibc libldap Optional Deps : None Required By : None Optional For : None Conflicts With : None Replaces : None Installed Size : 9.50 MiB Packager : Christian Hesse <arch@eworm.de> Build Date : Wed 26 May 2021 11:58:04 PM CEST Install Date : Mon 12 Jul 2021 09:54:34 AM CEST Install Reason : Explicitly installed Install Script : No Validated By : Signature dhcp /etc/ dhcp /etc/dhcpd.conf dhcp /etc/dhcpd6.conf dhcp /usr/ dhcp /usr/bin/ dhcp /usr/bin/dhcpd dhcp /usr/bin/dhcrelay dhcp /usr/bin/omshell dhcp /usr/include/ dhcp /usr/include/dhcpctl/ dhcp /usr/include/dhcpctl/dhcpctl.h dhcp /usr/include/omapip/ dhcp /usr/include/omapip/alloc.h dhcp /usr/include/omapip/buffer.h dhcp /usr/include/omapip/convert.h dhcp /usr/include/omapip/hash.h dhcp /usr/include/omapip/isclib.h dhcp /usr/include/omapip/omapip.h dhcp /usr/include/omapip/omapip_p.h dhcp /usr/include/omapip/result.h dhcp /usr/include/omapip/trace.h dhcp /usr/lib/ dhcp /usr/lib/libdhcp.a dhcp /usr/lib/libdhcpctl.a dhcp /usr/lib/libomapi.a dhcp /usr/lib/systemd/ dhcp /usr/lib/systemd/system/ dhcp /usr/lib/systemd/system/dhcpd4.service dhcp /usr/lib/systemd/system/dhcpd6.service dhcp /usr/lib/sysusers.d/ dhcp /usr/lib/sysusers.d/dhcp.conf dhcp /usr/lib/tmpfiles.d/ dhcp /usr/lib/tmpfiles.d/dhcp.conf dhcp /usr/share/ dhcp /usr/share/licenses/ dhcp /usr/share/licenses/dhcp/ dhcp /usr/share/licenses/dhcp/LICENSE dhcp /usr/share/man/ dhcp /usr/share/man/man1/ dhcp /usr/share/man/man1/omshell.1.gz dhcp /usr/share/man/man3/ dhcp /usr/share/man/man3/dhcpctl.3.gz dhcp /usr/share/man/man3/omapi.3.gz dhcp /usr/share/man/man5/ dhcp /usr/share/man/man5/dhcp-eval.5.gz dhcp /usr/share/man/man5/dhcp-options.5.gz dhcp /usr/share/man/man5/dhcpd.conf.5.gz dhcp /usr/share/man/man5/dhcpd.leases.5.gz dhcp /usr/share/man/man8/ dhcp /usr/share/man/man8/dhcpd.8.gz dhcp /usr/share/man/man8/dhcrelay.8.gz
Dienst/Deamon-Start konfigurieren
Leider gibt es aktuell im Paket dhcp
keine systemd
-Start-Skripte für den Dienst dhcrealy
, so das diese Skripte wie mit nachfolgenden Befehlen selbst erstellt werden müssen.
/usr/lib/tmpfiles.d/dhcrelay.conf
Um später bestimmte Pfade für die PID
-Dateien beim starten nutzen zu können, müssen diese im systemd
zuerst eingerichtet werden, so dass diese auch permanent den systemd
-Start-Skripten zur Verfügung stehen.
Dazu muss eine neue Konfigurationsdatei mit nachfolgendem Befehl und nachfolgendem Inhalt erstellt werden:
# touch /usr/lib/tmpfiles.d/dhcrelay.conf
Der Inhalt der Konfigurationsdatei /usr/lib/tmpfiles.d/dhcrelay.conf
kann dann wie folgt aussehen:
# Configuration to create /run/dhcrelay4 and /run/dhcrelay6 directory # Used as part of systemd's tmpfiles d /run/dhcrelay4 755 dhcp dhcp d /run/dhcrelay6 755 dhcp dhcp
/usr/lib/systemd/system/dhcrelay4.service
Nachfolgender systemd
-Service kann nun unter nachfolgendem Pfad und mit nachfolgendem Namen angelegt werdenn:
/usr/lib/systemd/system/dhcrelay4.service
Der Inhalt des Service kann wie folgt aussehen:
[Unit] Description=IPv4 DHCRELAY server After=network.target network-online.target Wants=network-online.target [Service] Type=forking ExecStart=/usr/bin/dhcrelay -4 -q -pf /run/dhcrelay4/dhcrelay4.pid 192.168.0.20 RuntimeDirectory=dhcrelay4 PIDFile=/run/dhcrelay4/dhcrelay4.pid User=dhcp AmbientCapabilities=CAP_NET_BIND_SERVICE CAP_NET_RAW ProtectSystem=full ProtectHome=on KillSignal=SIGINT # We pull in network-online.target for a configured network connection. # However this is not guaranteed to be the network connection our # networks are configured for. So try to restart on failure with a delay # of two seconds. Rate limiting kicks in after 12 seconds. RestartSec=2s Restart=on-failure StartLimitInterval=12s [Install] WantedBy=multi-user.target
HINWEIS - Wichtig ist hier die IP-Adresse am Ende in nachfolgender Zeile:
ExecStart=/usr/bin/dhcrelay -4 -q -pf /run/dhcrelay4/dhcrelay4.pid 192.168.0.20
Option | Beschreibung |
---|---|
192.168.0.20 | DHCP-Server an den die DHCPREQUEST-Anfragen weitergeleitet werden |
Abschließend muss die systemd
Start Datei noch systemd
bekannt gemacht werden, was mit nachfolgendem Befehl durchgeführt werden kann:
# systemctl --system daemon-reload
/usr/lib/systemd/system/dhcrelay6.service
Nachfolgender systemd
-Service kann nun unter nachfolgendem Pfad und mit nachfolgendem Namen angelegt werdenn:
/usr/lib/systemd/system/dhcrelay6.service
Der Inhalt des Service kann wie folgt aussehen:
[Unit] Description=IPv6 DHCRELAY server After=network.target network-online.target Wants=network-online.target [Service] Type=forking # DHCP-Relay is only necassary when more than one interface is available. ExecStart=/usr/bin/dhcrelay -6 -q -pf /run/dhcrelay6/dhcrelay6.pid -l net1 -u net0 RuntimeDirectory=dhcrelay6 PIDFile=/run/dhcrelay6/dhcrelay6.pid User=dhcp AmbientCapabilities=CAP_NET_BIND_SERVICE CAP_NET_RAW ProtectSystem=full ProtectHome=on KillSignal=SIGINT # We pull in network-online.target for a configured network connection. # However this is not guaranteed to be the network connection our # networks are configured for. So try to restart on failure with a delay # of two seconds. Rate limiting kicks in after 12 seconds. RestartSec=2s Restart=on-failure StartLimitInterval=12s [Install] WantedBy=multi-user.target
HINWEIS - Wichtig sind hier am Ende der nachfolgenden Zeile, die Parameter mit den richtigen Interfaces:
ExecStart=/usr/bin/dhcrelay -6 -q -pf /run/dhcrelay6/dhcrelay6.pid -l eth0 -u eth1
Option | Beschreibung |
---|---|
-l eth0 | Lauscht auf DHCPREQUEST auf dem Interface eth0 |
-u eth1 | Weiterleitung der DHCPREQUEST an das Interface eth1 |
Abschließend muss die systemd
Start Datei noch systemd
bekannt gemacht werden, was mit nachfolgendem Befehl durchgeführt werden kann:
# systemctl --system daemon-reload