22.5    IPv6

IPv6 ist das offizielle Nachfolgeprotokoll von IPv4. Irgendwann soll es IPv4 gänzlich ablösen. Der Grund dafür ist recht simpel: IP-Adressknappheit. IPv4-Adressen haben eine Länge von 32 Bit, das heißt, theoretisch stehen 232 Adressen zur Verfügung. Von diesen ca. 4 Milliarden Adressen stehen aber nicht alle zur Nutzung zur Verfügung. Von den 256 möglichen /8-Netzen sind allein 35 Netze für spezielle Nutzungszwecke reserviert. Beispielsweise 127.0.0.0/8 für Loopback-Adressen, 10.0.0.0/8 für private Nutzung oder 224.0.0.0/8 für Multicast-Adressen (siehe Tabelle 22.2).

IP-Bereich Verwendung
10.0.0.0/8 private Netzwerkadresse RFC1918
127.0.0.0/8 Loopback (localhost)
169.254.0.0/16 link local (APIPA)
172.16.0.0/12 private Netzwerkadresse RFC1918
192.0.2.0/24 Test und Dokumentation
192.168.0.0/16 private Netzwerkadresse RFC1918
224.0.0.0/4 Multicast-Adressen
240.0.0.0/4 experimentelle Adressen

Tabelle 22.2    Liste der reservierten IPv4-Bereiche

Zu allem Übel fehlen darüber hinaus noch mal 40 /8-Netze, die in den Anfangstagen, als der Erfolg des Internets noch nicht absehbar war, großzügig an einzelne Firmen oder Organisationen vergeben wurden. Von den verbleibenden 181 /8-Netzen sind aktuell nur noch wenige nicht vergeben – es wird geschätzt, dass mehr als 95 % der Adressen verbraucht sind. Die Adressen werden von der Internet Assigned Numbers Authority (IANA) verwaltet und an Regional Internet Registries (RIR) vergeben. Davon gibt es fünf weltweit. Das RIPE NCC[ 36 ] ist beispielsweise die RIR für Europa, Zentralasien und den Nahen Osten.

Die RIRs wiederum verteilen IP-Adressen an Local Internet Registries (LIR). Erst von den LIRs werden IP-Adressen dann an Endkunden vergeben.

Zwischenzeiltich wurde damit gerechnet, dass die IP-Adressen ausgehen würden. So rechnete das RIPE NCC vor[ 37 ], dass die letzten Adressen für Europa im August 2012 vergeben würden. Wie wir alle wissen, ist dies nicht eingetroffen.

Die ergriffenen Maßnahmen haben die Situation etwas entspannt: Zum einen wurde eine Umverteilung der vergebenen Netze vorgenommen, und zum anderen haben viele Provider begonnen, die IPv6-Einführung deutlich zu beschleunigen. Daher sind immer noch (wenn auch sehr wenige) IPv4-Adressen verfügbar.

Es gibt also keinen Grund, in Panik zu verfallen. Aber Sie sollten sich langsam mit dem Gedanken anfreunden, dass IPv6 auch zu Ihnen kommen wird und Sie Ihr Netzwerk dementsprechend anpassen müssen.

Durch die Verwendung von NAT auch aufseiten der Provider wird die Knappheit etwas gemildert, aber da die IPv4-Adressen auch immer teurer werden, lohnt sich die Umstellung schon allein aus Kostengründen ab einem bestimmten Zeitpunkt.

22.5.1    Die Vorteile von IPv6

Einer der Hauptvorteile von IPv6 ist die Vergrößerung des IP-Adressraums: Der Adressraum bei IPv6 beträgt 128 Bit. Die minimale Netzgröße, die an Endkunden herausgegeben werden soll, ist ein /64-Netz. Ein einzelner Endkunde bekommt also mehr eigene IP-Adressen, als in IPv4 insgesamt zur Verfügung stehen. Damit ist dann auch wieder das Ende-zu-Ende-Prinzip erfüllt, das heißt, jeder Host ist im Internet garantiert direkt ansprechbar. Zurzeit ist das aufgrund der IP-Adressknappheit leider nicht möglich. Ohne Network Address Translation (NAT) wäre es jetzt schon undenkbar, mit mehr als einem Gerät von zu Hause aus in das Internet zu gehen. NAT ist aber nur eine Notlösung, und einige Protokolle können nicht vernünftig damit arbeiten, sodass es immer wieder zu Problemen kommt.

