IPv6 für den Firewall-Administrator

Mit IPv6 trat 1998 ein weiterer Akteur auf die Bühne der Transport-Protokolle. Die Adoption verlief anfangs sehr schleppend, hat in den letzten Jahren aber an Fahrt aufgenommen. Inzwischen kann man IPv6 als Firewall-Administrator nicht mehr ignorieren.

Obwohl mittlerweile alle weitverbreiteten Betriebssystem IPv6 gut unterstützen, ist es noch notwendig, IPv6-Projekte vor dem produktiven Einsatz gründlich zu testen.

Einer der Hauptvorteile von IPv6 ist der riesige Adressraum, der NAT überflüssig macht. Was nicht heißen soll, dass NAT bei IPv6 unmöglich wäre.

Zwar hat die IETF beim Entwurf von IPv6 nicht am grünen Tisch angefangen, sondern bewährte Dinge von IPv4 übernommen. Doch sind viele Dinge hinzugekommen und andere weggefallen.

TCP und UDP verhalten sich hier wie von IPv4 gewohnt, daher füge ich dem dort genannten nichts weiter hinzu, als dass UDP bei IPv6 zwingend eine Prüfsumme berechnen muss. Der IPv6-Header hat keine Prüfsumme.

Paket-Header

Mit 40 Byte ist der IPv6-Header recht klein, davon gehen bereits 32 Byte für die Adressen von Sender und Empfänger drauf. Alle zusätzlich benötigten Informationen gehen in Extension-Header, die zwischen dem IP-Header und dem Header des höheren Protokolls (zum Beispiel TCP oder UDP) Platz finden. Durch die Extension-Header kann der IPv6-Header auf maximal 60 Byte anwachsen.

Zur Zeit sind sechs Extension-Header spezifiziert, die von allen IPv6-Knoten unterstützt werden müssen:

  • Hop-by-Hop Options Header, RFC 2460
  • Routing Header, RFC 2460
  • Fragment Header, RFC 2460
  • Destination Options Header, RFC 2460
  • Authentication Header, RFC 4303
  • Encapsulating Security Payload Header, RFC 4303

Es können kein, einer oder mehrere Extension-Header in einem IPv6-Paket vorkommen. RFC 2460 gibt eine Reihenfolge vor, die bei mehreren Extension-Headern in einem Datenpaket eingehalten werden soll. Jeder Header wird durch das Next-Header-Feld des vorherigen identifiziert. Extension-Header werden genau in der Reihenfolge verarbeitet, in der sie im Datenpaket vorkommen.

Normalerweise beachten nur die Knoten mit der Zieladresse die Extension-Header. Eine Ausnahme dazu bildet der Hop-by-Hop-Options-Header, der von allen Geräten beachtet wird, die das Datagramm durchläuft.

Adressierung

Aufgrund des riesigen Adressraums, und um es einfacher zu handhaben, verwendet man in einer Layer-2-Domain (früher als Broadcast-Domain bezeichnet) 64 Bit als Netzmaske, so dass 2 hoch 64 Adressen für die Knoten in diesem Segment verbleiben.

Broadcast gibt es nicht mehr. Die Funktionen, die Broadcast verwendeten, müssen nun mit Multicast arbeiten. Dementsprechend muss jeder IPv6-Knoten Multicast beherrschen.

IGMP, das bei IPv4 für die Verwaltung der Multicast-Gruppen zuständig ist, entfällt ebenfalls. Seine Aufgaben übernimmt ICMPv6.

Ebenfalls entfallen ist ARP, mit dem bei IPv4 Ethernet-Adressen und IP-Adressen verknüpft werden. Auch diese Aufgabe übernimmt ICMPv6.

Neu gegenüber IPv4 ist Stateless Address Autoconfiguration (SLAAC). Diese erspart dem Netzwerk-Administrator einiges an Arbeit. Für IPv4 ist in RFC 3927 mittlerweile ein ähnliches Verfahren beschrieben. Der Artikel [ctSKL2012] erläutert die IPv6-Autokonfiguration mittels SLAAC sowie mit DHCPv6.

Ebenfalls neu sind die Privacy Extensions bei IPv6, mit denen ein Client-Rechner in bestimmten Abständen neue Adressen für sich bestimmt und diese statt der alten Adressen für neue Verbindungen verwendet. Für Server machen diese Extensions keinen Sinn, denn der Server soll ja gefunden werden. Für den Firewall-Administrator bedeutet das, dass er nicht mit festen IP-Adressen für diese Client-Rechner arbeiten kann, sondern nur mit ganzen Subnetzen. Dem muss er in den Richtlinien und Regeln Rechnung tragen.

Aber auch Server mit festen IP-Adressen haben mehrere Adressen. So hat jeder IPv6-Knoten mindestens eine link-lokale Adresse an jedem Interface. Über diese link-lokalen Adressen kommunizieren die Knoten in einer Layer-2-Domain und darüber geben Router den Netzwerk-Präfix für dieses Segment bekannt. Aus diesem Präfix und der link-lokalen Adresse bildet jeder Knoten seine global eindeutige Adresse. Damit hat jeder Host schon mindestens zwei Adressen, mit denen er über das Netz erreicht werden kann. Hinzu kommen noch einige Multicast-Adressen, auf die er reagieren muss.

Vereinfachungen für Router

Für Router gibt es einige Vereinfachungen bei IPv6.

So können die Adressbereiche großzügig an ISPs und deren Kunden aufgeteilt werden, so dass die Routing-Tabellen der Core-Router klein bleiben können.

Router dürfen IPv6-Pakete grundsätzlich nicht fragmentieren. Ist Fragmentierung notwendig, muss der sendende Host fragmentieren und erst der empfangende Host baut das Datagramm wieder zusammen. Natürlich wird jede DPI-Firewall, die etwas auf sich hält, das auch machen. Da aber die MTU für IPv6 auf allen Segmenten mindestens 1280 Bytes beträgt, ist das für eine simple Firewall nicht nötig, denn im ersten Datagramm sind alle Informationen für die Entscheidung enthalten.

Da der IPv6-Header keine Prüfsumme enthält, müssen Router diese auch nicht neu berechnen, wenn sie das Hop-Limit-Feld reduzieren.