Wer seinen Internetanschluss bei Unitymedia hat kennt wahrscheinlich das Problem. Dadurch das Unitymedia recht spät ins Internetgeschäft eingestiegen ist, hat man dort halt nicht mehr viele IPv4 Adressen zur verfügung. Das wäre auch eigentlich kein Problem, denn zur doppelt genatteten (tolles Wort) IPv4 Adresse bekommt man bei Unitymedia ein vollwertiges IPv6 Präfix, was sich zwar nach jedem Router Neustart ändern könnte, es bei mir aber noch nie getan hat.
Würden sich jetzt die anderen ISP’s nicht auf Ihren fetten IPv4 Vorräten ausruhen (Danke Telekom, Vodafone und Co.) dann könnte man Problemlos per IPv6 auf den Server zuhause zugreifen. IPv6 -> IPv6 geht ohne Probleme. An den meisten Anschlüssen in Deutschland bekommt man dank solcher Rückständigkeit aber keine IPv6 Adresse und so muss man sich anders behelfen um auf den Server zuhause zugreifen zu können.
Was man übrigens beim Einrichten eines OpenVPN Server an solch einem Anschluss beachten muss habe ich in folgendem Artikel beschrieben: OpenVPN Server am Unitymedia DS-Lite Anschluss betreiben
Unser Problem: Wir möchten von einem „IPv4 only“ Anschluss auf einen Server hinter einem DS-Lite Anschluss zugreifen.
Die Lösung: Portmapper
Ein Portmapper stellt ein Gateway dar, welches zwischen IPv4 und IPv6 vermittelt. Vereinfacht gesagt es ist ein Server mit einer festen IPv4 und IPv6 Adresse der als Übersetzer fungiert.
Es gibt Portmapper als kommerziellen Service, z.B. von feste-ip.net. Der Service ist günstig und schnell eingerichtet. Man kann sich sogar einen Raspberry Pi mittels Script in eine sog Fip Box verwandeln lassen.
Eines sollte man jedoch nicht vergessen, bei einem solchen Service werden die Daten über den Server des Dienstanbieters übertragen. Sind diese Daten nicht verschlüsselt kann der Anbieter diese in der Theorie mitlesen!
Man kann sich einen solchen Portmapper jedoch auch sehr einfach selber aufsetzen. Wenn man bereits einen VServer betreibt kann diese das gleich mit übernehmen.
Was wir brauchen:
- VServer (Linux Betriebssystem, fertig eingerichtete IPv4 sowie IPv6 Adresse)
- Die Software 6tunnel
- IPv6 Freigabe in eurem DSL Router zu eurem Server (in der Fritzbox unter Internet->Freigaben->IPv6)
Ich werde hier nur die Basis Schritte erläutern, falls Ihr Fragen habt könnt Ihr Sie gerne in den Comments stellen.
Die Sache ist eigentlich sehr simpel. Seht zu das euer VServer bereits für IPv6 eingerichtet ist. Dann installiert Ihr 6tunnel, unter Debian / Ubuntu erledigt das ein apt-get install 6tunnel. Ihr müsst an eurem Router Zuhause natürlich auch schon eine passende IPv6 Freigabe eingerichtet haben.
Nun könnt Ihr den ersten Tunnel auch schon erstellen. Die Synthax ist sehr einfach:
6tunnel IPv4Port IPv6Adress IPv6Port
z.B. 6tunnel 8080 2202:9ef8:1d00:bcff:d268:77ff:feff:4899 8080
oder 6tunnel 8080 server.exampleipv6.com 8080
6tunnel geht automatisch in den Background nachdem es gestartet wurde. Nun müsstet Ihr problemlos über die IPv4 IP eures VServers bzw. über dessen Domain Namen und Port auf euren Server zuhause zugreifen können.
Damit man nicht immer alle Ports einzeln eingeben muss, bzw. man mal schnell die IPv6 Adresse wechseln kann falls der Provider unnötigerweise das Präfix neu auswürfelt habe ich ein kleines (ziemlich häßliches) Script geschrieben: https://gist.github.com/bjoerns1983/2f82045a0995877a78720cb746d8482d
Dieses Script nimmt als erstes Argument start/stop/restart und als zweites die IPv6 Adresse des Homeservers entgegen. Ich habe es nicht mit Domainnamen etc. getestet. Ausserdem kann man das bestimmt auch alles eleganter lösen. Für mich reicht es, denn mit diesem Script kann man auch ein rudimentäres Autoupdate via SSH auslösen, falls sich die IPv6 Adresse des Servers ändert.
Eine Einschränkung. Der Portmapper funktioniert nur mit TCP Verbindungen. VPN’s auf Basis z.B. von IPSEC (also auch das VPN in der Fritzbox) funktionieren damit nicht. Das einzige VPN was mit einem Portmapper funktioniert ist OpenVPN im TCP Modus.
Viel Spass. Bei Fragen einfach kommentieren.
Hallo Björn.
Auch ich bin in die „Falle“ Unitymedia DS-Lite Anschluss getappt. Jetzt kann ich aus dem Internet weder auf meine Webcams zugreifen, noch auf meinen NAS und auch mein Sohn kann seinen kleinen Minecraft-Server nicht mehr mit seinen Freunden teilen.
Deinen Blog habe ich nach langem Suchen gefunden, es scheint kaum Lösungen zu geben, die dieses Probleme wirklich angehen.
Einige Verständnisprobleme habe ich aber noch.
Über https://dynv6.com habe ich eine dynamische IP Adresse
– Wo muss der V-Server denn stehen? Kann es auch ein raspberry Pi sein, der in meinem Heimnetz werkelt?
– Weder mein NAS, noch die Webcams unterstützen IPv6. Daher müsste doch der portmapper in meinem Heimnetz arbeiten, oder?
– Wie kommt dann aus: IPv4Port IPv6Adress IPv6Port eine Weiterleitung z.B. an meine Iv4 Webcam? Die kann ja nur IPv4.
Bisher gab ich folgendes ein: alias.dyndns.net:8086 und wurde per Portweiterleitung meier fritzbox an de Webcam geleitet.
Würde mich über ein Antwort sehr freuen.
Danke
Matthias
Der VServer muss bei einem Hoster stehen, da dieser ja mit seiner öffentlichen IPv4 auf deine IPv6 Adresse übersetzen muss. Es muss sich also ausserhalb deines Netzwerkes befinden. Dafür reicht ein günstiger 2,50€ Server von Netcup. Wichtig ist das es keine Traffic beschränkung gibt. Eine eigene Domain ist auch von Vorteil, diese kannst du auf die IP des Vserver weiter leiten, oder du nutzt einfach die IPv4 Adresse des VServers. Ne Dyn Adresse brauchste nicht.
Für Geräte die kein IPv6 in deinem Netzwerk unterstützen, brauchst du z.B. einen rPi der das ganze wieder, per 6tunnel in IPv4 übersetzt. Sie Syntax auf dem rPi sollte ungefähr so aussehen: 6tunnel -6 1337 192.168.1.100 1337. Wobei die IP Adresse durch die deiner Kamera und den richtigen Port ersetzt werden muss.
Hallo Matthias,
Wenn Du schon einen in Deinem Heimnetzwerk werkelnden Raspberry PI hast, und ohnedies Zugang zu einem externen Server mit fixer IP brauchst, könntest Du ja vom Raspberry aus einen reverse tunnel zum externen Server einrichten – ich habe das kürzlich (nicht mit Raspberry, sondern einem anderen Rechner aus meinem Unitymedia Heimnetz) gemacht, um auf meine Kamera zuzugreifen, die auf Port 80 lauscht:
Also auf Raspberry oder irgendeinem anderen Heimnetzwerkrechner, der online ist, wenn Du von draußen zugreifen willst:
ssh -N -R 8080:my_cams_local_ip:80 me@my_external_server
Solange dieser Tunnel aktiv ist (das Kommando nicht abgebrochen wird), kannst jetzt Du über …
http://my_external_server:80
… Dein Gerät so ansprechen, als wäre es von außen über …
http://my_cams_local_ip
… angesprochen worden.
Günstig ist es, für das Gerät am Router eine IP zu reservieren, sodass die immer gleich bleibt – andernfalls müsstest Du den Aufruf immer wieder anpassen.
autossh ist noch praktischer als ssh, weil’s bei Verbindungsverlust automatisch wieder verbindet.
Eventuell musst Du noch in der ssh config (/etc/ssh/sshd_config)
GatewayPorts yes
einstellen und sshd restarten.
Was ich beschrieben habe ist ein Gedächtnisprotokoll, es könnten also kleine Fehler in meinen Anweisungen geben, aber der Ansatz könnte Dir weiterhelfen.
Viel Glück,
der yaccob
Vielen Dank für diesen coolen Tip. Vielleicht bau ich ihn wenn ich Zeit habe mal in den Post ein.
Yacvob
Aber dieser Tunnel endet dann dixh öffentlich, also jeder der die Adresse
http://my_external_server:80
kennt kann zugreifen. Oder verstehe nich das falsch?
Hallo,
das mit dem SSH Tunnel geht pinzipiell, leider bindet sich der Tunnel nur an den localhost port also an:
tcp 0 0 127.0.0.1:8080 0.0.0.0:* LISTEN –
Hast du einen heißen Tipp wie ich den an 0.0.0.0 und nicht an localhost anbinden kann ? Das System auf dem der Tunnel ankommt ist ein (VPS) Ubuntu 20.04
Danke schon mal im Voraus 🙂
Olav
Hay ,
eine Frage wie kann man den sehen welche Ports ich bereits eingetragen habe bzw wie kann ich die dann wieder entfernen ? Hatte z.b den Port 1194 mit 6tunnel erstellt denn muse ich jetzt aber editieren ?
Du kannst dir die Tunnel mit ps ax | grep 6tunnel anzeigen lassen und dann die Killen die du nicht mehr brauchst.
Oder du benutzt das kleine häßliche Script was ich gepostet habe.
Hallo björn ich habe nun ein problem ich habe ein root nit 2 ip4 adressen nun möchte ich von ip 2 den port 1234 nach der ipv6 zu mir nach hause leiten den auf der 1 ipv4 ist der port schon belegt wie sage ich den 6tunnel das er die 2 ipv4 nehmen soll ich bekomme ja auch ne 2 ipv6 auf dem server vielen dank für hilfe oder ev ein script beispuöiel
Ich habe sowas noch nie probiert und auch keine Möglichkeit das hier zu testen. SO wie ich das sehe gibt es aber zwei mögliche Lösungen die ich in der Manpage zu 6tunnel gefunden habe 6tunnel manpage.
1. Man nutz die local host direktive (kleines l) etwa so: 6tunnel -l 192.168.2.102 8080 2202:9ef8:1d00:bcff:d268:77ff:feff:4899 8080
oder
2. oder man versucht es mit der map file die in der manpage beschrieben wird
Probier es mal und gib Feedback.
Die Synthax ist sehr einfach
Hi Leute,
danke für die Anleitung.
Ich habe den Tunnel wie beschrieben eingerichtet. Per HTTPS komme ich auch auf die
Fritz!Box. Auf der FB habe ich auch die notwendigen IPv6 Freigaben erstellt. Der Client
unterstützt IPv6. Ich komme jedoch nach der FB nicht weiter.
Ich nutze eine 6360 Cable von Unity Media.
Ich habe das ganze dann mal auf dem vServer getract und erhalte immer folgende Meldung beim Aufrufen des gewünschten Ports:
17:43:00.015392 IP6 (flowlabel 0xa18c0, hlim 64, next-header TCP (6) payload length: 40) vServer > fritz.box.http-alt: Flags [S], cksum 0x320f (incorrect -> 0xd781), seq 1246358509, win 28800, options [mss 1440,sackOK,TS val 102558891 ecr 0,nop,wscale 7], length 0
17:43:00.027551 IP6 (hlim 247, next-header ICMPv6 (58) payload length: 88) fritz.box > vserver: [icmp6 sum ok] ICMP6, destination unreachable, unreachable prohibited fritz.box
Hat jemand eine Idee?
Hast du vielleicht einfach nur die Weiterleitung an die IPv6 Adresse der FB weitergeleitet? Du weisst das du 6tunnel die Adresse deines Clients geben musst, oder?
NAT gibt es ja nicht mehr wie bei IPv4 jedes gerät hat seine eigene öffentliche Adresse.
Hallo,
erstmal vielen Dank für das gute Tutorial. Hat mir sehr geholfen.
Das Script habe ich etwas angepasst, damit ich nicht immer die IPv6 Adresse mitgeben muss.
Ich benutze DynDNS und habe auf meinem Server den Updater CLient installiert. Dieser updated die IPv& Adresse wenn sich diese ändert. IPv4 habe ich im CLient deaktiviert.
ipv6=$(dig AAAA +short dyndns.hostname.de)
Mit diesem Befehl wird im Script die aktuelle IPv6 Adresse ermittelt und automatisch gesetzt.
Ich hoffe das hilft weiter.
Könntest du das Script vielleicht mal irgendwo hochladen damit man es sich anschauen kann? Vielleicht ist das ja für den ein oder anderen Interessant.
Hier mein angepasstes Script, mit dem die IPv6 Adresse vom DynDNS Provider automatisch ausgelesen wird.:
#!/bin/sh
ipv6=$(dig AAAA +short dyndns.hostname.de)
start() {
echo „Starting Tunnels: “
echo „$ipv6“ | awk ‚{print „/usr/bin/6tunnel 10080 „$1″ 80“}‘ | /bin/sh
echo „$ipv6“ | awk ‚{print „/usr/bin/6tunnel 10443 „$1″ 443“}‘ | /bin/sh
echo „$ipv6“ | awk ‚{print „/usr/bin/6tunnel 13389 „$1″ 3389“}‘ | /bin/sh
echo „$ipv6“ | awk ‚{print „/usr/bin/6tunnel 11194 „$1“ 1194 „}‘ | /bin/sh
return
}
stop() {
echo „Shutting down Tunnels: “
killall 6tunnel
return
}
case „$1“ in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
esac
exit 0
Hallo,
nachdem ich erfolgreich alle Webseiten von meinem Server zuhause mittels 6tunnel erreichbar gemacht habe, kämpfe ich jetzt mit OpenVPN.
Ich habe auf meinem Server OpenVPN installiert und konfiguriert. In der Fritzbox habe ich den Port 1194 für TCP freigegeben.
Zum testen des Servers habe ich erstmal im lokalen Netz eine VPN Verbindung aufgebaut, was auch erfolgreich funktioniert hat.
Wenn ich allerdings eine Verbindung von Außen herstellen will, dann antwortet der Server nicht.
Folgendes Setup:
VServer (öfftl. IPv4, 6tunnel) –> Fritzbox (1194 offen für TCP) –> Server (1194 offen eingehend/ausgehend)
Eine Verbindung zu meinem VServer wird erfolgreich aufgebaut, dann wartet der Client auf eine Antwort, die nicht kommt.
Hatte jemand evtl. das selbe Problem und konnte es lösen?
Poste mal deine Config von OpenVPN Client sowie Server, sonst ist das nur rätselraten.
Hallo,
meine Server config:
#################################################
# OpenVPN (MvA-Networks Conf)
# VPN Server Configuration
#
# Copyright 2006-2017 (20.12.06) http://www.mva.ch
# MvA Internet Services GmbH
#################################################
local 10.0.0.11
port 1194
proto tcp
dev tun
# ———————————————-
# Zertifikate
# ———————————————-
dh „C:\\Programme\\OpenVPN\\server-keys\\dh4096.pem“
ca „C:\\Programme\\OpenVPN\\server-keys\\ca.crt“
cert „C:\\Programme\\OpenVPN\\server-keys\\server1.crt“
key „C:\\Programme\\OpenVPN\\server-keys\\server1.key“
# ———————————————-
# Server-Setup
# ———————————————-
server 10.1.0.0 255.255.255.0
ifconfig-pool-persist „C:\\Programme\\OpenVPN\\ipp.txt“
client-to-client
# ———————————————-
# Client-Settings (inkl Special Dir)Files
# ———————————————-
client-config-dir „C:\\Programme\\OpenVPN\\ccd“
push „route 10.0.0.0 255.255.255.0“
push „dhcp-option DNS 10.0.0.1“
# ———————————————-
# Defaults
# ———————————————-
keepalive 10 120
comp-lzo
persist-key
persist-tun
# ———————————————-
# Logging
# ———————————————-
status „C:\\Programme\\OpenVPN\\log\\openvpn-status.log“
log „C:\\Programme\\OpenVPN\\log\\openvpn.log“
log-append „C:\\Programme\\OpenVPN\\log\\openvpn.log“
verb 3
Meine Client config:
##############################################
# MvA-Networks Connect. OpenVPN ClientScript #
##############################################
client
dev tun
proto tcp
# IPv4 Adresse meines VServers auf dem 6tunnel läuft.
remote XXX.XXX.XXX.XXX 11194
resolv-retry infinite
nobind
persist-key
persist-tun
ca „ca.crt“
cert „client1.crt“
key „client1.key“
comp-lzo
verb 3
6tunnel Befehl auf dem VServer wie im Script aus dem Kommentar zum vorherigen Post:
echo „$ipv6“ | awk ‚{print „/usr/bin/6tunnel 11194 „$1“ 1194 „}‘ | /bin/sh
Versuch mal proto tcp6-server statt proto tcp.
Diese Änderung alleine funktioniert nicht.
Ich fange gerade erst an mich mit IPv6 zu beschäftigen.
Denke das alle IP Adressen, die in der Config angegeben sind, dann auch IPv6 sein müssen.
Mir fehlt allerdings momentan noch das nötige Verständnis für IPv6.
https://community.openvpn.net/openvpn/wiki/IPv6
Hast du vielleicht eine Beispiel Config mit private/public Key Authentifizierung für IPv6?
Das hier ist die log Ausgabe vom Tunnelblick (OSX OpenVPN Client):
*Tunnelblick: OS X 10.12.5; Tunnelblick 3.7.2beta03 (build 4840); prior version 3.7.2beta02 (build 4830)
2017-07-17 22:54:23 *Tunnelblick: Attempting connection with client1 using shadow copy; Set nameserver = 769; monitoring connection
2017-07-17 22:54:23 *Tunnelblick: openvpnstart start client1.tblk 1337 769 0 1 0 1130800 -ptADGNWradsgnw 2.3.17-openssl-1.0.2k
2017-07-17 22:54:24 *Tunnelblick: openvpnstart log:
OpenVPN started successfully. Command used to start OpenVPN (one argument per displayed line):
/Applications/Tunnelblick.app/Contents/Resources/openvpn/openvpn-2.3.17-openssl-1.0.2k/openvpn
–daemon
–log
/Library/Application Support/Tunnelblick/Logs/-SUsers-SmyId-SLibrary-SApplication Support-STunnelblick-SConfigurations-Sclient1.tblk-SContents-SResources-Sconfig.ovpn.769_0_1_0_1130800.1337.openvpn.log
–cd
/Library/Application Support/Tunnelblick/Users/myId/client1.tblk/Contents/Resources
–verb
3
–config
/Library/Application Support/Tunnelblick/Users/myId/client1.tblk/Contents/Resources/config.ovpn
–verb
3
–cd
/Library/Application Support/Tunnelblick/Users/myId/client1.tblk/Contents/Resources
–management
127.0.0.1
1337
–management-query-passwords
–management-hold
–script-security
2
–up
/Applications/Tunnelblick.app/Contents/Resources/client.up.tunnelblick.sh -9 -d -f -m -o -w -ptADGNWradsgnw
–down
/Applications/Tunnelblick.app/Contents/Resources/client.down.tunnelblick.sh -9 -d -f -m -o -w -ptADGNWradsgnw
2017-07-17 22:54:23 *Tunnelblick: openvpnstart starting OpenVPN
2017-07-17 22:54:24 OpenVPN 2.3.17 x86_64-apple-darwin [SSL (OpenSSL)] [LZO] [PKCS11] [MH] [IPv6] built on Jun 21 2017
2017-07-17 22:54:24 library versions: OpenSSL 1.0.2k 26 Jan 2017, LZO 2.09
2017-07-17 22:54:24 MANAGEMENT: TCP Socket listening on [AF_INET]127.0.0.1:1337
2017-07-17 22:54:24 Need hold release from management interface, waiting…
2017-07-17 22:54:24 MANAGEMENT: Client connected from [AF_INET]127.0.0.1:1337
2017-07-17 22:54:24 *Tunnelblick: Established communication with OpenVPN
2017-07-17 22:54:24 MANAGEMENT: CMD ‚pid‘
2017-07-17 22:54:24 MANAGEMENT: CMD ’state on‘
2017-07-17 22:54:24 MANAGEMENT: CMD ’state‘
2017-07-17 22:54:24 MANAGEMENT: CMD ‚bytecount 1‘
2017-07-17 22:54:24 MANAGEMENT: CMD ‚hold release‘
2017-07-17 22:54:24 NOTE: the current –script-security setting may allow this configuration to call user-defined scripts
2017-07-17 22:54:24 Socket Buffers: R=[131072->131072] S=[131072->131072]
2017-07-17 22:54:24 MANAGEMENT: >STATE:1500324864,RESOLVE,,,
2017-07-17 22:54:24 Attempting to establish TCP connection with [AF_INET]XXX.XXX.XXX.XXX:11194 [nonblock]
2017-07-17 22:54:24 MANAGEMENT: >STATE:1500324864,TCP_CONNECT,,,
2017-07-17 22:54:25 TCP connection established with [AF_INET]XXX.XXX.XXX.XXX:11194
2017-07-17 22:54:25 TCPv4_CLIENT link local: [undef]
2017-07-17 22:54:25 TCPv4_CLIENT link remote: [AF_INET]XXX.XXX.XXX.XXX:11194
2017-07-17 22:54:25 MANAGEMENT: >STATE:1500324865,WAIT,,,
Mit Tunnelblick hat es bei damals auch nicht funktioniert. Versuch es mal mit Viscosity.
Gleiches Ergebnis. Im lokalen Netz kann ich mich mit dem OpenVPN Server verbinden. Dabei geb ich die interne IPv4 Adresse an.
Wenn ich über meinen VServer gehen will oder die IPv6 Adresse angebe, funktioniert es nicht.
Hast du in Viscosity auch in den Einstellungen zur Verbindung unter Allgemein -> Methode Gerät = tun und ipv6 aktivieren angehakt?
Nein nicht alle internen Adressen müssen in der Config IPv6 Adressen sein. Die Config sieht soweit (bis auf proto tcp) gut aus. Leider habe ich keine Ahnung ob man unter Windows noch was anderes einstellen muss.
Meine Server laufen aus Prinzip nur mit Linux.
Ist alles eingestellt. Ich hab das Gefühl, das die Fritzbox den Traffic nicht durch lässt.
Nachdem Lokal ja alles funktioniert, sollte es nicht an der Konfiguration liegen.
Ich kann jetzt eine Verbindung von Extern zu meinem OpenVPN Server herstellen und der gesamte TCP Traffic geht durch die VPN Verbindung. Da es ein Tunnel ist und keine Bridge, kann aber nicht auf Netzlaufwerke, etc zugegriffen werden.
Hier meine Konfigurationen:
SERVER:
local XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX
port 41194
proto tcp6-server
dev tun
cipher AES-256-CBC
dh „C:\\Programme\\OpenVPN\\server-keys\\dh4096.pem“
ca „C:\\Programme\\OpenVPN\\server-keys\\ca.crt“
cert „C:\\Programme\\OpenVPN\\server-keys\\vpn.crt“
key „C:\\Programme\\OpenVPN\\server-keys\\vpn.key“
server 10.1.0.0 255.255.255.0
ifconfig-pool-persist „C:\\Programme\\OpenVPN\\ipp.txt“
client-to-client
client-config-dir „C:\\Programme\\OpenVPN\\ccd“
push „route 10.0.0.0 255.255.255.0“
keepalive 10 120
comp-lzo
persist-key
persist-tun
status „C:\\Programme\\OpenVPN\\log\\openvpn-status.log“
log „C:\\Programme\\OpenVPN\\log\\openvpn.log“
log-append „C:\\Programme\\OpenVPN\\log\\openvpn.log“
verb 0
CLIENT:
client
dev tun
proto tcp-client
remote jco.io 11194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
ca „ca.crt“
cert „sbeutel.crt“
key „sbeutel.key“
cipher AES-256-CBC
comp-lzo
verb 0
Das Problem bei mir war die IP Adresse in der Server Konfiguration. Nutz man tcp6-server, so muss auch eine IPv6 Adresse angegeben werden.
Dies muss dann aber ein Windows spezifisches Verhalten sein. Unter Linux ist dies definitiv nicht nötig ein IPv6 Adresse anzugeben.
Das du nicht auf interne Ressourcen zugreifen kannst kann ein Routing Problem sein. Unter Linux regelt man sowas normalerweise per IPtables. Bei Windows kann ich dir da leider nicht weiter helfen.
Hallo Björn, ich versuche schon seit meinem Umzug und dem damit verbundenen Wechsel auf DS-Lite meinen Raspberry auch aus IPv4-Netzen erreichbar zu machen. Dein Guide hat mir schon viel geholfen die Problematik zu verstehen. Jetzt habe ich mir über feste-ip.net einen Portmapper eingerichtet. Das hat schon mal geholfen, jedoch bin ich immer noch kurz vor dem Ziel gescheitert.
Ich kann aus IPv4-Netzen heraus nun über nslookup meine domain suchen und erhalte die IPv4 und IPv6 Adresse. Dennoch liefert der Apache auf dem Raspberry keine Seite aus (bei Aufrufen aus dem IPv6-Netz jedoch schon). Ich nehme daher an, dass es an Port-Einstellungen und der Firefall der ConnectBox von UnityMedia liegt.Hier habe ich auch wirklich schon diverse Szenarien durchgespielt und alle Einstellungen vorgenommen die irgendwie den Zugriff erleichtern sollten, aber dennoch bisher keinen Erfolg gehabt.
Gibt es hierzu vielleicht noch Tipps? Was wäre der Zielzustand für die Ports? Eine wirkliche Weiterleitung gibt es ja nicht mehr, nur noch den IP und Port-Filter.
Jede Hilfe wäre SEHR willkommen 🙂
Also ich kann deine Seite per IPv4 Verbindung erreichen.
Na dann wird es jetzt aber wirklich kurios. Von meinem Handy aus und vom Anschluss auf der Arbeit liefert mir der Apache keine Seite aus. Du erreichst über IPv4 meine Website?
Sorry, wenn ich so doof frage, aber ich bin gerade echt irritiert.
Sorry falscher Alarm, hatte garnicht mitbekommen das mein Handy inzwischen auch eine IPv6 Adresse per Mobilfunk bekommt.
Wahrscheinlich musst du nur die richtige Portfreigabe in der Connect Box einrichten.
Ich selber habe keine Connect Box und weiss daher nicht wie das Menü dort bei dir aussieht.
Wahrscheinlich musst du die IPv6 Adresse des Pi als Ziel angeben. Findest du per ifconfig raus, es ist die Adresse die als Global gültig gilt.
Dann kannst du testen ob der Port auch wirklich offen ist, unter folgender Adresse gibt es dafür einen Port Scanner: http://www.ipv6tech.ch/?tcpportscan
Wird der Port als Closed bzw. Filtered angezeigt ist er nicht offen und dein rPi kann nichts über den Port Mapper ausliefern.
Wie gesagt ich selbst habe keine Connect Box, ich habe direkt die Fritzbox genommen, da ist man vor größeren Überraschungen sicher. Es gab von UM auch schon Geräte da konnte man gar keine vernünftigen Freigaben einrichten.
Ich habe die IPv6-Adresse des Pi mal auf der Seite eingetragen und mich scannen lassen:
TCP6 Port 80 http OPEN.
In der ConnectBox selbst habe ich im Bereich IP und Port Filter bei „Eingehend“ eingestellt:
Quell IPv6 Adresse: All
Ziel IPv6 Adresse: [IPv6 des Pi]
Protokoll: TCP
Quellport: 1:65535
Zielport: 80
Erlauben: ja
Aktiviert: ja
Eigentlich sollte es ja überall grünes Licht geben :-/
Vielleicht irgendwas bei fest-ip.net falsch eingestellt?
Ich selbst nutze den Service ja nicht, habe das über einen eigenen VServer laufen
Hallo Björn,
vielen Dank für dein Tutorial und die Beantwortung der Fragen.
Ich habe o.g. Setup für openvpn mit tcp zügig ans Fliegen bekommen:
tcp-Client -> vserver mit socat oder 6tunnel von IPv4 auf IPv6 -> tcp6-Server (über Fritzbox)
Jetzt habe ich versucht das Gleiche über UDP zu machen. socat nimmt die Anfrage per UDP über IPv4 entgegen und leitet die Anfrage per IPv6 weiter zum openvpn Server. Dort kommt auch was an. Allerdings scheint kein Response am Client bzw. schon bei socat anzukommen. Im log steht …WAIT und …AUTH und nach einer Weile kommt „TLS handshake failed“.
Ich habe schon in Google danach „hoch- und runter“ gesucht aber komme irgendwie nicht weiter… Hast du oder jemand anderes eine Idee woran es ligen könnte?
Bei Bedarf kann ich gerne die Configs und Logs posten. Ich wollte die Kommentare hier nicht direkt zumüllen… 😉
VG
Ralle
Moin Ralle,
wie ich schon geschrieben habe ist es nicht möglich UDP Verbindungen auf diese Weise zu tunneln. Das geht nur mit TCP Verbindungen. Deshalb kann man z.B. auch keine IPSEC VPNs auf diese Weise realisieren.
Wieso das so ist kann dich dir ehrlich nicht sagen. Ich hatte es damals auch mit Socat probiert und es nicht geschafft.
Hallo Björn,
zuerst vielen Dank, für die beschriebene Möglichkeit. Ich habe auch nach einer Problemlösung für ein Zugriff auf mein Client im Heimnetz, hinter einer FritzBox mit Unitymedia als Provider gesucht.
Aber ich bin inzwischen am Verzweifeln. Ich habe versucht alles wie oben beschrieben einzurichten, habe jedoch das gleiche Problem wie Chris geschrieben hatte (ziemlich weit oben).
– vServer mit IP6 Adresse
– 6tunnel installation/konfiguration
– IP6 Freigabe in der FB für mein Client
ich bin mir auch sicher ich habe die richtige IP6 Adresse für die 6tunnel Konfiguration verwendet.
–> 6tunnel
Am Client lauscht auch was auf den Port…
Hat jemand ein Tipp wie ich die Weiterleitung noch hin bekomme, bzw. was ich wo noch prüfen könnte?
(IP-Adr. habe ich mit xxxx hier überschrieben!)
verwende ich den -h Parameter bei 6tunnel, erhalte ich bei einem Versuch nur:
connection from 46.223.128.31,20797
connection refused (2a02:8071:xxxx:xxxx:a1f9:1436:xxxx:xxxx,8443)
connection closed
Log von tcpdump:
12:17:45.000896 IP6 (hlim 64, next-header TCP (6) payload length: 40) 2a03:4000:xxxx:xxxx::11.36789 > 2a02:8071:xxxx:xxxx:a1f9:1436:xxxx:xxxx.8443: Flags [S], cksum 0xa36f (incorrect -> 0xb877), seq 2995398272, win 28800, options [mss 1440,sackOK,TS val 61983 ecr 0,nop,wscale 7], length 0
Was für einen Dienst möchtest du denn freigeben? VPN, HTTP Server?
Hast du via Portscan schon einmal gecheckt ob der Port den du in der FB geöffnet hast auch wirklich offen ist?
Hi Björn,
Ich möchte ein HTTP Dienst (auf Win10) dahinter betreiben.
Das Problem (noch nicht gelöst) ist wirklich, dass die FB die IPv6 Freigabe nicht an den Server weiterreicht.
Portscanner und ein IPv6 Ping, von aussen, zeigen das auch an.
Hast du auch eine FB von Unitymedia mit Version 6.50 in betrieb und funktioniert die Freigabe an der FB?
Gibt es sonst noch was zu beachten, was ich vielleicht vergessen habe?
Ehrlich gesagt glaube ich nicht das die Schuld an der Fritzbox liegt.
Meiner Meinung nach liegt es womöglich an zwei Dingen. Entweder du hast die falsche IPv6 Adresse des Windows 10 PC’s eingetragen, z.B. die temporäre welches durch die Privacy extension erzeugt wird, oder du hast den Port in der Windows 10 Firewall nicht geöffnet.
Zum Glück sind das zwei Dinge die sich einfach prüfen lassen. Die richtige IPv6 Adresse findest du per ifconfig auf der Powershell heraus. Du darfst in der FB natürlich nicht die temporäre Adresse eingetragen haben.
Ist hier alles richtig dann schalte doch einfach mal die Windows Firewall ab und schau ob der Port dann als offen angezeigt wird.
Ich habe das schon alles am Win10 Rechner versucht… die Privacy Extensions sind bereits abgeschaltet, so dass keine Temporären IPv6 generiert werden. Es ist nur noch eine (offizielle 2a02:…) Adresse im Win10 gesetzt und diese ist laut FB auch Freigegeben.
Die Firewall hatte ich auch mal komplett deaktiviert. Hmm, bin mir gerade nicht ganz sicher, ob ich davor (vor deaktivierung der Privacy Extension) oder danach das gemacht habe! Muss ich heute nochmals testen und gebe bescheid.
Aber müsste nicht ein Ping6 (ist in der FB auch für den Rechner freigeschaltet) trotz FW eine andere Antwort als 100% lost geben?
Vielen Danke für deine Hilfe!
Bei mir ist Ping6 deaktiviert und trotzdem melden die Portscanner bei mir die Ports auch wirklich als Open. Daran wird es also nicht liegen.
Ich selbst habe kein Windows 10 System mit dem ich es ausprobieren könnte, des weiteren halte ich Windows als Server OS eh für ungeeignet.
Hast du nicht vielleicht einen Raspberry Pi oder so mit dem du mal testen kannst ob ein Linux Rechner bei dir vielleicht eine Portfreigabe kriegt?
Hi Björn,
Ich habe es nun mit einem RaspberryPi hinbekommen, direkt auf Win10, habe ich aber nur den Ping hinbekommen. Aber auch egal, mit dem rPi habe ich noch viel mehr Möglichkeiten als ich zuvor hatte 🙂
Nur scheint mir der Portscanner von http://www.ipv6tech.ch/?tcpportscan nicht wirklich zuverlässig zu funktionieren. Auch wenn er mir den Port als ‚CLOSE‘ anzeigt, kann ich dennoch darauf zugreifen.
Vielen Dank für die Hilfe!
Hallo Björn,
gut das ich deinen Artikel gefunden habe.. Ist ja recht einfach die ganze Sache. Habe zum Glück schon einen Debian Server Online und Zuhause. Bis jetzt läuft alles super, nur eine Frage habe ich noch, auf die ich bis jetzt keine Antwort gefunden habe. Ich habe mehrere Domains und Subdomains auf dem Onlineserver. Könnte ich den Tunnel so ein stellen das je nach aufgerufener Domain eine bestimmte ipv6 Adresse aufgerufen wird? Sodass ich zum Beispiel immer Port 8080 nutze, aber durch die Unterschiedlichen Domains auf unterschiedlichen Geräten lande?
Vielen Dank für deine Hilfe!
Glaub kaum das das geht solange dein Server nur eine IP Adresse hat.
Alles klar, ja macht auch irgendwie sinn.. Danke für deine schnelle Antwort!
BTW: Super Blog den du hier geschaffen hast!
Ich habe noch eine kostenlose Möglichkeit für Portmapping gefunden, die auch ohne vServer funktioniert: Wer eine eigene Domain hat und das DNS über Cloudflare laufen hat (Geht auch mit kostenlosen Domains wie .tk), kann einfach eine Subdomain über Cloudflare per AAAA record auf die IPv6 des lokalen Servers weiterleiten lassen, Cloudflare übernimmt dann das Portmapping.
Danke für den Hinweis. Ich werde das in den nächsten Wochen einmal ausprobieren und schauen wie gut das funktioniert.
Wenn das gut klappt werde ich dazu auch noch einmal eine Anleitung verfassen.
Also Cloudflare funktioniert bei mir nicht. Ich hab ne Subdomain mit einem AAAA Record, wenn ich das in meiner Android OpenVPN App den Hostname eintrage gibts beim Connect ne Fehlermeldung „Network is unreachable“. Aber man kann im Log auch meine IPV6 Adresse sehen, im Gegensatz zur „Feste-IP“ Lösung – hier wird der Server als IPV4 aufgelöst und die Verbindung kommt zustande.
(Vodafone Netz)
Hallo, vielen Dank erst einmal Anleitungen und Kommentare. Ich bin jetzt auch neu eingestiegen in das Thema und kommen noch nicht ganz klar. Mein Vorhaben – ich möchte gerne von extern auf verschieden Gerät im Hausnetzwerk zugreifen (3D-Drucker, Webcamer, Raspi mit ioBroker, usw.). Habe folgende Voraussetzungen (und Hürden): Internetanbieter Unitymedia (DS-Lite) mit Fritz!Box 6360 Cable, Vserver (Netcup) mit IPv4 und IPv6 – 6tunnel bereits installiert, Raspi im Heimnetzwerk. Soweit ich durch die Kommentare erkennen konnte, habe ich theoretisch alle Mittel, um von IPV4 auf IPV6 und im Heimnetz wieder von IPv6 auf IPv4 zu kommen. Ich scheitere aber hier jetzt an den Einstellen (IPv6 Freigabe vom DSL Router zum Server). Ich kämpfe primär mir den ganzen IPv6-Einstellungen.
Vorab vielen DAnk für Eure Hilfe
Also in deinem Fall wo du mehrere Dienste von aussen erreichen möchtest bietet sich eigentlich an auf dem Raspi einen OpenVPN Server einzurichten. So brauchst du auch nur eine Portfreigabe einzurichten. Wichtig OpenVPN funktioniert in diesem Fall nur im TCP Modus.
Eine Portfreigabe auf der FB einzurichten ist sehr einfach. Du findest die entsprechenden Einstellungen unter Internet->Freigaben->IPv6 hier kannst du dann z.B. deinen Raspi auswählen und es sollte automatisch die richtige Interface ID eingetragen werden. Nun noch den richtigen Port eintragen, OK drücken und checken ob die Freigabe auch als aktiv gekennzeichnet ist.
Nun kannst du zum Beispiel auf folgender Seite überprüfen ob der Port offen ist: http://www.ipv6scanner.com/
Hallo, vielen Dank für die Antwort – gibt es irgendwo ein ausführliche Tutorial/Beschreibung, wie ich so einen OpenVPN-Server einrichte?
Tonnenweise man muss nur danach googlen.
Die kann man auch größtenteils übernehmen. Wichtig ist nur das man bei OpenVPN Versionen kleiner Version 2.4 proto tcp6-server nutzt.
Hallo, hat sich die Syntax von 6tunnel irgendwie verändert oder so? Ich schaffe es damit nämlich nicht meinen OpenVPN Server zu erreichen. Benutze ich aber den Portmapper von fetse-ip funktioniert es.
Musste bei einem kleinen Netcup Server eine global erreichbare ipv6 erst mit ifconfig manuell setzen.
Hab sie auch in deren Webinterface in einen rDNS Eintrag eingetragen – nicht sicher was das macht 🙂
VIELEN VIELEN DANK FÜR DEINEN BLOG!
Big Karma von mir aus Stuttgart an dich 🙂
Hi Björn,
also vorweg ich bin leider kein Linux Profi, möchte aber Dein skript „6tunnel_command.sh“ auf meinem Ionos root server nutzen, um auf die sich wechselnede IP V6 adresse an meinem NAS zu reagieren.
Hier habe ich 2 Fragen:
1. In Zeile 3: Muss ich da „IPV6“ durch die momentane IPV6 Adresse von meinem NAS ersetzen oder wird diese ausgelesen durch das Schreiben von „IPV6“?
2. Macht es Sinn, einen cronjob zu erstellen und so Dein Skript zeigesteuert alle 5 Minuten oder so laufen zu lassen? Wenn ja, welches Zeitintervall macht da Sinn?
Ich verstehe Dein Skript so, dass immer die aktuellste IPV6 Adresse vom Server (NAS) gezogen wird und getunnelt wird.
Viele Grüße,
Randolph
Moin Randolph,
an dem Script musst du gar nichts verändern. Du rufst es einfach nach dem Schema 6tunnel_command start IPV6-des-NAS auf.
Das Script an sich per Cronjob laufen zu lassen macht wenig sinn, es kennt die ggf neue IPv6 deines NAS ja nicht. Sinn würde es nur ergeben ein Script auf dem NAS laufen zu lassen welches regelmäßig prüft on sich die IPv6 (bzw. das Prefix) des NAS geändert hat. Dann könnte dieses Script sich per SSH auf deinem Root Server einloggen und dann die Tunnel per 6tunnel_command restart Neue-IPv6 neu erstellen lassen.
Erfahrungsgemäß ändert sich das Prefix aber nur alle paar Monate einmal so das ich mich nie darum gekümmert habe. Wenn sich das Prefix mal geändert habe hab ich das einfach händisch angepasst.
Also einfach das Skript nochmal auf dem Ionos Server ausführen, wenn sich die IPV6 des NAS ‚ sich geändert hat und es nicht mehr erreichbar ist?
Hoffentlich bekomme ich die Änderung auch mit, denn ich habe vor, 2 NASse (QNAP) übers Internet laufend automatisiert zu synchronisieren.
Aber vielen, vielen Dank schon mal für Deine Antwort und Mühe!
Genau am besten mit restart Argument, dann werden alle Tunnel geschlossen und mit dem der neuen IPv6 wieder gestartet.
Servus,
falls auch jemand Probleme hatte einen Portmapper auf einem 1€ Strato Vserver einzurichten:
Ja es braucht nur den Install und den Weiterleitungsbefehl.
ABER: In der IP-konfig unter config.stratoserver.net müsst ihr erst IPv6 aktivieren.
Bin erst nach ping -6 hostname drauf gekommen. Nach dem ich vorher allen Mumpitz geprüft habe
Hey Marcin,
Hast du denn sonst noch etwas ändern müssen? Die ipv6 Unterstüzung habe ich im Panel aktiviert, ein Ping vom Strato Mini VServer auf meine ipv6 ist ebenfalls möglich, jedoch bekomme ich bei aktiviertem Tunnel über 6tunnel im Browser nur die Meldung „Empty Response“… Jemand ähnliches Problem?
Hallo,
ich habe dazu noch eine Frage:
Habe im LAN einen Webserver an einer FB 6490 Cabel laufen, der über die aktuelle WAN-IP der FB auf Port 80 auch erreichbar ist. In der FB habe ich dafür eine Freigabe für IPv4 und IPv6 eingerichtet.
Im Netz wollte ich jetzt einen IONOS vServer nutzen, um mit der festen öffentlichen IP auf den Webserver zuzugreifen. Auf dem vServer habe ich eingetragen:
6tunnel 80 IPv6-Adresse 80
Bei Eingabe der öffentlichen IP-Adresse des vServers erhalte ich aber die Meldung, dass die Website nicht erreichbar ist.
Hat dazu jemand eine Idee?
Ist der Server über die öffentlich IPv6 deines Anschlusses erreichbar?
Das war eine gute Frage, Antwort: Nein.
Die FB aber schon und unter Freigaben ist der Server auch eingetragen, wird also erkannt.
Dann muss ich mal weiter schauen, ob das am älteren Alix Board liegt oder evtl. an einem veralteten Apache. Alternativ würde ich dann den Raspi verwenden.
Bei den meisten Servern (Strato, 1und1, …) muss IPv6 erst aktiviert werden.
Hallo Björn,
ich bin beim googlen auf deinem Blog gelandet. Ich wollte auch 6tunnel nutzen um aus einem vServer von IONOS herraus meinen Pi zu erreichen.
Die Tunnels sind eingerichtet was ich mit dem Befehl ps -ef | gerp 6tunnel nachprüfen kann. Aus dem vServer heraus kann ich meinen Pi anpingen und mich auch per SSH mit diesem verbinden wenn ich dessen IPv6 Adresse benutze.
Nur über die IPv4 Adresse meines IONOS vServers benutze geht nix. Die Tunnel kommen also irgendwie nicht zustande. Ich find auch nichts, woran es liegen könnte. Muss ich noch irgendwo was aktivieren?
Gruß, Sven
Was für eine Ausgabe gibt dir auf dem VServer netstat -tulpn
Hallo Björn,
ich kann auch hier meine Ports sehen plus einigen Anderen. Komischerweise stehen keinerlei IP Adressen unter Local Address und Foreign Address.
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:2200 0.0.0.0:* LISTEN 13485/6tunnel
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 1752/6tunnel
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 1814/6tunnel
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1809/6tunnel
Das sind die Ports für welche ich Tunnel angelegt habe. Oder glaube sie angelegt zu haben. Richtig sieht diese
Ausgabe irgendwie nicht aus.
Gruß, Sven
Es wundert mich das keine TCP6 Einträge da sind, zugegeben habe ich die Lösung inzwischen aber auch nicht mehr selbst im Einsatz.
Komisch ist das du den Pi ja über die Shell vom VPS erreichen kannst. Haste vielleicht irgendeine Firewall auf dem VPS laufen?
Ich hätte evtl. eine Idee.
Es bei IONOS ist per default IPv6 nicht aktiviert. Es könnte sein, dass ich die Tunnel gemacht hab, bevor ich das
IPv6 aktiviert habe.
Ich wollte jetzt einfach die Tunnel noch mal neu machen. Das geht aber offensichtlich nicht, weil es die schon gibt. Also einfach überschreiben geht wohl nicht. Ich hatte gehofft durch deinstallieren des 6tunnel Paketes werde ich die alte Konfiguration los. Aber das geht wohl offensichtlich nicht.
Hast Du eine Idee wie ich 6tunnel dazu bekomme meine Tunnel loszuwerden.
killall 6tunnel via SSH eingeben, dann sollten alle Tunnel weg sein.
Ok damit konnte ich die alte Konfiguration löschen und hab sie neu gemacht .
TCP6 Einträge hab ich aber für meinen Tunnel noch immer nicht. Allerdings gibt es wohl per Default einen TCP6 Eintrag für Port 22 (hatte vorher nur einen Auszug der Ausgabe hier gepostet). Deshalb komm ich wahrscheinlich aus dem VServer heraus auch auf meine SSH Konsole.
Ich glaube in dem IONOS Konto kann man Einstellungen für die Firewall machen. Ich schau später mal ob ich damit klar komme.
Welche Lösung benutzt Du denn jetzt. ist diese vielleicht einfacher zu realisieren?
Vielen Dank schon mal für deine bisherigen Tipps.
Hab mir von Unitymedia einen richtigen Dual Stack Anschluss schalten lassen.
Hatte gerade einen Teilerfolg.
1. War der Port 8080 den ich wollte in der IONOS Firewall nicht freigegeben. Das hab ich gemacht.
2. Da ich über HTTP reinkomme muss die Weiterleitung wohl 6tunnel 80 8080 für diesen Fall
sein. ich hatte 6tunnel 8080 8080 gemacht. Das ging nicht.
Generell ist da jetzt aber wohl auch noch nicht das was ich will. Denn ich lande bei mir in einem Dashboard das auf andere Seiten mit anderen Ports verweist. Das geht natürlich nicht.
Aber immerhin wieder ein Stück was neues gelernt. Mir hilft wohl nur ein VPN. Aber auch das ist ja ohne eine feste öffentliche IP nicht so einfach.
Du kannst ein VPN über den Portmapper laufen lassen, wichtig ist aber das über den Portmapper nur TCP funktioniert. Damit bleibt als VPN nur OpenVPN übrig, IPSec, Wireguard etc. laufen nur über UDP.
Hi!
Erstmal bin ich sehr dankbar für die Tipps hier!
Habe ein paar Fragen 😉
Habe mir auch einen Vserver erfolgreich eingerichtet.
Bin Deutsche Glasfaser Kunde….also keine Öffentlich Adresse….Fritzbox 7590….
Inzwischen erreiche auch wieder meine Kameras zu Hause über die 6Tunnel Geschichte.
Früher hatte ich wunderbar eine VPN-Verbindung vom iphone zur Fritzbox (IP-SEC) und war dann automatisch in meinem Heimnetz und konnte z.B. alle Appz für Heimnetzgeräte nutzen.
Wenn ich es hinbekommen sollte einen OpenVPN-Server auf meiner Qnap zum Laufen zu bekommen, habe ich dann die selben Funktionalitäten wie mit dem ehem. VPN zur Fritzbox – also kann ich dann wieder Appz für Heimnetzgeräte nutzen? Oder komme ich dann „nur“ an Qnapsachen?
Eine 2. Variante die mir durch den Kopft geht wäre zu versuchen einen 2. Router (Asus mit Merlin) als OpenVPN-Server mit der Fritzbox zu verbinden, um dann vom Iphone eine VPN-Verbindung zum Laufen zu bekommen. Wie siehts da mit der Erreichbarkeit aus?
3. Variante soll wohl sein direkt auf dem Vserver einen OpenVPN-Server zu bringen….
Klingt aber aber was ich so im Netz gefunden habe sehr aufwendig und tricky!
Endziel soll halt sein eine App für eine Alarmanlage (Telenot Build Sec) zum Laufen zu bewegen.
Dieses App läuft aktuell nur über den myfritzdienst und soll nur ipv4 unterstützen.
Im Heimnetz kann ich es starten nur von außen halt noch nicht!
Ich hoffe ich habe mich verständlich ausgedrückt und würde mich sehr freuen über Ratschläge.
Auf welchem Gerät der OpenVPN Server läuft ist eigentlich nebesächlich, es sollte nur 24/7 laufen.
Um das interne Netzwerk via OpenVPN erreichen zu können kann es nötig sein eine statische Route in der Fritzbox zu definieren welche das VPN Subnet mit dem Subnet des normalen internen Netzwerk bekannt macht.
Variante 1 und 2 machen meiner Meinung nach Sinn. Die dritte Variante will mir nicht wirklich einleuchten. Und das ganze geht auch nur mit OpenVPN, ist meines Wissens die einzige VPN Server Software welche TCP unterstützt.
So arbeite aktuell an Variante 1 – also Qnap OpenVPN!
Lokal klappt es schon mal über Windows 10 – eine Verbindung funktioniert!
Allerdings noch nicht von außen….
In der Fritzbox habe ich mal TCP 1194 f.d. Qnap für Ipv6 freigegeben.
Per 6Tunnel auf dem Vserver den Port 1194 auf die Ipv6 Adresse des Qnaps – lt. Fritzbox!
In der Client Config habe ich die Ipv4 Adresse des Vservers eingetragen.
Als Protokoll TCP6 eingetragen!
Was mache ich falsch – Openvpn log spricht von „Transport Error“!
Irdendwo ist wohl ein Denkfehler!
Hier mal das Configfile
client
dev tun
script-security 3
remote vsever 1194
resolv-retry infinite
nobind
auth-nocache
auth-user-pass
remote-cert-tls server
reneg-sec 0
cipher AES-256-CBC
tls-cipher TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384:TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-128-CBC-SHA
comp-lzo
proto tcp6
Eine Idee?
Schon länger her das ich so ne Config machen musste da ich inzwischen nen Dual Stack Anschluss habe. Früher musste man auf jeden Fall in der Server Config proto tcp6-server einfügen (siehe auch der OpenVPN Post in diesem Blog). Ausserdem glaube ich nicht das proto tcp6 in der Client Config stehen muss.
Client wieder auf nur TCP geändert! Aber es ist doch definitiv richtig die ipv4 Adresse des V-Servers als Ziel anzugeben?
In der Server Config war schon auf TCP6 geändert.
Will nicht!
Immer noch Transport Error!
Bin nicht so bewandert – aber wie kann ich den Fehler eingrenzen, bzw. aufspüren?
Ich hoffe ich nerve nicht zu sehr….
Schau dir mal das hier an: https://forum.feste-ip.net/viewtopic.php?t=639
QNAP scheint ein bisschen speziell zu sein.
Hallo Björn,
vielen Dank für deinen Blog.
Ich sitze selbst seit einigen Tagen an zwei RaspberryPis und versuche (mittlerweile fast verzweifelt) eine VPN Verbindung hinter meinem Vodafone DS-Lite Anschluss einzurichten.
Wenn ich deine Ausführungen aber richtig verstehe, dann kommt man einfach nicht um einen kostenpflichtigen Dienst herum? Also, man kann nicht zwei Raspberry Pi so einstellen, dass sie direkt miteinander kommunizieren können, wenn der eine hinter DS-Lite (IPv6) und der andere z.B. in einem Mobilfunknetz mit IPv4-only hängt?
Genau entweder du nimmst einen kommerziellen Portmapper oder du richtest dir einen auf deinem eigenen VPS ein. Ohne geht es nicht. Und aufpassen: Als VPN funktioniert nur OpenVPN im TCP Modus. Wireguard, IPSEC etc. geht nicht.
Hallo Bjoern,
ich habe einen vServer von Ionos und eine IP-Kamera an meinen Heimrouter per Ethernet angeschlossen. Die IP-Kamera hat per DHCP eine Ipv4 und Ipv6-Adresse von meinem Router zugewiesen bekommen. Ich möchte dem lokalen IP:Port eine extern erreichbare IP:Port zuweisen. Die Fernverbindung soll auf Basis von VPN und TCP geschehen.
Man nehme an: Die lokale Ipv6 meiner Kamera ist x:y:z und der lokale RTSP-Port meiner Kamera ist 412. Ich möchte diese lokale IP:Port über die IP-Adresse des VServers und des Ports 2354 extern zugreifbar machen.
Würde der 6tunnel dann so aussehen:
6tunnel 412 x:y:z 2354
Ich bin ein wenig verwirrt. Du redest davon das du die Verbindung über ein VPN nutzen möchtest. Was du aber beschreibst wäre eine normale Portfreigabe.
Das kann so funktionieren. Ich würde es aus Sicherheitsgründen jedoch nicht empfehlen, gibt es ein Sicherheitsproblem bei deiner IP Kamera kann dir jeder ins Wohnzimmer schauen.
Du solltest vorher aber auf jeden Fall testen ob IPv6 auf deinem VServer aktiviert ist und keine Firewall Verbindungen behindert. Des weiteren hast du in deinem 6tunnel Kommando die Port vertauscht, als erstes muss der IPv4 Port des Server kommen (2354). Hinter der IPv6 deines Heimnetzes (oder der Kamera wenn du Sie direkt freigibst) die 412.
Hallo Bjoern,
entschuldigung. Ich habe mich nicht klar ausgedrückt. Hier die Schritte, die ich vorhabe, zu gehen:
1.) Ich habe an meinem Windows-Client OpenVPN installiert. An meinem Windows-PC möchte ich die VPN-Verbindung herstellen. Mein vServer hat eine öffentliche Ipv4-/ und Ipv6-Adresse. Zunächst werde ich auf meinem vServer via 6tunnel folgenden Befehl eingeben:
→ 6tunnel 1194 öffentliche_IPv6 1194
Als „öffentliche_IPv6“ werde ich die öffentliche IP-Adresse meines Routers eingegeben, die auf meinem Windows-Client auf http://www.wieistmeineip.de ersichtlich ist.
2.) Nun werde ich auf meiner ConnectBox den Port 1194 für die oben genannte Ipv6-Adresse (Ziel-Ipv6) auf Basis von TCP freigeben.
3.) Auf meinem vServer installiere ich OpenVPN. Im Internet gibt es dazu zig Anleitungen. Als IP-Adresse gebe ich bei der Installation die Ipv4-Adresse meines vServers ein und als Port die 1194. Die im vServer fertig konfigurierte .ovpn Datei werde ich mit einem SFTP-Client auf meinen Windows-Client übertragen und in den config-Ordner von OpenVPN importieren.
Nun sollte ich mich auf meinem Windows-Client mit VPN verbinden können.
4.) Nun ist es an der Reihe, die IP-Kamera an meinem Router von außen erreichbar zu machen. Ich habe dies bereits mit http://www.feste-ip.net getan. Mit Erfolg. Dort musste ich die lokale IPv4-Adresse der Kamera eintippen und den Server-Port der Kamera eintragen, die in der Konfigurationsübersicht der Kamera hinterlegt war. Zu diesem IP:Port wurde mir dann eine extern erreichbare Ipv4-Adresse mit einem zufälligen Port zugewiesen. Zusätzlich dazu musste ich die lokale Ipv4-Adresse der Kamera und den RTSP-Port der Kamera eintragen, die auch in der Kamera hinterlegt war. Wichtig hierbei ist, dass der extern erreichbare RTSP-Port und der lokale RTSP-Port identisch sein müssen. Die Server-Ports (lokal und extern) müssen unterschiedlich sein. Und schwups… ich konnte aus der Ferne auf meine IP-Kamera zugreifen. Ich konnte sogar die Kamera bewegen. Als IP-Adresse und Port habe ich auf der Kamera-App die extern erreichbare Adresse und den extern erreichbaren Port des Server-Ports eingegeben. Und.. Ich könnte aus der App die Kamera von der Ferne bedienen.
5.) Nun möchte ich das selbe auf meinem eigenen VPN einrichten. Dafür werde ich auf dem vServer zwei Tunnel erstellen. Man nehme dafür an, dass der lokale RTSP-Port 64, und der lokale Server-Port der Kamera 23 ist. Die lokale Ipv6-Adresse meiner Kamera sei x:y:z
6tunnel 64 x:y:z 64
6tunnel 46 x:y:z 23
→ Den RTSP-Port ließ ich extern und lokal unverändert.
→ Der extern erreichbare Server-Port ist 46, der lokale hingegen 23.
6.) Nun werde ich der ConnectBox die Ports 64 und 23 für die lokale Ipv6-Adresse der Kamera (Ziel-Ipv6) auf Basis von TCP freigeben.
Meine Frage: Sollte ich nun in der Lage sein, von der Kamera-App aus die Ip-Kamera an meinem Heimrouter von der Ferne aus zu bedienen?
Ich glaube du hast die Funktionsweise von einem VPN nicht ganz verstanden. So wie du es beschreibst macht es eigentlich keinen Sinn. Oder du bringst VPN und VPS durcheinander. Ausserdem gibst du doch auf die Weise die du beschrieben hast deine Kamera via Portfreigabe frei.
OpenVPN hat nichts auf dem VPS zu suchen. Der VPN Server muss innerhalb deines Heimnetzes stehen. Auf dem VServer läuft nur 6tunnel. 6tunnel vermittelt den Verkehr von der IPv4 deines VPS auf die IPv6 deines OpenVPN Servers in deinem Heimnetz.
Vielen Dank. Ja, ich bringe VPN und VPS durcheinander. Auf dem VPS werde ich nur 6tunnel laufen lassen. Ich nehme aber stark an, dass diese Schreibweise stimmt:
„6tunnel 64 x:y:z 64
6tunnel 46 x:y:z 23
6.) Nun werde ich der ConnectBox die Ports 64 und 23 für die lokale Ipv6-Adresse der Kamera (Ziel-Ipv6) auf Basis von TCP freigeben.“
Den VPN-Server werde ich auf einem Raspberry Pi in meinem lokalen Netzwerk installieren. Ich werde meine Ergebnisse hier mitteilen.
Nein du gibst eben nicht deine Kamera in der Connect Box frei, wofür hättest du denn dann das VPN? Du gibst in der Connect Box nur die IPv6 und z.B. Port 1194 für OpenVPN frei. Auf deinem VServer machst du einen 6tunnel 1194 x:y:z 1194 auf. Dein OpenVPN Client verbindet sich auf hostnameVServer:1194 und wählt sich damit in dein Heimnetz ein. Dann kannst du über deinen Laptop die interne IPv4 deiner Kamera ansurfen und Sie steuern etc.
Vom handy aus das gleiche. Es verbindet sich per OpenVPN in dein Heimnetz und spricht die Kamera dann über z.B. Ihre Ipv4 Adresse an.
Es gibt keinen Grund die Ports der Kamera in der ConnectBox etc. freizugeben (das ist gefährlich) da du die Kamera und alle anderen Hosts über den VPN Tunnel so erreichen könnest als wärst du in deinem eigenen Heimnetz.
Hallo Bjoern, die letzten Tagen habe ich zum Anlass genommen, was es heißt einen Portmapper auf einem vSerer aufzusetzen. Letzendlich tut der Portmapper nichts anderes, als Informationen/Anfragen (Pakete ?) von einem Port des vServers zu einem Port des Heimrouters weiterzuleiten.
Sprich: Er baut ein Tunnel von Rechenzentrum, wo der vServer sitzt, zum Heimrouter auf.
Befehlstechnisch sieht das ganze vereinfacht so aus:
6tunnel | extern erreichbarer vServer-Port | öffentliche Ipv6-Adresse des Heimrouters | lokaler Port innerhalb des Heimnetzwerkes
Real würde es so aussehen, wenn x:y:z stellvertretend für die öffentliche Ipv6-Adresse des Routers stehen würde:
6tunnel 1194 x:y:z 1194
Der vServer schickt die Pakete, die extern auf seiner IP-Adresse und seinem Port eintreffen zum Heimnetzwerk samt Router und Port weiter.
So fern, so gut.
Die Gesetze der Logik sagen mir aber, dass ich auf meinem DS-Lite Router (ConnectBox) noch Anpassungen vornehmen muss. Eingehend werden vom vServer Pakete an einen bestimmten Port des Routers verschickt. Damit diese Pakete auch beim Port des Routers ankommen, muss ich an der ConnectBox folgendermaßen die Portfreigabe einrichten:
Protokoll: TCP
Quell-Ipv6: Ipv6-Adresse des vServers
Quell-Port: extern erreichbarer vServer-Port (siehe 6tunnel-Befehl oben)
Ziel-Ipv6: öffentliche IP-Adresse des Heimrouters
Ziel-Port: gewünschter lokaler Port. wohin die Pakete innerhalb des Heimnetzwerks weitergeleitet werden sollen
Die Gesetze der Logik sagen mir aber auch, dass ausgehend vom Heimrouter Pakete an den vServer verschickt werden können.
Das heißt: Ich müsste auf der ConnectBox eine 2. Portfreigabe einrichten. Diesmal ist die Quell-IP die öffentliche Ipv6-Adresse des Heimrouters. Die Ziel-IP ist demnach die Ipv6-Adresse des vServers.
Denke ich zu kompliziert oder ist die Logik richtig, die ich bei der Portfreigabe beachten muss?
Du hast fast alles richtig verstanden, aber noch nicht wie IPv6 im gegensatz zu IPv4 funktioniert.
Bei IPv6 bekommt jedes Gerät in deinem Netzwerk eine eigene öffentlich Adresse. Das bedeutet in der Portweiterleitung musst du den Port 1194 für die IPv6 des Gerätes öffnen auf welchem in deinem Heimnetz der OpenVPN Server läuft.
Du brauchst keine zwei Weiterleitungen.
Wie gut das mit den Portweiterleitungen in der Connectbox jedoch geht kann ich dir nicht sagen, ich habe mir direkt ne Fritzbox bereitstellen lassen.
Real würde es dann so aussehen, wenn x:y:z stellvertretend für die öffentliche Ipv6-Adresse des VPN-Clients stehen würde:
6tunnel 1194 x:y:z 1194
Der Portmapper baut ein Tunnel von Rechenzentrum, wo der vServer sitzt, zum VPN-Client auf.
1. Der VPN-Client schickt eine Anfrage über IPv4 an den vServer
2. Der vServer nimmt diese Anfrage an und verschickt die Pakete an die öffentliche IPv6-Adresse des Clients (6tunnel-Befehl)
3. Bevor diese Pakete beim Client ankommen, müssen sie erstmal durch den Heimrouter und den VPN-Server
4. Beim VPN-Server angekommen werden die Pakete per VPN durch das Internet zum Client getunnelt
Stimmt diese Logik?
Wenn ja, so möchte ich einen Schritt weitergehen. An meinem DS-Lite Router muss ich zwei Portweiterleitungen konfigurieren.
1a) Einmal ist die Ziel-Ipv6 die öffentliche IPv6-Adresse des VPN-Clients, mit dem Zielport:1194. Die Quell-IPv6 ist die IPv6-Adresse des vServers, mit dem Quellport 1194.
1b) Zum anderen müssen die Pakete, die am Router bei Port 1194 ankommen, zum VPN-Server weitergeleitet werden. Sprich die Quell-IPv6 wäre die die IPv6-Adresse des vServers. Die Ziel-Ipv6 ist die lokale IPv6-Adresse des VPN-Servers. Hier brauche ich nicht die öffentliche IPv6-Adresse des VPN-Servers einzugeben. Da bei Schritt 1a) bereits die Richtung festgelegt wurde. Quell- und Zielport wären jeweils 1194.
Die Logik an sich ist richtig auch wenn deine verwendung der Begriffe VPN Client und VPN Server nicht konsistent ist.
Wieso willst du immer zwei Portweiterleitungen machen? Solange du keine professionelle Firewall hast (und die Connect Box hat keine) brauchst du nur eine weiterleitung um den Traffic den Verkehr IN dein Netz zu ebnen. AUS deinem Netz heraus kann jeder Senden wie er möchte.
Vielen Dank Bjoern, ich kann nun auf meiner ConnectBox mit meinem Smartphone eine VPN-Verbindung aufbauen. Mit Wireguard. Allerdings nur, wenn ich im Router die Firewall deaktiviere. Ich will das meine Firewall auf dem Router an ist. Weißt du, auf was ich mich fokussieren sollte, um dieses Problem zu beheben? Soll ich mich in Wireshark einarbeiten, oder Firewalls seperat mir anschauen?