IPv6
Eine kleine Einführung in die Welt
der langen IP-Adressen
Created by christoph miessler / @gantor
Nur ein Einstieg in IPv6. Weiter Vorträge werden noch folgen.
Was ist IPv6
- wird von IETF (Internet Engineering Task Force) seit 1995 entwickelt
- hieß ursprünglich IP Next Generation
- Beim Design wurden viele Probleme von IPv4 behoben:
- z.B ist kein NAT mehr notwendig und im Design auch nicht mehr erwünscht(Ende zu Ende wieder möglich)
- Protokolle wie FTP und SIP sind dadurch einfacher zu benutzen
- IPv4 Addressknappheit ist derzeit das Hauptargument für die Umstellung.
*Aufzählung*
IPv6 hat mehr zu bieten, als nur einen großen Adressraum. Doch zunächst eine kleine Auffrischung bezüglich IPv4.
Ursprüngliche Einteilung des IPv4 Adressraums
- Class A: 8 Bit
- Class B: 16 Bit
- Class C: 24 Bit
8 Bit bei Class A stellt die Länge der Netzmaske dar.
Class D: Multicast
Class E: reserved(Experimental)
Das kleinste Netz ist damit Class C mit 256 Hosts. Für die Verteilung eher schlecht. Daher wurde CIDR eingeführt und die Klassen werden heute nicht mehr benutzt.
CIDR - Classless Inter-Domain Routing
IPv4 Adresse : 168.122.34.3/24
168.122.34.3 : 10101000.01111010.00100010.00000011
255.255.255.0: 11111111.11111111.11111111.00000000
Mit CIDR ist auch eine /31 mit 2 Hosts möglich.
Der Netzteil wird ähnlich wie bei Postleitzahlen genutzt. Für den Router ist nur der Netzteil der Adresse interessant, weil er danach die Route bestimmt.
Die ursprüngliche Idee vom einfach Routing durch Strukturierung des Adressraums hat leider nicht funktioniert und die Routingtabellen bei Provider sind trotzdem riesig und unübersichtlich.
Außerdem ist durch die Vergabe von IPv4 Adressen eine große Menge verschwendet worden. Vergabe von /8 an Apple(17.x.x.x), MS, US Mil, etc. Desweiteren sind die Adressen, die auf 0 oder 255 enden auch nicht benutzbar. (Netz/Broadcast)
Adressknappheit bei den RIRs
Das letzte /8 wurde angebrochen. Wer neue IPv4 Adressen haben will, muss auch immer ein IPv6 Netz dazunehmen.
(Regional Internet Registry)
RIPE (Europe)
ARIN (North America)
APNIC (Asia - Pacific)
LACNIC (Latin America and Caribbean)
AfriNIC (African)
IPv4 != IPv6
IPv4: 172.20.1.100/16
IPv6: 2001:6f8:900:90f6:bc69:ec97:29ab:8c34
Adressen sind jetzt 128 Bit lang. Damit sind 2 hoch 128 Adressen möglich.
IPv6 bedeutet nicht nur das die Adressen länger werden. Es verändern sich grundlegende Dinge.
Urban Legend: Jedes Atom kann eine IPv6 Adresse haben. > geht nicht, falls man davon aus geht, dass die Erde einen Eisenkern hat. Aber für jedes Sandkorn würde es reichen.
IPv6 Header
IPv6 Header (320 Bit) v4:160bit | Version (4 bits) 0110 = 6 | Traffic Class (8bits) = Traffic Art Bestimmung
Flow Label (16 Bits) = auf non-zero setzen, um dem Router zu sagen, dass er die Reihenfolge der Paket nicht verändern soll
Payload Length (16 bits) = Größe des Payloads mit Extension Header
Next Header (8 bits) = Gibt die Art des nächsten Headers an. Wichtig falls Extension Header benutzt werden.
Hop Limit (8 bits) = wird um 1 dekrementiert und bei 0 wirft der Router das Paket weg.
TTL (8Bit) ist auch raus. TTL wurde pro Sekunde runterzählt und von jedem Router um eins dekrementiert. Dafür gibt es jetzt das Hoplimit
Zusatzinfos werden nicht mehr im Eigentlichen Header untergebracht, sondern bei Bedarf als Extension Header hinter dem Fixed Header eingefügt. Falls ein Router den Ext. Header nicht versteht, wird das Paket gedroppt und ein Parameter Problem message (ICMPv6 type 4, code 1) zurückgeschickt.
Rausgefallen ist die Checksum, weil die jedesmal bei Änderung der TTL vom Router neu erzeugt werden muss und deshalb Performance frist.
Fun Fact: Mit IPv6 kann man ein Jumbogram versenden. Payload fast 4GB. (Muss im Transport Layer implementiert sein)
Fragmentation
Im Gegensatz zu IPv4 werden IPv6 Pakete nicht von Routern fragmentieren. Dafür ist der Client zuständig. MTU Path Discovery ist daher Pficht. ICMPv6 blocken bedeutet daher Totalausfall, weil der Client nicht bestimmen kann auf welche Größe er die Paket zuschneiden muss.
MTU Ethernet 1500. DSL 1492 (8 BIT PPPOE)
Adressaufbau
Siteprefix wird vom ISP zugeteilt; in der Regel /56; früher gab es /48.
Subnet ID dient der Aufteilung der eignen Netze
Für die eigentliche Adresse (Interface Identifier) sind immer die letzten 64 Bit reserviert. Diese dürfen nicht für die Struktrierung genutzt werden!
Adressvergabe
1. Link Local
Link Local Range: fe80::/10
BSP: fe80::7ed1:c3ff:fe76:59d0%en1
Mit IPv6 hat ein Interface sofort eine IPv6 Adresse. Auch falls kein Kabel angesteckt ist.
vergleichbar mit APIPA-Adressen im Netz 169.254.0.0/16
Link Local != Loopback
Link Local ist bei IPv6 Pflicht!
Link Local gilt nur in Zusammenhang mit einem bestimmten Interface und wird nicht geroutet.
fe80::7ed1:c3ff:fe76:59d0%en1 (%en1 ist das Interface)
Mit IPv6 ist die Unterstützung für mehrere IP-Adressen pro Interface Plficht!
Adressvergabe
2. Site Local
Site Local Range: fec0::/10
Seit 2004 decprecated
Site Local war ursprünglich als privater Adressraum für IPv6 gedacht
Die schwammige Definition von Site, hat aber zu Verwirrung geführt, weshalb das Konzept zu Gunsten von ULAs (Unique local adresses) verworfen wurde
Adressvergabe
3. Unique Local Address
Unique Local Address Range: fd00::/8
BSP: fd9e:21a7:a92c:2323::1
Konzept entspricht in etwa den privaten IPv4 Adressen
Keine Vergabe durch RIR und Benutzung nur in internen Netzen
keine Garantie der globalen Eindeutigkeit
keine Reverseauflösung unter ip6.arpa möglich, weil die Adressen nicht im globalen DNS delegiert werden
SIXX bietet eine Datenbank in der man ULA registieren kann, um Doppelvergabe zu vermeiden. Wichtig für VPN
Adressvergabe
4. Loopback
Loopback: ::1/128
Das Gegenstück zu 127.0.0.1
Adressvergabe
5. Multicast
Multicast: ff00::/8
ff01::1, ff02::1: - All Nodes
ff01::2, ff02::2, ff05::2 - All Routers
Sendet Packet an eine bestimmte Gruppe von Hosts im Netz
Adressvergabe
6. Global Unicast - Öffentliche Adressen
Global Unicast Range: alles was noch nicht anderweitig reserviert ist
- 0:0:0:0:0:ffff::/96 - IPv4 Mapped Addresses
- 64:ff9b::/96 - NAT64
- 2000::/3 ( 2000… bis 3fff… ) bezeichnet den weltweit routbaren Bereich
IPv4 Mapped Addresses enthalten in den letzten 32 Bit die IPv4 Adresse und können von einem geeigneten Router konvertiert werden z.b. z.B. ::ff.8.8.8.8
NAT64 übersetzt IPv4 in IPv6
Adressvergabe
6.1. Global Unicast - Öffentliche Adressen
2000::/3 unterteilt man in
- 2001::/32 - wird vom Teredo Tunnel benutzt
- 2002::/16 - 6to4 Tunnel
- 2003, 240, 260, 261, 262, 280, 2a0, 2b0 und 2c0 können auch vergeben werden, sind aber noch nicht im großen Umfang verteilt
Teredo sollte abgeschaltet werden, sobald IPv6 nativ verfügbar ist.
6to4 tunnel IPv6 Packet über IPv4
In der Regel fangen öffentliche Adressen mit 2001 an
möglicher Ablauf der Autokonfiguration
Der Client weißt sich selbst eine Link Local Adresse zu (fe80::/10)
Client starte Neighbour Discovery (ND) indem eine Anfrage an die Multicast Adresse ff02::2 (all Routers) gesendet wird (Router Solicitation)
Die angesprochenen Router senden die möglichen Präfixe als Router Advertisment zurück
Der Client hängt an den Präfix seinen Interface Identifier an, den er schon für die Link Local Adresse benutzt hat
möglicher Ablauf der Autokonfiguration
Der Client weißt sich selbst eine Link Local Adresse zu (fe80::/10)
Die Router senden in regelmäßigen abständen Router Advertisments
Der Client hängt an den Präfix aus dem RA seinen Interface Identifier an, den er schon für die Link Local Adresse benutzt hat
Privacy
Laut dem ursprünglichen Entwurf der IETF wurde für den Interface Identifier die MAC Adresse des Interfaces benutzt.
Die Clients sind dadurch immer identifizierbar, weil sich die MAC Adresse nicht ändert!
Privacy Extension
Eine Lösung bieten die sogenanten Privacy Extensions, die vom Betriebsystem implementiert werden müssen. Dabei wird für das Interface immer wieder eine neue temporäre Adresse generiert, die für abgehenden Traffic benutzt wird.
BSP:
inet6 2001:6f8:900:90f6:7ed1:c3ff:fe76:59d0 prefixlen 64 autoconf
inet6 2001:6f8:900:90f6:51b0:858c:d83:f57a prefixlen 64 autoconf temporary
Eingehend wird immer die normale Adresse benutzt
Ausgehend wird die temp Adresse benutzt.
Es werden regelmäßig neue temp Adressen generiert. Der Wechsel erfolgt sobald die alte temp Adresse nicht mehr verwendet wird