Home > Technik > Kommunikation > Unitymedia Anschluss von extern erreichen

Unitymedia Anschluss von extern erreichen

Nachdem ich jeden Tag damit rechne das die Telekom meinen bisherigen DSL Anschluss nach dem Wechsel zu Unitymedia abschaltet, wurde es nun Zeit meine NAT Regeln anzupassen um meine lokalen Server nach aussen hin erreichbar zu machen. Im Vorfeld habe ich mir keinerlei Gedanken über die Machbarkeit gemacht da ich dies einfach als gegeben ansehe. Leider war dem nicht so und ich stieß auf große Probleme mit den von Unitymedia an Kabelinternet Kunden vergebenen IP v6 Adressen.

Tablet mit Film

Aufgrund der mittlerweile immer knapper werdenden Anzahl an freien IP Adressen vom Typ IPv4 ist der Kabelnetzanbieter Unitymedia dazu übergegangen Neukunden und Kunden die den Vertrag updaten nur noch mit IP v6 Adressen auszustatten. Um weiterhin die 99,9% der Webseiten welche noch auf Servern im IP v4 Bereich liegen erreichbar zu halten, setzt Unitymedia hier beim Kabelinternet auf ein Dual Stack light, Dual Stack bedeutet das der Kunde sowohl eine IP v4 wie auch eine IP v6 Adresse zugeteilt bekommt.

Dual Stack light

Das DS-light (Dual Stack light) unterscheidet sich in einem wichtigen Punkt vom vollwertigen Dual Stack, beim Dual Stack light teilen sich viele Kunde eine IP v4 Adresse welche auf Seiten von Unitymedia über eigene NAT Regeln wieder aufgeschlüsselt wird. Im Umkehrschluss bedeutet das das auf Kundenseite vorgenommene Portforwardings nicht mehr greifen und das private Netzwerk von aussen unerreichbar ist.

Soviel zur Vorgeschichte und als einfach verständlicher technischer Background. Das Problem musste also behoben werden, am besten ohne weitere Kosten und mit Bordmitteln.

Unitymedia Kabelinternet Anschluss von extern erreichen

Für meine Lösung mittels eines Reverse SSH Tunnels wird ein im Internet über das IP V4 PRotokoll erreichbarer Server benötigt, diese Anleitung bezieht sich auf einen Linux Root-Server auf welchem ich diverse Webseiten hoste.

Als erste logt man sich per SSH auf der entfernten Maschine ein und aktiviert in der SSH Konfiguration die Gatewayfunktionalität.

vi /etc/ssh/sshd_config

