Der IPv4-Adressengpass
Laut Vint Cerf (dem Vater von IP) wurde die IPv4-32-Bit-Adressgröße willkürlich gewählt. IP war ein staatliches / akademisches Gemeinschaftsexperiment, und das derzeitige öffentliche Internet wurde nie ins Auge gefasst. Das IP-Paradigma war, dass jedes verbundene Gerät eine eindeutige IP-Adresse hat (alle Pakete, die zwischen IP-Geräten gesendet werden, werden von der Quell-IP-Adresse zur Ziel-IP-Adresse durchgehend verbunden), und viele Protokolle, die IP verwenden, hängen von jedem Gerät ab eine eindeutige IP-Adresse haben.
Unter der Annahme, dass wir jede mögliche IPv4-Adresse * verwenden könnten, gibt es nur 4.294.967.296 mögliche IPv4-Adressen, aber (Stand September 2018) beträgt die aktuelle Weltbevölkerung 7.648.290.361. Wie Sie sehen, gibt es nicht genug mögliche IPv4-Adressen für jede Person, um auch nur eine zu haben, aber viele Leute haben einen Computer, einen Drucker, ein Mobiltelefon, ein Tablet, eine Spielekonsole, ein Smart-TV usw., die jeweils eine IP-Adresse benötigen, und Das betrifft nicht einmal die geschäftlichen Anforderungen an IP-Adressen. Wir stehen auch kurz vor dem Internet der Dinge (IoT), wo jedes Gerät eine IP-Adresse benötigt: Glühbirnen, Thermostate, Thermometer, Regenmesser und Sprinkleranlagen, Alarmsensoren, Geräte, Fahrzeuge, Garagentoröffner, Unterhaltungssysteme. Haustierhalsbänder, und wer weiß was noch alles.
* Es gibt IPv4-Adressblöcke, die nicht für die Hostadressierung verwendet werden können. Multicast verfügt beispielsweise über einen Block mit 268.435.456 Adressen, die nicht für die Hostadressierung verwendet werden können. IANA unterhält das IANA IPv4-Register für spezielle Adressen unter https://www.iana.org/assignments/iana-ipv4-special-registry/iana-ipv4-special-registry.xhtml , um alle speziellen Adressblöcke und deren Zwecke zu dokumentieren .
Der IANA (Internet Assigned Numbers Authority) gingen die IPv4-Adressblöcke aus, um die RIRs (Regional Internet Registries) zuzuweisen, die in ihren jeweiligen Regionen zugewiesen werden sollen. Den RIRs sind jetzt auch die IPv4-Adressen ausgegangen, die in jeder Region zugewiesen werden müssen. ISPs (Internetdienstanbieter) und Unternehmen, die IPv4-Adressen benötigen oder benötigen, können IPv4-Adressen nicht mehr von ihren RIRs beziehen und müssen nun versuchen, IPv4-Adressen von Unternehmen zu kaufen, die möglicherweise zusätzliche IPv4-Adressen haben (da der IPv4-Adressengpass den Preis für IPv4-Adressen vertieft) geht nach oben).
Auch wenn alle IPv4-Adressen, die für spezielle Zwecke reserviert sind und nicht für die Hostadressierung verwendet werden können, zur Verfügung gestellt würden, wären wir immer noch in der gleichen Position, da aufgrund der begrenzten Größe der IPv4-Adressen einfach nicht genügend IPv4-Adressen vorhanden sind.
Entschärfung des IPv4-Adressengpasses
IANA und den RIRs wären die IPv4-Adressen viele Jahre zuvor ausgegangen, wenn IANA und die IETF (Internet Engineering Task Force) keine Maßnahmen zur Behebung des IPv4-Adressengpasses ergriffen hätten. Eine wichtige Abschwächung war die Abwertung von IPv4-Netzwerkklassen zugunsten von CIDR (Classless Inter-Domain Routing). Bei klassischer Adressierung sind nur drei zugewiesene Netzwerkgrößen (16.777.216, 65.536 oder 256 Hostadressen insgesamt pro Netzwerk) zulässig. Dies bedeutet, dass viele Adressen verschwendet werden (ein Unternehmen, das nur 300 Hostadressen benötigt, muss ein klassisches Netzwerk mit 65.536 möglichen Hosts zugewiesen werden Adressen, die über 99% der Adressen im klassischen Netzwerk verschwenden),
Bei weitem die Minderung, die den größten Einfluss auf die Verlängerung der Lebensdauer von IPv4 hatte, ist die Verwendung von privater Adressierung und einer Variante von NAT (Network Address Translation) namens NAPT (Network Address Port Translation), was die meisten Menschen meinen, wenn sie dies tun beziehen sich auf NAT oder PAT (PAT ist ein herstellerspezifischer Begriff für NAPT). Leider ist NAPT eine hässliche Problemumgehung, die das IP-End-to-End-Paradigma durchbricht und Protokolle bricht, die von einer eindeutigen IP-Adressierung abhängen und noch hässlichere Problemumgehungen erfordern.
NAT / NAPT
Das Konzept von NAT ist recht einfach: Es ersetzt entweder die Quell- oder die Ziel-IPv4-Adresse in einem Paket-Header, wenn das Paket das NAT-Gerät durchläuft. In der Praxis ist eine Berechnung erforderlich, da der IPv4-Header über ein berechnetes Feld verfügt, um die Integrität des IPv4-Headers zu überprüfen. Jede Änderung am IPv4-Header erfordert eine Neuberechnung des Felds, und für einige Transportprotokolle in der Paketnutzlast muss auch ein eigenes Feld berechnet werden Felder, die neu berechnet werden müssen, unter Verwendung von Rechenressourcen im NAT-Gerät, die für die Paketweiterleitung verwendet werden könnten.
In Basic NAT verfügt das NAT-Gerät über einen Pool von IPv4-Adressen, die verwendet werden, um die Quell-IPv4-Adressen der Paket-Header für IPv4-Pakete zu ersetzen, die von einem internen Netzwerk an ein externes Netzwerk gesendet werden, und verwaltet eine Übersetzungstabelle, um die zu übersetzen Ziel-IPv4-Adressen des vom externen Netzwerk zurückgegebenen Datenverkehrs, um die Pakete an die richtigen Hosts im internen Netzwerk zurückzuliefern. Dies erfordert auch Ressourcen auf dem NAT-Gerät, um die Übersetzungstabelle zu erstellen und zu verwalten und Tabellensuchen durchzuführen. Diese Ressourcennutzung kann die Weiterleitung von Paketen verlangsamen, da die von NAT verwendeten Ressourcen den Ressourcen entnommen werden, die für die Paketweiterleitung verwendet werden könnten.
NAPT bringt Basic NAT weiter, indem es auch die Transportprotokolladressen (Ports) für TCP und UDP sowie die Abfrage-IDs für ICMP übersetzt. Durch das Übersetzen der Transportschichtadressen ermöglicht NAPT die Verwendung einer einzelnen externen IPv4-Adresse für viele interne Host-IPv4-Adressen. NAPT ist noch ressourcenintensiver als Basic NAT, da für jedes Transportschichtprotokoll eine separate Tabelle erforderlich ist und außerdem die Integritätsberechnungen für die Transportprotokolle durchgeführt werden müssen.
Verwendung der privaten IPv4-Adressierung, die in mehreren Netzwerken wiederverwendet werden kann (Sie haben möglicherweise bemerkt, dass die meisten Heim- / Heimnetzwerke standardmäßig dasselbe 192.168.1.0/24-Netzwerk verwenden, das sich in einem der von IANA zugewiesenen privaten IPv4-Adressbereiche befindet) Zusammen mit NAPT können Geschäfts- und Privatbenutzer jeweils eine einzige externe (öffentliche) Adresse für ein großes internes (privat adressiertes) Netzwerk verwenden. Dies spart viele, viele IPv4-Adressen (ein Vielfaches der Gesamtzahl der möglichen IPv4-Adressen) und verlängert die Lebensdauer von IPv4 weit über den Punkt hinaus, an dem es ohne NAPT zusammengebrochen wäre. NAPT hat einige schwerwiegende Nachteile:
- NAPT unterbricht das IP-End-to-End-Paradigma und funktioniert nur mit TCP, UDP und ICMP, wodurch andere Transportprotokolle verletzt werden. Es gibt auch Protokolle auf Anwendungsebene, die TCP oder UDP verwenden und von NAPT beschädigt werden, obwohl TCP und UDP normalerweise mit NAPT funktionieren. Andere Abhilfemaßnahmen, z. B. STUN / TURN, sind möglicherweise für einige Protokolle auf Anwendungsebene verfügbar, können jedoch die Kosten und die Komplexität erhöhen.
- NAPT ist sehr ressourcenintensiv und verlangsamt die Weiterleitung von Paketen im Vergleich zu dem, was ohne die Verwendung von NAT möglich ist. Einige Anbieter fügen dedizierte Hardware hinzu, um die Notwendigkeit des Diebstahls von Ressourcen aus der Paketweiterleitung zu verringern. Dies bringt jedoch zusätzliche Kosten, Größe, Komplexität und Stromverbrauch mit sich.
- Bei Verwendung von NAPT kann von außerhalb des NAPT-Netzwerks initiierter Datenverkehr nicht an das interne Netzwerk übermittelt werden, da in der Übersetzungstabelle kein Übersetzungseintrag vorhanden ist, der durch von innen initiierten Datenverkehr hinzugefügt wird. Die einzige externe (öffentliche) Adresse ist auf dem NAT-Gerät konfiguriert, und alle Pakete mit dieser Ziel-IPv4-Adresse und keinem Eintrag für die Quell-IPv4-Adresse in der Übersetzungstabelle für das Transportprotokoll gelten als für das NAPT-Gerät selbst, nicht das innere Netzwerk. Für dieses Problem gibt es eine Abhilfemaßnahme, die als Portweiterleitung bezeichnet wird.
- Die Portweiterleitung konfiguriert im Grunde genommen manuell einen permanenten Eintrag in einer Übersetzungstabelle, um von außen initiierten Datenverkehr, der für ein bestimmtes Transportprotokoll und eine bestimmte Adresse bestimmt ist, für die Übermittlung des Protokolls an einen bestimmten internen Host zuzulassen. Dies hat den Nachteil, dass nur ein interner Host das Ziel für ein bestimmtes Transportprotokoll und eine bestimmte Adresse sein darf. Befinden sich beispielsweise mehrere Webserver im internen Netzwerk, kann nur einer der Webserver an TCP-Port 80 (Standardeinstellung für Webserver) verfügbar gemacht werden.
- Aufgrund des gravierenden IPv4-Adressengpasses gehen den Internetdienstanbietern (Internet Service Providern) die öffentlichen Adressen aus, um sie ihren Kunden zuzuweisen. Die ISPs können keine öffentlichen Adressen mehr erhalten, daher haben sie einige Abhilfemaßnahmen ergriffen, die insbesondere Heim- / Privatbenutzern schaden. Die ISPs möchten ihren wertvollen öffentlichen Adresspool für ihre Geschäftskunden reservieren, die bereit sind, für das Privileg, öffentliche Adressen zu erhalten, zu zahlen. Zu diesem Zweck beginnen die ISPs nun, ihren Privat- / Privatkunden private oder gemeinsam genutzte Adressen zuzuweisen, und die ISPs verwenden NAPT auf ihren eigenen Routern, um die Verwendung mehrerer privater oder gemeinsam genutzter Adressen für eine einzelne öffentliche Adresse zu erleichtern. Dadurch entsteht eine Situation, in der sich ein Heim- / Heimnetzwerk hinter zwei NAPT-Übersetzungen befindet (ISP NAPT to Customer NAPT).
- Viele Leute machen den Fehler, NAPT und Sicherheit gleichzusetzen, weil die internen Hosts nicht direkt von außen angesprochen werden können. Dies ist ein falsches Sicherheitsgefühl. Da eine Firewall, die ein Netzwerk mit dem öffentlichen Internet verbindet, ein bequemer Ort ist, um NAPT auszuführen, ist die Situation einfach verwirrend. Es entsteht die gefährliche Vorstellung, dass NAPT selbst die Firewall ist und eine echte Firewall nicht erforderlich ist. Die Netzwerksicherheit wird von Firewalls bereitgestellt, die standardmäßig den gesamten von außen initiierten Datenverkehr blockieren und nur den Datenverkehr zulassen, für den sie explizit konfiguriert sind. Möglicherweise wird eine eingehende Überprüfung des Paketinhalts durchgeführt, um gefährliche Paketnutzdaten zu verwerfen. Was einige Leute nicht bemerken, ist, dass das NAPT-Gerät selbst ohne eine Firewall, entweder in Hardware oder Software, an der Außenseite oder in das NAPT-Gerät eingebaut, anfällig ist, um das NAPT-Gerät zu schützen. Wenn das NAPT-Gerät kompromittiert ist, hat es und damit ein Angreifer vollen Zugriff auf das privat adressierte Netzwerk. Von außen initiierte Pakete, die nicht mit einer Übersetzungstabelle übereinstimmen, sind für das NAPT-Gerät selbst bestimmt, da dieses tatsächlich mit der externen Adresse adressiert ist, sodass das NAPT-Gerät direkt angegriffen werden kann.
Die Lösung für den IPv4-Adressengpass
Die IETF prognostizierte den IPv4-Adressengpass und erstellte die Lösung: IPv6, das 128-Bit-Adressen verwendet, dh es gibt 340.282.366.920.938.463.463.374.607.431.768.211.456 mögliche IPv6-Adressen. Die nahezu unvorstellbare Anzahl von IPv6-Adressen macht NAPT überflüssig (IPv6 hat keine NAT-Standards, genau wie IPv4 und der experimentelle IPv6-NAT-RFC verbietet NAPT) und stellt das ursprüngliche IP-End-to-End-Paradigma wieder her. Die Behebung des IPv4-Adressengpasses soll die Lebensdauer von IPv4 verlängern, bis IPv6 allgegenwärtig ist. An diesem Punkt sollte IPv4 verblassen.
Menschen können Zahlen der für IPv6 verwendeten Größe nicht wirklich nachvollziehen. Beispielsweise verwendet ein Standard-IPv6-Netzwerk 64 Bit für jeden der Netzwerk- und Host-Teile der Netzwerkadresse. Das sind 18.446.744.073.709.551.616 mögliche IPv6-Standard / 64-Netzwerke und die gleiche (große) Anzahl von Hostadressen für jedes dieser Netzwerke. Um zu versuchen, eine so große Zahl zu verstehen, ziehen Sie Tools in Betracht, die alle möglichen Adressen in einem Netzwerk durchsuchen. Wenn ein solches Tool 1.000.000 Adressen pro Sekunde scannen könnte (unwahrscheinlich), würde es über 584.542 Jahre dauern, um den Scan in einem einzelnen / 64-IPv6-Netzwerk durchzuführen. Derzeit wird nur 1/8 des gesamten IPv6-Adressraums für globale IPv6-Adressen zugewiesen, was 2.305.843.009.213.693.952 Standard-IPv6 / 64-Netzwerken entspricht. Wenn die Weltbevölkerung im Jahr 2100 21 Milliarden beträgt (eine etwas realistische Zahl), Jede dieser 21 Milliarden Personen könnte 109.802.048 Standard-IPv6 / 64-Netzwerke haben, wobei jedes Netzwerk 18.446.744.073.709.551.616 mögliche Hostadressen hat. Leider ist der (jahrzehntelange) Mangel an IPv4-Adressen so tief verwurzelt, dass viele Menschen ihn einfach nicht loslassen können, und sie versuchen, ihn auf IPv6 anzuwenden, was sinnlos und tatsächlich schädlich ist. IPv6 ist eigentlich so konzipiert, dass Adressen verschwendet werden.
Die IETF hatte auch den Vorteil, im Nachhinein IP zu verbessern (in IPv6), indem nicht ordnungsgemäß funktionierende IPv4-Funktionen entfernt, einige IPv4-Funktionen verbessert und Funktionen hinzugefügt wurden, über die IPv4 nicht verfügte, wodurch eine neue und verbesserte IP entstand . Da IPv6 ein vollständig von IPv4 getrenntes Protokoll ist, kann es parallel zu IPv4 ausgeführt werden, wenn der Übergang von IPv4 zu IPv6 erfolgt. Hosts und Netzwerkgeräte können IPv4 und IPv6 gleichzeitig auf derselben Schnittstelle ausführen (dual gestapelt) und sind für die anderen nicht sichtbar. Es gibt keine Interferenz zwischen den beiden Protokollen.
Das Problem mit IPv6 ist, dass es sich tatsächlich um ein völlig anderes Protokoll handelt, das mit dem allgegenwärtigen IPv4 nicht kompatibel ist, und dass die Abhilfemaßnahmen für den IPv4-Adressengpass von vielen als „gut genug“ eingestuft werden. Das Ergebnis ist, dass es über 20 Jahre alt ist Jahre, seit IPv6 standardisiert wurde, und wir sind gerade dabei, IPv6 richtig einzusetzen (Google berichtet, dass die weltweite IPv6-Akzeptanz ab September 2018 bei über 20% und die IPv6-Akzeptanz in den USA bei über 35% liegt). Der Grund, warum wir endlich auf IPv6 umsteigen, ist, dass einfach keine ungenutzten IPv4-Adressen mehr zugewiesen werden müssen.
Es gibt andere Hindernisse, die Teil der IPv4-Kultur sind und denen es einfach schwer fällt, vorbei zu schauen. Viele Menschen haben auch Angst vor IPv6, sind erwachsen geworden und fühlen sich mit IPv4, Warzen und allem wohl. Zum Beispiel scheinen die IPv6-Adressen im Vergleich zu IPv4-Adressen groß und hässlich zu sein, und das scheint viele Leute abzuschrecken. Die Realität ist, dass IPv6 oft einfacher und flexibler ist als IPv4, insbesondere bei der Adressierung. Die in IPv4 gewonnenen Erkenntnisse wurden von Anfang an auf IPv6 angewendet.