9.7. Private Netzwerke und NAT

IPv4 wurde mit vier Milliarden Adressen entworfen, was damals nach genug klang. Das ist es nicht. Jedes mit dem Internet verbundene Zuhause, Büro und jede Fabrik braucht ihren eigenen Adressblock für die internen Geräte, und wenn man die weltweit vorhandenen Kameras, Telefone und Geräte hinzuzählt, bleiben keine vier Milliarden übrig.

Die Lösung, auf die sich das Internet geeinigt hat, sind private Netzwerke: Die meisten Geräte in einem lokalen Netzwerk verwenden Adressen, die nicht global eindeutig sind, sondern nur innerhalb dieses Netzwerks, und ein einzelnes Gerät am Rand übersetzt zwischen den beiden Welten. Die Kamera sitzt fast immer in einem dieser privaten Netzwerke.

9.7.1. Die privaten Adressbereiche

Drei IPv4-Bereiche sind als nicht im öffentlichen Internet routbar reserviert. Jedes lokale Netzwerk darf Adressen aus diesen Bereichen verwenden, ohne sich mit jemandem abzustimmen, denn kein Router außerhalb des lokalen Netzwerks wird jemals versuchen, an sie zuzustellen:

  • 10.0.0.010.255.255.255 (16 Millionen Adressen; üblich in größeren Unternehmensnetzwerken).

  • 172.16.0.0172.31.255.255 (etwa eine Million Adressen; in freier Wildbahn weniger verbreitet).

  • 192.168.0.0192.168.255.255 (65 Tausend Adressen; der Standard für fast jeden Heimrouter).

In einem typischen Heimnetzwerk sitzen sowohl die Kamera als auch der Laptop, der mit ihr kommuniziert, auf 192.168.x.x-Adressen, weil das der Bereich ist, den der Heimrouter für das von ihm gehostete Netzwerk auswählt.

9.7.1.1. Wie die Netzmaske verwendet wird

Die Seite IP-Adressen hat die /24-Notation eingeführt. Der Grund, warum sie hier wichtig ist: Die Netzmaske ist das, was jedes Gerät verwendet, um zu entscheiden, wohin ein Paket als Nächstes muss. Jedes Mal, wenn die Kamera ein Paket sendet, wendet sie ihre eigene Netzmaske auf die Zieladresse an und betrachtet das Ergebnis:

  • Wenn das Ziel die Netzwerk-Bits mit der eigenen Adresse der Kamera teilt, befindet sich das Ziel im selben lokalen Netzwerk. Die Kamera sendet das Paket direkt an es.

  • Wenn das Ziel die Netzwerk-Bits nicht teilt, muss es sich in einem anderen Netzwerk befinden. Die Kamera sendet das Paket an ihr Standard-Gateway (den beim Verbindungsaufbau automatisch konfigurierten Router) und überlässt dem Gateway den Rest.

Dieser eine Test – „teilen wir uns Netzwerk-Bits?“ – ist der Zweck der Netzmaske. Er ist auch der Grund, warum Heimnetzwerke standardmäßig /24 verwenden: Eine Obergrenze von 254 Geräten passt bequem zu einem Haushalt und hält das Netzwerk einfach.

9.7.2. Network Address Translation

Eine Kamera auf 192.168.1.50 kann nicht einfach ein Paket an einen Server im öffentlichen Internet senden – das öffentliche Internet routet nicht zu 192.168.x.x. Der Heimrouter löst dies mit Network Address Translation, kurz NAT, und tut dies transparent.

Ein Diagramm mit drei Blöcken. Links zwei Geräte in einem privaten Netzwerk, beschriftet mit "camera 192.168.1.50" und "laptop 192.168.1.51", beide mit einem zentralen Kasten verbunden, beschriftet mit "router". Der Router hat zwei Seiten -- eine private Seite, beschriftet mit "192.168.1.1", zu den Geräten hin, und eine öffentliche Seite, beschriftet mit "203.0.113.5", zum Internet hin. Das Internet ist rechts als Wolke gezeichnet. Pfeile von den Geräten gehen durch den Router und treten so aus, als kämen sie von der öffentlichen Adresse.

