Inhaltsverzeichnis

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 (ab Windows 2000/XP/2003/Vista, Mac OS X, Cisco IOS (ab 12.2T) und BSD*/Linux (Kernel 2.4/2.6) unterstützen IPv6 seit langem.

Vorträge

Einführungserfahrungen

Blocker für IPv6

Vorteile

Nachteile

Subnetting

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

Einem Host sollten nicht weniger als ein /64 zugewiesen werden (sonst funktioniert SLAAC nicht und Unicast-Prefix-based IPv6 Multicast Addresses verlässt sich drauf.)

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

Online:

Merkmale

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

Vergleich v4 zu v6

Merkmal v4 v6
Adresslänge/Wertebereich 32 Bit (4 Octets mit Werten von 0-255 getrennt durch Punkt) ingesamt mit theoretisch 2 hoch 32 (4.294.967.296) Adressen Adresslänge 128 Bit (eingeteilt in Gruppen von je 4 Hexadezimalwerte/nibbles getrennt durch Doppelpunkte, also 8 mal 16 Bit); ingesamt: 340 Sextillionen Adressen
Adressform Netzanteil, Hostanteil (durch Netzmaske bestimmt) Network Prefix (64Bit; wobei dieser in Global Routing Prefix und Subnet Prefix aufgeteilt ist 2)), Interface Identifier (64Bit)
private Adressen RFC 1918 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 zufälliges /48 aus dem Bereich fd00::/8 (generell nicht empfohlen da wieder NAT nötig wird)
Einteilung Netz / Hostanteil subnetting durch Netzwerkmasken entfällt, das subnet prefix zusammen mit der Interface ID erfüllt jedoch eine ähnliche Funktion
Broadcast letzte Adresse im Netz entfällt, wird mit multicast realisiert (Teilnehmen subscriben broadcast-Adressen)
Layer 2 Adressierung über ARP-Protokoll, Liste mit arp -a anzeigen NDP erfragt link-local-Adresse (diese wird lokal im fe80-Bereich durch IEEE EUI-64 3) berechnet oder zufällig: Linux ip -6 neigh, *BSD: ndp -an, Windows: netsh interface ipv6 show neighbors level=verbose alle Rechner im lokalen Netz via multicast pollen: ping -I eth0 ff02::1 (all-nodes multicast; DUP ist bei der Ausgabe normal weil alle antworten)
Adresskonflikte müssen manuell erkannt werden können automatisch über Neighbor Solicitation (NS) Duplicate Address Detection (DAD) erkannt werden (all-solicited nodes multicast an ff02:1:ff:xx:xxx wobei x quasi die MAC-Adresse ist
DHCP DHCPv4: Adressvergabe und Optionen wie DNS-Server DHCPv6: IPv6-Adresse (stateful DHCP), client kann aber auch Autoconfiguration SLAAC benutzen (RA flag: managed=0)
Router manuell oder via DHCP manuell, automatisch über Router Solicitation und Router Advertisement. Prioritäten (Präferenz) als Option möglich (low, medium, high)(RA flag managed=1), Delegierung eines Präfix zur Unterverteilung möglich (Präfix delegation), Router über multicast finden: ping -I eth0 ff02::2(all-routers multicast)
automatische DNS-Server Verteilung DHCP DHCPv6 oder über Router Advertisement (RFC 5006) als option (other configuration=1) mit z.B. rdnssd
NAT NAT Normalfall, da private Adressen die Adressknappheit ausgleichen müssen, Rückroute bei Zielroutern nötig NAT nur in Ausnahmefällen nötig, nicht empfohlen
Split-DNS häufig (internes DNS mit privaten Adressen) 4) nicht mehr nötig da Adressen ohnehin im Normafall global routebar

Verhalten von Clients

