Schlagwort: ds-lite

  • 03 Raspberry Pi – Mit DS-lite aus dem Internet erreichbar (Teil 2 – IPv4)

    03 Raspberry Pi – Mit DS-lite aus dem Internet erreichbar (Teil 2 – IPv4)

    In diesem zweiten Teil, zeige ich dir wie du deinen Raspberry Pi auch über IPv4 trotz DS-Lite von außen erreichen kannst. Der Raspberry Pi sollte dafür schon über IPv6 erreichbar sein, siehe Teil1.

    Um dieses Ziel zu erreichen zeige ich euch zwei verschiedene Möglichkeiten: einen Portmapper und einen http-Proxy.

    Portmapper

    Ein Portmapper ist ein Server, der Anfragen entgegennimmt und diese weiterleiten kann, auch wenn der Service nur über IPv6 erreichbar ist, wie z.B. mein Raspberry Pi, dabei beziehen sich die Anfragen immer auf einen spezifizierten Port, daher der Name. Eine Anfrage über einen Portmapper würde z.B. so aussehen:
    portmapper.com:10000 welche die Anfrage weiterleitet auf example.com:80
    Solch einen Dienst bietet feste-ip.net an. Ein universeller Portmapper für 12 Ports an einer Adresse kostet bei feste-ip.net 5€ pro Jahr (die ersten 50 Tage sind kostenlos). Nachdem du dich bei feste-ip.net angemeldet hast, kannst du über die Schaltfläche Unviverseller Portmapper einen Portmapper erstellen:

    Der Alias, den du dir aussuchen kannst, bildet zusammen mit der domain deine Adresse. Also: beispiel.feste-ip.net. Im Feld DNS oder IPv6 Ziel gibst du die Myfritzadresse deines Raspberry Pis an. In den Felder unter Ports gibst du alle Ports an, zu denen du einen Portmapper haben möchtest. Also z.B. 443 für https, 80 für http, 22 für ssh. Wenn du dies nun bestätigst bekommst du folgende Übersicht:

    Hier siehst du nun die Adressen, die für deine Zielports erstellt wurden. In diesem Beispiel wären folgende Zugriffe (über IPv4) nun möglich:

    • ssh pi@beispiel.feste-ip.net -p 36164

    Und wenn auf deinem Raspberry Pi ein Webserver läuft auch:

    Wenn der Webserver auch für SSL konfiguriert ist:

    Der Nachteil in dieser Variante ist, dass in der Adresse nun immer die custom Ports beibehalten werden müssen, was, je nach dem welche Anwendung man auf dem Webserver laufen hat, zu Problem führen kann. Deswegen kommen wir nun zu der zweiten Variante.

    HTTP- / HTTPS-Proxy

    Ein HTTP-Proxy nimmt, ähnlich wie ein Portmapper, Anfragen entgegen und leitet sie an einen anderen Server weiter. Doch hier werden die Ports nicht selber bestimmt, sondern es werden nur Ports genutzt, die auch typischerweise für Webanfragen genutzt werden (80, 443). Cloudflare bietet solch einen Dienst kostenlos an. Doch um diesen Dienst nutzen zu können brauchst du zuerst eine domain, mit der du in Zukunft auf den HTTP-Proxy zugreifst. Dafür bietet sich eine kostenlose Domain von Freenom an. Folgende Schritte sind nun notwendig:

    1. auf Freenom.com eine Domain registrieren: nehmen wir an example.ga
    2. auf Cloudflare.com einen Account anlegen und unter Add Site example.ga eintragen.
    3. example.ga wird nun gescannt, abwarten
    4. Clouflare zeigt dir nun die gecannten Nameserver an und in welche diese geändert werden sollen. Nehmen wir an: bella.ns.cloudflare.com und earl.ns.cloudflare.com
    5. auf Freenom unter Services–>My Domains, dann bei example.ga auf Manage Domain
      weiter bei management tools–>nameservers–>use custom nameservers
      Hier nun die von Cloudflare angeforderten Nameserver eintragen und mit change nameserver bestätigen. Es kann nun einige Stunden dauern, bis die Server sich aktualisiert haben. Wenn du dich bei Cloudflare einloggst, wird dir Cloudflare mitteilen ob die Umstellung schon erfolgreich war.
    6. Sobald die Umstellung erfolgreich war kannst du nun bei example.ga unter DNS weitere Einstellungen vornehmen. Dort legst du zwei cname Einträge an, einen für www.example.ga und einen weiteren für example.ga. Unter Value trägst du in beiden Fällen deine Myfritzadresse des Raspberry Pis raspberrypi.abcdefghijklmnopq.myfritz.net ein. Die beiden orangenen Wolken sollten dabei aktiviert sein.
    7. Zusatz: Bei Clouflare findest du außerdem noch die Option Crypto für deine Website. Hier kannst du verschiedene Möglichkeiten einstellen:
      • Off: nicht zu empfehlen
      • Flexible: nur wenn dein Webserver auf dem Raspberry Pi noch kein SSL eingerichtet hat
      • Full: wenn du zwar SSL eingerichtet hast, jedoch mit selbst signierten Zertifikaten
      • Full strict: wenn du SSL korrekt eingerichtet hast mit Zertifikaten, die von einer CA herausgegeben sind (z.B. letsencrypt)
        (Siehe auch hier)
        Zur Einrichtung von SSL und nginx folgen noch Artikel.

    Glückwunsch! Dein Webserver auf dem Raspberry Pi ist nun unter example.ga erreichbar.

    Fazit

    Beide Varianten haben Vor- und Nachteile, die hier noch einmal aufliste.

    Port-mapper

    Vorteile:

    • Für beliebige Ports nutzbar –> beliebige Services (z.B. ssh)

      Nachteile:

    • nicht kostenlos
    • Adresse immer mit custom port
    • https lässt sich nicht korrekt konfigurieren, da du kein Zertifikat auf die Portmapper Adresse austellen kannst

    HTTP-Proxy

    Vorteile:

    • https funktioniert vollständig
    • beliebige, schicke Adressen
    • kostenlos

      Nachteile:

    • nur für Webdienste geeigenet

    Ich nutze um auf den Webserver auf dem Raspberry Pi zuzugreifen immer den HTTP-Proxy, example.ga. Den Port-mapper nutze ich aber noch zusätzlich um meinen Raspberry Pi von überall auch per ssh erreichen zu können. Ich habe geplant einen VPN Dienst zum Raspberry Pi aufzubauen, das wäre dann auch nur über den Port-mapper möglich.

  • 02 Raspberry Pi – Mit DS-lite aus dem Internet erreichbar (Teil 1 – IPv6)

    02 Raspberry Pi – Mit DS-lite aus dem Internet erreichbar (Teil 1 – IPv6)

    Du würdest deinen Raspberry Pi gerne als Webserver benutzen doch hast nur DS-Lite Zugang zum Internet? In diesem Artikel zeige ich dir, wie du deinen Raspberry Pi oder auch andere Geräte von außen sowohl über IPv6 als auch IPv4 erreichbar machst. Hier in Teil 1 geht es um den IPv6 Teil, wenn du schon sicher bist, dass du du über IPv6 erreichbar bist, dann geht es hier direkt zu Teil 2

    Voraussetzungen / Vorwissen

    • An einigen Stellen sind Einstellungen im Router entscheidend, hier handelt es sich um eine Fritzbox
    • Dein Raspberry Pi sollte über das lokale Netz bereits erreichbar sein, siehe Erste Schritte
    • Zum Thema, was DS-lite bedeutet siehe hier: IPv4, IPv6 & DS-lite

    Router Einstellungen

    IPv6

    Zuerst überprüfen wir einige Einstellungen am Router. Wenn du dich auf deiner Fritzbox in deinem Browser über die Adresse fritz.box anmeldest, bekommst du eine Übersichtsseite angezeigt. Hier sind bereits einige Informationen interessant.

    Hier weißt die Fritzbox auf die DS-Lite Verbindung hin: "FRITZ!Box verwendet einen DS-Lite Tunnel" Die zugehörige Einstellung befindet sich unter Internet–>Zugangsdaten–>IPv6. Einstellungen, die zu einer DS-Lite Verbindung gehören sehen folgendermaßen aus:

    Bitte denke daran, dass dies keine Einstellungen sind, die du selber aussuchen kannst, sondern sie werden dir von deinem Internet Provider vorgegeben. Falls du hier andere Einstellungen verwendest, ist dieses Anleitung möglicherweise nicht vollständig für dich geeignet.

    Eine weitere Einstellung, die ich lange nicht gefunden habe, da sie etwas versteckt ist, findest du unter Netzwerk–>Netzwerkeinstellungen. Hier musst du unter dem Punkt IP-Adressen auf die Schaltfläche IPv6-Adressen klicken.

    Es offenbaren sich dir nun unter anderem folgende Optionen:

    Hier ist es wichtig die dritte Option der DHCPv6 Optionen auszuwählen. Dies sorgt dafür, dass eine IPv6 Adresse aus dem Adressbereich, der dir von deinem ISP zugewiesen wird, an ein Gerät in deinem Netzwerk weiterverteilt wird. Denn die Freigabe von Geräten geschieht bei IPv6 nicht mehr wie bei IPv4 über Portfreigaben, sondern es werden Adressen aus dem Adressbereich, den du von deinem ISP zugewiesen bekommst, an Geräte, die du freigibst, weiter verteilt. Dies führt dazu, dass diese Geräte, dann mit einer eigenen IPv6 Adresse direkt ansprechbar sind.

    Myfritz

    AVM bietet dir über Myfritz einen eigenen DynDNS-Dienst an. Dazu musst du dich zuerst bei Myfritz registrieren. Dies kannst du tun indem du innerhalb deines Fritzbox Interfaces rechts oben auf die Schaltfläche MyFRITZ! klickst. Nachdem du dich erfolgreich bei Myfritz registriert hast, kannst du deine Fritzbox nun unter Internet–>MyFRITZ!-Konto mit deinem Myfritz Konto verbinden.

    Wenn die Fritzbox erfolgreich mit deinem Konto verbunden ist, findest du auf der selben Seite etwas weiter unten nun deine persönliche Myfritz Adresse. Diese hat das Format abcdefghijklmnopqr.myfritz.net. Außerdem kannst du hier, durch setzen eines Häckchens, deine Fritzbox über diese Adresse erreichbar machen. Beachte dabei auch den Hinweis, dass du hierfür noch einen Benutzer anlegen musst, dem du dies gestattest.

    Eine weitere nützliche Option ist das Anschalten von letsencrypt Zertifikaten. Damit besorgt sich deine Fritzbox automatisch ein Zertifikat, mit welchem keine Sicherheitswarnung mehr angezeigt wird, wenn du die Fritzbox über https besuchst. (Nur in sehr neuen FritzOS Versionen verfügbar, evtl nur in Labor-Versionen)

    Nachdem du diese Schritte alle vollended hast, probiere doch direkt mal aus ob deine Fritzbox nun mit deiner Myfritz-Adresse erreichbar ist. (Dies ist nur über IPv6 möglich)

    Geräte freigeben

    Der nächste Schritt wird sein, die Fritzbox nun so zu konfigurieren, dass sie Anfragen an den Raspberry Pi durchlässt. Dazu findest du unter Internet–>Freigaben–>Portfreigaben die Schaltfläche Gerät für Freigaben hinzufügen.

    Hier kannst du unter deinen Geräten den Punkt raspberrypi suchen. Wenn die diesen auswählst, werden automatisch alle korrekten Adressdaten übernommen. Achte darauf, dass die IPv6-Interface-ID, die hier angegeben ist auch wirklich mit der zugewiesenen Adresse deines Raspberry Pis übereinstimmt. Du kannst das überprüfen indem du dich per ssh auf deinem Raspberry Pi einloggst und dort ip a eingibst, welches die Kurzform für ip address ist. Die Zeile in der Ausgabe, die nun entscheidend ist, sieht in etwa so aus:

    inet6 xxxx:xxxx:xxxx:xxxx:55cf:77d:9d4c:80fc/128 scope global noprefixroute dynamic

    inet6 sagt dir, dass es sich um eine IPv6 Adresse handelt. Die ersten vier Adressblöcke werden dir von deinem Provider zugewiesen. Die letzten vier Blöcke bilden die IPv6 Interface ID deines Raspberry Pis. Der Präfix /128 gibt die Aufteilung der Adresse in Netzadresse und Netzteilnehmer an, so wie die Subnetzmaske bei IPv4. (siehe auch Aufteilung des IPv6 Adressraums)

    Als weiteren Schritt solltest du die folgenden Optionen aktivieren:

    Um eine Myfritz Adresse für den Raspberry Pi zu generieren klickst du dann auf die Schaltfläche Neue Freigabe. Hier wählst du die Option MyFRITZ!-Freigabe. Das ausgewählte Schema macht für unseren IPv6 Fall hier keinen Unterschied, wähle einfach http aus. Wenn du die Einstellungen alle vorgenommen hast, speicherst du diese. Wenn du nun zurück kehrst zu der Myfritz Freigabe des Raspberry Pis wird dir hier die Myfritz Adresse des Raspberry Pis angezeigt. Diese hat das Format raspberrypi.abcdefghijklmnopqr.myfritz.net.

    Erreichbarkeit testen

    Dies sind nun auch schon alle Einstellungen, damit der Raspberry Pi per IPv6 aus dem Internet erreichbar ist. Ein nützliches Tool, welches ich dir an dieser Stelle vorstellen möchte, da es mir während der Konfiguration eine große Hilfe war, ist ein Online IPv6 Ping Tool.

    Auf dieser Seite kannst du die Myfritz Adresse deines Raspberry Pis angeben. Wenn alles geklappt hat, sollte dir hier eine positive Rückmeldung angezeit werden. Außerdem sollte hier die IPv6 Interface ID deines Raspberry Pis in den letzten 4 Blöcken der angepingten IPv6 Adresse wieder sichtbar werden. Der Ping auf deinen Raspberry Pi sollte auf jeden Fall funktionieren, bevor du deinen Kopf an anderen Stellen zerbrichst. Du kannst dich auf deinen Raspberry Pi bei vorhandener IPv6 Verbindung jetzt übrigens auch einloggen über:
    ssh pi@raspberrypi.abcdefghijklmnopqr.myfritz.net

    Auch ein Websever auf deinem Raspberry Pi sollte jetzt über IPv6 erreichbar sein. Falls noch kein Webserver auf deinem Raspberry Pi läuft, kannst du dies schnell testen indem du nginx installierst mit:
    sudo apt install nginx
    Wenn du nun raspberrypi.abcdefghijklmnopqr.myfritz.net in deinen Browser eintippst, sollte dir die Default Seite von nginx angezeigt werden. (Zur weiteren Konfiguration von nginx folgen noch Artikel)

    Hier geht es zu Teil 2.

  • IPv4, IPv6 & DS-lite

    IPv4, IPv6 & DS-lite

    Es folgt ein kleiner Artikel in dem ich auf Adressierung innerhalb des Internet Protokolls eingehe und damit DS-lite mit verbundenen Problemen erkläre.

    IP

    Ein wesentlicher Bestandteil der Datenübertragung im Internet bildet IP – das Internet Protokoll. IP ist dabei vor allem für das Routing verantwortlich. Kurz gesagt bedeutet Routing, die Entscheidung zu fällen auf welchem Weg ein Datenpaket von Computer zu Computer schließlich zu seinem Ziel gelangt. Um das zu realisieren wird unter anderem den Netzwerkteilnehmern jeweils eine eindeutige Adresse zugewiesen. Um diese Adressen soll es in diesem Artikel gehen.

    IPv4

    In den Anfängen des Internets wurde von IP die Version IPv4 entwickelt. Mit dieser Version erreichte das Internet große Verbreitung und sie wird auch heute noch zu einem großen Teil genutzt. Eine IPv4 Adresse besteht aus 4 8-bit Blöcken, die mit Punkten von einander getrennt werden. Ein Beispiel wäre 87.142.36.2. Jeder Block kann, aufgrund der 8-bit Größe, einen Wert zwischen 0 und 255 annehmen. Die Gesamtgröße des Adressraums ergibt 32-bit. Daraus folgt, dass 2^32=4.294.967.296 verschiedene Adressen in IPv4 existieren. Das mag viel erscheinen, doch wenn man dies der Anzahl an Menschen gegenüber stellt (über 7.000.000.000), dann wird klar, dass der Adressraum von IPv4 in den heutigen Dimensionen des Internets an seine Grenzen stößt. Das gilt besonders, falls auch jede Lampe mal ans Internet angeschlossen werden sollte (siehe auch IoT). Zudem sind bei weitem nicht alle dieser 2^32 Adressen als globale individuelle Adressen verwendbar, da in dem IPv4 Standard auch einige Adressen mit Spezialanwendung vorgesehen sind.

    Im folgenden Graph ist die Anzahl der verfügbaren IPv4 Adressen über die Zeit aufgetragen.

    Von Mro – Eigenes Werk, CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=10593349

    IPv6

    Aufgrund der Begrenzung von IPv4 wurde eine neue Version von IP entwickelt: IPv6. In dieser Version besteht eine Adresse aus 8 16-bit Blöcken, die durch Doppelpunkte getrennt werden, z.B. also: 2001:0db8:85a3:08d3:1319:8a2e:0370:7344. Die Adresse ist damit 128-bit lang. Damit sind 2^128 verschiedene Adressen möglich, das sind 2^96 mal mehr Adressen im Vergleich zu IPv4. Eine unvorstellbar große Menge. Trotz dessen, das IPv6 bereits 1998 eingeführt wurde, ist die Verbreitung von IPv6 noch nicht besonders groß, sie liegt bei etwa 23% (vgl. hier, Stand 2.1.18) Und genau darin liegt auch das Problem bei dem nun in Folge beschriebenen DS-Lite.

    DS-Lite

    Dein Internet Anbieter ist im Endeffekt die Stelle, die bestimmt mit welcher IP Version du im Internet unterwegs bist. Dabei hat dein ISP verschiedene Möglichkeiten, dir IP Adressen zu zuweisen:

    • nur eine IPv4 Adresse: Als Nutzer wirst du hierbei keine Einschränkungen erfahren, da es wahrscheinlich noch(!) keine Dienste gibt, die nur über IPv6 erreichbar sind. Das Problem: IPv4 Adressen gehen zur Neige und sind möglicherweise nicht mehr günstig für deinen ISP zu reservieren.
    • eine IPv6 und eine IPv4 Adresse (dual stack): Dir steht hier als Nutzer die volle Funktionalität beider Internetprotokolle zur Verfügung. Es gilt jedoch das selbe Problem für die IPv4 Adressen.
    • eine IPv6 Adresse + eine getunnelte IPv4 Verbindung (dual stack-lite): Einige ISP in Deutschland gehen mittlerweile zu dieser Methode über. Dein ISP umgeht damit das Problem, dass sie für jeden Kunden eine IPv4 Adresse benötigen. Stattdessen werden Anfragen die du an einen Server stellst, der nur IPv4 verarbeiten kann, über deinen ISP getunnelt. Das Problem hierbei: du bist für das IPv4 Protokoll nicht mehr öffentlich verfügbar.

    Das schöne an der Internet-Infrastruktur ist, dass auf der niedrigsten Ebene keine Hierarchie wie z.B. eine Client-Server Hierarchie etabliert wird. Es ist theoretisch damit jedem möglich mit einer IP-Adresse einen Computer im Internet für alle öffentlich verfügbar zu machen. Diese Möglichkeit wird jedoch in DS-lite begrenzt. Es ist dir zwar noch möglich IPv4 Adressen zu erreichen, da sie für dich getunnelt werden, aber du besitzt keine IPv4 Adresse mehr, mit der du für Anfragen aus dem Internet erreichbar bist. Falls du jedoch einen kleinen Server von deinem Heim-Internetanschluss betreiben willst, ist es eigentlich genau das was du brauchst. Denn von vielen Internetanschlüssen aus, insbesondere aus dem mobilen Internet deines Handys, wirst du noch keine IPv6 Verbindung zu deinem Server herstellen können.

    Genau vor diesem Problem stand ich, da ich meinen Raspberry Pi aus dem Internet erreichbar machen wollte. Wie ich erreicht habe, dass mein Raspberry Pi aus dem Internet erreichbar ist und das sogar für das IPv4 Protokoll, werde ich bald in einem Artikel beschreiben.

    Nützliche Links