Links:
RFC2460 IPv6 Spezifikation
RFC4864 Local Network Protection for IPv6
zugelassene IANA IPv6 Global Unicast Addresses
Wikipedia IPv6
Das große IPv6-Videotraining
IPv6 Test Seiten:
Test-IPv6.com
IPv6-Test.com
IP6.me / IP4.me
Begriffe:
Identity Association for Prefix Delegation (IA_PD)
Identity Association Non- Temporary Address (IA_NA)
Stateless Address Autokonfiguration (SLAAC)
Neighbor-Discovery-Protocols (NDP)
Router-Solicitation (RS)
Router-Advertisement (RA)
Unicast Reverse Path Forwarding (uRPF)
- Pingtest mit einem GoogleServer (Windows)
ping -6 ipv6.google.com
- IP-Adress Abfrage (Linux)
dig AAAA ipv6.google.com
Stateless Adresskonfiguration | |
---|---|
der Subnetz Prefix wird durch Router-Advertisement Nachrichten verteilt, der Host bildet den Hostanteil der IPv6 Adresse selbst. | |
Stateful Adresskonfiguration | |
DHCPv6 Stateful Konfiguration | ein DHCPv6 Server verteilt IPv6 Host Adressen und DNS-Server Adressen |
DHCPv6 Stateless Konfiguration | ein DHCPv6 Server verteilt DNS-Server Adressen, Domainnamen u.a. aber keine IPv6 Host Adressen |
Es werden zwei Neighbor-Discovery-Protocols (NDP) Nachrichten versendet, eine Router-Solicitation (RS), vom Client zu allen Routern (IPv6 Multicast ff02::2) hierin wir das Präfix des Subnetz und die Router IPv6-Adresse angefragt und eine Router-Advertisement (RA) Nachricht, vom Router an alle Hosts des Subnetz (IPv6 Multicast ff02::1)
IPv6-Adressen sind 128 Bit lang und werden in 8 Gruppen von je 16 Bit (2 Byte) in Hexadezimal dargestellt, die durch Doppelpunkte getrennt werden. Üblicherweise adressieren die ersten 64Bit das Netz (Präfix), der Rest den Host (Interface Identifier).
Beispiel:
voll ausgeschriebene IPv6 Adresse
2001:0db8:0000:0000:0000:2323:e06f:0001/64
2001:0db8:0000:0000:0100:0000:0000:0001/64
gekürzte Schreibweise
-
führende Nullen eines Quartetts dürfen entfallen
- ein oder mehrere Quartetts, die komplett aus Nullen bestehen, werden durch :: abgekürzt (darf aber nur ein Mal innerhalb einer Adresse geschehen).
2001:db8::2323:e06f:1/64 2001:db8::100:0000:0000:1/64 2001:db8:0000:0000:100::1/64 2001:db8::100:0:0:1/64 2001:db8:0:0:100::1/64
Präfix
2001:db8::/64
Interface Identifier
::2323:e06f:1 :100:0:0:1
Eine Netzwerkschnittstelle kann mehrere IPv6 Adressen haben, bedingt durch die mögliche Zuweisung mehrerer Präfixe zu einem Interface Identifier.
Beispieladresse: 2001:0db8:0000:0000:0001:0000:0000:0001
2001:0db8:0:0:0:0:0:1 -> 2001:db8::1
2001:0db8:0:1:0:0:0:1 -> 2001:db8:0:1::1
2001:0db8:0:1:2:2:2:1 -> 2001:db8:0:1:2:2:2:1
2001:0db8:0:0:1:0:0:1 -> 2001:db8::1:0:0:1
2001:0DB8:0:AdEF:0:0:0:1 -> 2001:db8:0:adef::1
[2001:db8::1]:80
- MAC Adresse des Interface
Herstellerkennung 24Bit | Adapterkennung 24Bit | |||||
---|---|---|---|---|---|---|
Hex | XX |
XX |
XX |
YY |
YY |
YY |
Dezimal | xxxxxx00 |
xxxxxxxx |
xxxxxxxxx |
yyyyyyyy |
yyyyyyyy |
yyyyyyyy |
- Bit 7 wird umgekehrt und in der Mitte der MAC wird ff:fe eingefügt
Dezimal | xxxxxx10 |
xxxxxxxx |
xxxxxxxx |
11111111 |
11111110 |
yyyyyyyy |
yyyyyyyy |
yyyyyyyy |
daraus ergibt sich der Interface Identifier (Hex) XZXX:XXff:feYY:YYYY
!! Wenn Privacy Extension nicht aktiv ist, wird der Interface Identifier immer mit diesem Verfahren zusammengesetzt. So kann die Gegenstelle sogar den Hersteller des Gerät identifizieren, (da er die MAC Adresse kennt) mit dem es kommuniziert.
an den ersten Bits einer Adresse lässt sich deren Typ erkennen. (Format Präfix)
Präfix | Verwendung |
---|---|
0000 001 | NSAP Adresse |
0000 010 | IPX Adresse |
001 | global, eindeutige Adresse |
1111 1110 10 | auf eine Verbindung begrenzte Adresse (Link-local-Adresse) |
1111 1110 11 | auf eine Einrichtung begrenzte Adresse |
1111 1111 | Multicast |
Eine weitere Kategorie bilden die Multicast-Adressen (FF...), die in verschiedene Unterkategorien eingeteilt werden. Es wurden auch einige Multicast-Adressen für das protokoll-eigene Netzwerkmanagement festgelegt. So können zum Beispiel mit FF02::2 alle Router auf der lokalen Verbindung angesprochen werden, mit FF02::1 alle Hosts auf der Verbindung.
unter Windows wird mit dem angehängten % Zeichen die InterfaceID mit angegeben.
fe80::207:e9ff:fe0f:7e77%6
Präfix | Nutzung | Quelle |
---|---|---|
0000::/8 | Reserviert | RFC 4291 |
0100::/8 | Reserviert | RFC 4291 |
0200::/7 | Reserviert | RFC 4048 |
0400::/6 | Reserviert | RFC 4291 |
0800::/5 | Reserviert | RFC 4291 |
1000::/4 | Reserviert | RFC 4291 |
2000::/3 | Global Unicast | RFC 4291 |
4000::/3 | Reserviert | RFC 4291 |
6000::/3 | Reserviert | RFC 4291 |
8000::/3 | Reserviert | RFC 4291 |
a000::/3 | Reserviert | RFC 4291 |
c000::/3 | Reserviert | RFC 4291 |
e000::/4 | Reserviert | RFC 4291 |
f000::/5 | Reserviert | RFC 4291 |
f800::/6 | Reserviert | RFC 4291 |
fc00::/7 | Unique Local Unicast | RFC 4193 |
fe00::/9 | Reserviert | RFC 4291 |
fe80::/10 | Link-local | RFC 4291 |
fec0::/10 | Reserviert | RFC 3879 |
ff00::/8 | Multicast | RFC 4291 |
Diese Adressen, sind auf einen physikalischen Raum beschränkt nur innerhalb eines LAN kann man damit kommunizieren. Pakete mit dieser Zieladresse werden nicht über Router hinweg transportiert. Netzwerkdienste wie WEB oder FTP funktionieren damit allein noch nicht, der Rechner benötigt dafür noch eine IPv6 Adresse mit globalem Gültigkeitsbereich (Global Scope). Eine Linklocal-Adresse setzt sich folgendermassen zusammensetzen:
10 Bit | 54 Bit | 64 Bit |
1111 1110 10 | 00 .. 00 | MAC - Adresse der NIC auf 64 Bit erweitert |
fe80::/10 Adressbereich von fe80:: - febf::
Präfix, gefolgt von 64Bit die der Host aus der Hardware-Adresse der Netzwerkkarte zusammensetzt (MAC-Adresse).
Da alle Karten im Netz bei der Link-Local-Adresse den gleichen Präfix haben (fe80::/10), muß man die Schnittstelle immer mit angeben, da der Rechner sonst nicht weiß über welche Schnittstelle er kommunizieren soll. Beispiel für einen Kommunikationstest mit Linux und Windows
Linux> ping6 -l eth0 fe80::207:e9ff:fe0f:7e77 Windows> ping -6 fe80::207:e9ff:fe0f:7e77%6
in RFC 4007 ist festgelegt, das die Link-local Adresse mit einem % Zeichen vom Interface getrennt eingegeben werden muss. Unter Windows wird bei der Ausgabe von ipconfig /all
die Interfacebezeichnung der Link-local Adresse immer mit angegeben (Verbindungslokale IPv6-Adresse).
Linux> ping6 -c 4 fe80::207:e9ff:fe0f:7e77%eth1 Windows> ping -6 fe80::207:e9ff:fe0f:7e77%6
Prinzip der Erweiterung der MAC-Adresse (48 Bit) auf die gewünschten 64 Bit
Die global eindeutige MAC-Adr wird in der Mitte geteielt in 2 x 3 Byte, die
ersten 3 Byte bilden den Anfang der neuen Adresse, dann folgen 2 Byte mit
festem Inhalt FF-FE (hex), anschliessend die letzten 3 Byte der MAC
00 07 E9 0D 7C 27 ( MAC einer Intel Nic)
daraus ergibt sich folgende 64 Bit Adresse
0007:E9FF:FE0D:7C27
Besondere Beachtung verdient noch das zweit niedrigsten Bit im ersten Byte
der Adresse. Mit einer 0 wird angezeigt, das die Adresse in einem bestimmten
Kontext eindeutig ist, während mit einer 1 eine global Eindeutigkeit
angezeigt wird. Da die Adresse aus einer MAC erstellt wird muss man an dieser
Stelle eine 1 setzen, wenn diese Adresse aus frei gewählten Bestandteilen
erstellt wurde, muss man eine 0 setzen.
Das bedeuted man muss zum ersten Byte noch 0000 0010 dazu Addieren.
0007:E9FF:FE0D:7C27
+000 0010 (nur bei global Eindeutigen Adressen)
= 0207:E9FF:FE0D:7C27
Das ergibt eine Link-local-Adresse:
FE80:0000:0000:0000:0207:E9FF:FE0D:7C27 oder
FE80::207:E9FF:FE0D:7C27
Side-local-Adresse
10 Bit | 38 Bit | 16 Bit | 64 Bit |
1111 1110 11 | 00 .. 00 | Subnet-ID | eindeutige Adresse |
FEC0:0000:0000:1000:2340:0000:0000:0001
1000 - Subnet-ID
2340:0000:0000:0001 - eindeutige Adresse
Nach RFC4193 bietet ähnliche Funktionen wie private IPv4 Adressen, diese Adressen sollen im unterschied zu IPv4 weltweit eindeutig sein und sind nur für die lokale Kommunikation gedacht.
FC00::/7 - (von FC00 bis FDFF) nur das Präfix FD ist derzeit für lokal generierte ULA vorgesehen.
Beispiel für eine "private" nicht ins Internet routbare ULA AdresseIPv6 Adresse aus diesem
FD37:83EF:3822:FF54::1
FD - Präfix der ULA
37:83EF:3822 - zufälliger (einmaliger) 40-Bit-Wert
FF54 - gewählte Subnet ID
FC00::/8 - der Prafix zeigt global zugewiesener ULAs durch RIPE an
FD00::/8 - der Präfix zeigt lokal generierte ULAs an
nach diesen 8Bits für FC oder FD folgen 40Bits für eine eindeutige Side-ID, dann kommen 16Bit für die Subnet-ID welche ein Netz innerhalb der Side angibt und zum Schluss 64Bit für das Interface. Router sollen diese Adressen nur innerhalb des Standortes (Side) oder Firmennetzwerk weiterleiten, jedoch nicht im globalen Internet. ULAs die mit FD beginnen sind nur aller Wahrscheinlichkeit weltweit eindeutig, da diese durch ein Script generiert werden.
für die ersten IPv6 versuche kann man auch den Präfix 2001:DB8::/32 benutzen, der nach RFC3849 für Dokumentationszwecke gedacht ist.
IPv6 nutzt die Stateless-Auto-Configuration, bei der ein Router einem Host den Adress-Präfix mitteilt der innerhalb des LANs benutzt wird. Mit Hilfe der Link-Localen-Adresse sendet der Host an die Multicast-Adresse ff02::2 (alle Router) eine Bitte ihm den IPv6-Präfix mitzuteilen. Hat der Host den im LAN benutzen Präfix erhalten, bildet er daraus und aus der Hardware-Schnittstelle die IPv6 Adresse und prüft danach ob diese im LAN auch wirklich nicht schon verwendet wird. Ist die Adresse frei wird diese der Schnittstelle zugewiesen und aktiviert. Ein Rechner der als Router arbeitet und den Präfix verteilen soll benötigt immer eine feste IP-Adresse.
z.B. 2001:db8::1
Globale Adressen
Aussehen einer globalen Adresse (Hirarchieche Struktur)
3 | 13 Bit | 8 Bit | 24 Bit | 16 Bit | 64 Bit |
001 | TLA | reserviert | NLA | SLA | lokal |
TLA - Top Level Aggregation (Superprovider, Backbones)
NLA - Next Level Aggregation (Internet Provider)
SLA - Site Level Aggregation (Firma)
lokal - Interface (Router, Nic)
Der Superprovider verteielt Adressen an den Internet-Provider, der diese
dann an seine Kunden weitergibt. So ist es auch möglich, Bereiche in
Routern zusammenzufassen
Anycast-Adresse | Verwendung |
lokales Präfix ::0 | alle Router in einem Teilnetz |
Mit der Anycast-Adresse kann man mehrere Enderäte unter einer Adresse ansprechen. Die Adressen sind von normalen Unicast-Adressen nicht zu unterscheiden, deshalb muss man die Funktionen eines Anycast beim jeweiligen Gerät einstellen. z.B. bei Routern, wenn mehrere Geräte über die gleiche Anycast-Adresse erreichbar sind. Das ermöglicht z.B. eine Lastenverteilung, oder Sicherung gegen Ausfall
Multicast eignet sich zum Verteilen von Daten, wie Video oder Audio an viele
Empfänger. Durch die Multicast-Adressen werden die Broadcast zum auffinden
von Diensten von IPv4 im Netzwerk abgelöst.
Aufbau einer Multicast-Adresse
8 Bit | 4 Bit | 4 Bit | 112 Bit |
1111 1111 | Typ | Bereich | Gruppe |
2548::58:854:1012:8532 ergibt die Multicast-Adresse
FF02::1:FF12:8532
Die so genannte "Solicited Node" belegt den Bereich FF02::1:FF00:0
bis FF02::1:FFFF:FFFF.
Ein Gerät muss mit jeder ihm zugeteielten Uni- oder Anycast-Adresse
eine Multicast-Adresse ermitteln
Multicast-Adresse | Verwendung |
Adresse mit Gültigkeit innerhalb des lokalen Gerätes | |
---|---|
FF01::1 | alle Anschlüsse (Interfaces) |
FF01::2 | alle Router |
Adresse mit Gültigkeit innerhalb der lokale Verbindung | |
FF02::1 | alle Geräte |
FF02::2 | alle Router |
FF02::1:1 | alle Anschlüsse |
FF02::1:2 | alle DHCP-Agenten |
FF02::1:FFxx:xxxx | automatisch generierte Adresse |
Adresse mit Gültigkeit innerhalb des lokale Bereiches | |
FF05::2 | alle Router |
FF05::3 | alle DHCP-Server |
FF05::1:3 | alle DHCP-Server |
FF05::1:4 | alle DHCP-Relais |
FF05::1:1000 bis FF05::1:13FF | Service Location |
Adresse mit Gültigkeit innerhalb beliebiger Bereiches | |
FF0x:: | reserviert |
FF0x::100 | VMTP-Manager |
FF0x::101 | NTP (Network Time Protokoll) |
FF0x::118 | Microsoft-DS |
keine vollständige Liste ! | es sind noch viel mehr Adressen definiert |
Adresse, Präfix | Nutzung | Quelle |
---|---|---|
::1/128 | Loopback-Adresse | RFC 4291 |
::/128 | Unspezifizierte Adresse | RFC 4291 |
::ffff:0:0/96 oder 0:0:0:0:0:ffff:a.b.c.d | IPv4 mapped | RFC 4291 |
64:ff9b::/96 | Übersetzung von IPv6 zu IPv4 und zurück | RFC 6052 |
0100::/64 | Verworfene Pakete | RFC 6666 |
2001:0000::/32 | Teredo Tunneltechnik | RFC 4380 |
2001:0002::/48 | Benchmarking | RFC 5180 |
2001:db8::/32 | Dokumentation | RFC 3849 |
2002::/16 | 6to4 Tunneltechnik | RFC 3056 |
3 | 13 Bit | 32 Bit | 16 Bit | 64 Bit |
001 | 1FFE | 6Bone | Anwender | lokal |
96 Bit | 32 Bit |
0 | IPv4 |
zusätzlich zu dieser IPv4 Adresse wird noch eine Link-local-Adresse zur Verwaltung des Tunnels (FE80::IPv4) gebildet. In dei Routing-Tabelle noch 0000::/96 eintragen, so werden alle Pakete an den Treiber für den Tunnel weitergeleitet.
16 Bit | 32 Bit | 16 Bit | 64 Bit |
2002 | IPv4-Adresse | Subnetz | lokal |
6to4 Tunnel wird über das IP-Protokoll 41 aufgebaut.
Für einen Teredo Tunnel wird der UDP Port 3544 genutzt.
- Neighbor Cache anzeigen
Linux> ip neighbor show Windows> netsh int ipv6 show neighbors
Erreichbar (REACHABLE) - Adresse ist erreichbar (vor wenigen Sekunden)
Abgelaufen (STALE) - Adresse war (beim letzten mal) erreichbar
Nicht erreichbar - Adresse nicht erreichbar
REACHABLE - Adresse ist erreichbar (vor wenigen Sekunden)
STALE - Adresse war (beim letzten mal) erreichbar
INCOMPLETE - Erreichbarkeit der Adresse wird gerade geprüft, war aber noch nicht erfolgreich
FAILED - Adresse nicht erreichbar
Neighbor Solicitation (Type 135) - Anfrage ans Ziel wird gestellt
Neighbor Advertisement (Type 136) - Antwort des Ziels
mögliche Flags | |
---|---|
Router | gesetzt wenn Host ein Router ist |
Solicited | gesetzt wenn Host erreichbar ist |
Override | Gegenseite legt in der Antwort fest, was in den Neighbor Cache eingetragen werden soll. Ist es gesetzt, werden existierende Eintrage zum Host überschrieben, ist es nicht gesetzt, darf ein unvollständiger Eintrag nur ergänzt werden |
Die RFC beschreibt wie unter IPv6 regelmäßig ein zufälliger Interface Identifier
(hinteren 64Bit der IP-Adresse) neu erzeugt wird. Das Verfahren soll das wiederfinden des Gerätes im Internet verhindern (vergleichbar mit einer Dynamischen IP Adresse).
Ist bei WinXP/Server 2003, Vista/Server2008 und Server2008R2/Win7 per default aktiv. Bei OS X, Linux kann es aktiviert werden.
- OpenSuSE Datei /etc/sysctl.conf
um den Eintrag erweitern
net.ipv6.conf.<IF>.use_tempaddr=2
<IF> steht dabei für den Namen der Schnittstelle eth0 u.a.
- Ubuntu Datei /etc/sysctl.conf
Eintrag
net.ipv6.conf.default.use_tempaddr=2
- Mac OS X Datei /etc/sysctl.conf
Eintrag
net.inet6.ip6.use_tempaddr=1
oder temporär mit
sudo -w net.inet6.ip6.use_tempaddr=1
Router Advertisement (Type 134)
mögliche Flags | |
---|---|
Managed Address Configuration | ist es gesetzt, kann der Host von einem DHCPv6 Adressen beziehen und DNS Server Einstellungen (DHCPv6 Stateful Konfiguration). Es werden Zustands- oder Statusinformationen vom DHCPv6 gespeichert. |
Other Stateful Configuration | ist es gesetzt, bezieht der Host keine Adressen, nur andere Informationen z.B. DNS-Server Adresse (DHCPv6 Stateless Konfiguration). Es werden keine Zustands- oder Statusinformationen vom DHCPv6 gespeichert. |
Home Agent | Home Agent für Mobile IPv6 |
Router Preference | bei Verfügbarkeit mehrerer Default-Router am Link, kann eine Priorität gesetzt werden (low, medium, high) |
Proxy | NDP-Proxy verfügbar |
Clients in einem IPv6-Netzwerk benötigen wegen der Autokonfiguration (RFC 4862) eigentlich keine automatischen Adresszuweisungen über einen entsprechenden DHCP-Server. Die Autokonfiguration überträgt aber keine DNS-Server Adressen, daher ist es doch sinnvoll einen DHCPv6 einzusetzen.
DHCPv6 unterstützt zwei Betriebsarten
Ein DHCPv6-Server verteilt nur die Optionen, die ein IPv6-Client explizit bei ihm anfragt.
DHCPv6-Server kann zusätzlich Präfixe zur weiteren Verteilung an Router weitergeben. Dieses Verfahren wird als
'Präfix-Delegierung' bezeichnet. Ein DHCPv6-Client muss allerdings ebenfalls dieses Präfix explizit angefragt haben.
Die Einstellungen für den DHCPv6-Client sorgen dafür, dass das Gerät beim Empfang bestimmter Flags im Router-Advertisment den DHCPv6-Client startet, um spezielle Anfragen beim zuständigen DHCPv6-Server zu stellen.
Wenn das 'M-Flag' gesetzt ist, muss nicht zwingend auch das 'O-Flag' gesetzt sein. Bei IPv6 wird die Default-Route nicht über DHCPv6 verteilt, sondern über Router-Advertisements.
Die Client-ID in DHCPv6 besteht aus zwei Komponenten: einem DHCP Unique Identifier (DUID) nach RFC3315 und einem Identity Association Identifier (IAID). Die DUID kennzeichnet das Clientsystem (und nicht nur eine Schnittstelle wie bei DHCPv4), und die IAID kennzeichnet die Schnittstelle auf diesem System.
cat /var/lib/dhcp/dhclient6.eth0.leases /var/lib/dhclient/dhclient6.leases /var/lib/NetworkManager/dhclient6-*.lease
- Linux - IPv6 Adresse vom DHCPv6 Server neu anfordern (release / renew)
dhclient -6 -v -r eth0 dhclient -6 -v eth0
- Windows - IPv6 Adresse vom DHCPv6 Server neu anfordern (release / renew)
ipconfig /release6 ipconfig /renew6
NAT64-Gateways nach RFC6146, dienen in einem reinen IPv6 Netzwerk, zum Zugriff auf IPv4 Internet-Hosts.
Nat64-Gateways für Linux
NAT64 Ecdysis
NAT64, WrapSix, Kurzanleitung für WrapSix-Betrieb auf Debian-Routern
NAT64, Tayga
NAT66-Gateways nach RFC6296, dient im IPv6 Netzwerk mit ULA-Adressen (FD - Präfix), zum Zugriff aufs Internet. Kann z.B. zum Aufbau einer Konfiguration mit Loadbalancer. Man hat zwei Provider die IPv6 bereitstellen und möchte diese über das NAT66-Gateway anbinden, so das das Netzwerk hinter dem Gateway die beiden IPv6 Provider gleichzeitig nutzen können.
NPTv6 - Network Prefix Translation - stateless IPv6 zu IPv6 Netzwerkpräfix Übersetzungsmechanismus, stellt Präfixunabhänigkeit für ein Netzwerk zur Verfügung. z.B. Multi-WAN-Routern mit statischen Präfixen vom Provider, nicht für dynamischen Präfixe.
Antispoofing konfigurieren, IPv6 Adressen auf eine Whitelist setzen, die von der IANA vergeben sind.
Deep Inspection in der Firewall aktivieren.
Tunnel Traffic - 6in4, 6to4, Teredo, Isatap, SixXS u.a.
- Neighbor Cache anzeigen
Linux> ip neighbor show Windows> netsh int ipv6 show neighbors
-IP Schnittstellen anzeigen
Linux> ip link show Windows> netsh int ipv6 show int
- IPv6 Adresse anzeigen, auch mit Angabe der Schnittstelle
Linux> ip addr show
Linux> ip addr show dev eth0 Windows> netsh int ipv6 show addr Windows> netsh int ipv6 show addr Ethernet