NAT schreibt die Quelladresse ausgehender Pakete auf die öffentliche Adresse des Routers um und kehrt die Umschreibung bei eingehenden Antworten um, sodass private Geräte scheinbar eine einzige öffentliche Adresse gemeinsam nutzen.

Der Router hat zwei Adressen: eine private im lokalen Netzwerk (üblicherweise 192.168.1.1) und eine öffentliche, die vom Internetanbieter zugewiesen wird. Wenn die Kamera ein Paket an eine öffentliche Adresse sendet, tut der Router Folgendes:

  1. Er erfasst die private Adresse + den Port der Kamera und paart sie mit einem temporären eigenen ausgehenden Port;

  2. er schreibt die Quelladresse des Pakets auf seine eigene öffentliche Adresse um (und den Quellport auf den gewählten ausgehenden Port);

  3. er sendet das umgeschriebene Paket über die öffentliche Seite aus.

Wenn die Antwort zurückkommt, adressiert an die öffentliche Adresse + den Port des Routers, schlägt der Router die Paarung nach, schreibt das Ziel zurück auf die private Adresse + den Port der Kamera um und stellt es auf der lokalen Seite zu. Die Kamera erfährt nie, dass die Umschreibung stattgefunden hat; der Server erfährt nie die ursprüngliche Quelle.

NAT ist das, was Heimnetzwerke praktikabel macht. Es hat außerdem zwei Konsequenzen, die man kennen sollte.

9.7.3. Was NAT verändert

Ausgehend ist einfach. Eine Kamera in einem privaten Netzwerk kann frei nach außen kommunizieren. Jedes Mal, wenn sie eine TCP-Verbindung öffnet oder ein UDP-Paket an einen entfernten Server sendet, richtet NAT die Paarung automatisch ein. Die meisten Kameraanwendungen funktionieren in dieser Richtung: ein Bild aufnehmen, es an einen Server irgendwo senden, die Antwort empfangen.

Eingehend ist schwierig. Ein Gerät im öffentlichen Internet kann sich nicht direkt mit einer Kamera in einem privaten Netzwerk verbinden. Es gibt keine Paarung, die der Router nachschlagen könnte, wenn ein unaufgefordertes Paket an seiner öffentlichen Adresse ankommt, sodass das Paket nirgendwohin gehen kann. Der Router verwirft es entweder oder übergibt es einem auf dem Router selbst laufenden Dienst.

Für den eingehenden Fall sind drei Behelfslösungen üblich, grob in steigender Reihenfolge der Praktikabilität:

  • Port-Weiterleitung. Konfigurieren Sie den Router so, dass er alle eingehenden Pakete an einem gewählten öffentlichen Port an ein bestimmtes privates Gerät leitet. Erfordert Admin-Zugriff auf den Router; anfällig, wenn sich die öffentliche Adresse des Routers ändert.

  • VPN. Betreiben Sie ein virtuelles privates Netzwerk, das die Kamera in dasselbe logische Netzwerk wie denjenigen versetzt, der sie erreichen muss. Schwergewichtig; für die meisten Kamera-Einsätze außerhalb des Rahmens.

  • Ausgehend initiierte Verbindung. Die Kamera verbindet sich nach außen mit einem bekannten Server irgendwo im öffentlichen Internet und hält diese Verbindung offen; der Server nutzt die bestehende Verbindung, um Nachrichten zurückzusenden. So funktionieren Push-Benachrichtigungen und die meisten cloud-verbundenen Geräteprotokolle, und es ist das Muster, bei dem die meisten Kameraanwendungen am Ende landen.

NAT ist für den Python-Code auf der Kamera unsichtbar. Das Skript kommuniziert einfach mit dem benötigten Ziel; der Router erledigt die Übersetzung hinter den Kulissen. Aber die Richtung der Verbindung ist wichtig, und NAT ist der Grund, warum „die Kamera greift auf einen Cloud-Server zu“ eine viel einfachere Form ist als „ein Cloud-Server greift auf die Kamera zu“.