24. Aug. 2020

Umstieg auf IPV6 im Heimbereich

Accsonaut Stefan Schubert hat sich in privater Mission in ein Paralleluniversum des Internets, das IPv6, begeben. Alter Hut? Sicher! Gibt es seit über 20 Jahren, aber Hand aufs Herz – wer von uns hat sich damit tatsächlich schon in der Praxis bewusst befasst? Seine Erfahrungen teilt er im Artikel.
1060 x 710 Schubert Stefan

Autor:in

Stefan Schubert

20200824 Ip V6 Header

Accsonauten sind es gewohnt, sich im Rahmen ihrer Kundenmissionen auch schon mal auf unbekanntes Terrain zu begeben. In diesem Artikel bin ich, Stefan Schubert, in privater Mission in einem existieren Paralleluniversum des Internets, das IPv6. Alter Hut? Sicher! Gibt es seit über 20 Jahren, aber Hand aufs Herz – wer von uns hat sich damit tatsächlich schon in der Praxis bewusst befasst? Wie ein Erstkontakt verlaufen kann, beschreibt dieser Artikel.

Für diejenigen, bei denen der Internetanschluss wechselt und deren Heimnetzwerk dadurch die IPv4 Verbindungsfähigkeit (von außen) verliert, oder auch für alle die einfach etwas über IPv6 lernen möchten, möchte ich hier meine Erfahrungen teilen.

Ausgangslage

Bis vor kurzem hatte ich einen Internetanschluss mit IPv4 und IPv6 (letzteres wegen des seit 20 Jahren laufenden Umbaus vorhanden, aber bisher immer ignoriert). Dazu nutze ich DynDNS (IPv4) auf einen hinter dem Router liegenden Rasperry Pi ( Privatprojekt) und NAT auf der FritzBox Port 8080 zum Pi auf Port 80. Nach dem Anbieterwechsel hatte ich IPv4 nur noch via DS-lite Tunnel und einen reinen IPv6 Anschluß:

20200824 Ip V6 1

Probleme

DynDNS

Mein bisheriger DynDNS Provider unterstützt scheinbar kein IPv6 für meine Subdomain (Der Status im Router zeigt plötzlich DynDNS-Status: IPV4: temporär deaktiviert / IPV6: unbekannt). Das wird den meisten bei der Anschlussumstellung passieren und es ist etwas was einem natürlich keiner vorher erzählt.

No NAT no more

Es gibt kein NAT mehr! Das Mapping „öffentliche RouterIP:PortA → Zielgerät:PortB" gibt es bei IPV6 nicht mehr (hatte nebenbei die Einschränkung, dass man den Port nach außen nur einmal vergeben konnte)! Anstelle dessen rückt nun „von außen erreichbare IPV6 Zielgerät:PortA wird zugelassen", also ein reines Firewall- bzw. Routing-Thema.

20200824 Ip V6

Neuland IPV6 Adresse

Jedes Gerät erhält mind. 3 IPv6 Adressen und verfügt über eine fixe nicht angezeigte Adresse. Beispiel:

pi@blackpearl:~ $ ip -6 addr

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 state UNKNOWN qlen 1000

inet6 ::1/128 scope host valid_lft forever preferred_lft forever

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000

inet6 2001:4dd1:4098:0:b15c:56e6:8054:4f4/64 scope global mngtmpaddr noprefixroute dynamic valid_lft 6787sec preferred_lft 3187sec

inet6 fe80::ab1e:f345:3fb3:fadc/64 scope link valid_lft forever preferred_lft forever

Auch IPv6 hat eine LoopBack-Adresse – geschenkt, aber dann gibt es noch zwei weitere „scope global" und „scope link„. Für jeweils unterschiedliche Verwendungszwecke.

Scope link wird nur für den Link auf das Interface verwendet, diese Adresse wird niemals den Router passieren. Scope global ist von außen erreichbar (sofern die Firewall auf dem Router entsprechend konfiguriert ist).


Doppelte Dynamik

2001:4dd1:4098:0:b15c:56e6:8054:4f4

