DHCPv6 (Stateful Address Configuration)
DHCP ist ein Protokoll, um die IP-Konfiguration in einem TCP/IP-Netzwerk zu verwalten und an die Hosts zu verteilen. Mit DHCP ist jede Netzwerk-Station in der Lage sich selber vollautomatisch zu konfigurieren.
Bei IPv6 benötigt die IP-Konfiguration eigentlich keinen DHCP-Dienst. Dafür gibt es die Stateless Address Autoconfiguration (SLAAC). Doch nicht alle IPv6-Clients können den DNS-Server auf diese Weise entgegennehmen (RDNSS-Option). DHCPv6 ist im Prinzip das einzige Verfahren, welches diese und weitere Angaben innerhalb der Autokonfiguration ergänzen kann. Um wie bei IPv4 mit DHCPv4 die gleichen Funktionalitäten für IPv6 zu ermöglichen, wurde DHCPv6 definiert.
Weil bei DHCPv6 die IP-Konfiguration zentral vergeben und gespeichert wird, spricht man von "Stateful" Address Configuration.
In der Praxis sieht die IP-Autokonfiguration häufig so aus: Per Router-Advertisement werden die IP-Grundparameter verteilt und mit DHCPv6 alles weitere. Die Autokonfiguration bleibt dabei "stateless". Anders sie es aus, wenn auch DHCPv6 der Präfix verteilt wird. Dann ist die Autokonfiguration "stateful".
Hinweis: Auch bei einer "stateful" IPv6-Konfiguration muss das Router-Advertisement aktiviert sein. Nur so kann jeder Host seine link-lokale IPv6-Adresse erzeugen. Dann allerdings ohne den globalen Netzpräfix für die globale IPv6-Adresse. Der globale Präfix ist in diesem Fall im DHCPv6-Server konfiguriert (stateful). Der generiert daraus die 128 Bit lange IPv6-Adresse für die anfragenden Clients. Welchen Hostanteil (Interface Identifier) der Server aus dem möglichen Adressraum verwendet, hängt dabei von der Implementierung ab.
Ablauf von DHCPv6
Der eigentliche Ablauf von DHCPv6 erfolgt in 4 Schritten (Schritt 3 bis 6). In der folgenden Beschreibung ist die vorhergehende Autokonfiguration der globalen IPv6-Adresse über SLAAC berücksichtigt (Schritt 1 und 2). Wobei das Router Advertisement (Schritt 2) der Router Solicitation (Schritt 1) zuvorkommen kann.
- Der Client bzw. Host sendet eine Router Solicitation (RS) an die Multicast-Adresse "ff02::2". Damit bittet der Client um einen Präfix für die globale IPv6-Adresse.
- Der zuständige Router antwortet mit einem Router Advertisement (RA). Die Nachricht enthält die MTU (Größe der IP-Pakete) und den globalen Präfix für das Netzwerk (stateless) oder das Flag "managed" (stateful).
- Dann sendet der Client eine DHCP-Solicitation-Nachricht an die DHCPv6-Multicast-Adresse "ff02::1:2" (alle DHCPv6-Server).
- Die erreichbaren DHCPv6-Server antworten mit einer DHCP-Advertisement-Nachricht, die die Parameter (DNS-Server, NTP-Server etc.) zur Vervollständigung der IP-Konfiguration enthält (bei stateful auch den globalen Präfix).
- Der Client wählt eine IP-Konfiguration aus und fordert sie beim jeweiligen DHCPv6-Server mit einem DHCPv6-Request explizit an.
- Der DHCPv6-Server speichert die IP-Konfiguration mit der Client-ID (Stateful Address Configuration) und bestätigt dem Client die IP-Konfiguration per DHCPv6-Reply. Alle anderen DHCPv6-Server, die keine Anforderung des Clients erhalten haben, geben ihre angebotene IPv6-Adresse wieder frei.
Der Client konfiguriert sich nach Erhalt der Bestätigung und kann anschließend im Netz mit einer globalen IPv6-Adresse kommunizieren.
DHCPv6 vs. Router Advertisment
Wenn man schon auf DHCPv6 nicht verzichten kann, dann wäre es konsequent, zumindest ganz auf die Router-Advertisements zu verzichten. Dafür müsste der DHCPv6-Server, wie bei DHCPv4, die Adresse des Default-Gateways an die Clients übermitteln. Aber das sieht die ursprüngliche Spezifikation zu DHCPv6 nicht vor. Hierzu gibt es nur den Vorschlag "DHCPv6 Route Options", womit sich die Adresse des Default-Gateways über DHCPv6 konfigurieren lässt, wie es bei DHCPv4 üblich ist. "DHCPv6 Route Options" würde es erlauben, DHCPv6 ohne Router-Advertisements zu betreiben. Allerdings ist es fraglich, ob das jemals so zum Einsatz kommen wird.
Deshalb gilt, dass jede vollständige Autokonfiguration immer mit Router-Advertisements erfolgen muss.
Aufgaben und Übungen mit dem Raspberry Pi
Wer mit IPv6 experimentieren will, der kann das zum Beispiel auf einem Raspberry Pi tun. Dazu gibt es ein paar Aufgaben und Übungen speziell für IPv6.
- IPv6 auf dem Raspberry Pi einschalten und konfigurieren
- IPv6 Privacy Extensions im Raspberry Pi aktivieren
- Feste IPv6-Adresse für den Raspberry Pi einrichten
- IPv6-Tunnel für SixXS mit aiccu einrichten (Raspberry Pi)
- IPv6-Firewall für einen IPv6-Tunnel einrichten (Raspberry Pi)
- IPv6-Gateway einrichten (Raspberry Pi)