netzwerke:ipv6

Dies ist eine alte Version des Dokuments!


IPv6

IPv6 stellt eine Erweiterung des Adressraumes auf 128 Bit dar (vorher 32 Bit). Damit wird die Adressraumknappheit von IPv4 gelöst. Dazu muss lediglich die Internetschicht im OSI-Schichtenmodell der Version 4 durch IP v.6 ausgetauscht werden, welche wiederum abwärtskompatibel zu IP v.4 sein wird (siehe IP-Adressen)

Alle aktuellen Betriebssysteme (Windows 2000/XP/2003/Vista, Mac OS X, Cisco IOS (ab 12.2T) und BSD*/Linux (Kernel 2.4/2.6) unterstützen Ipv6 entweder nativ oder per zusätzlichem Patch).

  • nat64check - wie unterscheidet sich v4, v6only und NAT64/DNS64 beim Abruf?

Subnetting erfolgt sinnvollerweise in /48 /56 und /64 (Hosts), siehe auch: RIPE Network chart.

  • /29: 1:000(0-7):X:X:X:X:X:X
  • /32: 1:2:X:X:X:X:X:X
  • /48: 1:2:3:X:X:X:X:X
  • /56: 1:2:3:00XX:X:X:X:X
  • /64: 1:2:3:4:X:X:X:X

Die RIPE schlägt im IPv6 Allocation Request-Formular /29, /30, /31, /32 vor, es können jedoch auch größere Netz erteilt werden.

Für die Kalkulation von ipv6-Netzen steht lokale

  • subnetcalc (Ubuntu/Debian)

Online:

  • Hexadezimale Notation, die IP-Adresse ist 128 Bit lang (8 Blöcke mit jeweils 16 Bit, die mit Doppelpunkt getrennt werden): z.B.
    2001:0db8:85a3:08d3:1319:8a2e:0370:7344
  • Führende Nullen sind überflüssig und dürfen entfallen. Einen oder mehrere Blöcke mit vier Nullen direkt hintereinander kann durch das Auslassungszeichen „::“ ersetzt werden, aber nur einmal pro Adresse!. Das altbekannte localhost lässt sich somit als ::1 schreiben.
  • Es gibt keine herkömmlichen Netzwerkmasken mehr, nur noch Angaben wie bei der CIDR-Notation. Oft werden je 64 Bit für Netz- und Hostanteil verwendet: 0123:4567:89ab:def0::/64 ist eine solche Netzadresse.
  • Notation die die fälschliche Interpretation von Portnummern als Teil der IPv6-Adresse verhindert: http://[2001:0db8:85a3:08d3:1319:8a2e:0370:7344]:8080/
  • Präfixe:
    • Das Präfix 0:0:0:0:FFFF ergibt zusammen mit einer IPv4-Adresse (z.B. 10.20.30.40/32 nach CIDR-Notation) eine Adresse die der angehängten IPv4-Adresse entspricht: 0:0:0:0:FFFF::192.168.0.1/96 .
  • Reservierte Bereiche
    • Das Präfix fe80 bezeichnet ausschließlich im lokale Netz gültige Adressen (werden nicht vom Router weitergeleitet).
    • private Adressbereiche/Netze / Unique Local Addresses (ULA)1)lassen sich im Bereich fd00::/8 anlegen. Empfohlen wird ein zufälliges /48 aus dem Bereich fc00::/8 (also von fc00:0000:0000:0000:0000:0000:0000:0000 - fcff:ffff:ffff:ffff:ffff:ffff:ffff:ffff) anlegen.
    • Schulungsbeispiele sollten aus dem Bereich 2001:db8::/32 stammen
    • Weitere Bereiche listet Heise Netze auf.
  • abgespeckter Header: Sämtliche zusätzliche Funktion werden nicht mehr im eigentlichen Ipv6 Header integriert, sondern als sog. Extension Headers angehängt. Der neue IP Header mit Adresse und Feldern immer die festgelegt (deterministische Länge) von 40 Byte (ohne Erweiterungen).
  • ICMPv6
    • Autokonfiguration (stateless)
    • Path MTU
    • Multicast Group Management
  • automatische Ermittlung der MTU (Maximum Transmission Unit)
  • Integration von IPsec: Durch die Extension-Header ESP (Encapsulated Security Payload) und AH (Authentication Header) wird Verschlüsselung, Authentifikation und Integrität von Daten über virtuelle Tunnel oder Point-2-Point-Verbindungen garantiert. Sichere Austausch der Schlüssel wird in zwei Phasen über ein IKE (Internet Key Exchange).
  • Multihoming (Anbindung über mehrere Provider über davon unabhängige Adressen)

Die neuen Netzwerke und Adressen lassen sich mit sipcalc oder Webseiten wie IPv6 Calculator berechnen:

