Hallo Nachbarn.
Nach tagelangen Suchen nach der Lösung, habe ich endlich herausgefunden wie man openVPN auf einen Raspberry mit Deutsche Glasfaser im Internet erreichbar machen kann
Unterstützung hatte ich besonders von Huy im Thread "Lösungen für Externen Zugriff (VPN, Port-Mapper, Tunnel, etc.)" - allerdings ist seine Lösung "lediglich" eine Erreichbarkeit mit SSH.
Bei mir ist VPN wichtig und komfortabel. In der Firma wurde aufgrund der Aktivierung der europäischen Datenschutzgrundverordnung Data-Lost-Protection eingeführt. Damit sollen Abflüsse von Personendaten verhindert werden - dazu untersuchen die Dienstrechner jeden Datenfluss nach Außen oder auf externe Datenträger. Da ich mir eine gewisse "Freiheit" beibehalten möchte und mein Arbeitgeber kostenloses WLAN außerhalb des Firmennetzes anbietet, habe ich nun einen privaten PC mit am Arbeitsplatz, wo ich auf alle Geräte im heimischen LAN zugreifen kann (NAS, Kameras, Raspis, Drucker und Satreceiver) und zudem für meine Firma verschlüsselt ins Internet gehen kann. Zudem nutzen wir auf unseren Handys ebenfalls VPN um auch sicher zu surfen oder von unterwegs schauen zu können was die Haustiere machen - und natürlich was vor der Haustür und im Garten passiert...
Soweit mein Antrieb!
Ausgangssituation:
Bisher mit NetCologne hatte ich bereits openVPN auf meinen Raspi laufen. Bei NC hatte ich eine eigene IPv4 - wodurch ich von überall zugreifen konnte. Besonders da unsere Handys nur mit IPv4 (ohne IPv6) ins Internet verbunden sind. Zusätzlich läuft auf dem Raspi mein Webradio (IceCast2), das ich ebenfalls in der Arbeit auf meinen Kopfhörer hören kann. Nun ist der Vertrag mit NC ausgelaufen, und DG bietet nur eine native IPv6. Als Router läuft bei mir eine Fritzbox 7490 mit der Firmware 7.10.
Was muss nun passieren:
openVPN, Webradio und Raspi müssen nun IPv6 fit gemacht werden. Da Handys und privater PC keine IPv6 bekommen, muss zusätzlich noch ein Portmapper dazwischen geschaltet werden (zum "Übersetzen" zwischen den Protokollen IPv4 und IPv6). Der DynDNS Service von der Fritzbox (myFritz.net) wird weiterbenutzt - ich setze hier voraus, das bereits ein MyFritz!Konto angelegt wurde - wenn nicht bei AVM nach der Anleitung gucken und einrichten
Verfügbar machen
Zuerst muss festgestellt werden, ob der Raspi eine IPv6 IP besitzt - mit ifconfig sollte unter et0 (kann abweichen) eine global IPv6 vergeben sein. Wenn nicht, muss IPv6 aktiviert werden: In der Datei modules im Verzeichnis /etc einfach am Ende ipv6 hinzufügen und Raspi neustarten. Nun muss unter ifconfig eine globale IPv6 IP angezeigt werden - die brauchen wir gleich zum ersten Porttest. Also merken! ***
Nun auf der Fritzbox unter Internet - Freigaben "Gerät für Freigaben" hinzufügen. Unter "Gerät" den Raspi auswählen. Es sollte die IPv6 geladen werden, wenn nicht händisch eintragen (Hier beschrieben: *** ). Dann neue Freigabe drücken, "MyFRITZ!-Freigabe" ist aktiviert und unter "Anwendung" "andere Anwendung" wählen. Unter "Bezeichnung" sollte man den Dienst hinter den Port nennen und unter "Schema" reicht "http://" zu wählen. "Port am Gerät" ist klar - z.B. 1194 für openVPN. "Freigabe aktivieren" bleibt angehakt - und dann "ok" drücken - und auf der darunter liegenden Seite auch "OK". Unbedingt auch zum Testen Port 22 für SSH aktivieren!
Jetzt sollten die Ports nach Aktualisierung sowohl für IPv4 als auch IPv6 einen grünen Punkt haben. Jetzt kann man schon den ersten Verfügbarkeitstest machen: Unter http://www.ipv6scanner.com die globale Raspi IPv6 *** eintragen und einen Test auf die "Common server ports" laufen lassen. Jetzt sollte Port 22 bereits grün mit "Open" angezeigt werden. Wenn nicht, bitte die Firewall auf dem Raspi freischalten - ich habe diese Anleitung genutzt, die sofort funktionierte: https://www.elektronik-kompendium.de/si ... 912191.htm
Der Port für VPN (1194) muss einzeln gescannt werden, der wird sicher noch rot sein - da noch kein VPN Server auf dem Port unter IPv6 lauscht.
Nun kann der Portmapper eingerichtet werden. Ich nutze den hier empfohlenen Service von http://feste-ip.net (1 Jahr = 5€). Auf Feste-IP nach Anmeldung einen "universellen Portmapper" einrichten. Ich habe einen Wunschnamen eingetragen, da ich den bei den VPN Clients eintragen muss. Um das Feld "DNS oder IPv6 Ziel" füllen zu können, muss man sich auf seinen MyFritz! Konto einloggen. Nun kann man unter Freigaben mit der Maus über einen freigegebenen Dienst (z.B. VPN) gehen und die URL kopieren. Im Portmapper kopiert man diese URL hinein, und löscht "http://" und ":1194/" (oder halt eine andere Portnummer). In das Feld trägt man nur noch die Ports ein, die wir zuvor freigegeben haben - inkl. SSH. Damit ist die Einrichtung des Protmapper schon fertig. Zum Testen der SSH Freigabe nutze ich z.B. ein TTY Terminal (Android: connectBot). Das sollte nun klappen - wenn nicht muss gesucht werden (Schreibfehler?).
Nach diesem erfolgreichen Test kann SSH aus der Fritzbox Freigabe und der Portmapper Liste wieder entfernt werden.
In meinem Webradio (Icecast2) musste ich noch IPv6 aktivieren, was einfach mit einer ergänzten Zeile in icecast.xml bewerkstelligt ist. Man sucht nach "<listen-socket>" und "<port>8000</port> und schreibt in die nächste Zeile "<bind-address>::</bind-address>" und startet Icecast neu. Nun ist das Webradio auch im Netz verfügbar
Nun zur Herausforderung openVPN IPv6 tauglich zu machen - ich gehe von einer bereits funktionieren Anwendung aus:
1. Da Portmapper nur TCP unterstützt, und ich bisher per UPD VPN betrieben habe, habe ich das Protokoll von [proto udp] auf [proto tcp6] geändert
2. Nach [dh dh2048.pem] habe ich [topology subnet] eingefügt
3. Nach [server 10.8.0.0 255.255.255.0] habe ich [server-ipv6 fd00:10:8:0::/64] eingetragen
4. Nach [ifconfig-pool-persist ipp.txt] habe ich [push "route-ipv6 2000::/3 fd00:10:8:0::1 1"], [script-security 2], [push "redirect-gateway def1"], [push "redirect-gateway ipv6"], [push "dhcp-option DNS 8.8.8.8"] eingetragen
Nun openVPN neustarten und nochmal mit dem IPv6 Portscanner den VPN Port testen. Jetzt sollte das Ergebnis grün sein
Auf den Clients muss bzgl. VPN nur die URL vom Portmapper und der zugeordnete Portmapper Port eingetragen sowie auf TCP umgestellt werden. Dann sollte der VPN Aufbau funktionieren
Gibt es einen Nachteil:
- Wie sich die Laufzeit und Bandbreite über Portmapper auswirkt, wird sich noch zeigen. Einen Nachteil habe ich allerdings gefunden: Bisher habe ich in meiner Firewall für mein Webradio nur ausgewählte IPs erlaubt auf den Stream zuzugreifen. Das klappt nun nicht mehr (so einfach) - da zuerst nur die IP vom Portmapper geliefert wird...
Ich hoffe, etwas Licht ins Dunkle gebracht zu haben. Ich habe lange nach Anleitungen gesucht, aber nichts für mich brauchbares gefunden. Dabei sollte es gerade durch Kabel Deutschland viele VPN Interessierte geben, die auch auf eine eigene IPv4 verzichten müssen. Die einzige Anleitung habe ich auf piVPN gefunden. Dieses Tool hat aber auf meinen Raspi nicht funktioniert.
Viel Spaß damit
Gruß Jürgen
PS: Habe auf den Hinweis vom Gast die erste Ergänzung unter 4. von 2a00 auf 2000 korrigiert...
[Anleitung] VPN mit IPv6 mit Fritzbox und Portmapper
[Anleitung] VPN mit IPv6 mit Fritzbox und Portmapper
Zuletzt geändert von JR__ am 03 Okt 2018, 17:58, insgesamt 1-mal geändert.
Re: [Anleitung] VPN mit IPv6 mit Fritzbox und Portmapper
Wenn im VPN IPv6 nicht genutzt wird, reicht es, das äußere Transportprotokoll auf "proto tcp6" umzustellen. Die IPv6 Adressen und Routen in Punkt 3 und 4 sind dann unnötig.
Die ULA-Adressen (fd00:...) sind nicht richtig gebildet (https://tools.ietf.org/html/rfc4193.html).
2a00::/3 ist das gleiche wie 2000::/3 (2a00:: ist binär 0010 1010 0000 0000..., /3 heißt "nimm die ersten drei Bits davon als Netzadresse", also 001. 2000::/3 sind die ersten drei Bits von 0010 0000 0000 0000..., also das gleiche Netz.) Diese Route ist eine Art Default-Route für IPv6. Damit wird der Client angewiesen, sämtlichen Traffic für öffentliche IPv6-Adressen durch das VPN zu schicken. Die gleiche Wirkung hat [push "redirect-gateway def1"] für IPv4.
Die ULA-Adressen (fd00:...) sind nicht richtig gebildet (https://tools.ietf.org/html/rfc4193.html).
2a00::/3 ist das gleiche wie 2000::/3 (2a00:: ist binär 0010 1010 0000 0000..., /3 heißt "nimm die ersten drei Bits davon als Netzadresse", also 001. 2000::/3 sind die ersten drei Bits von 0010 0000 0000 0000..., also das gleiche Netz.) Diese Route ist eine Art Default-Route für IPv6. Damit wird der Client angewiesen, sämtlichen Traffic für öffentliche IPv6-Adressen durch das VPN zu schicken. Die gleiche Wirkung hat [push "redirect-gateway def1"] für IPv4.
Re: [Anleitung] VPN mit IPv6 mit Fritzbox und Portmapper
Danke für die Ergänzung. Das kommt raus, wenn es wenig Dokumentation gibt. Ich fange an alles zu testen - und wenn es "irgendwie" klappt, war es dann auch meist...
Dein Link erschlägt mich allerdings. Soviel Erklärung auf Englisch lässt mich aussteigen
Aber ok, /3 gibt eine Maske auf die ersten zwei Bit - damit sind die folgenden Bits uninteressant (ähnlich wie bei der Subnet Mask). Habe die Anleitung in dem Punkt geändert. Das funktioniert natürlich auch bei mir
Deinen ersten Satz verstehe ich allerdings nicht. Bei DS-Lite bleibt nur IPv6 zu nutzen, auch wenn ich dahinter einen Portmapper auf IPv4 verwende. Nehme ich die Zeilen heraus, funktioniert VPN auf dem Client natürlich nicht...
Gruß Jürgen
Dein Link erschlägt mich allerdings. Soviel Erklärung auf Englisch lässt mich aussteigen
Aber ok, /3 gibt eine Maske auf die ersten zwei Bit - damit sind die folgenden Bits uninteressant (ähnlich wie bei der Subnet Mask). Habe die Anleitung in dem Punkt geändert. Das funktioniert natürlich auch bei mir
Deinen ersten Satz verstehe ich allerdings nicht. Bei DS-Lite bleibt nur IPv6 zu nutzen, auch wenn ich dahinter einen Portmapper auf IPv4 verwende. Nehme ich die Zeilen heraus, funktioniert VPN auf dem Client natürlich nicht...
Gruß Jürgen
Re: [Anleitung] VPN mit IPv6 mit Fritzbox und Portmapper
Adressen, die mit fd... anfangen, sind ULAs. Das heißt "Unique Local Addresses". Die sollen mit hoher Wahrscheinlichkeit eindeutig sein. Deswegen werden sie pseudozufällig erzeugt. fd00:10:8:0::/64 sieht nicht sehr zufällig aus. Es funktioniert zwar auch so, aber wenn irgendwann mal zwei Netze real oder per VPN zusammengeschaltet werden, die die gleichen Adressen verwenden, funktioniert es nicht mehr. Es gibt Generatoren, um solche Adressen zu erzeugen, z.B. https://www.ultratools.com/tools/rangeGenerator
/3 ist nicht "ähnlich wie bei der Subnet Mask", sondern das ist die Subnet Mask, nur in einer kompakteren Schreibweise.
Der Tunnel selbst kann über IPv6 aufgebaut werden, ohne dass er ("innen") IPv6 transportiert. Wenn die bisherige Konfiguration kein IPv6 genutzt hat, wird IPv6 nur für "außen" benötigt, das heißt, um die IPv4 Pakete in IPv6 verpackt durch ein IPv6 Netz zu transportieren. Ohne die "innere" IPv6 Konfiguration sollten die lokalen Dienste eigentlich wie gewohnt im VPN über die lokalen IPv4 Adressen erreichbar sein. Es ist natürlich nicht verkehrt, innen auch IPv6 zu verwenden.
Hier ist ein Tutorial, das diese innen/außen Aufteilung darstellt:
https://community.openvpn.net/openvpn/wiki/IPv6
Da wird udp6 als Transportprotokoll verwendet, was wegen der feste-ip.net Beschränkung auf tcp nicht geht, aber der prinzipielle Unterschied zwischen "im Tunnel" und "außen" sollte erkennbar sein.
/3 ist nicht "ähnlich wie bei der Subnet Mask", sondern das ist die Subnet Mask, nur in einer kompakteren Schreibweise.
Der Tunnel selbst kann über IPv6 aufgebaut werden, ohne dass er ("innen") IPv6 transportiert. Wenn die bisherige Konfiguration kein IPv6 genutzt hat, wird IPv6 nur für "außen" benötigt, das heißt, um die IPv4 Pakete in IPv6 verpackt durch ein IPv6 Netz zu transportieren. Ohne die "innere" IPv6 Konfiguration sollten die lokalen Dienste eigentlich wie gewohnt im VPN über die lokalen IPv4 Adressen erreichbar sein. Es ist natürlich nicht verkehrt, innen auch IPv6 zu verwenden.
Hier ist ein Tutorial, das diese innen/außen Aufteilung darstellt:
https://community.openvpn.net/openvpn/wiki/IPv6
Da wird udp6 als Transportprotokoll verwendet, was wegen der feste-ip.net Beschränkung auf tcp nicht geht, aber der prinzipielle Unterschied zwischen "im Tunnel" und "außen" sollte erkennbar sein.
Re: [Anleitung] VPN mit IPv6 mit Fritzbox und Portmapper
Es ist unglaublich schwer in die Welt der Netwerktechnik einzutauchen - selbst für mich als Dipl.-Ing. in der technischen Informatik, der 20 Jahre nur in der Softwareentwicklung, DB Entwicklung und zuletzt in der IT Projektleitung unterwegs war, fremdel ich immer noch beim Umstieg von IPv4 auf das nicht mehr wirklich "neue" IPv6
Ich hoffe, dass Du dem Forum erhalten bleibst, wenn weitere Fragen zum Thema kommen
Ich selber bin nun zufrieden. Hatte ich erst befürchtet ich müsste meinen Raspi Clone ersetzen (Intel NUc o.ä.), um eine bessere Bandbreite auf VPN zu erzielen. Aber der ermittelte Wert ist echt klasse und vollkommen ausreichend zum Surfen und für einfache Zugriffe. Ich habe auch noch nicht getestet, inwieweit auch das offene WLAN die Bandbreite einschränkt. Dazu kommt, das mein Rechner eine 10 Jahre alte CPU in sich trägt - die sicher beim Verschlüsseln nicht die beste Performance aufweist
Gruß Jürgen
Ich hoffe, dass Du dem Forum erhalten bleibst, wenn weitere Fragen zum Thema kommen
Ich selber bin nun zufrieden. Hatte ich erst befürchtet ich müsste meinen Raspi Clone ersetzen (Intel NUc o.ä.), um eine bessere Bandbreite auf VPN zu erzielen. Aber der ermittelte Wert ist echt klasse und vollkommen ausreichend zum Surfen und für einfache Zugriffe. Ich habe auch noch nicht getestet, inwieweit auch das offene WLAN die Bandbreite einschränkt. Dazu kommt, das mein Rechner eine 10 Jahre alte CPU in sich trägt - die sicher beim Verschlüsseln nicht die beste Performance aufweist
Gruß Jürgen
Re: [Anleitung] VPN mit IPv6 mit Fritzbox und Portmapper
Moin,
Danke @JR___ für deine Ausführung.
Die Performance ist vergleichsweise niedrig im Vergleich zur angebotenen Bandbreite.
Das liegt mitunter an der OpenVPN Konfiguration (TCP-over-TCP) wo Pakete quasi doppelt bestätigt
werden müssen. Das geht aufgrund des Port-Mappers aber nicht anders.
Auch habe ich mit der OpenVPN-Konfiguration immer Einbußen gehabt. Letztendlich reicht die
Bandbreite für den Einsatzzweck aber aus
Danke @JR___ für deine Ausführung.
Die Performance ist vergleichsweise niedrig im Vergleich zur angebotenen Bandbreite.
Das liegt mitunter an der OpenVPN Konfiguration (TCP-over-TCP) wo Pakete quasi doppelt bestätigt
werden müssen. Das geht aufgrund des Port-Mappers aber nicht anders.
Auch habe ich mit der OpenVPN-Konfiguration immer Einbußen gehabt. Letztendlich reicht die
Bandbreite für den Einsatzzweck aber aus