Was heißt das eigentlich in Zahlen? Wie viele IPv6-Adressen gibt es denn nun? Deshalb hier einmal ein kleines Zahlenspiel: IPv6-Adressen bestehen aus 128 Bit; das sind dann also 2128 mögliche Hostadressen. Als Zahl sieht das so aus: 2128 = 340.282.366.920.938.463.463.374.607. 431.768.211.456 mögliche Adressen. Das entspricht ungefähr 665 Milliarden IPv6-Adressen pro Quadratmillimeter der Erdoberfläche: Da ist auch bestimmt für Ihre Kaffeemaschine im Büro noch eine IP-Adresse frei. Natürlich gibt es auch bei IPv6 wieder reservierte Bereiche, sodass die Zahl etwas kleiner wird, aber die Menge sollte immer noch ausreichend für zukünftige Techniken sein.

22.5.2    Notation von IPv6-Adressen

Der gigantische Adressraum von IPv6 hat leider auch Nachteile. Mit einer Länge von 128 Bit sind IPv6-Adressen nicht gerade einprägsam, und man ist mehr als zuvor auf die Hilfe von DNS angewiesen. In Abschnitt 22.8, »DNS-Server«, beschreiben wir die Konfiguration eines IPv6-DNS-Servers.

IPv6-Adressen werden im Gegensatz zu IPv4-Adressen hexadezimal dargestellt. Jede IPv6-Adresse besteht aus acht Blöcken zu jeweils 16 Bit. Einzelne Blöcke werden durch einen Doppelpunkt getrennt. Eine gültige IP-Adresse sieht also folgendermaßen aus:

2001:0db8:0000:0000:0342:abff:fe22:1d63

Listing 22.56    Beispiel für eine gültige IPv6-Adresse

Führende Nullen innerhalb eines Blocks dürfen ausgelassen werden:

2001:db8:0:0:342:abff:fe22:1d63

Listing 22.57    Das Beispiel ohne führende Nullen

Wenn ein oder mehrere Blöcke nur aus Nullen bestehen, so kann man sie durch einen Doppelpunkt ersetzen. Das darf jedoch nur an einer Stelle passieren, weil die Adresse sonst nicht eindeutig ist:

2001:db8::342:abff:fe22:1d63

Listing 22.58    Gekürzte Schreibweise der IPv6-Adresse

Die Adresse für localhost lautet so:

0000:0000:0000:0000:0000:0000:0000:0001

Listing 22.59    Die IPv6-Adresse des »localhost«

In der Kurzschreibweise wird daraus:

::1

Listing 22.60    Die Kurzschreibweise der »localhost«-Adresse

22.5.3    Die Netzmasken

Wie IPv4-Adressen bestehen auch IPv6-Adressen aus einem Netzanteil und einem Hostanteil. In der IPv6-Welt spricht man von dem Network Prefix und dem Interface Identifier. Die Darstellung erfolgt im Classless Inter-Domain Routing-(CIDR-)Format. Der Interface Identifier ist mindestens 64 Bit lang.

Kleinere Netze sollten nicht vergeben werden. Die restlichen 64 Bit bilden das Network Prefix. Dieses kann aber nach altbekannter Manier in weitere Subnetze aufgeteilt werden (siehe Tabelle 22.3).

Network Prefix Subnet Identifier Interface Identifier
48 Bit 16 Bit 64 Bit
2001:0db8:0000 0000 0342:abff:fe22:1d63

Tabelle 22.3    Aufbau der Netzmaske

22.5.4    Die verschiedenen IPv6-Adressarten

Für IPv6 gibt es verschiedene Arten von Adressierungen:

