Zum Inhalt springen

IPv6/Host/Neighbor Cache: Unterschied zwischen den Versionen

Aus Foxwiki
 
(23 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
'''IPv6 Neighbor Cache'''
'''IPv6/Host/Neighbor Cache'''


== Beschreibung ==
== Beschreibung ==
[[File:ipv6Abbildung4.5.png|mini|Nodes am internen Link]]
[[File:ipv6Abbildung4.5.png|mini|400px|Nodes am internen Link]]
* [[Router]]
* [[Router]]
* [[Linux]]
* [[Linux]]
Zeile 8: Zeile 8:


; Neighbor Discovery Protocol (NDP)
; Neighbor Discovery Protocol (NDP)
* Über die Link-local Addresses können Nodes auf dem internen Link kommunizieren
Über die Link-local Addresses können Nodes auf dem internen Link kommunizieren
* Dies kann mit [[Echo Requests]] getestet werden
* Dies kann mit [[Ping#Echo Requests]] getestet werden


; Link-local Addresses zu Link-layer Addresses auflösen
; Link-local Addresses zu Link-layer Addresses auflösen
Nodes waren in der Lage die Link-local Addresses ihrer Nachbarn zu gültigen Link-layer Addresses aufzulösen
Nodes sind in der Lage die Link-local Addresses ihrer Nachbarn zu gültigen Link-layer Addresses aufzulösen
* Unser Link internal ist ein virtuelles Ethernet, die Link-layer Addresses entsprechen in unserem Netz deshalb den bei Ethernet gebräuchlichen MAC-Adressen
 
* Zuständig für die Auflösung von IPv6-Adressen zu Link-layer Addresses ist das Neighbor Discovery Protocol (NDP), spezifiziert in [[RFC/4861|RFC 4861]]
; Neighbor Discovery Protocol (NDP)
Zuständig für die Auflösung von IPv6-Adressen zu Link-layer Addresses ist das Neighbor Discovery Protocol (NDP), spezifiziert in [[RFC/4861|RFC 4861]]


; [[NDP]] wird über [[ICMPv6]] transportiert
; [[NDP]] wird über [[ICMPv6]] transportiert
* Damit ist es von IPv6 abhängig, wenn es IPv6-Adressen auflösen soll
Damit ist es von IPv6 abhängig, wenn es IPv6-Adressen auflösen soll
* Wie und warum das dennoch funktioniert, werden wir uns gleich anschauen
* Wie und warum das dennoch funktioniert, werden wir uns gleich anschauen
* Vorher machen wir uns aber noch mit den Neighbor Caches vertraut
* Vorher machen wir uns aber noch mit den Neighbor Caches vertraut
* Jeder Node betreibt einen Neighbor Cache in dem er die Ergebnisse der Link-layerAdressauflösungen zwischenspeichert
* Jeder Node betreibt einen Neighbor Cache in dem er die Ergebnisse der Link-layerAdressauflösungen zwischenspeichert
Unter IPv4 haben wir für die Auflösung noch ARP benutzt, dessen Ergebnisse in der ARP-Tabelle zwischengespeichert wurden
 
Unter IPv4 wird für die Auflösung [[ARP]] genutzt
* Ergebnisse in ARP-Tabelle zwischengespeichert  


; Gültigkeit des Neighbor Caches
; Gültigkeit des Neighbor Caches
Zeile 30: Zeile 33:
Für das Einfangen eines ganz bestimmten Zustands müssen wir zum richtigen Zeitpunkt den Neighbor Cache auslesen
Für das Einfangen eines ganz bestimmten Zustands müssen wir zum richtigen Zeitpunkt den Neighbor Cache auslesen
* Manchmal ist es daher vorteilhaft, das nächste Kommando schon in der Zwischenablage bereitzuhalten, um schneller reagieren zu können
* Manchmal ist es daher vorteilhaft, das nächste Kommando schon in der Zwischenablage bereitzuhalten, um schneller reagieren zu können
== Windows ==
[[IPv6/Host/Neighbor/Cache/Windows]]
== Linux ==
[[IPv6/Host/Neighbor Cache/Linux]]


== Zustände der Einträge ==
== Zustände der Einträge ==
{| class="wikitable big options"
{| class="wikitable big options"
|+ Bedeutungen der Zustände
|-
! Zustand !! Beschreibung
! Zustand !! Beschreibung
|-
|-
Zeile 62: Zeile 57:
|}
|}


== Adressauflösung mitschneiden ==
== Adressauflösung ==
; Dass die Neighbor Caches funktionieren haben wir gerade gesehen
; Adressauflösung mitschneiden
* Auch wissen wir dank der erfolgreichen Echo Requests, dass die Auflösung von IPv6-Adressen und Link-layer Addresses funktioniert
* Neighbor Caches funktioniert
* Es ist nun an der Zeit, die Frage nach dem Wie zu beantworten
* Echo Request zeigt, dass die Auflösung von IPv6-Adressen und Link-layer Addresses funktioniert


; Dazu suchen wir uns einen Node aus, der gerade einen leeren Neighbor Cache hat, zum Beispiel ''router''
=== Ablauf ===
; Neighbor Cache leeren
Dazu suchen wir uns einen Node aus, der gerade einen leeren Neighbor Cache hat, zum Beispiel ''router''
* Das Kommando zum Anzeigen des Neighbor Caches ist uns aus den vorherigen Experimenten noch bekannt
* Das Kommando zum Anzeigen des Neighbor Caches ist uns aus den vorherigen Experimenten noch bekannt
* Sollten sich noch gültige Einträge im Neighbor Cache befinden, warten wir noch etwas ab
* Sollten sich noch gültige Einträge im Neighbor Cache befinden, warten wir noch etwas ab


Wenn der Node seine IPv6-Nachbarn schließlich vergessen hat, starten wir Wireshark auf dem entsprechenden Interface, hier eth1
Wenn der Node seine IPv6-Nachbarn schließlich vergessen hat, starten wir Wireshark auf dem entsprechenden Interface (hier:eth1)
 
<syntaxhighlight lang="bash" highlight="1" line copy>
Um eine Adressauflösung zu erzwingen versenden wir wieder Echo Requests
ping -c3 fe80::200:ff:fe60:d1e%eth1
user@router:~ '''ping6 -c3 fe80::200:ff:fe60:d1e%eth1'''
</syntaxhighlight>
PING fe80::200:ff:fe60:d1e%eth1 (fe80::200:ff:fe60:d1e) 56 data bytes
<syntaxhighlight lang="bash" highlight="" line>
64 bytes from fe80::200:ff:fe60:d1e: icmp_seq=1 ttl=64 time=3.75 ms
PING fe80::200:ff:fe60:d1e%eth1 (fe80::200:ff:fe60:d1e) 56 data bytes
3 packets transmitted, 3 received, 0% packet loss, time  2005 ms
64 bytes from fe80::200:ff:fe60:d1e: icmp_seq=1 ttl=64 time=3.75 ms
3 packets transmitted, 3 received, 0% packet loss, time  2005 ms
</syntaxhighlight>


=== Neighbor Solicitation ===
=== Neighbor Solicitation ===
[[Neighbor Solicitation]]
<!--
[[Router Solicitation]]
[[Router Solicitation]]
-->


=== Solicited Node Multicast Address ===
=== Solicited Node Multicast Address ===
[[File:ipv6SolicitedNodeMulticastAddress.png|mini|400px|Solicited Node Multicast Address]]
[[File:ipv6SolicitedNodeMulticastAddress.png|mini|400px|Solicited Node Multicast Address]]
Pakete an die Solicited Node Multicast Address eines Nodes können auch bei unbekannter Link-layer Address an diesen zugestellt werden
Pakete an die Solicited Node Multicast Address eines Nodes können auch bei unbekannter Link-layer Address an diesen zugestellt werden
* Wie genau das funktioniert werden wir in Abschnitt 4.5 Multicast lernen
* siehe [[IPv6/Multicast]]
* Vorerst werden wir uns damit begnügen, dass es irgendwie funktioniert


; Solicited Node Multicast Address
; Solicited Node Multicast Address
Zeile 94: Zeile 95:
[[Neighbor Advertisement]]
[[Neighbor Advertisement]]
<noinclude>
<noinclude>
== Verwaltung ==
{| class="wikitable options gnu big"
|-
! System !! Beschreibung
|-
| Windows || [[IPv6/Host/Neighbor/Cache/Windows]]
|-
| Linux || [[IPv6/Host/Neighbor/Cache/Linux]]
|}


== Anhang ==
== Anhang ==

Aktuelle Version vom 29. Juni 2025, 18:59 Uhr

IPv6/Host/Neighbor Cache

Beschreibung

Nodes am internen Link
Neighbor Discovery Protocol (NDP)

Über die Link-local Addresses können Nodes auf dem internen Link kommunizieren

Link-local Addresses zu Link-layer Addresses auflösen

Nodes sind in der Lage die Link-local Addresses ihrer Nachbarn zu gültigen Link-layer Addresses aufzulösen

Neighbor Discovery Protocol (NDP)

Zuständig für die Auflösung von IPv6-Adressen zu Link-layer Addresses ist das Neighbor Discovery Protocol (NDP), spezifiziert in RFC 4861

NDP wird über ICMPv6 transportiert

Damit ist es von IPv6 abhängig, wenn es IPv6-Adressen auflösen soll

  • Wie und warum das dennoch funktioniert, werden wir uns gleich anschauen
  • Vorher machen wir uns aber noch mit den Neighbor Caches vertraut
  • Jeder Node betreibt einen Neighbor Cache in dem er die Ergebnisse der Link-layerAdressauflösungen zwischenspeichert

Unter IPv4 wird für die Auflösung ARP genutzt

  • Ergebnisse in ARP-Tabelle zwischengespeichert
Gültigkeit des Neighbor Caches

Einträge im Neighbor Caches sind je nach Betriebssystem und Zustand unterschiedlich lange gültig

  • Im Normalfall sind sie recht kurzlebig
  • Daher sind für die folgenden Experimente mitunter mehrere Anläufe notwendig

Für das Einfangen eines ganz bestimmten Zustands müssen wir zum richtigen Zeitpunkt den Neighbor Cache auslesen

  • Manchmal ist es daher vorteilhaft, das nächste Kommando schon in der Zwischenablage bereitzuhalten, um schneller reagieren zu können

Zustände der Einträge

Zustand Beschreibung
Incomplete Es findet gerade eine Adressauflösung statt
  • Diese konnte aber noch nicht erfolgreich beendet werden
Reachable Der zugehörige Nachbar gilt als erreichbar
  • Entweder findet gerade eine Kommunikation mit ihm statt oder eine solche ist erst wenige Sekunden her
Stale Die Erreichbarkeit des zugehörigen Nachbarn ist unbekannt
  • Es fand kürzlich eine Kommunikation mit ihm statt
  • Solange keine weitere Kommunikation beabsichtigt ist, sollte auf eine erneute Adressauflösung verzichtet werden
Delay Der zugehörige Nachbar gilt nicht als erreichbar
  • Es wurde aber wieder eine Kommunikation mit ihm gestartet
  • Bleibt eine Bestätigung der Erreichbarkeit durch die kommunizierende Schicht aus, wird auf IP-Schicht die Erreichbarkeit aktiv überprüft werden
Probe Der zugehörige Nachbar gilt nicht als erreichbar
  • Seine Erreichbarkeit wird gerade aktiv geprüft
  • Sollte die Prüfung fehlschlagen, wird der Eintrag entfernt

Adressauflösung

Adressauflösung mitschneiden
  • Neighbor Caches funktioniert
  • Echo Request zeigt, dass die Auflösung von IPv6-Adressen und Link-layer Addresses funktioniert

Ablauf

Neighbor Cache leeren

Dazu suchen wir uns einen Node aus, der gerade einen leeren Neighbor Cache hat, zum Beispiel router

  • Das Kommando zum Anzeigen des Neighbor Caches ist uns aus den vorherigen Experimenten noch bekannt
  • Sollten sich noch gültige Einträge im Neighbor Cache befinden, warten wir noch etwas ab

Wenn der Node seine IPv6-Nachbarn schließlich vergessen hat, starten wir Wireshark auf dem entsprechenden Interface (hier:eth1)

ping -c3 fe80::200:ff:fe60:d1e%eth1
PING fe80::200:ff:fe60:d1e%eth1 (fe80::200:ff:fe60:d1e) 56 data bytes
64 bytes from fe80::200:ff:fe60:d1e: icmp_seq=1 ttl=64 time=3.75 ms
3 packets transmitted, 3 received, 0% packet loss, time  2005 ms

Neighbor Solicitation

Neighbor Solicitation

Solicited Node Multicast Address

Solicited Node Multicast Address

Pakete an die Solicited Node Multicast Address eines Nodes können auch bei unbekannter Link-layer Address an diesen zugestellt werden

Solicited Node Multicast Address
Neighbor Advertisement

Neighbor Advertisement

Neighbor Advertisement


Verwaltung

System Beschreibung
Windows IPv6/Host/Neighbor/Cache/Windows
Linux IPv6/Host/Neighbor/Cache/Linux

Anhang

Siehe auch

Links

Weblinks