Schlagwort: ipv4

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

  • 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