Hier folgen drei Regeln zur Einrichtung eines IPv6-Hosts:

  1. Eine Netzwerkkarte hat immer eine link-local-Adresse.

  2. Einer Netzwerkkarte können Sie immer mehrere globale Adressen zuweisen.

  3. Eine Netzwerkkarte kann zu mehreren Multicast-Gruppen gehören, mindestens aber zu einer. Im Fall eines einfachen Hosts ist es die Multicast-Gruppe FF01::1, im Fall, dass es sich um einen Router handelt, die Multicast-Gruppe FF01::2.

[+]  Keine Broadcast-Adressen mehr bei IPv6!

Broadcast-Adressen, wie Sie sie von IPv4 her kennen, gibt es bei IPv6 nicht mehr. Diese wurden von den Multicast-Adressen abgelöst.

In Tabelle 22.4 sehen Sie eine kurze Zusammenfassung der reservierten Präfixe.

Präfix Verwendung
::1 localhost
FE80::/10 link-local
FF00::8 multicast
FF01::1 multicast an alle Hosts
FF02::2 multicast an alle Router
FC00::/8 unique local address (zentral vergeben)
Fd00::/8 unique local address (kann privat verwendet werden)
2000::/3 global unicast address
2001:db8::32 Präfix für Dokumentationen

Tabelle 22.4    Liste der IPv6-Präfixe

22.5.5    Es geht auch ohne »ARP«

Unter IPv4 ist das Protokoll ARP eine der größten Sicherheitslücken. Unter IPv6 findet das Protokoll ARP keine Verwendung mehr. An dessen Stelle tritt Neighbor Discovery (ND). Neighbor Discovery ist ein Bestandteil des ICMP-Protokolls unter IPv6 und hat dort mehr Aufgaben, als nur die MAC-Adresse zur IP-Adresse aufzulösen, so wie es ARP unter IPv4 macht. Ein IPv6-Host kann Neighbor Discovery für folgende Aufgaben verwenden:

22.5.6    Feste Header-Länge

Die Kopfdatenlänge eines IPv6-Pakets beträgt immer genau 40 Byte. IPv4 hingegen arbeitet mit einer variablen Header-Länge. Eine feste Länge hat für Router den Vorteil, dass die Verarbeitung weniger rechenintensiv ist. Listing 22.62 zeigt den Aufbau des IPv6-Headers:

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Version| Traffic Class | Flow Label |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Payload Length | Next Header | Hop Limit |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ Source Address +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ Destination Address +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Listing 22.62    Aufbau des IPv6-Headers

Die einzelnen Felder haben dabei folgende Bedeutungen:

Multihoming

Mit IPv6 ist es ohne größere Probleme möglich, mit einem Netz an mehrere Provider angebunden zu sein. Das vereinfacht das Umziehen von Netzen und kann genutzt werden, um eine erhöhte Ausfallsicherheit zu erreichen. Der Interface Identifier muss im sogenannten Modified EUI-64-Format vorliegen. Im Wesentlichen bedeutet das, dass bei Ethernet aus der 48-Bit-MAC-Adresse eine 64-Bit-Adresse generiert wird. Der Vorteil dieses Verfahrens ist auch gleichzeitig der Nachteil und einer der größten Kritikpunkte an IPv6. Ein so generierter Interface Identifier ist aufgrund der MAC-Adresse nämlich weltweit einzigartig. Ein Endgerät ist also auch völlig unabhängig von dem Network Prefix eindeutig identifizierbar. Aus diesem Grund wurde der Standard später um die Privacy Extension für automatische Konfigurationen ergänzt. Die Privacy Extension sorgt dafür, dass der Interface Identifier zufällig generiert und regelmäßig erneuert wird. Das Verhalten muss jedoch zunächst im proc-Dateisystem aktiviert werden. Näheres finden Sie in Abschnitt 3.4, »Alles virtuell? ›/proc‹«.

root@saturn:~# echo 2 > /proc/sys/net/ipv6/conf/eth0/use_tempaddr

