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

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:

Installation

Um eine DHC-Relay unter Linux, hier im speziellen unter ArchLinux zu realisieren, wird ein Programm mit dem Namen

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

Installationsverlauf

Mit nachfolgendem Befehl kann überprüft werden, welche Inhalte mit den Paket dhcp installiert wurden.

# pacman -Qil dhcp

Installierte Dateien

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:

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:

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 eth1 -u eth0
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

iptables/ip6tables Regeln

Damit der DHC-Relay-Server auch erreichbar ist und nicht die Weitergabe der IP-Address Informationen vom Paketfilter iptables und ip6tables blockiert wird, muss nachfolgende Regel zum iptables bzw. ip6tables-Regelwerk hinzugefügt werden.

Um die aktuellen iptables-Regeln erweitern zu können, sollten diese erst einmal aufgelistet werden, was mit nachfolgendem Befehl durchgeführt werden kann:

# iptables -nvL --line-numbers
Chain INPUT (policy DROP 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        6   398 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
2        0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           
3        0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
4        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:22
5        0     0 LOG        all  --  *      *       0.0.0.0/0            0.0.0.0/0            LOG flags 0 level 5 prefix "REC-INP Defend "
6        0     0 REJECT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with tcp-reset
7        0     0 REJECT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
8        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-proto-unreachable

Chain FORWARD (policy DROP 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 LOG        all  --  *      *       0.0.0.0/0            0.0.0.0/0            LOG flags 0 level 5 prefix "REC-FWD Defend "
2        0     0 REJECT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with tcp-reset
3        0     0 REJECT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
4        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-proto-unreachable

Chain OUTPUT (policy ACCEPT 8 packets, 478 bytes)
num   pkts bytes target     prot opt in     out     source               destination         

Nachfolgende Befehle, fügen folgende iptables-Regeln dem iptables-Regelwerk nach der Position 4 hinzu, ohne das der Paketfilter angehalten werden muss:

und hier die Befehle:

# iptables -I INPUT 5 -p udp --dport 67 -j ACCEPT
# iptables -I OUTPUT 1 -p udp --dport 68 -j ACCEPT

Ein erneute Abfrage des iptables-Regelwerts, sollte dann nachfolgend dargestellte Ausgabe ergeben, was mit folgendem Befehl durchgeführt werden kann:

# iptables -nvL --line-numbers
Chain INPUT (policy DROP 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1       29 15634 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
2        0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           
3        0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
4        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:22
5        0     0 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0            udp dpt:67
6        0     0 LOG        all  --  *      *       0.0.0.0/0            0.0.0.0/0            LOG flags 0 level 5 prefix "REC-INP Defend "
7        0     0 REJECT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with tcp-reset
8        0     0 REJECT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
9        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-proto-unreachable

Chain FORWARD (policy DROP 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 LOG        all  --  *      *       0.0.0.0/0            0.0.0.0/0            LOG flags 0 level 5 prefix "REC-FWD Defend "
2        0     0 REJECT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with tcp-reset
3        0     0 REJECT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
4        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-proto-unreachable

Chain OUTPUT (policy ACCEPT 38 packets, 4765 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0            udp dpt:68

Die neuen Zeilen sind an Position 5 (INPUT) und Postition 1 (OUTPUT) zu sehen, hier nachfolgend zur Verdeutlichung noch einmal dargestellt (nur relevanter Ausschnitt):

...
5        0     0 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0            udp dpt:67
...
1        0     0 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0            udp dpt:68
...

Um diese iptables-Regel dauerhaft, auch nach einem Neustart des Server, weiterhin im iptables-Regelwerk zu speichern, muss nachfolgend dargestellter Befehl abschließend noch ausgeführt werden:

# /usr/sbin/iptables-save > /etc/iptables/iptables.rules

Nachfolgender Befehl kann dazu verwendet werden, um zu überprüfen, ob das iptables-Regelwerk auch korrekt gespeichert wurde:

# cat /etc/iptables/iptables.rules
# Generated by iptables-save v1.8.7 on Mon Jul 12 16:38:03 2021
*mangle
:PREROUTING ACCEPT [179:83438]
:INPUT ACCEPT [179:83438]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [221:105831]
:POSTROUTING ACCEPT [222:105904]
COMMIT
# Completed on Mon Jul 12 16:38:03 2021
# Generated by iptables-save v1.8.7 on Mon Jul 12 16:38:03 2021
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [221:105831]
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p udp -m udp --dport 67 -j ACCEPT
-A INPUT -j LOG --log-prefix "REC-INP Defend " --log-level 5
-A INPUT -p tcp -j REJECT --reject-with tcp-reset
-A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable
-A INPUT -j REJECT --reject-with icmp-proto-unreachable
-A FORWARD -j LOG --log-prefix "REC-FWD Defend " --log-level 5
-A FORWARD -p tcp -j REJECT --reject-with tcp-reset
-A FORWARD -p udp -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -j REJECT --reject-with icmp-proto-unreachable
-A OUTPUT -p udp -m udp --dport 68 -j ACCEPT
COMMIT
# Completed on Mon Jul 12 16:38:03 2021
# Generated by iptables-save v1.8.7 on Mon Jul 12 16:38:03 2021
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [33:2171]
:POSTROUTING ACCEPT [33:2171]
COMMIT
# Completed on Mon Jul 12 16:38:03 2021

Um die aktuellen ip6tables-Regeln erweitern zu können, sollten diese erst einmal aufgelistet werden, was mit nachfolgendem Befehl durchgeführt werden kann:

# ip6tables -nvL --line-numbers
Chain INPUT (policy DROP 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 ACCEPT     all      *      *       ::/0                 ::/0                 ctstate RELATED,ESTABLISHED
2        0     0 ACCEPT     icmp     *      *       ::/0                 ::/0                
3        0     0 ACCEPT     all      lo     *       ::/0                 ::/0                
4        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0                 tcp dpt:22
5        0     0 LOG        all      *      *       ::/0                 ::/0                 LOG flags 0 level 5 prefix "REC-INP Defend "
6        0     0 REJECT     tcp      *      *       ::/0                 ::/0                 reject-with tcp-reset
7        0     0 REJECT     udp      *      *       ::/0                 ::/0                 reject-with icmp6-port-unreachable
8        0     0 REJECT     all      *      *       ::/0                 ::/0                 reject-with icmp6-addr-unreachable

Chain FORWARD (policy DROP 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 LOG        all      *      *       ::/0                 ::/0                 LOG flags 0 level 5 prefix "REC-FWD Defend "
2        0     0 REJECT     tcp      *      *       ::/0                 ::/0                 reject-with tcp-reset
3        0     0 REJECT     udp      *      *       ::/0                 ::/0                 reject-with icmp6-port-unreachable
4        0     0 REJECT     all      *      *       ::/0                 ::/0                 reject-with icmp6-addr-unreachable

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination

Nachfolgende Befehle, fügen folgende ip6tables-Regeln dem ip6tables-Regelwerk nach der Position 4 hinzu, ohne das der Paketfilter angehalten werden muss:

und hier die Befehle:

# ip6tables -I INPUT 5 -p udp --dport 547 -j ACCEPT
# ip6tables -I OUTPUT 1 -p udp --dport 546 -j ACCEPT

Ein erneute Abfrage des ip6tables-Regelwerts, sollte dann nachfolgend dargestellte Ausgabe ergeben, was mit folgendem Befehl durchgeführt werden kann:

# ip6tables -nvL --line-numbers
Chain INPUT (policy DROP 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 ACCEPT     all      *      *       ::/0                 ::/0                 ctstate RELATED,ESTABLISHED
2        0     0 ACCEPT     icmp     *      *       ::/0                 ::/0                
3        0     0 ACCEPT     all      lo     *       ::/0                 ::/0                
4        0     0 ACCEPT     tcp      *      *       ::/0                 ::/0                 tcp dpt:22
5        0     0 ACCEPT     udp      *      *       ::/0                 ::/0                 udp dpt:547
6        0     0 LOG        all      *      *       ::/0                 ::/0                 LOG flags 0 level 5 prefix "REC-INP Defend "
7        0     0 REJECT     tcp      *      *       ::/0                 ::/0                 reject-with tcp-reset
8        0     0 REJECT     udp      *      *       ::/0                 ::/0                 reject-with icmp6-port-unreachable
9        0     0 REJECT     all      *      *       ::/0                 ::/0                 reject-with icmp6-addr-unreachable

Chain FORWARD (policy DROP 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 LOG        all      *      *       ::/0                 ::/0                 LOG flags 0 level 5 prefix "REC-FWD Defend "
2        0     0 REJECT     tcp      *      *       ::/0                 ::/0                 reject-with tcp-reset
3        0     0 REJECT     udp      *      *       ::/0                 ::/0                 reject-with icmp6-port-unreachable
4        0     0 REJECT     all      *      *       ::/0                 ::/0                 reject-with icmp6-addr-unreachable

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 ACCEPT     udp      *      *       ::/0                 ::/0                 udp dpt:546

Die neuen Zeilen sind an Position 5 (INPUT) und Postition 1 (OUTPUT) zu sehen, hier nachfolgend zur Verdeutlichung noch einmal dargestellt (nur relevanter Ausschnitt):

...
5        0     0 ACCEPT     udp      *      *       ::/0                 ::/0                 udp dpt:547 
...
1        0     0 ACCEPT     udp      *      *       ::/0                 ::/0                 udp dpt:546
...

Um diese ip6tables-Regel dauerhaft, auch nach einem Neustart des Server, weiterhin im ip6tables-Regelwerk zu speichern, muss nachfolgend dargestellter Befehl abschließend noch ausgeführt werden:

# /usr/sbin/ip6tables-save > /etc/iptables/ip6tables.rules 

Nachfolgender Befehl kann dazu verwendet werden, um zu überprüfen, ob das ip6tables-Regelwerk auch korrekt gespeichert wurde:

# cat /etc/iptables/ip6tables.rules
# Generated by ip6tables-save v1.8.7 on Mon Jul 12 16:48:38 2021
*mangle
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT
# Completed on Mon Jul 12 16:48:38 2021
# Generated by ip6tables-save v1.8.7 on Mon Jul 12 16:48:38 2021
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p udp -m udp --dport 547 -j ACCEPT
-A INPUT -j LOG --log-prefix "REC-INP Defend " --log-level 5
-A INPUT -p tcp -j REJECT --reject-with tcp-reset
-A INPUT -p udp -j REJECT --reject-with icmp6-port-unreachable
-A INPUT -j REJECT --reject-with icmp6-addr-unreachable
-A FORWARD -j LOG --log-prefix "REC-FWD Defend " --log-level 5
-A FORWARD -p tcp -j REJECT --reject-with tcp-reset
-A FORWARD -p udp -j REJECT --reject-with icmp6-port-unreachable
-A FORWARD -j REJECT --reject-with icmp6-addr-unreachable
-A OUTPUT -p udp -m udp --dport 546 -j ACCEPT
COMMIT
# Completed on Mon Jul 12 16:48:38 2021
# Generated by ip6tables-save v1.8.7 on Mon Jul 12 16:48:38 2021
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT
# Completed on Mon Jul 12 16:48:38 2021

DHC-Relay starten

Falls alle voranstehenden Schritte wie beschrieben durchgeführt wurden, Installation, iptables/ip6tables, sollte dem ersten Start nichts im Wege stehen und dies mit nachfolgendem Befehl durchgeführt werden:

# systemctl start dhcrelay4.service dhcrelay6.service

DHC-Relay Überprüfung

Ob der DHC-Relay-Server, sprich der dhcrelay4-Dienst/Deamon und der dhcrelay6-Dienst/Deamon auch tatsächlich als Hintergrundprozesse laufen, kann mit nachfolgendem Befehl überprüft werden (Es sollte eine Ausgabe wie nachfolgend dargestellt, erfolgen - es kommt auf die zweite und dritte Zeile an!):

# ps auxwf | grep dhcrelay
root       64385  0.0  0.1   6736  2432 pts/1    S+   16:53   0:00                      \_ grep dhcrelay
dhcp       64381  0.0  0.1   5872  3496 ?        Ss   16:50   0:00 /usr/bin/dhcrelay -4 -q -pf /run/dhcrelay4/dhcrelay4.pid 10.0.0.20
dhcp       64382  0.0  0.1   6168  3788 ?        Ss   16:50   0:00 /usr/bin/dhcrelay -6 -q -pf /run/dhcrelay6/dhcrelay6.pid -l net1 -u net0

Eine weitere Überprüfung, ob der erste Start erfolgreich war, kann durch Einsicht in das

durchgeführt werden.

Die Ausgabe des systemd-journald kann mit nachfolgendem Befehl erfolgen, die Ausgabe sollte wie nachfolgend dargestellt aussehen:

# journalctl -u dhcrelay?.service
Jul 12 16:59:15 vml010 systemd[1]: Starting IPv4 DHCRELAY server...
Jul 12 16:59:15 vml010 systemd[1]: Starting IPv6 DHCRELAY server...
Jul 12 16:59:15 vml010 dhcrelay[64601]: Bound to *:547
Jul 12 16:59:15 vml010 systemd[1]: Started IPv6 DHCRELAY server.
Jul 12 16:59:15 vml010 systemd[1]: Started IPv4 DHCRELAY server.

Interface Überprüfung

Ob und an welchen Interfaces das DHC-Relay „lauscht“, bzw. DHCP-Requests weitergeleitet werden, kann mit nachfolgendem Befehl überprüft werden:

# ss -taub | grep -E 'bootps|dhcpv6-server'
udp   UNCONN 0      0                          0.0.0.0:bootps             0.0.0.0:*                               
udp   UNCONN 0      0                                *:dhcpv6-server            *:*

:!: HINWEIS - Auch bei der Konfiguration nur ein Netzwerk-Interface für eingehende Broadcast-Anfragen zu nutzen, wird immer 0.0.0.0:67 als „Listener“ IP-Adresse angezeigt.

IP-Adressanfragen Überprüfung

Um die Anfrage einer IP-Adresse zu überprüfen, kann ein Blick in das systemd-journald geworfen werden, was mit nachfolgendem Befehl durchgeführt werden kann (nur relevanter Auszug):



FIXME