IPv6 in der Praxis: SLAAC-Autokonfiguration, NDP, Dual-Stack & ICMPv6-Firewalling
Erstellt: 08.11.2026 · Zuletzt aktualisiert: 08.11.2026 · Nejat Hakan
Management Summary: IPv6 ist weit mehr als nur IPv4 mit längeren Adressen: Es modernisiert das gesamte Internet-Protokoll-Ökosystem. Broadcasts und ARP wurden zugunsten des effizienten, multicastbasierten Neighbor Discovery Protocol (NDP) vollständig eliminiert. Statt auf statische Konfiguration oder zentrale DHCP-Server angewiesen zu sein, konfigurieren Hosts ihre Adressen über Stateless Address Autoconfiguration (SLAAC) autonom. Dieser Leitfaden behandelt die 128-Bit-Adressbereiche, die Mechanik der NDP-Nachrichten, das Aufsetzen eines Debian-IPv6-Routers mit
radvd, die Konfiguration von Dual-Stack viasystemd-networkdsowie die Erstellung robusternftables-Firewallregeln, die Path MTU Discovery nicht zerstören.
-
128-Bit-Adressbereiche
Struktureller Unterschied zwischen Link-Local (
fe80::/10), Unique Local (fc00::/7/fd00::/8) und Global Unicast (2000::/3). -
NDP ersetzt ARP
Wie Router Solicitations (RS), Router Advertisements (RA) und Neighbor Solicitations (NS) MAC-Adressen ohne störende Broadcasts auflösen.
-
Linux-Router &
radvd
Einen Debian-Server zum IPv6-Router machen: Kernel-Forwarding aktivieren, Router Advertisement Daemon (
radvd) konfigurieren und RDNSS verteilen. -
ICMPv6-Firewalling
Der fatale Fehler, alles ICMP zu blockieren: Erfahre, welche ICMPv6-Typen in
nftableszwingend erlaubt sein müssen, um Verbindungsabbrüche zu verhindern.
1. 128-Bit-Adressarchitektur & Gültigkeitsbereiche (Scopes)
Eine IPv6-Adresse besteht aus 128 binären Bits, dargestellt in acht Blöcken zu je vier Hexadezimalziffern, getrennt durch Doppelpunkte:
Vollständiges Format: 2001 : 0db8 : 0000 : 0042 : 0000 : 0000 : 0000 : 0001
Gekürzt (RFC 5952): 2001:db8:0:42::1
Die zwei Kürzungsregeln (RFC 5952)
- Führende Nullen weglassen:
0042wird zu42;0000wird zu0. - Doppelpunkt-Kürzung (
::): Aufeinanderfolgende Null-Blöcke dürfen genau einmal pro Adresse durch::ersetzt werden, um Mehrdeutigkeiten auszuschließen.
Standard-Subnetzgröße: Das universelle /64-Präfix
In IPv6 werden Endbenutzer-Subnetze standardmäßig mit einer Präfixlänge von /64 betrieben:
* Netzwerkpräfix (erste 64 Bit): Wird vom Provider, Router oder Rechenzentrum geroutet.
* Interface-Identifier (letzte 64 Bit): Adressiert das individuelle Endgerät (2^64 Adressen je Subnetz).
+------------------------------------+------------------------------------+
| 64-Bit Netzwerk-Routing-Präfix | 64-Bit Interface-Identifier |
| (Vom Router / Provider verteilt) | (Zufällig oder RFC 7217 Privacy) |
+------------------------------------+------------------------------------+
Essenzielle IPv6-Adressbereiche im Vergleich
| IPv6-Bereich | Präfix | Entsprechung in IPv4 | Verhalten & Routing |
|---|---|---|---|
| Loopback | ::1/128 |
127.0.0.1 |
Rein hostintern; verlässt das System niemals. |
| Link-Local | fe80::/10 |
169.254.0.0/16 |
Auf jedem aktiven Interface zwingend vorhanden. Wird nicht über Router hinweg geroutet. Erfordert einen Scope-Bezeichner (fe80::1%eth0). |
| Unique Local (ULA) | fc00::/7 (fd00::/8) |
RFC 1918 Privat | Für interne Firmennetze, Homelabs und Site-to-Site-VPNs. Wird im öffentlichen Internet nicht geroutet (RFC 4193). |
| Global Unicast (GUA) | 2000::/3 |
Öffentliche IPv4 | Weltweit eindeutige, öffentlich im Internet geroutete Adressen. |
| Multicast | ff00::/8 |
224.0.0.0/4 |
Eins-zu-Viele-Kommunikation. Ersetzt alle alten Broadcast-Mechanismen. |
2. Neighbor Discovery Protocol (NDP): Der moderne ARP-Ersatz
In IPv6 gibt es keine ARP-Broadcasts mehr, die das gesamte Subnetz belasten. Das Neighbor Discovery Protocol (NDP) wickelt die Adressauflösung und Router-Erkennung über zielgerichtete ICMPv6-Multicasts ab:
%%{init: {'flowchart': {'wrappingWidth': 350}}}%%
flowchart TB
A["Host tritt Netzwerk bei"] --> B["1. Router Solicitation<br/>ICMPv6 133 an ff02::2"]
B --> C["2. Router Advertisement<br/>ICMPv6 134 (/64 Präfix)"]
C --> D["3. SLAAC Autokonfiguration<br/>Präfix + Interface-ID"]
D --> E["4. Duplicate Address (DAD)<br/>Neighbor Solicitation 135"]
E --> F["5. L2-MAC-Auflösung<br/>NS & NA (Typ 136)"]
Die zentralen ICMPv6-NDP-Nachrichtentypen
- Router Solicitation (RS – Typ 133): Vom Host beim Systemstart gesendet, um sofortige Router Advertisements anzufordern.
- Router Advertisement (RA – Typ 134): Wird vom Router periodisch und auf RS-Anfragen gesendet. Verteilt das
/64-Präfix, Gateway-Informationen, MTU und DNS-Server. - Neighbor Solicitation (NS – Typ 135): Ersetzt den ARP-Request. Ermittelt die MAC-Adresse eines Nachbarn über dessen Solicited-Node-Multicast-Adresse (
ff02::1:ffxx:xxxx). - Neighbor Advertisement (NA – Typ 136): Ersetzt das ARP-Reply. Teilt dem anfragenden Host die MAC-Adresse des Ziels mit.
- Redirect (Typ 137): Informiert einen Host über ein günstigeres First-Hop-Gateway für ein bestimmtes Ziel.
3. Autokonfiguration: SLAAC vs. DHCPv6
IPv6 bietet zwei Verfahren zur dynamischen Adresszuweisung:
%%{init: {'flowchart': {'wrappingWidth': 350}}}%%
flowchart TB
RA["Router Advertisement<br/>empfangen"] --> FLAG{"M-Flag in RA prüfen"}
FLAG -->|"M=0 (SLAAC Basis)"| SLAAC_BASE["Host bildet IP<br/>autonom (/64 Präfix)"]
FLAG -->|"M=1 (Stateful)"| STATEF["Stateful DHCPv6<br/>IP & Optionen vom Server"]
SLAAC_BASE --> OPT{"O-Flag prüfen"}
OPT -->|"O=0"| SLAAC["Reines SLAAC<br/>RDNSS (RFC 8106) für DNS"]
OPT -->|"O=1"| STATEL["Stateless DHCPv6<br/>DNS/NTP von DHCPv6"]
- SLAAC (Stateless Address Autoconfiguration): Der Router führt kein Logbuch vergebener Adressen. Der Client generiert seine 64-Bit-Interface-ID eigenständig (über RFC 7217 Stable Privacy, um Hardware-Tracking zu verhindern).
- DHCPv6 (Stateful): Ein zentraler Server vergibt Adressen nach definierten Pools und speichert Zuweisungen.
4. Eigenen Debian-Linux-IPv6-Router mit radvd einrichten
So konfigurierst du einen Debian-Server als IPv6-Router, der das lokale Netzwerk über die Schnittstelle eth1 mit SLAAC versorgt:
Schritt 1: IPv6-Forwarding im Linux-Kernel aktivieren
Erstelle /etc/sysctl.d/70-ipv6-routing.conf:
# Datei: /etc/sysctl.d/70-ipv6-routing.conf
# Paketweiterleitung für IPv6 aktivieren
net.ipv6.conf.all.forwarding = 1
net.ipv6.conf.default.forwarding = 1
# Router Advertisements auch bei aktiviertem Forwarding auf WAN akzeptieren
net.ipv6.conf.eth0.accept_ra = 2
Aktivieren:
Schritt 2: radvd installieren und konfigurieren
Konfiguration in /etc/radvd.conf:
# Datei: /etc/radvd.conf
interface eth1 {
# Periodische Router Advertisements aktivieren (alle 60-200 Sekunden)
AdvSendAdvert on;
MinRtrAdvInterval 60;
MaxRtrAdvInterval 200;
# SLAAC nutzen (kein DHCPv6 zwingend erforderlich)
AdvManagedFlag off;
AdvOtherConfigFlag off;
# Lokales /64 Präfix für Clients ankündigen
prefix 2001:db8:cafe:1::/64 {
AdvOnLink on;
AdvAutonomous on;
AdvRouterAddr on;
};
# DNS-Server via RDNSS (RFC 8106) übermitteln
RDNSS 2001:4860:4860::8888 2606:4700:4700::1111 {
AdvRDNSSLifetime 600;
};
};
Dienst aktivieren und starten:
5. Dual-Stack Server-Konfiguration mit systemd-networkd
Ein Debian-Server mit fester IPv4-Adresse und dynamischer SLAAC-IPv6-Konfiguration:
# Datei: /etc/systemd/network/10-dualstack-eth0.network
[Match]
Name=eth0
[Network]
# Statische IPv4-Konfiguration
Address=192.168.1.50/24
Gateway=192.168.1.1
DNS=192.168.1.1
# IPv6-Konfiguration: SLAAC aktivieren & Router Advertisements annehmen
IPv6AcceptRA=yes
DHCP=no
# Optionale statische ULA-Adresse für interne Kommunikation
Address=fd00:dead:beef:1::50/64
[IPv6AcceptRA]
UseDNS=yes
UseAutonomousPrefix=yes
Netzwerkdienst neu laden:
6. Stateful nftables-Firewalling für IPv6: Das ICMPv6-Gebot
FATALER FEHLER: Niemals pauschal ICMPv6 blockieren
Unter IPv4 galt in alten Leitfäden oft fälschlicherweise DROP icmp. Wer dies unter IPv6 tut, zerstört die Netzwerkkonnektivität vollständig.
Ohne ICMPv6 versagt die Nachbarschaftsauflösung (NDP) und Path MTU Discovery (PMTUD) wird blockiert (Pakete, die größer als die Pfad-MTU sind, werden lautlos verworfen, was zu hängenden TLS-Verbindungen führt).
Produktionsreife /etc/nftables.conf für einen gehärteten Dual-Stack-Server:
# Datei: /etc/nftables.conf
#!/usr/sbin/nft -f
flush ruleset
table inet filter {
chain input {
type filter hook input priority filter; policy drop;
# 1. Bestehende und zugehörige Verbindungen erlauben
ct state established,related accept
# 2. Ungültige Pakete verwerfen
ct state invalid drop
# 3. Loopback-Verkehr vollständig erlauben
iif "lo" accept
# 4. ESSENZIELL: Unverzichtbare ICMPv6-Typen freigeben
ip6 nexthdr icmpv6 icmpv6 type {
destination-unreachable, # Typ 1: Fehlermeldungen
packet-too-big, # Typ 2: ZWINGEND für Path MTU Discovery
time-exceeded, # Typ 3: Traceroute / TTL-Ablauf
parameter-problem, # Typ 4: Header-Syntaxfehler
echo-request, # Typ 128: Ping-Diagnose
nd-router-advert, # Typ 134: SLAAC Router Advertisements
nd-neighbor-solicit, # Typ 135: NDP MAC-Auflösung
nd-neighbor-advert # Typ 136: NDP MAC-Antwort
} accept
# 5. SSH-Zugriff erlauben (IPv4 & IPv6)
tcp dport 22 accept
}
chain forward {
type filter hook forward priority filter; policy drop;
}
chain output {
type filter hook output priority filter; policy accept;
}
}
Regeln aktivieren:
7. IPv6-Diagnosewerkzeuge im Terminal
Verwende bei modernen Diagnosebefehlen stets das Flag -6:
# 1. Alle IPv6-Adressen kompakt auflisten
ip -6 -br addr show
# 2. IPv6-Routingtabelle prüfen (Default Gateway via fe80::...)
ip -6 route show
# 3. Neighbor-Cache prüfen (ersetzt 'arp -n')
ip -6 neigh show
# 4. IPv6-Verbindung und Latenzen testen
ping -6 -c 3 2606:4700:4700::1111
mtr -6 google.com
8. Nächste Schritte
Mit dem Fundament aus IPv4-Subnetting und moderner IPv6-Adressierung geht es an die souveräne Beherrschung des Standard-Werkzeugkastens unter Linux:
-
Die iproute2-Suite im Systemalltag
Ersetze veraltete
ifconfig-,netstat- undroute-Befehle durch moderne Netlink-Kommandos (ip,ss,ip neigh).