Listing 22.63    Aktivierung der »Privacy Extension«

Der Wert 0 steht für die Deaktivierung der Privacy Extension und ist die Standardeinstellung. Die Werte 1 oder 2 aktivieren die Erweiterung. Dabei sorgt 1 dafür, dass bevorzugt öffentliche Adressen verwendet werden, und die 2 besagt, dass eher temporäre Adressen genutzt werden sollen. Die Gültigkeitsdauer in Sekunden können Sie in der Datei /proc/sys/net/ipv6/conf/eth0/temp_valid_lft eintragen.

22.5.7    IPv6 in der Praxis

Es wäre sicherlich falsch, zu behaupten, dass IPv6 genau wie IPv4 funktioniert, aber zumindest aus Applikationssicht ist es nicht ganz unwahr. Sind die Dienste nämlich erst einmal konfiguriert, so ist kein großer Unterschied festzustellen. Viele Applikationen binden sich heute schon standardmäßig auf alle vorhandenen IPv6-Adressen, sodass nicht immer Konfigurationsanpassungen vorzunehmen sind (zum Beispiel bei ssh oder Webservern).

root@ubuntu:~# ssh 2a01:198:689::1
root@2a01:198:689::1's password:
[…]
root@ubuntu:~# telnet 2a01:198:689::1 80
Trying 2a01:198:689::1...
Connected to 2a01:198:689::1.
Escape character is '^]'.
GET /
<html><body><h1>It works!</h1>
[…]

Listing 22.64    »ssh« und Web mit »telnet"« über IPv6

Etwas anders sieht es aus, wenn Sie nur link-local-Adressen aus dem Netz fe80::/10 benutzen. Diese werden in der Regel durch die automatische Konfiguration auf das Interface gebunden. Die Art der Adresse können Sie nicht nur an dem Präfix erkennen, sondern auch, indem Sie sich den scope bei der Ausgabe von ip anschauen:

root@saturn:~# ip -f inet6 address show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
inet6 2a01:198:689::1/64 scope global
valid_lft forever preferred_lft forever
inet6 fe80::226:18ff:fe81:1d63/64 scope link
valid_lft forever preferred_lft forever

Listing 22.65    »link local«- und globale IPv6-Adresse auf »eth0«

Link-local-Adressen können mehrfach auf einem Gerät vergeben werden, daher müssen Sie angeben, über welches Interface die Anfrage gehen soll. Bei ssh geschieht das beispielsweise, indem Sie hinter der IP-Adresse %INTERFACENAME anhängen:

root@ubuntu:~# ssh fe80::226:18ff:fe81:1d63%eth0
root@fe80::226:18ff:fe81:1d63%eth0's password:
[…]

Listing 22.66    »ssh« über eine »link local«-Adresse

Zum Testen der Konnektivität können Sie übrigens ping6 nutzen:

root@saturn:~# ping6 -c 1 ipv6.test-ipv6.com

PING ipv6.test-ipv6.com(2001:470:1:18::119) 56 data bytes
64 bytes from 2001:470:1:18::119: icmp_seq=1 ttl=58 time=34.9 ms
--- ipv6.test-ipv6.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 34.965/34.965/34.965/0.000 ms

Listing 22.67    »ping« auf »google« per IPv6

Selbstverständlich sind nicht alle Dienste sofort für IPv6 nutzbar. Sie müssen in der jeweiligen Dokumentation nachlesen, was an welcher Stelle konfiguriert werden muss. In den meisten Fällen reicht es aber aus, dem Dienst einfach mitzuteilen, dass er vorhandene IPv6-Adressen nutzen soll.

[+]  Bei einer Umstellung auf IPv6 sollten Sie unbedingt zunächst eine Firewall mit ip6tables konfigurieren und dann die entsprechenden Einträge im DNS anpassen. Mehr zu den Themen finden Sie in Abschnitt 22.6, »Firewalls mit ›netfilter‹ und ›iptables‹«, und Abschnitt 22.8, »DNS-Server«.