Sobald ein Client eine IPv6-Adresse mit scope global hat (scope link wird nur innerhalb versucht er IPv6-Verbindungen aufzubauen indem er abfrag ob das Ziel ein AAAA-Record im DNS hat. Ist dies der Fall wird eine Verbindung versucht (andernfalls wird nur IPv4 benutzt). Schlägt die V6-Verbindung fehl, findet nicht auf jedem Client ein fallback statt und selbst wenn kann dies zu merkbaren Verzögerungen führen. Die IETF hat daher happy eyeballs vorgeschlagen.

Manche Anwendungen müssen bei IPv6

SSSD.conf

[domain/ldap]
lookup_family_order = ipv6_first

Zugangsmethoden

native Anbindung "Dual-stack"

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.

ipv6 only

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

eingehend

ausgehend:

Tunnelbroker

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

Migrationszenarien

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 5) 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.

Zuweisen von statischen IPv6 Adressen mit radvd

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.

IPv6 fähige Webseiten

Konfiguration

Ipv6 in Linux

:!: 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:

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:

Diagnose-tools

IPv6 Privacy Extensions

http://mirrors.bieringer.de/Linux+IPv6-HOWTO-de/x1062.html

Webserver

Hinweise zu IPv6 bei Webservern:

Unterschiede von DHCPv6 zu DHCPv4

IPv6 bei der Fritz.box

Bei v4 ist die Freigabe noch per NAT auf die eine Außen-IP der Box gemappt (eingehend und ausgehend die gleiche public IP).

Bei v6 hat die Box eine eigene v6-Adresse und vergibt aus seinem Präfixen Adressen für die Clients in seinem Netz.

Konfiguration: Heimnetz → Netzwerk → Netzwerkeinstellungen → IPv6-Einstellungen (Erweiterte Ansicht)

„FRITZ!Box wird als DNS-Server via DHCPv6 bekannt gegeben. Teile des vom Internetanbieter zugewiesenen IPv6-Netzes werden an nachgelagerte Router weitergegeben. Geräte im Heimnetz bekommen eine IPv6-Adresse via DHCPv6 zugewiesen.“

Internet → Zugangsart → DNS-Server

Die Fritz.box hat eine etwas gewöhnungsbedürftige Methode zur Port-Freigabe. Besondern wichtig ist die IPv6 Interface-ID, die sich aus der zweiten /64 hälfte der mngtmpaddr ergibt (die aus der MAC-Adresse berechnet wird).

ip -6 ad sh eth0 | grep mng"
    inet6 2a02:1234:1234:1234:1234:5678:9012:3456/64 scope global dynamic mngtmpaddr noprefixroute 

Hier ist die Interface-ID also 1234:5678:9012:3456 .

dyndns

Bei Fritz-boxen ist „myfritz“ dabei, die auch mit einem CNAME-Eintrag die myfritz-Adresse gut von Außen ansteuern/sehen kann (zumindest wenn kein DS-Lite im Spiel ist).

Da sich bei v6 auch das Präfix ändert, wäre dies interessant daraus die Rechner-Adressen abzuleiten.

Ipv6 in Windows

Bei Nutzung von Win10 und SLAAC im Dualstack-modus werden die v6-Server via RA ignoriert

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.

Problembehandlung

NDP Tabelle

Ipv6 Absicherung

Router Advertisements ignorieren (wenn eh Router manuell gesetzt) und SLAAC nicht eingesetzt:

net.ipv6.conf.default.accept_ra=0
net.ipv6.conf.default.autoconf=0
net.ipv6.conf.all.accept_ra=0
net.ipv6.conf.all.autoconf=0
# wenn eth0:
net.ipv6.conf.eth0.accept_ra=0
net.ipv6.conf.eth0.autoconf=0

zur Laufzeit:

for Interface in /proc/sys/net/ipv6/conf/*; do sysctl --write $(echo $Interface.autoconf=0 | sed "s#/#.#g" | sed "s/.proc.sys.//g"); done
1)
funktioniert ähnlich wie vorher APIPA (Automatic Private IP Adressing)
2)
genauer: /3 IANA global prefix, /23 regional prefix, /32 Provider prefix, /48 site prefix, /64 subnet prefix
4)
aber nicht unbedingt nötig da auch private Adressen in öffentlichen DNS eingetragen werden können, manche DNS-Resolver - z.B. Fritz.box - haben allerdings einen rebind-Schutz
5)
funktioniert nur dann korrekt, wenn Router oder PC direkt am IPv4-Internet hängen und eine öffentliche IPv4-Adresse besitzen