In der nun geöffneten Datei kommentiert man die Zeile Gateway-Porty aus in dem man die Raute (#) vor der Zeile entfernt. Die Zeile sollte nun wie folgt aussehen:

Gateway-Ports yes

nun muss der SSH Dienst neu gestartet werden, dies erfolgt auf dem entfernten Rechner über den Befehl

/etc/init.d/ssh restart

Der Server fungiert nun als Gateway. Als nächstes wechselt man auf einen lokalen Server mit Linux Betriebsystem. In meinem Fall erledigt das ein Raspberry PI, über welchen es in Zukunft noch spannende Artikel zum Thema Hausautomatisierung in diesem Blog zu lesen geben wird.

Auf dem lokalen Rechner öffnet man nun einen Reverse Tunnel, sprich man loggt sich von hier aus auf den entfernten Rechner ein und übermittelt diesem wie er welchen Port weiterleiten zu hat. Der Tunnel wird will man beispielsweise von extern auf einen Webserver auf einem lokalen Rechner zugreifen über den folgenden Befehl erzeugt.

ssh -R <Zielportnummer>:<Quell-IP-Adresse>:<Quellport>\ <Zielserver>
bsp:
ssh -R 10080:192.168.1.2:80\ operation-eigenheim.de

Somit werden alle Anfragen die an https://www.operation-eigenheim.de:10080 gestellt werden vom Server im Internet an den lokalen Rechner mit der IP Adresse 192.168.1.2 auf Port 80 weitergeleitet.

Prinzipiell seit ihr nun von extern aus erreichbar, dies lässt sich selbstverständlich mit jedem beliebigen Port machen.

Automatisieren

Um das aufbauen des Tunnels zu automatisieren, habe ich mir ein Script geschrieben welches minütlich über einen Cronjob prüft ob der Tunnel noch besteht und im Bedarfsfall einen neuen Tunnel öffnet.

Erstellt dazu mit einem Editor eurer Wahl im ~home Verzeichnis des jeweiligen Benutzers eine Datei namens create_tunnel.sh

vi create_tunnel.sh

In diese Datei schreibt ihr nun folgenden Zeilen angepasst an eure individuelle Konfiguration

!/bin/bash
createTunnel() {
  /usr/bin/ssh -N -R <Zielportnummer>:<Quell-IP-Adresse>:<Quellport> -u<Zielusername> <Zielserver>

  if [[ $? -eq 0 ]]; then
    echo Tunnel to jumpbox created successfully
  else
    echo An error occurred creating a tunnel to jumpbox. RC was $?
  fi
}

/bin/pidof ssh
if [[ $? -ne 0 ]]; then
  echo Creating new tunnel connection
  createTunnel
fi

Nun müssen dem erstellten Script noch die passenden Rechte gegeben werden um es ausführbar zu machen. Hierfür reicht der folgende Befehl auf dem lokalen Rechner

chmod 700 create_tunnel.sh

Bevor man den Cronjob einrichtet sollte man das Script einmal testen um nicht minütlich Fehler zu verursachen. Hierfür reicht es auf der Konsole den folgenden Befehl auszuführen.

./create_tunnel.sh

Nun ist das lokale Netzwerk über <Zielserver>:</Zielportnummer> aus dem Internet erreichbar

Das ganze kann nun wie folgt als Cronjob im Crontab eingetragen werden. Eventuell auftretende Fehlermeldungen sind im entsprechenden Logfile einsehbar

 */1 * * * * ~/create_tunnel.sh > tunnel.log 2>&1

 Fazit

Wenn man sich einmal mit der Materie befasst hat, ist es kein Hexenwerk bei Unitymedia trotz eine IP v6 Adresse von aussen erreichbar zu sein.

Informationen

9 comments

  1. Hi,

    ich habe genau mit der selben Problematik zu kämpfen. Komme einfach nicht meht in mein Heimnetz. Leider habe ich wie viele andere nun gar keinen Peil von Linux. Kannst du auch beschreiben wie man eine Konfiguration unter Windows vornimmt?

    • Heimwerker der Herzen

      Mir geht es min Windows so wie dir mit Linux 😉 Das letzte mal saß ich vor rund 7 Jahren vor nem Windows Rechner mit Windows XP 😉 Prinzipiell benötigst du zumindest einen Windows-Rechner/Server im Internet. Da hörts dann wohl leider schon auf.

      Tut mir Leid wenn ich dir hier nicht wirklich weiterhelfen kann.

  2. Hallo du Hast ja geschrieben, dass man einen Computer braucht der schon von außen erreichbar ist und im Netz sitzt. Aber wie soll das denn bei DS-Lite gehen es ist doch kein computer von außen erreichbar oder?

  3. Okay ich dachte es gäbe für mich auch eine kostenlose Variante.
    Trotzdem danke.

    Mfg Kevin

  4. Bei dem Startup Script kommt beim aufruf der Fehler: „./create_tunnel.sh: line 1: !/bin/bash: No such file or directory“.
    Anschließend kommt zwar „creating new tunnel connection“ und der Tunnel wird aufgebaut. Aber keine Rückmeldung das der Tunnel steht.

  5. Darf man fragen, bei welchem Hoster Du bist? Ich suche gerade nach einer günstigen Alternative für eine Domain inkl. Linux-Server.

Leave a Reply

Your email address will not be published. Required fields are marked *

*