Die ersten vier Blöcke (hier:2001:4dd1:4098:0) bilden den sogenannten IPv6-Präfix und beschreiben letztlich die Netzwerkadresse zum Router. Diese wird durch die Zwangstrennung des Internetanbieters regelmäßig neu vergeben (d.h. hierzu benötigt man weiterhin einen DynDNS-Dienst, für mein „Pi-Szenario").

Die nachfolgenden vier Blöcke (hier: b15c:56e6:8054:4f4), bilden den sogenannten interface identifier. Da trotz Präfix-Änderung dieser ausreichen würde auch noch nach 100 Jahren auf einem Server festzustellen, welches meiner Geräte da verbunden war, haben Datenschützer für die Einführung der sogenannten privacy extension (PE) gesorgt. Hierdurch verändert sich nach einiger Zeit regelmäßig der interface identifier, so das mein Gerät – und damit ich – nicht mehr eindeutig bis in alle Zeit nachverfolgbar ist bzw. bin.


Firewall-Konfiguration

Aufgrund der PE kann ich nun auf dem Router aber keine fixe Zielgerät-IPv6 IP für die Firewall-Regel hinterlegen, denn der interface-identifier ändert sich ja.

Lösungsoptionen

Bestellung einer fixen IPv4 und gut ist

Bah – viel zu einfach! Kann ja jeder und so wird das nie was mit der IPv6 Einführung bzw. Ablösung von IPv4!

Nach Forumsrecherche gehen trotzdem einige diesen Weg. Kein Wunder – Ist weniger Aufwand und alles bleibt beim Alten. Manche beschweren sich beim neuen Dienstleister über die mangelnde Aufklärung und bekommen den vollwertigen DS (steht übrigens für IPv4/6 Dual-Stack), anstelle des DS-lite (IPv4 nach außen durch IPv6 getunnelt) kostenlos konfiguriert. Bei anderen hilft nur der Wechsel in den teureren Business-Tarif oder eine Zuzahlung.

Abschalten der PE auf dem Gerät zur Nutzung des statischen interface identifier (MAC-basiert)

Aufgrund der PE macht es keinen Sinn in der Router Firewall den mit ifconfig oder via ip addr ermittelten interface identifier einzutragen. Dieser ändert sich durch die PE ja dynamisch.

Also muss eine statische IPv6 Adresse für den interface identifier her. Im vorliegenden Beispiel kann beim Raspberry Pi die privacy extension wie folgt deaktiviert werden:sudo vim /etc/dhcpcd.confslaac private durch slaac hwaddr ersetzen und pi durchstarten.

Der nun vergebene interface identifier kann in der Router Firewall konfiguriert werden.

IPv6 kompatibler DynDNS Anbieter

Und es geht doch mit DynDNS bei meinem Domain-Provider, allerdings nicht von der Fritzbox aus. Ich verwende den (sudo apt-get install) ddclient mit folgender Konfiguration direkt vom Raspberry Pi aus:

# Configuration file for ddclient generated by debconf # # /etc/ddclient.conf protocol=dyndns2 usev6=if, if=eth0 if-skip=Scope:Link ssl=yes server=dyndns.strato.com/nic/update login=bluewhale.de password='GET PWD FROM YOUR SCRATCHBOOK' sabi.bluewhale.de

Zuverlässigkeit des ipv6 Routings

20 Jahre nach Einführung scheint die Infrastruktur doch noch hier und da zu haken. So merke ich, dass mein DynDNS über mobile tethering funktioniert aber nicht über die DNS Server meines Internet-Providers. Alternativ liegt der Verdacht nahe, dass die DynDNS Domänen erkennen und bei privat Anschlüssen explizit blockieren?!

Update: Die Ursache hierfür liegt im DNS-Rebind Schutz des Routers. Siehe Erkenntnisse weiter unten.

Weitere Erkenntnisse

Lokale ipv6 Netzwerke

Das Gegenstück zu den 192.168.x lokalen IPv4 Netzwerken sind sogenannte IPv6 ULA (uniform local address). Diese fangen mit fd00: an und sind nur intern erreichbar. Damit diese auf den Geräten generiert werden, habe ich auf meiner Fritzbox in den IPv6-Netzwerkeinstellungen den Schalter von „Generate ULA only when ipv6 is not available" auf „Generate ULA always" (oder so ähnlich) gesetzt. Dabei verwendet die Fritzbox einen fd00:: Prefix, bzw. man kann die drei Blöcke hinter fd00 auch selbst aus suchen.

Während die ULAs nicht automatisch generiert werden, sondern erst wenn man dies fordert, gäbe es als Alternative noch die Möglichkeit die sogenannten link local adressen (fe80:) zu verwenden. Jedoch können diese mehrfach pro Gerät vorkommen, weshalb zur Kommunikation der scope noch mitgegeben werden muss. Beispiel: fe80::d2dc:785c:30b1:adf0%eth0

Letztere Möglichkeit habe ich noch nicht ausprobiert, klingt jedoch charmanter, weil man sich dann den DHCP einspart.

DynDNS im IPv6-Zeitalter

Bei IPV6 funktioniert das bisherige DynDNS auf dem Router nicht mehr, bzw. es funktioniert nur, wenn man den Router selbst als Ziel hat. Da es kein NAT mehr gibt, muss ein DynDNS vom Endgerät selbst angesteuert werden. Für einen Rasperry-Pii als Client ist das kein Problem, aber wie sieht das mit den IoT4.0 Geräten aus, auf denen man selbst nichts installieren kann?

Verbreitungsstatus von IPv6

Seit über 20 Jahren ist der Rollout von IPv6 voll im Gange und wird in den einzelnen Ländern unterschiedlich schnell vorangetrieben. Die Umsetzungsrate reicht von <15% (z.B. Russland, China) über 40 bis <50% (z.B. USA, Deutschland) bis > 55% in Indien.

Quelle: akamai.com: State-of-the-internet-report

Java und IPV6

Wenn ein vollwertiger DSL Anschluss vorliegt, also die Verbindung über IPv4 und IPv6 möglich ist, bevorzugt Java automatisch IPv6 Socket. Dies lässt sich bei Bedarf über (-D) Umgebungsvariablen entsprechend beinflussen, siehe https://docs.oracle.com/javase/7/docs/api/java/net/doc-files/net-properties.html

Aber es gibt auch Stellen in Java (8+?) deren default Einstellungen nicht mit IPv6 kompatibel sind. Hatte man zuvor z.B. eine funktionierende Verbindung über jconsole zur JMX-Schnittstelle in seinem Docker-Container, und diesen Schalter nicht gesetzt (fehlt auch bei vielen Beispielen im Internet),

-Djava.rmi.server.hostname=localhost

so funktioniert die Verbindung nach der Umstellung auf DS-lite nicht mehr.

Hierzu sagt Oracle in https://docs.oracle.com/javase/9/management/monitoring-and-management-using-jmx-technology.htm

By default, the remote stubs for locally created remote objects that are sent to client contains the IP address of the local host in dottet quad format."

Docker und IPv6

Obwohl Docker selbst ein recht modernes Stück Infrastruktur darstellt, basieren die meisten Overlay-Netzwerke noch auf IPv4. Der Docker-Daemon auf meinem Mac konnte sich auch nicht überreden lassen IPv6 Sockets zu verwenden, was sich zeigte, als ich aus einem Prometheus-Container ein IPv6-Target pollen wollte.

IPv6 als URI im Browser?

Dies geht so: , ihr könnt raten wo man hier landet. Die Netzwerker hatten Sinn für Humor.

Ports werden wie gewohnt angehängt.

Wie stellt man fest, ob man aus seinem Netzwerk reine IPv6 Adressen erreichen kann?

Wie funktioniert DNS Rebind?

Diesen Artikel sollte jeder Heimbastler, der irgendein Smart-Home Device einsetzt, kennen: medium.com: attacking-private-networks-from-the-internet-with-dns-rebinding

Fazit:

  • Das Heimnetz ist nicht sicher!
  • Der eingeschaltete DNS Rebind Schutz des Routers verhindert, dass ein angefragter DNS Eintrag auf ein internes Gerät zeigt.

Zusammenfassung

Das IPv6 Internet ist ein eigenständiges Universum, welches sich beständig ausdehnt. Die Konsequenzen sind (z.B. über DS-lite) deutlich spürbar geworden. Zumindest für Privatprojekte muss man sich die Frage stellen, ob man aus dem IPv4 erreichbar sein will. Da einige Handybetreiber bereits Fuß in der IPv6 Welt gefasst haben und mobile Geräte Zielgruppe meines Privatprojektes sind, werde ich es wahrscheinlich beim IPv6-Universum belassen. Im Umkehrschluss bedeutet dies, dass ich einen Dienst schaffe, den es nur im IPv6 geben wird und damit nicht mehr für IPv4 basierten Anschlüsse erreichbar sein wird.