; Die Stateless Address Autoconfiguration, kurz SLAAC, dient der automatischen Konfiguration von Adressen und Routen der Hosts am Link.
* Damit reduziert IPv6 als Protokoll die
; Abhängigkeit von dritten Komponenten zur Organisation des Links.
== Beschreibung ==
* Die Nutzung von Stateless Address Autoconfiguration erfordert keine manuelle Konfiguration der Hosts und nur sehr wenige Konfigurationsschritte auf dem Router.
Automatische Konfiguration von IPv6-Adressen
* Damit einher geht der Verlust einer strengen Zuordnung von Adressen zu bestimmten Hosts.
* Stateless Address Autoconfiguration
* In Umgebungen wo die Zuordnung von Adressen zu Hosts zentral gesteuert werden soll, ist dieser Ansatz nicht ausreichend.
* Dort würde man auf DHCPv6 zurückgreifen.
* Aber auch ein simultaner Betrieb von DHCPv6 und Stateless Address Autoconfiguration wäre denkbar.
=== Autoconfiguration ===
; Motivation
SLAAC ist Bestandteil der Autoconfiguration, die drei wesentliche Aufgaben hat:
Reduzierung von Abhängigkeiten
* Generieren einer Link-local Address
* SLAAC reduziert IPv6 die Abhängigkeit von dritten Komponenten zur Organisation des Links
* Durchführen der Stateless Address Autoconfiguration
* Die Nutzung von Stateless Address Autoconfiguration erfordert keine manuelle Konfiguration der Hosts und nur sehr wenige Konfigurationsschritte auf dem Router
* Sicherstellen der Eindeutigkeit der generierten Adressen (Duplicate Address Detection)
* Damit einher geht der Verlust einer strengen Zuordnung von Adressen zu bestimmten Hosts
=== Prinzipieller Ablauf ===
; Aufgaben
: Abbildung 5.9 Prinzip von SLAAC
{| class="wikitable options col1center "
|-
! Aufgabe !! Beschreibung
|-
| 1 || [[Link-local Address]] generieren
|-
| 2 || Autokonfiguration durchführen
|-
| 3 || Duplicate Address Detection
|}
Den ersten Schritt macht der Host, indem er mittels Router Solicitation nach einem Router Advertisement fragt.
; Aressverwaltung
* Alternativ könnte er auch ein periodisches Router Advertisement abwarten, diese Geduld beobachtet man aber eher selten.
Umgebungen mit zentraler Adressverwaltung verwenden [[DHCPv6]]
Der Router verschickt das angeforderte Router Advertisement, welches alle konfigurationsrelevanten Daten enthält (Wir gehen der Einfachheit halber von nur einem Router aus.)
* Simultaner Betrieb von [[DHCPv6]] und Stateless Address Autoconfiguration ist möglich
Daraufhin führt der Host die Konfiguration des Interfaces durch und prüft die Eindeutigkeit der selbst erzeugten Adressen.
; Überblick
* Erst wenn diese Eindeutigkeit angenommen werden kann, ist die Konfiguration des Interfaces vollständig und gilt als beendet.
# Host fragt mit einer [[Router Solicitation]] nach einem [[Router Advertisement]]
# Router verschickt das angeforderte Router Advertisement mit den relevanten Daten
# Host konfiguriert sein Interface
# Host prüft die Eindeutigkeit der selbst erzeugten Adressen
<br clear=all>
Wenn diese Eindeutigkeit angenommen werden kann, ist die Konfiguration des Interfaces vollständig und gilt als beendet
=== Duplicate Address Detection ===
== Ablauf ==
Hinter der Duplicate Address Detection verbergen sich eigentlich mehrere Neighbor Solicitations.
=== Router Solicitation ===
* Wenn ein Node feststellen möchte, ob eine Adresse schon von einem anderen Node genutzt wird, dann versucht er die zugehörige Linklayer Address aufzulösen.
Host fragt mit [[Router Solicitation]] ein [[Router Advertisement]] an
* Bleibt eine Antwort aus, benutzt offensichtlich kein anderer Node auf dem Link die überprüfte Adresse.
* Router verschickt das angeforderte Router Advertisement
* Um Fehlschlüsse aufgrund von Paketverlusten zu vermeiden, sollen mehrere Neighbor Solicitations verschickt werden.
* enthält alle konfigurationsrelevanten Daten
Ab wann eine Adresse als eindeutig gilt, hängt von den Parametern der jeweiligen Implementierung ab.
* Jede Adresse hat anfangs den Status tentative (probeweise).
* Erst wenn die Duplicate Address Detection vollständig durchlaufen wurde, und keine Anzeichen darauf schließen lassen, dass die
Adresse bereits in Benutzung ist, wird die Adresse valid (gültig).
=== Autoconfiguration mitschneiden ===
; Konfiguration des Interfaces
Wir werden versuchen eine komplette Autoconfiguration von lynx mit Wireshark aufzufangen.
Daraufhin führt der Host die Konfiguration des Interfaces durch
* Vom Hochfahren des Interfaces bis zu seiner endgültigen Konfiguration.
* prüft die Eindeutigkeit der selbst erzeugten Adressen
Dazu öffnen wir ein root-Terminal auf lynx und fahren das Interface eth0 herunter:
Erst wenn diese Eindeutigkeit angenommen werden kann, ist die Konfiguration des Interfaces vollständig und gilt als beendet
root@lynx :~# ip link set down dev eth
Nun starten wir Wireshark und lassen ihn auf dem PseudoInterface any lauschen.
* Angehängt an die Router Solicitation ist, eine ICMPv6-Option mit der Link-layer Address des Absenders
Wireshark kann jetzt den Mitschnitt beenden.
* Von den vielen Paketen die wir mitgeschnitten haben sind nicht alle von Interesse.
=== Multicast DNS ===
Insbesondere die Pakete vom Typ Multicast DNS (mDNS) werden wir an dieser Stelle ignorieren.
* Multicast DNS erlaubt die Auflösung von Namen der Domain .local zu Linklocal Addresses.
* Leider belastet es dazu den Link ungefragt mit allerlei Paketen.
* Da wir im Workshop keine lokale Namensauflösung auf Multicast-Basis nutzen, kümmern wir uns nicht weiter um dieses Protokoll.
* Mehr zu Multicast DNS und seinem Nutzen für kleine Netze findet sich auf der gemeinsamen Website der Beteiligten Interessensgruppen. (http://www.multicastdns.org/)
So hat er die Chance, frühzeitig zu erfahren, ob sein Interface Identifier schon verwendet wird.
* Würde ein anderer Node seinen Interface Identifier bereits verwenden, so wäre dieser Node ebenfalls Mitglied der Multicast Group.
* Eine doppelt vorkommende Adresse würde dadurch schneller auffallen.
=== Gruppen mit mehreren Mitgliedern ===
Es wäre allerdings auch möglich, dass ein anderer Node eine ähnliche Adresse verwendet.
* Beispielsweise eine Adresse bei der sich die letzten 24 Bits gleichen.
* Beide Nodes wären nun in derselben Gruppe, jene mit der gemeinsamen Solicited Node Multicast Address.
* Beide Nodes würden auch Pakete empfangen, die nicht für sie bestimmt wären, die aufgrund der Ähnlichkeit der Adresse aber an die gemeinsame Gruppe geschickt wurden.
* Jeder Node muss deshalb prüfen, ob ein Paket, welches an die Gruppe adressiert wurde, auch wirklich für ihn von Belang ist.
* Auch lynx könnte Pakete empfangen, nach der Prüfung des Inhaltes aber feststellen, dass der eigene Interface Identifier davon nicht betroffen ist.
=== Duplicate Address Detection (Link-local) ===
Möchte lynx nun feststellen, ob die von ihm gewählte Adresse nicht nur vielleicht eindeutig ist, dann ist eine Duplicate Address Detection erfolgsversprechender.
* Wenn sie fehlschlägt, dann ist die von lynx gewählte Adresse sehr wahrscheinlich
Auch für diese Adresse muss eine Duplicate Address Detection durchgeführt werden.
* Die beginnt wieder mit dem Beitritt zu der passenden Multicast Group.
* Obwohl sich die Solicited Node Multicast Address für die Global Unicast Address nicht von der für die Link-local Address unterscheidet, versendet lynx einen neuen Multicast Listener Report.
* Der wesentliche Unterschied ist die Quelladresse des Paketes, siehe auch Abbildung 5.14.
Anstatt der Unspecified Address kommt diesmal die Link-local Address zum Einsatz.
* Der Rest des Paketes ist in Abbildung 5.15 dargestellt.
Unverändert geblieben ist der Beitritt zur Solicited Node Multicast Group, der erneut mithilfe von Changed to Exclude erreicht wurde.
traceroute to 2 a 1 :198:2 : a23 ::1 (2 a 1 :198:2 : a23 ::1) , '
</syntaxhighlight>
3 hops max , 8 byte packets
1 2 a 1 :198:2 :8 a23 ::1 2.2 4 ms
.162 ms
.193 ms
2 2 a 1 :198:2 : a23 ::1 13.255 ms 13.412 ms 19.135 ms
An erster Stelle steht der nächste Hop, in unserem Fall die Adresse des Interfaces eth1 von fuzzball.
; Da Echo Replies eintreffen, können wir davon ausgehen dass das Routing funktioniert
* Schon in der zweiten Zeile ist das Ziel erreicht.
Den Beweis können wir auch mit traceroute6 antreten:
<syntaxhighlight lang="bash" highlight="1" line copy>
traceroute6 -n 2a01:198:200:a23::1
</syntaxhighlight>
=== SLAAC unter Windows 8 ===
An erster Stelle steht der nächste Hop, in unserem Fall die Adresse des Interfaces eth1 von router
Nun werden wir die eben erworbenen Fähigkeiten zur Analyse einer Autoconfiguration auf felis anwenden.
* Schon in der zweiten Zeile ist das Ziel erreicht
* Bei dieser Gelegenheit werden wir auch Unterschiede entdecken, die durch Aktivierung von Privacy Extensions auftreten.
* Dazu öffnen wir als Administrator ein Terminal und stellen sicher das die Privacy Extensions aktiviert sind.
* Nach dem Betätigen der Tastenkombination Windowstaste+X erscheint ein Menü in dem wir den Punkt Command Prompt (Admin) auswählen:
: Abbildung 5.17 SLAAC unter Windows 8
C :\ Users \ user > netsh interface ipv6 set global randomizeidentifiers = enabled
Ok.
Leider kommt es unter Windows 8 beim Betrieb von Wireshark manchmal zu Problemen.
<noinclude>
* Der benötigte Treiber zum Mitschnitt von Daten heißt Windows Packet Capture (WinPcap), je nach Update-Stand von felis kann er funktionieren oder auch nicht.
* Als Lösung bietet es sich an, den Verkehr von eth1 auf fuzzball mitzuschreiben, auch dort kommen die Pakete vorbei.
Sobald Wireshark bereit ist, deaktivieren wir die LAN-Verbindung auf felis und aktivieren sie anschließend wieder.
* Bei einer Beobachtung von fuzzball aus, können wir alternativ auch einen Neustart von felis durchführen.
* In beiden Fällen ergibt sich ein Mitschnitt, der dem aus Abbildung 5.17 ähnlich sieht.
=== Eigene Untersuchungen ===
= Anhang =
Untersuchen Sie die einzelnen Pakete und finden Sie heraus, zu welchem Zweck jedes einzelne versendet wurde.
=== Siehe auch ===
* Sie können sich dabei auf ICMPv6 beschränken und auch die
{{Special:PrefixIndex/{{BASEPAGENAME}}/}}
Teile von MLDv2, die sich um Multicast DNS drehen, ignorieren.
=== Links ===
* Erkennen Sie anhand der Informationen in den Paketen, ob diese sich auf einen zufälligen (Privacy Extensions)
==== Weblinks ====
oder auf einen EUI-64-basierten Interface Identifier beziehen?
SLAAC reduziert IPv6 die Abhängigkeit von dritten Komponenten zur Organisation des Links
Die Nutzung von Stateless Address Autoconfiguration erfordert keine manuelle Konfiguration der Hosts und nur sehr wenige Konfigurationsschritte auf dem Router
Damit einher geht der Verlust einer strengen Zuordnung von Adressen zu bestimmten Hosts