Benutzer-Werkzeuge

Webseiten-Werkzeuge


tachtler:dhcp_isc_dhc-relay_archlinux

Dies ist eine alte Version des Dokuments!


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

  • dhcp - ist im community-Repository von ArchLinux enthalten.

:!: 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

Dienst/Deamon-Start einrichten

Um die DHC-Relay Dienste, welche als Dienst/Deamon als Hintergrundprozesse laufen, auch nach einem Neustart des Servers zur Verfügung zu haben, sollen die Dienst/Daemon mit dem Server mit gestartet werden, was mit nachfolgendem Befehlen realisiert werden kann:

# systemctl enable dhcrelay4.service dhcrelay6.service 
Created symlink /etc/systemd/system/multi-user.target.wants/dhcrelay4.service → /etc/systemd/system/dhcrelay4.service.
Created symlink /etc/systemd/system/multi-user.target.wants/dhcrelay6.service → /etc/systemd/system/dhcrelay6.service.

Eine Überprüfung, ob beim Neustart des Server der dhcrelay4-Dienst/Deamon und der dhcrelay6-Dienst/Deamon wirklich mit gestartet werden, kann mit nachfolgendem Befehl erfolgen und sollte eine Anzeige, wie ebenfalls nachfolgend dargestellt ausgeben:

# systemctl list-unit-files --type=service | grep dhcrelay
dhcrelay4.service                          enabled         disabled
dhcrelay6.service                          enabled         disabled

bzw.

# systemctl is-enabled dhcrelay4.service dhcrelay6.service
enabled
enabled
Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
tachtler/dhcp_isc_dhc-relay_archlinux.1626099538.txt.gz · Zuletzt geändert: 2021/07/12 16:18 von klaus