Server hinter Unitymedia DS-Lite Anschluss betreiben

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.

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:

  1. VServer (Linux Betriebssystem, fertig eingerichtete IPv4 sowie IPv6 Adresse)
  2. Die Software 6tunnel
  3. 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.

44 thoughts to “Server hinter Unitymedia DS-Lite Anschluss betreiben”

  1. 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

    1. 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.

    2. 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

  2. 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 ?

    1. 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.

  3. 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

    1. 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.

  4. 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?

    1. 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.

  5. 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.

    1. 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.

      1. 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

  6. 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?

      1. 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

          1. 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?

          2. 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,,,

          3. 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.

          4. 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.

          5. 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.

  7. 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.

    1. 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.

  8. 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 🙂

      1. 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.

        1. 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.

          1. 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 :-/

          2. Vielleicht irgendwas bei fest-ip.net falsch eingestellt?
            Ich selbst nutze den Service ja nicht, habe das über einen eigenen VServer laufen

  9. 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

    1. 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.

  10. 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

    1. 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?

  11. 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?

    1. 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.

  12. 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!

    1. 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?

  13. 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!

  14. 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!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.