-[ipv6 : 0123:4567:89ab:def0::/64] - 0 Expanded Address 	0123:4567:89ab:def0:0000:0000:0000:0000
Compressed address 	123:4567:89ab:def0::
Subnet prefix (masked) 	123:4567:89ab:def0:0:0:0:0/64
Address ID (masked) 	0:0:0:0:0:0:0:0/64
Prefix address 	ffff:ffff:ffff:ffff:0:0:0:0
Prefix length 	64
Address type 	Unassigned
Network range 	0123:4567:89ab:def0:0000:0000:0000:0000 -
	0123:4567:89ab:def0:ffff:ffff:ffff:ffff
Interface Config 	ip address 123:4567:89ab:def0::/64
BGP 	network 123:4567:89ab:def0::/64
OSPF 	network area

Der Host bekommt IPv4- und IPv6-Adressen.

Erfordert doppelten Pflegeaufwand für die Adressen, Problem müssen für beide Protokolle debuggt werden aber kein NAT und sonstige Mechanismen in der Infrastruktur (außer die Aktivierung von IPv6 selbst). Da die Anzahl der freien IP-Adressen stetig sinkt (bzw. teurer werden) ist dies wahrscheinlich nur noch für wenige Systeme (MTAs, Loadbalancer, …) machbar bzw. nötig.

Der Host bekommt eine weltweite routebare IPv6 Adresse und kann (ohne weitere Maßnahmen) nicht mit IPv4-Gegenstellen kommunizieren.

eingehend

  • DMZ-Netz mit Loadbalancer/Reverse-Proxy (geht nicht mit allen Protokollen und 1:1-Zuordnungen bei TCP sind z.B. bei UDP nur bei wenigen Load-Balancern möglich)
  • NAT4 (wenn kein Portkonflikt)

ausgehend:

Einrichtung: Tunnelbroker.net in der fritzbox einrichten

IPv4-Adresse des Tunnelendpunktes „Server IPv4 Address“: IPv6-Adresse des Tunnelendpunktes „„Server IPv6 Address“: Lokale IPv6-Adresse Client IPv6 Address“ ohne das /64 IPv6-Präfix: Routed /64

Je nach Integrationsziel stehen viele Möglichkeiten zur Verfügung wie Tunneling über

Name Bedeutung Anmerkungen
6in4 Ipv6 Adressen in Ipv4 Adressen verschachteln, die beiden Endpunkte des Tunnels stellen eine Brücke von/ins IPv6-Internet dar „Temporary IPv6 Address“ ist die Außen-IP
6RD basiert auf 6to4, benutzt jedoch keinen speziellen Adressbereich, sondern den IPv6-Adressbereich des Provider muss vom Provider angeboten werden
6over4 Verfahren für isolierte Ipv6 Rechner in einem Ipv4 Netz Übertragung per Multicast und Übergabe von Ipv4-Stack an IPv6-Stack
6to4 2) Eine Ipv4 Adresse kann in Ipv6 Darstellung geschrieben werden: 2002::141.28.2.19 nächstes Gateway wird automatisch ermittelt, die Qualität ist jedoch schlechter und die Routen länger
Teredo Tunneltechnik

Die IETF (Internet Engineering Task Force)-Gruppe ngtrans beschäftigt sich mit dem Thema.

  • Durch die Erweiterung des Adressraumes sind NAT-Krücken unnötig
  • höhere Routingeffizienz
  • direkte Zuordnung zu Netzen ist durch die schlechtere Lesbarkeit nicht mehr gegeben

IPv6 Adressen enthalten häufig Hardwareadressen der Netzwerkkarten deshalb sind statische IP-Adressen ohne Konfiguration des Servers möglich. Diese kann mit dem Router-Advertising-Daemon (radvd) erfolgen.

:!: Achtung die folgende Konfiguration gilt nur für statisch vergebene IPv6-Adressen die ein Provider für einen nativen ipv6-Zugang vergeben hat oder für ipv6-Installation im LAN. Tunnelbroker und ähnliche Hilfskonstruktionen die für Endkundenanschlüsse aktuell (mangels nativen ipv6-Zugang) nötig sind, erfordern eine andere Konfiguration!

Fall 1: Gateway innerhalb des eigenen Netzwerks

Fall 1: Gateway innerhalb des eigenen Netzwerks (Angaben wie eth0 und die IP6-Adressen des Hosts (0123:4567:89ab:def0::2) und des Routers/Gateways (0123:4567:89ab:def0::1) müssen angepasst werden)

In der Datei /etc/network/interfaces diese Zeilen hinzufügen (Beispiel):

iface eth0 inet6 static
  # Haupt-IPv6-Adresse des Servers
  address 0123:4567:89ab:def0::2
  netmask 64
  
  gateway 0123:4567:89ab:def0::1
  
  # OPTIONAL: Default/Standard ipv6 Route
  up ip -6 route add default via 0123:4567:89ab:def0::1 dev eth0
  down ip -6 route del default via 0123:4567:89ab:def0::1 dev eth0

Fall 2: Gateway außerhalb des eigenen Netzwerks

