IPv6-Adressen
Eine IPv6-Adresse ist eine Netzwerk-Adresse, die einen Host eindeutig innerhalb eines Netzwerks logisch adressiert. Die Adresse wird auf IP- bzw. Vermittlungsebene benötigt, um Datenpakete verschicken und zustellen zu können. Im Gegensatz zu anderen Adressierungsarten kann ein IPv6-Host mehrere IPv6-Adressen haben, die unterschiedliche Gültigkeitsbereiche haben.
Im Gegensatz zu IPv4 sieht IPv6 vor, dass ein Host in der Regel mehr als nur eine IPv6-Adresse hat. Konkret bedeutet das, dass wenn von IPv6-Adressen die Rede ist immer klar sein muss welchen Gültigkeitsbereich diese IP-Adressen aufweisen. Grob unterscheidet man zwischen lokalen und globalen IPv6-Adressen. Die lokale IP-Adresse ist nur im lokalen Netzwerk gültig und wird nicht geroutet. Die globale IPv6-Adresse ist über das lokale Netzwerk hinaus auch im Internet gültig.
Eine IPv6-Adresse besteht aus 128 Bit. Diese Adresslänge erlaubt eine unvorstellbare Menge von 2128 oder 3,4 x 1038 IP-Adressen. Das sind 340.282.366.900.000.000.000.000.000.000.000.000.000 IP-Adressen, also rund 340,28 Sextillionen Adressen. Das reicht aus, um umgerechnet jeden Quadratmillimeter der Erdoberfläche inklusive der Ozeane mit rund 600 Billiarden Adressen zu pflastern. Weil man mit dieser großen Menge an Adressen verschwenderisch umgehen darf, spart man sich eine aufwendige Verwaltung, wie es bei IPv4-Adressen notwendig ist.
Darstellungsformen und Schreibweisen von IPv6-Adressen
IPv6-Adressen bestehen aus insgesamt 128 Bit woraus sich eine Menge von 2128 Adressen ergeben. Die vorderen 64 Bit heißen Präfix. Vereinfacht ausgedrückt, das ist die Adresse des Netzwerks, in dem sich ein Host befindet. Der Präfix für die link-lokale IPv6-Adresse ist immer "fe80:0000:0000:0000". Der Präfix für die globale IPv6-Adresse wird üblicherweise vom Provider zugewiesen. Die hinteren 64 Bit werden als Interface Identifier bezeichnet. Das ist der Host-Adressanteil einer IPv6-Adresse.
Wegen der unhandlichen Länge werden die 128 Bit in 8 mal 16 Bit (2 Byte) unterteilt. Je 4 Bit werden als eine hexadezimale Zahl dargestellt. Je 4 Hexzahlen werden gruppiert und durch einen Doppelpunkt (":") getrennt.
Um die Schreibweise zu vereinfachen gelten folgende Regeln bzw. Abkürzungen:
- Führende Nullen in den Blöcken können wegfallen.
- Eine Folge von Nullen kann man durch zwei Doppelpunkte ("::") ersetzen.
- Die Buchstaben des Hexadezimalsystems werden grundsätzlich klein geschrieben.
Segmentierung
Ein Hauptgrund für den Wechsel von IPv4 auf IPv6 ist der größere Adressbereich von IPv6. Doch warum gleich 128 Bit Adressbreite? Der Grund ist der, dass die IP-Adressen lang genug sein sollten, um sie großzügig segmentieren und aufteilen zu können. Es sollen möglichst alle Netzwerk-Topologien berücksichtigt werden können. Gleichzeitig soll das Routing einfach gehalten sein.
Damit Router effizient arbeiten können, müssen Adressen hierarchisch strukturiert vergeben werden. Damit alle Ebenen der Hierarchie abgebildet werden können, muss die IP-Adresse lang genug sein. Wünschenswert wäre, dass auch dann noch genug Raum für zukünftige Entwicklungen übrig bleibt. Deshalb akzeptiert man bei der Segmentierung auch einen relativ großen Verschnitt.
Die von IPv4 bekannte Netzwerkmaske bzw. Subnetzmaske fällt bei IPv6 ersatzlos weg. Um trotzdem eine Segmentierung und Aufteilung von Adressbereichen bzw. Subnetzen vornehmen zu können, wird ein Präfix verwendet, dass durch ein "/" von der eigentlichen IP-Adresse getrennt ist bzw. angehängt wird. Der hierarchische Aufbau des Präfix soll das Routing mit IPv6 vereinfachen.
Häufig ist es so, dass die ersten 64 Bit einer IPv6-Adresse das Netz und die restlichen 64 Bit den Host adressieren. Wobei man einem System nicht mehr nur eine IP-Adresse zuweist, sondern gleich ein ganzes Subnetz. Das bedeutet, dass die Anwender sich den Einsatz von privaten IP-Adressen und Verfahren wie NAT sparen können. Der Adressüberfluss von IPv6 macht es möglich.
Gültigkeitsbereiche von IPv6-Adressen
IPv6 unterscheidet sich von IPv4 nicht nur durch längere IP-Adressen, sondern durch Gültigkeitsbereiche (Scope), innerhalb derer Datenpakete routbar sind. Während man bei IPv4 nur zwischen öffentlichen und privaten Adressen unterscheidet, sind IPv6-Adressen vielschichtiger. Dazu muss man auch noch wissen, das große Teile des IPv6-Adressraums für die normale Nutzung ausgenommen sind und per Multicast ganze Gruppen von Empfängern adressieren.
- Link-Local-Scope-Adressen
- Unique-Local-Adressen
- Site-Local-Scope-Adressen (veraltet)
- Global-Scope-Adressen
- Multicast-Adressen
Man unterscheidet grob gesehen zwischen globalen Adressen (Global Scope) und link-lokalen Adressen (Local Scope). Pakete mit globale Adressen werden außerhalb des lokalen Netzwerks geroutet. Link-lokale Adressen sind nur innerhalb des lokalen Netzwerks gültig. Sie werden nicht nach extern geroutet.
Hinter Link-Local Scope stecken Mechanismen wie Neighbor Discovery, dass das Address Resolution Protocol (ARP) ablöst oder Stateless Address Autoconfiguration als Alternative zu DHCP. Neighbor Discovery zeichnet sich vor allem durch Unabhängigkeit von der Übertragungstechnik aus.
LLA - Link-Local-Scope-Adressen
Jedes IPv6-Gerät erzeugt sich beim Start eine eigene IPv6-Adresse, die allerdings nur lokal gültig ist. Diese Link-Local Address (LLA) bzw. link-lokale Adresse beginnt immer mit der Zeichenfolge "fe80" und gilt nur für das jeweilige Netzwerksegment. In der Regel reicht der Link-Local-Scope bis zum nächsten Router.
Jedes Interface muss eine Link-Local Address haben. Sie wird für die lokale Kommunikation innerhalb des Netzwerksegments gebraucht. Zum Beispiel für die Einrichtung einer global gültigen IPv6-Adresse, die für das externe Routing gebraucht wird.
ULA - Unique-Local-Adressen (RFC 4193)
Für private lokale Netze gibt es in IPv6 reservierte Adressbereiche (Unique Local Adressses, ULA). Sie haben eine ähnliche Funktion, wie die privaten IPv4-Adressen. Die ULA-IPv6-Adressen befinden sich im Adressbereich "fc00::/7" (fc00… bis fdff…) und werden nicht im Internet geroutet.
Unterscheiden muss man zwischen dem Präfix "fc" und "fd". ULAs mit dem Präfix "fd" sind für lokal generierte Adressen vorgesehen und sind zufällig zu generieren und somit nur sehr wahrscheinlich eindeutig. Wenn man private Netze mit diesen Adressen zusammenführen will, dann können Adresskonflikte auftreten. Nur ULAs mit dem Präfix "fc" sind weltweit eindeutig und deshalb für global zugewiesene, eindeutige ULAs reserviert. Hier treten bei Netzzusammenführungen keine Adresskonflikte auf.
Site-Local-Scope-Adressen
Site-lokale Adressen aus dem Adressbereich "fec0::/10" sind ähnlich wie die lokalen Unicast-Adressen nur in abgegrenzten Bereichen (Sites) nutzbar. Der Begriff Sites ist aber nicht genau definiert. Seit September 2004 gilt dieses Konzept als veraltet.
Global-Scope-Adressen
Die Global Unique Address bzw. global routbare Adresse kommt aus dem Adressbereich "2000::/3". Wobei sich hier auch speziell reservierte IPv6-Adressen befinden. Die globale IPv6-Adresse erhält ein Rechner per Autokonfiguration. Hier gibt es die beiden Verfahren DHCPv6 und Stateless Address Autoconfiguration (SLAAC).
- Stateless Address Autoconfiguration mit Router-Advertisement
- Stateful Address Configuration mit DHCPv6
Multicast-Adressen (Link-Local Scope Multicast Addresses)
IPv6 fasst Netzwerkknoten, Router, Zeit-Server und andere Dienste in Multicast-Gruppen zusammen. Jede Gruppe ist über eine eigene Adresse erreichbar. Link-lokale Multicast-Adressen beginnen immer mit "ff02" und enden mit einer Nummer, die einer Multicast-Gruppe zugeordnet ist. Im folgenden ein Auszug aus der Liste der link-lokalen Multicast-Gruppen.
- ff02::1 : alle IPv6-Stationen
- ff02::2 : alle Router
- ff02::f : UPnP
- ff02::101 : alle Zeitserver (NTP)
- ff02::1:2 : DHCPv6-Server
- ...
Jede Multicast-Gruppe kann man auf der Kommandozeile oder Shell mit Ping ansprechen. Beispielsweise alle link-lokalen Geräte.
- Windows: ping -6 ff02::1
- Linux: ping6 -c 5 ff02::1
Sofern die Geräte mit dem LAN verbunden sind und keine Firewall oder eine andere Sicherheitsmaßnahme es verhindert, antworten alle IPv6-Stationen.
Lokales Netzwerk vs. Link-Local-Scope
Die Definition von Gültigkeitsbereichen (Scopes) ist einer der größten Unterschiede zwischen IPv4 und IPv6. Bezüglich der IPv6-Scopes gibt es in IPv4 nichts vergleichbares. Trotzdem gibt es manchmal den Vergleich zwischen den privaten IPv4-Adressen und den link-lokalen IPv6-Adressen. Doch das ist nicht das gleiche.
Wenn man vom Link-Local-Scope im Zusammenhang mit Neighbor Discovery oder Router Discovery spricht, darf man nicht vom lokalen Netzwerk sprechen. Denn in einem lokalen Netzwerk, im Sinne eines LAN, kann es auch mehrere Link-Local-Scopes geben. Beispielsweise wenn ein LAN durch IPv6-Router in mehrere Link-Local-Scopes geteilt ist.
In einem kleinen LAN, zum Beispiel in Privathaushalten, wo es nur einen Router gibt, da entspricht das lokale Netzwerk (LAN) dem Link-Local-Scope. In einem Unternehmensnetzwerk, bei dem das "LAN" aus mehreren lokalen Netzwerken besteht, kann es mehrere Link-Local-Scopes geben, die nur bis zur entsprechenden "link-lokalen" Netzgrenze reichen. Hier befindet sich ein Router, der Datenpakete mit link-lokalem Bezug nicht über die Netzgrenze hinweg weiterleitet.
Privacy Extensions (RFC 4941)
Um die Bedenken bezüglich Datenschutz und Privatsphäre zu zerstreuen hat man "Privacy Extensions" eingeführt. Privacy Extensions erzeugen regelmäßig einen zufälligen Interface Identifier, der keinen Rückschluss auf den Host zulässt. Diese Adressen haben nur eine begrenzte Zeit Gültigkeit. Wenn Privacy Extension aktiv ist, dann kann eine IPv6-Adresse über eine längere Zeit nicht zur Identifikation eines bestimmten Hosts benutzt werden.
Schreibweise der IPv6-Adresse im UNC-Pfad
UNC-Pfade dürfen nach der Definition von Microsoft keine Doppelpunkte enthalten. Für die Schreibweise von IPv6-Adressen ergeben sich dadurch Schwierigkeiten. Hier sind Doppelpunkte (":") als Trennzeichen vorgesehen. Um das Problem zu umgehen hat Microsoft einen Workaround definiert.
- Normale UNC-Schreibweise: \\fe08::babe:face:cafe:feed\share
- Angepasste UNC-Schreibweise: \\fe08--babe-face-cafe-feed.ipv6-literal.net\share
Schreibweise der IPv6-Adresse in der URL
In URLs sind IPv6-Adressen problematisch, weil in URLs der Doppelpunkt (":") als Trennzeichen zwischen Host-Adresse (Domain-Name oder IP-Adresse) und Portnummer (optional) verwendet wird. Deshalb müssen IPv6-Adressen in eckige Klammern gesetzt werden ("[]"), wenn sie in URLs verwendet werden.
- Beispiel: http://[fe80::20c:29ff:fead:49ac%25eth0]/
Weiterhin dient in URLs das Prozentzeichen (%) für die Kennzeichnung der hexadezimalen Zeichencodierung. Bei der Anwendung innerhalb der URL muss das Prozentzeichen durch seinen eigenen Hex-Code "%25" ersetzt werden (RFC 6874). In diesem Fall, wenn man die Verbindung über einen bestimmten Port erzwingen will.
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)