IPv6-Tunnel für SixXS mit aiccu einrichten (Raspberry Pi)

Oftmals bekommt man von seinem Internet Service Provider (ISP) oder Netzbetreiber am Internet-Zugang kein IPv6. Das bedeutet, dass keine Verbindung zu IPv6-only-Servern möglich ist. Weil es keine freien IPv4-Adressen mehr gibt, wird es zukünftig immer mehr IPv6-only-Server geben.
Sofern man einen Internet-Zugang ohne IPv6 hat, kann man sich auch einen IPv6-Tunnel einrichten. Dazu besteht die Möglichkeit bei einem IPv6-Tunnel-Broker einen IPv6-Präfix zu beantragen und einen Tunnel zu einem Gateway mit IPv6-Connectivity aufzubauen.
Wenn man die Organisation SixXS (https://www.sixxs.net/) als Tunnel-Broker wählt, bekommt man den IPv6-Präfix kostenlos. Man verpflichtet sich im Prinzip nur, den Tunnel dauerhaft zu betreiben und zu nutzen.

Für die Einrichtung des SixXS-Tunnels auf dem Raspberry Pi wird "aiccu" empfohlen. Das Automatic IPv6 Connectivity Client Utility baut automatisch den IPv6-Tunnel zum Tunnel-Provider auf und sorgt auf dem Raspberry Pi für die IPv6-Connectivity.

Hinweis: Es gibt Situationen, in denen die Einrichtung eines IPv6-Tunnels keinen Sinn ergeben. Wenn der eigene Internet-Provider den Internet-Zugang mit Dual-Stack-Lite (DS-Lite) betreibt, dann hat man IPv4 per CGN und "natives IPv6". Das heißt, man hat IPv6-Connectivity und braucht keinen IPv6-Tunnel mehr.

Aufgabe

  1. Registrieren Sie sich bei SixXS.
  2. Beantragen Sie einen IPv6-Tunnel (Subnet).
  3. Richten Sie einen IPv6-Tunnel mit aiccu ein.

Lösung: Registrieren und Tunnel bei SixXS beantragen

Prinzipiell kann man einen Tunnel auch woanders als SixXS (https://www.sixxs.net/) beantragen. Die folgende Lösung zielt jedoch auf die Tunnel-Einrichtung für einen SixXS-Tunnel mit "aiccu" ab. Bei SixXS handelt es sich um eine Organisation, die kostenlose IPv6-Tunnel verwaltet. Das Verfahren heißt "Dynamic NAT-traversing IPv4 Endpoint using AYIYA“.

Um einen solchen Tunnel zu bekommen muss man sich zuerst bei SixXS registrieren. Nachdem der Antrag angenommen wurde, kann man einen Tunnel beantragen. Wenn der Tunnel genehmigt und zugeteilt ist, bekommt man automatisch auch einen IPv6-Präfix, was als "Subnet" bezeichnet wird. Dieser Präfix ist für die weitere Einrichtung wichtig.

Es ist zu empfehlen, zusätzlich ein TIC-Passwort einzurichten. Es handelt sich dabei um ein selbstgewähltes Passwort für den Tunnel. Mit dem Zugangspasswort zum SixXS-Account hat das nichts zu tun.

Lösung: IPv6 im Raspberry Pi aktivieren

Während man auf die Freischaltung seines SixXS-Accounts und des Tunnels wartet, kann man sich schon mal darum kümmern, IPv6 im Raspberry Pi zu aktivieren. Dazu trägt man in die Datei "/etc/modules" am Ende in eine Zeile "ipv6" ein. Nach einem Reboot sollte IPv6 aktiviert sein. Mit "ifconfig" kann man prüfen, ob die Zuteilung einer link-lokalen Adresse funktioniert hat. Dann ist der Raspberry Pi grundsätzlich IPv6-fähig.

Lösung: Raspberry Pi als IPv6-Tunnel-Endpunkt für SixXS mit aiccu einrichten

Zuerst sorgt man für ein aktuelles System.

sudo apt-get update
sudo apt-get upgrade

Damit es möglich ist, IPv6 auf dem Raspberry Pi zu benutzen, muss man einen Tunnel-Endpunkt auf dem Raspberry Pi einrichten. Dafür gibt es das Tool aiccu.

sudo apt-get install aiccu

Wenn sich aiccu installiert, dann werden im selben Zug die Zugangsdaten für den SixXS-Account abgefragt. Also nicht die Daten für den Tunnel, sondern nur für den SixXS-Account. Die Tunnelnummer und das TIC-Passwort braucht man nicht.

Sollte sich später herausstellen, dass die Konfiguration von aiccu geändert werden muss, dann kann man in der folgenden Konfigurationsdatei die Änderungen vornehmen.

sudo nano /etc/aiccu.conf

Wichtig ist, dass man nach den Änderungen an dieser Konfigurationsdatei einen Neustart von aiccu vornimmt.

sudo service aiccu restart

Ist die Installation und Konfiguration abgeschlossen, dann wird der Tunnel automatisch aufgebaut. Ob das erfolgreich war kann man in den IP-Einstellungen überprüfen.

ifconfig

Dort muss es einen Eintrag mit "sixxs" geben, der eine Zeile mit einer IPv6-Adresse und dem Gültigkeitsbereich „Global“ hat. Die dortige IPv6-Adresse stammt aus dem Subnetz, dass man von SixXS für den Tunnel zugeteilt bekommen hat.
Wenn dem der Fall ist, dann müssten auch IPv6-Verbindung ins Internet möglich sein. Das kann man mit einem Ping zu einem Hostnamen prüfen, der garantiert IPv6-Verbindungen annimmt.

ping6 google.de

Mit "Strg + C" kann man die Pings abbrechen.
Wenn die Pings nacheinander durchlaufen, dann ist der Raspberry Pi voll IPv6-fähig. Wenn nicht, dann ist irgendetwas faul.

Hinweis zu aiccu und AYIYA

Damit der IPv6-Tunnel mit "aiccu" per AYIYA aufgebaut werden kann bedarf es einer funktionierenden IPv4-Connectivity UND die lokale Systemzeit "muss" korrekt sein. Während man von ersterem in der Regel ausgehen kann, muss das mit der korrekten Systemzeit nicht zwangsläufig sein. Doch genau das ist ein Stolperstein beim Aufbau des IPv6-Tunnels.
Das Problem mit der Systemzeit gilt generell für alle Embedded-Systeme, wie den Raspberry Pi, auf OpenWRT-basierende Router und alle anderen Mini-Computer. Der Grund ist, bei diesen Systemen spart man sich die Echtzeituhr bzw. Real Time Clock (RTC). Ein normaler PC hat in der Regel eine integrierte Echtzeituhr, die von einer kleinen Batterie gespeist wird, damit auch bei ausgeschaltetem PC die Uhr weiterläuft.
Bei Embedded-Systemen, wie dem Raspberry Pi, spart man die Echtzeituhr. Meist hat man dafür keinen Platz. Manchmal besteht die Möglichkeit das nachzurüsten. Wenn das nicht geht, dann muss man in diesem Fall dafür sorgen, dass vor dem Aufbau des IPv6-Tunnels IPv4-Connectivity besteht und das System sich die Uhrzeit aus dem Netz von einem NTP-Server besorgt hat.
In der Regel sollte dieser Prozess bei einem Raspberry Pi keine Probleme bereiten. Allerdings kann es Konstellationen geben, in denen man genau darüber stolpert und der IPv6-Tunnel einfach nicht oder nur sporadisch aufgebaut wird. In der Regel wird es daran liegen, dass die Systemzeit noch nicht korrekt gesetzt ist.

Hinweis zum IPv6-Tunnel

Der Betrieb eines IPv6-Tunnels ist immer langsamer als natives IPv6 und bringt unter Umständen zusätzliche Probleme mit sich.
Der Betrieb eines IPv6-Tunnels sollte immer als vorübergehende Maßnahme gesehen werden mit dem mittelfristigen Ziel natives IPv6 einzuführen.

Sicherheitshinweis für den IPv6-Tunnel

Achtung! Ab jetzt ist der Raspberry Pi mit einer eigenen globalen IPv6-Adresse weltweit erreichbar. Jeder kann, sofern er die IPv6-Adresse des Raspberry Pi kennt, darauf zugreifen. Es ist jetzt nicht mehr so, dass man sich wie bei IPv4 per NAT hinter einem Router verstecken kann. Das bedeutet, dass man dafür sorgen muss, dass auf dem Raspberry Pi als Tunnel-Endpunkt eine entsprechend konfigurierte Firewall aktiv ist. Die Firewall, die sich eventuell im Netzzugangsrouter befindet sieht aber nicht die IPv6-Pakete, sondern nur die IPv4-Pakete, in denen die IPv6-Pakete enthalten sind.

Erweiterung: IPv6-Gateway einrichten

Interessant wäre es, wenn man diesen Tunnel dem gesamten Netzwerk zu Verfügung stellen könnte. Der Raspberry Pi soll also nicht nur als IPv6-Tunnel-Endpunkt dienen, sondern gleich als IPv6-Gateway.