Inhaltsverzeichnis
radvd ArchLinux
Der Linux IPv6 Router Advertisement Daemon (radvd) ist ein Advertisement Daemon-Server, welcher IPv6 Router Advertisements in einem Netzwerk verteilt.
Hinweis - Die nachfolgenden Ausführungen erheben keinen Anspruch auf Vollständigkeit, sondern stellen eine „Basiskonfiguration“ eins radvd-Servers für ein kleines privates Netzwerk dar!!!
Beschreibung | Externer Link |
---|---|
Homepage | https://radvd.litech.org/ |
Dokumentation | https://datatracker.ietf.org/doc/html/rfc2461 |
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 DHCP-Servers für IPv4
- eines DHCP-Servers für IPv6
- eines DHCP ISC Kea-Control-Agents (Steuerungs Agenten)
welche als internes, nicht nach aussen agierender DHCP-Server Konstrukt für ein privates Netzwerk mit einem Netz durchgeführt werden. Nachfolgendes Netz wird dabei verwaltet:
- Intranet - Domain: intra.tachtler.net - IPv4-Adressbereich: 192.168.0.0/24
- Intranet - Domain: intra.tachtler.net - IPv6-Adressbereich: fd00::dead:192:168:0:0/64
HINWEIS - Das Interface für das Intranet lautet in dieser Beispielkonfiguration: net1
Installation
Zur Installation von Linux IPv6 Router Advertisement Daemon (radvd) wird nachfolgendes Paket benötigt:
Mit nachfolgendem Befehl, wird das Pakete radvd
installiert:
# pacman --noconfirm -S radvd
Mit nachfolgendem Befehl kann überprüft werden, welche Inhalte mit den Paket radvd
installiert wurden.
# pacman -Qil radvd
Dienst/Deamon-Start einrichten
Um den Linux IPv6 Router Advertisement Daemon (radvd), welche als Dienst/Daemon als Hintergrundprozess laufen soll, auch nach einem Neustart des Servers zur Verfügung zu haben, soll der Dienste/Daemons mit dem Server mit gestartet werden, was mit nachfolgenden Befehl realisiert werden kann:
# systemctl enable radvd.service Created symlink /etc/systemd/system/multi-user.target.wants/radvd.service → /usr/lib/systemd/system/radvd.service.
Eine Überprüfung, ob beim Neustart des Server der radvd
-Dienst/Daemon wirklich mit gestartet wird, kann mit nachfolgenden Befehl erfolgen und sollte eine Anzeige, wie ebenfalls nachfolgend dargestellt ausgeben:
# systemctl list-unit-files --type=service | grep radvd radvd.service enabled disabled
bzw.
# systemctl is-enabled radvd.service enabled
ip6tables Regeln
Damit der Linux IPv6 Router Advertisement Daemon (radvd) auch erreichbar ist und nicht die Router-Advertisements vom Paketfilter ip6tables
blockiert werden, müssen nachfolgende Regeln zum ip6tables
-Regelwerk hinzugefügt werden.
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:
-A INPUT -p udp --dport 547 -j ACCEPT
-A FORWARD -p udp --dport 546 -j ACCEPT
und hier die Befehle:
# ip6tables -I INPUT 5 -p ipv6-icmp -j ACCEPT # ip6tables -I FORWARD 1 -p ipv6-icmp -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 58 -- * * ::/0 ::/0 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 0 0 0 ACCEPT 58 -- * * ::/0 ::/0 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 (FORWARD) zu sehen, hier nachfolgend zur Verdeutlichung noch einmal dargestellt (nur relevanter Ausschnitt):
... 5 0 0 ACCEPT 58 -- * * ::/0 ::/0 1 0 0 ACCEPT 58 -- * * ::/0 ::/0 ...
Um diese ip6tables
-Regel dauerhaft, auch nach einem Neustart des Server, weiterhin im ip6tables
-Regelwerk zu speichern, muss nachfolgend dargestellter Befehl abschliessend 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 Jun 10 21:15:13 2024 *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 Jun 10 21:15:13 2024 # Generated by ip6tables-save v1.8.7 on Mon Jun 10 21:15:13 2024 *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 ipv6-icmp -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 -p ipv6-icmp -j ACCEPT -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 COMMIT # Completed on Wed Mar 31 10:15:10 2022 # Generated by ip6tables-save v1.8.7 on Mon Jun 10 21:15:13 2024 *nat :PREROUTING ACCEPT [0:0] :INPUT ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] COMMIT # Completed on Mon Jun 10 21:15:13 2024
Konfiguration:
Nachfolgende Konfigurationsschritte sollen eine grundlegende Konfiguration des Linux IPv6 Router Advertisement Daemon (radvd) darstellen und erheben keinen Anspruch auf Vollständigkeit in Bezug auf die Möglichkeiten die der Linux IPv6 Router Advertisement Daemon (radvd) bietet.
/etc/radvd.conf
Nachfolgende Konfigurationsdatei /etc/radvd.conf
, stellt die Möglichkeit dar Router-Advertisements via IPv6 durchzuführen.
Dies ist die komplette Konfigurationsdatei:
interface net1 { AdvSendAdvert on; MinRtrAdvInterval 3; MaxRtrAdvInterval 10; AdvManagedFlag on; };
Erklärungen:
AdvSendAdvert on;
Der Parameter gibtan , ob der Router regelmässige Router-Ankündigungen sendet und auf Router-Anfragen antwortet oder nicht. Diese Option muss nicht mehr zuerst angegeben werden, aber sie muss auf on
stehen, um Advertisements auf dieser Schnittstelle zu aktivieren. (Standard: off
).
MinRtrAdvInterval 3;
Die Mindestzeit, die zwischen dem Senden von unaufgeforderten Multicast-Router-Advertisements von der Schnittstelle aus liegen darf, in Sekunden. Darf nicht weniger als 3 Sekunden und nicht mehr als 0,75 * MaxRtrAdvInterval
betragen. Minimum bei Verwendung von Mobile IPv6-Erweiterungen: 0.03. (Voreinstellung: 0,33
* MaxRtrAdvInterval
)
MaxRtrAdvInterval 10;
Die maximal zulässige Zeit zwischen dem Senden von unaufgeforderten Multicast-Router-Advertisements von der Schnittstelle, in Sekunden. Darf nicht kleiner als 4 Sekunden und nicht grösser als 1800 Sekunden sein. Minimum bei Verwendung von Mobile IPv6-Erweiterungen: 0.07. Bei Werten unter 0,2 Sekunden werden 0,02 Sekunden hinzugefügt, um die in RFC3775
spezifizierte Planungsgranularität zu berücksichtigen. (Standardwert: 600
Sekunden)
AdvManagedFlag on;
Wenn dieser Parameter gesetzt ist, verwenden die Hosts das verwaltete (zustandsbehaftete) Protokoll für die automatische Adressenkonfiguration zusätzlich zu den Adressen, die über die Zustandslose automatische Adressenkonfiguration konfiguriert werden. Die Verwendung dieses Parameters ist in RFC4862
beschrieben. (Standard: off
)
Erster Start
Mit nachfolgenden Befehlen werden die zuvor konfigurierten Dienste/Daemons von Linux IPv6 Router Advertisement Daemon (radvd) gestartet werden:
# systemctl start radvd.service
Mit nachfolgenden Befehlen kann überprüft werden, ob die entsprechenden Startvorgänge korrekt und wie gewünscht erfolgt sind:
# systemctl status radvd.service ● radvd.service - IPv6 Router Advertisement Daemon Loaded: loaded (/usr/lib/systemd/system/radvd.service; enabled; preset: di> Active: active (running) since Mon 2024-06-10 19:30:36 CEST; 4s ago Main PID: 3097 (radvd) Tasks: 2 (limit: 2315) Memory: 344.0K (peak: 804.0K) CPU: 1ms CGroup: /system.slice/radvd.service ├─3097 /usr/bin/radvd --nodaemon └─3098 /usr/bin/radvd --nodaemon Jun 10 19:30:36 server systemd[1]: Started IPv6 Router Advertisement Daemon. Jun 10 19:30:36 server radvd[3097]: [Jun 10 19:30:36] radvd (3097): version 2.1>