In IPv6 ist es im Standard vorgesehen, dass ein Computer, genauer sogar 1 Netzwerkkarte, mehrere IPs hat. Das kann unterschiedliche Gründe haben:
- Jede IPv6-Netzwerkkarte hat eine IPv6, die nicht global im Internet erreichbar ist, sondern jeweils nur für die Verbindung („scope: Link local“) genutzt werden kann.
- Wenn Ipv6 und Ipv4 aktiviert sind, dann sind es schon 3 IPs (IPv6 Link Local, IPv6 global, IPv4).
- Der Router kann mehrere Präfixe (Subnetze) vergeben. Der Rechner erzeugt sich dann eine IPv6 in jedem vom Router vergegebenen Subnetz.
- Wenn man die „privacy“-Erweiterungen zur Anonymisierung aktiviert, dann können es noch viel mehr werden.
- Kann man auch manuell weitere IPv6 festlegen.
- Ein Rechner kann mittels mehrerer unterschiedliche Router ins Internet gelangen oder andere Subnetzen erreichen.
Daraus ergeben sich zwei Aufgaben:
- Wenn per DNS mehrere IPs für einen Rechner bekannt gegeben werden, dann muss davon eine als Ziel-IP ausgewählt werden.
- Aus den eigenen IPs muss eine Quell-IP bestimmt werden.
Wie diese Aufgaben gelöst werden, ist in RFC 3484 http://www.ietf.org/rfc/rfc3484.txt beschrieben; die Kernpunkte davon gebe ich hier wieder und erläutere das Verfahren anhand von Beispielen in einem nachfolgenden Teil des Kurses.
Zunächst werden die Ziel-IPs so sortiert, dass die vermutlich beste Ziel-IP am Anfang steht. Eine Anwendung sollte dann versuchen, sich zu dieser Ziel-IP zu verbinden. Dafür bestimmt dann in der Regel das Betriebssystem die Quell-IP. Falls die Verbindung mit der besten Ziel-IP nicht klappt, sollte das Anwendungsprogramm die weiteren Ziel-IPs der Reihenfolge nach durchprobieren (programmiert wird das häufig umgekhert: erst die Quell-IP für alle möglichen Ziel-IPs bestimmen und danach die beste Ziel-IP auswählen. Der Grund dafür ist, dass zur Auswahl der besten Ziel-IP bekannt evtl. sein muss, welche Quell-IP für diese Ziel-IP verwendet wird, siehe Regel Nr. 3 und 5).
Die Sortierung der Ziel-IPs erfolgt anhand folgender Regeln:
- Vermeide Ziel-IPs, von denen dem Rechner bekannt ist, dass er sie nicht erreichen kann (z.B. weil das Paket über eine Netzwerkkarte geschickt werden müsste, bei der das Kabel im Moment nicht eingesteckt ist)
- Wenn es eine Quell-IP mit dem gleichen Gültigkeitsbereich („scope“) gibt, dann nimm diese Ziel-IP.
In IPv6 sind mehrere Gültigkeitsbereiche definiert:
(in aufsteigender Reihenfolge von lokal zu global)
01: interface-local
02: link-local (FE80::/10)
03: subnet-local
04: admin-local
05: site-local (die mit FEC0 beginnen, veraltet mit RFC 3879. Die neuen FD00-Adressen, die 192.168.x.y ersetzen, bekommen den Scope „global“)
08: organization-local
14: globalDa die FD00-Adressen als „global“ eingeordnet werden, kommen meist nur „02: Link-Local“ (die FE80-Adressen, die vorallem bei der Autokonfiguration verwendet werden) und „14: global“ vor. Man kann sich den scope der aktuellen IPs angucken mit
# Windows
ipv6 if# Linux
ifconfigDiese Regel besagt also praktisch, dass
- Wenn eine der Ziel-IPs mit FE80 bis FEbf (=fe80::/10) beginnt, dann verwende sie.
- Ansonsten verwende eine Ziel-IP mit scope „global“, wenn der Rechner selbst auch eine „globale“ (scope) Quell-IP hat. Falls es – wie in unserem Fall – mehrere Ziel-IPs mit scope „global“ gibt, wird nach den folgenden Regeln entschieden.
- Vermeide veraltete Quell-IPs (was „veraltete IPv6-Adressen“ genau sind, wird in einem späteren Teil über anonyme IPv6-Adressen erklärt).
-
Regel für mobile IPv6 (dabei behält man die IPv6 von zu Hause, obwohl man unterwegs ist) – da dies bisher sehr selten verwendet wird, erkläre ich es hier nicht.
-
Ziehe diejenige Ziel-IP vor, bei der das Label der Quell-IP mit dem Label der Ziel-IP übereinstimmt.
An dieser Stelle kann die Wahl der Ziel-IP durch eine Änderung an der Address-Selection-Tabelle – beispielsweise wie in Teil 2 beschrieben – geändert werden. -
Ziehe diejenige Ziel-IP vor, die eine höhere Priorität hat
Auch an dieser Stelle kann die Wahl der Ziel-IP durch eine Änderung an der Address-Selection-Tabelle geändert werden.Nur wenn jetzt noch mehr als 1 IP zur Auswahl stehen, werden noch folgende Regeln angewandt.
-
Ziehe einen nativen Transportweg vor (wenn das Ziel entweder durch einen Tunnel, z.B. durch Sixxs, zu erreichen ist oder direkt, z.B. durch IPv4, dann nutze die direkte Verbindung)
-
Wähle diejenige Ziel-IP, die „am lokalsten“ ist, d.h. den kleinsten Wert in obiger scope-Tabelle hat.
-
Ansonsten: wähle diejenige Ziel-IP aus, bei der das Präfix am meisten Übereinstimmung mit der Quell-IP hat, d.h. von links die meisten Bits identisch sind.
Im nächsten Teil werden diese Regeln verwendet, um die Standard-Tabelle zur Adress-Auswahl zu verstehen.