Zum Inhalt

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 via systemd-networkd sowie die Erstellung robuster nftables-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 nftables zwingend 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)

  1. Führende Nullen weglassen: 0042 wird zu 42; 0000 wird zu 0.
  2. 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

  1. Router Solicitation (RS – Typ 133): Vom Host beim Systemstart gesendet, um sofortige Router Advertisements anzufordern.
  2. 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.
  3. 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).
  4. Neighbor Advertisement (NA – Typ 136): Ersetzt das ARP-Reply. Teilt dem anfragenden Host die MAC-Adresse des Ziels mit.
  5. 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:

sudo sysctl --system

Schritt 2: radvd installieren und konfigurieren

sudo apt update && sudo apt install -y radvd

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:

sudo systemctl enable --now radvd
sudo systemctl status radvd

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:

sudo networkctl reload
networkctl status eth0

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:

sudo nft -f /etc/nftables.conf
sudo nft list ruleset

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- und route-Befehle durch moderne Netlink-Kommandos (ip, ss, ip neigh).

    Zum iproute2 Leitfaden