Fall 2: Gateway außerhalb des eigenen Netzwerks - Angaben wie eth0 und die IP6-Adressen des Hosts (0123:4567:89ab:def0::2) und des Routers/Gateways (0123:4567:89ab:defa::1) müssen angepasst werden):

in der Datei /etc/network/interfaces diese Zeilen hinzufügen:

iface eth0 inet6 static
  # Haupt-IPv6-Adresse des Servers
  address 0123:4567:89ab:def0::2
  netmask 64
  
  # Host-Route, da das Gateway ausserhalb des eigenen /64 Blocks liegt
  up ip -6 route add 0123:4567:89ab:defa::1 dev eth0
  down ip -6 route del 0123:4567:89ab:defa::1 dev eth0
  
  # OPTIONAL: Default ipv6 Route
  up ip -6 route add default via 0123:4567:89ab:defa::1 dev eth0
  down ip -6 route del default via 0123:4567:89ab:defa::1 dev eth0

Optional in der Datei /etc/sysctl.conf diese Zeilen hinzufügen:

###################################################################
# Additional settings - these settings can improve the network
# security of the host and prevent against some network attacks
# including spoofing attacks and man in the middle attacks through
# redirection. Some network environments, however, require that these
# settings are disabled so review and enable them as needed.
#
# Do not accept ICMP redirects (prevent MITM attacks)
net.ipv6.conf.all.accept_redirects = 0

# Do not accept IP source route packets (we are not a router)
net.ipv6.conf.all.accept_source_route = 0

Default/Standard ipv6 Route nur fallweise setzen

Default/Standard ipv6 Route fallweise setzen:

  • Standardroute (nur ipv6 !)löschen:
    ip -6 route del default
  • Standardroute setzen (hier: 0123:4567:89ab:defa::1):
    ip -6 route add default via 0123:4567:89ab:defa::1 dev eth0

Router-Konfiguration

Dauerhaft die Weiterleitung von Paketen aktivieren (als Router arbeiten):

In der Datei /etc/sysctl.conf diese Zeilen hinzufügen:

# Uncomment the next line to enable packet forwarding for IPv6
#  Enabling this option disables Stateless Address Autoconfiguration
#  based on Router Advertisements for this host
net.ipv6.conf.all.forwarding=1
# oder alternativ nur eth0:
# net.ipv6.conf.eth0.forwarding=1

oder fallweise:

  • Alle Netzwerkschnittstellen:
    echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
  • bestimmte Schnitstelle (hier eth0):
    /proc/sys/net/ipv6/conf/eth0/forwarding

Diagnose-tools

  • IPv6-Adressen anzeigen:
    ifconfig eth0

    oder

    ip -6 address show eth0
  • IPv6 routing-Tabelle des Kernels:
    netstat -nr -6
  • Ping:
    ping6 ipv6.google.com
  • Traceroute:
    traceroute6 ipv6.google.com
  • DNS-Auflösung:
    • in ipv6 auflösen:
      dig ipv6.google.com AAAA

      bzw. an einen bestimmten DNS-Server (hier Google Public DNS)

      dig www.six.heise.de AAAA @2001:4860:4860::8888
    • Rückwärtsauflösung:
      dig -x 2a00:1828:1000:1148::2
    • ;; QUESTION SECTION:
      ;2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.4.1.1.0.0.0.1.8.2.8.1.0.0.a.2.ip6.arpa. IN PTR
      
      ;; ANSWER SECTION:
      2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.4.1.1.0.0.0.1.8.2.8.1.0.0.a.2.ip6.arpa. 3600 IN PTR dns01.manitu.net.
    • per ipv6 erreichbare DNS-Server (Auswahl)
  • HTTP-Abruf testen:
    wget -6 ipv6.google.com

damit nginx sowohl auf v4 als auch auf v6 hört:

  listen 80;
  listen [::]:80;
  listen 443 ssl;
  listen [::]:443 ssl;

UNC-Pfade

UNC-Pfade dürfen keine Doppelpunkte enthalten deshalb ist folgender workaround notwendig:

  1. alle Doppelpunkte durch Bindestriche ersetzten
  2. und ipv6-literal.net anhängen.

Beispiel:

net use \\fe08::babe:face:cafe:dead\share
net use \\fe08--babe-face-cafe-dead.ipv6-literal.net\share

Die Rückumwandlung in die IPv6-Adresse geht übrigens nicht über eine DNS-Abfrage, sondern ist seit Vista als Abkürzung in die Namensauflösung von Windows eingebaut. In anderen Betriebssystemen und Programmen mit eigener Namensauflösung funktioniert der Trick daher nicht.

Quelle: IPv6 in UNC-Pfaden.


1)
funktioniert ähnlich wie vorher APIPA (Automatic Private IP Adressing)
2)
funktioniert nur dann korrekt, wenn Router oder PC direkt am IPv4-Internet hängen und eine öffentliche IPv4-Adresse besitzen