Carrier Grade NAT (CGNAT) und 100.64.0.0/10 Subnetz

Diese Seite behandelt den Sonderfall, wenn Provider oder VPN-Dienstleister nicht genug öffentlichen IPv4-Adressen haben um jedem Kunden eine Adresse zuzuweisen und daher mit "Carrier Grade NAT" arbeiten müssen. Dies ist z.B. bei Kunden der "Deutsche Glasfaser" oder dem ein oder anderen Kabeldienstleister der Fall.

Private und öffentlichen IP-Adressen

IP-Adressen sind in Datennetzwerken, was eine Rufnummer im Telefonnetz ist. Sie ist eigentlich eindeutig und einmalig und wird für die Verbindung von zwei Teilnehmern genutzt. Aufgrund des Aufbaus von IPv4-Adressen aus 4 Bytes  (xxx.xxx.xxx.xxx), die theoretisch den Wert zwischen 0 und 255 einnehmen können. gibt es nun mal maximal 256^4 = 4.294.967.296 IP-Adressen. Es sind natürlich weniger real nutzbare Adressen, da Netzwerke, Broadcast aber auch Router und Bereiche für Multicast (Class-D) oder die allseits bekannten "privaten Adressen"  (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, 169.254.0.0/16) noch Adressen blockieren.

Auf der anderen Seite gibt es Firmen, die in der Frühzeit des Internets aktiv waren und sehr viele offizielle Adressen haben oder hatten, z.B. Apple 17.0.0.0./8,  DEC (später Compaq und nun HP)  16.0.0.0/8

Auch eine Deutsche Telekom hat einen recht umfangreichen Adressbestand, so dass die meisten T-DSL-Kunden sogar eine offizielle IPv4-Adresse für ihren DSL-Router bekommen.

Die Telekom hat nicht nur ein Teilnetz, sondern gleich mehrere Supernetze. z.B. ist 2.160.0.0/12, 91.0.0.0/10, 87,128.0.0/10 und einige mehr schon eine stattliche Anzahl. Laut BGP werden 34.035.200 IPv4-Adressen publiziert.

Das ist bei vielen später in den Markt eingetretenen Provider nicht mehr so einfach und bei mobilen Daten ist es schon lange üblich, dass ihr Smartphone auch bei der Telekom eine IP-Adresse aus 10.0.0.0/8 bekommt und hinter einem NAT-Device versteckt wird. Aber was machen nun Provider, die keine öffentliche IPv4-Adresse für ihre Kunden vergeben können?. Sie könnten eine Adresse aus dem Bereich der "Private IP-Adressen" vergeben. Das birgt aber das Risiko, dass ein Kunde vielleicht überlappende Subnetze in seinem internen Netzwerk nutzt. Genau dafür sind ja die privaten Adressen vorgesehen und die Adressen aus 169.254.0.0/16 sind auch anderweitig im Einsatz.

Subnetz 100.64.0.0/10

Aus dem Grund hat sich "das Internet" wieder eine Krücke einfallen lassen, da IPv6 zwar immer mehr Verkehr übernimmt aber es immer noch genug IPv4-Only-Dienste gibt, die ja auch erreicht werden müssen. Es wurde ein weiteres Subnetz definiert, welches nie "offiziell" verwendet wird aber auch nicht als "Privat" gekennzeichnet ist. Es handelt sich um folgendes Netzwerk:

Adressbereich CIDR-Notation Anzahl Adressen

100.64.0.0 bis 100.127.255.255

100.64.0.0/10

2²² = 4.194.304

Diese Adressen können von einem Carrier im internen Netzwerk für die Übertragung von IP-Paketen genutzt werden können. Sie können sicher sein, dass diese Adressen weder im Internet noch in einem Kundennetzwerk verwendet werden. Es sollte zumindest so sein. Allerdings ist nicht ausgeschlossen, dass mehrere Provider oder Carrier parallel diese Subnetze nutzen, Sie können solche Netzwerke als nicht untereinander routen und nur sehr eingeschränkt als Interconnect-Netzwerke verwenden.

Diese Netzwerke sind "nur" als Transfer-Netzwerk zwischen dem Kunden Router gedacht und sie  sind nicht "routbar". Der Provider muss also auch eine Adress-Umsetzung machen.

Carrier Grade NAT

In dem Bild gibt es zwei Orte, in denen eine Umsetzung passiert. Die erste Umsetzung passiert noch beim Kunden auf dessen Internet-Router, der die internen privaten Adressen auf die vom Provider extern zugewiesenen Adressen umsetzt. Bei einer Fritz!Box werden sie weiterhin intern mit der 192.168.178.1/24 arbeiten und für die Fritz!Box ist die extern vom Provider zugewiesene Adresse aus dem Bereich 100.64/10 quasi die "öffentlichen Adresse". Sie kann aber natürlich nicht aus dem Internet erreicht werden.

Mit der 100.64.0.0/10-Adresse kommen Sie aber nichts in Internet, denn das Internet "kennt "für diese Adressen keinen Leitweg. Hier kommt dann die zweite Umsetzung zum Einsatz. Der Carrier/Provider muss an der externen Grenze zum Internet die Source-IP-Adresse erneut umsetzen. Hier kann der Provider dann mehrere Kunden hinter einer öffentlichen IP-Adresse verstecken.

Ein normaler Client benutzt vielleicht bis zu 100 TCP-Connections und das ist schon viel. Sie können dies einfach mal prüfen.

PS C:\> (Get-NetTCPConnection -State Established).count
51

Dann kommen vielleicht noch ein paar UDP-Verbindungen dazu. Dann kann ein Haushalt vielleicht noch 5 aktive Geräte haben und kommt auf 500 Ports. Da ist es ja schon Verschwendung, dem Kunden dafür eine öffentlichen IPv4-Adresse zu vergeben, die bis zu 65535 Ports anbietet. Ein Provider kann 100+ Haushalte hinter einer IP-Adresse verbergen. Gehen Sie also davon aus, dass dieser große NAT-Router eine ausreichende Menge von öffentlichen IP-Adressen hat, hinter denen sich dann alle Kunden verstecken. Wenn dieses System nicht schlecht konfiguriert ist, bekommen Sie als Kunde auch nicht unendlich Ports sondern nur eine bestimmte Anzahl, um die Nachbarn nicht zu stören.

Eingehende Verbindungen/DynDNS

Der Anschluss über CGNAT-Adressen aus dem Bereich 100.64.0.0/10 bedeutet aber auch, dass ihr Router eben keine öffentlich routbare Adresse mehr hat. Als sie noch eine öffentlichen lokale IP-Adresse hatten, dann brauchte es nur ein paar Klicks zur Portfreigebe auf dem Router um einen selbst gehosteten Service aus dem Internet erreichbar zu machen und einen DynDNS-Provider, der einen Namen auf die aktuell ihnen zugewiesene öffentliche IPv4-Adresse lenkt. Das geht mit einer 10.64.0.0/10-Adresse natürlich nicht mehr. Entweder liefert ihr Router die 100.16.0.0-Adresse aus oder die DNS-Provider bekommt die vom Provider genutzte öffentliche IP-Adressen, bei der es aber keinen Rückweg gibt. Bei MyFritz ist es die Public-IP des CGNAT-Systems.

C:\>nslookup ddnstest.carius.de
Server:  fritz.box
Address:  fd00::2e91:abff:fe49:d7c9

Nicht autorisierende Antwort:
Name:    xxxxxxxxxxxxxxx.myfritz.net
Addresses:  2003:ea:xxxx:xxxx:a96:d7ff:fe49:d266
          91.48.117.82
Aliases:  ddnstest.carius.de

Über die IPv4-Adresse bin ich sicher nicht erreichbar. Leider führt dies auch dazu, dass Sie z.B. kein VPN zu ihrem Router aufbauen können und diverse andere Programme nur über Umwege funktionieren, insbesondere P2P-Protokolle oder VoIP-Systeme sind hier Einschränkungen unterworfen.

Wenn sie einen eigenen Service veröffentlichen wollen, dann bleibt ihnen mit IPv4 hier nur die Option die Verbindung von innen zu einem Relay-Service in der Cloud aufzubauen, der dann die Anfragen durch den etablierten Tunnel auf ihren Service weitergibt. Wer ein AzureAD-Subscription hat oder Office 365 mit AzureAD P1 kann den Microsoft Azure AD Application Proxy dazu nutzen. Es gibt aber auch VPN-Provider und andere Dienste, die ihnen eine statische öffentliche IPv4-Adresse gegen Gebühr bereitstellen und diese z.B. auf eine IPv6-Adresse weiter geben.

Wenn Sie das Bild genau betrachtet haben, dann sollte ihnen ein Weg aufgefallen sein, der auch im Internet möglich ist. Als Kunde eines solchen Providers kann mein Router zwar nicht aus dem Internet erreicht werden aber sehr wohl doch von den Nachbarn auf dem gleichen Provider. Das CGNAT-Netzwerk ist also auf keinen Fall ein "vertrauenswürdiges" Netzwerk. Wenn ich mit NMAP z.B. die Nachbarsubnetze abscannen, dann finde ich sehr viele Router, die z.B. auf dem Port 5060 (SIP) erreichbar sind. Sind sie also vorsichtig, wenn Sie etwas "veröffentlichen".

Real Life

Durch meinen Wechsel zu einem Glasfaseranschluss (Siehe FTTH mit IPv6 (DG)) kann ich die Funktion des CGNAT direkt mit einem TraceRoute nachvollziehen:

Test-NetConnection 8.8.8.8 -TraceRoute

ComputerName           : 8.8.8.8
RemoteAddress          : 8.8.8.8
InterfaceAlias         : vEthernet (Extern)
SourceAddress          : 192.168.178.91
PingSucceeded          : True
PingReplyDetails (RTT) : 14 ms
TraceRoute             : 192.168.178.1
                         100.124.1.8
                         100.127.1.132
                         100.127.1.131
                         185.22.46.145
                         185.22.44.29
                         108.170.241.193
                         108.170.236.135
                         8.8.8.8

Meine Fritz!Box hat in dem Beispiel eine CGNAT-Adresse die ich im TraceRoute aber nicht sehen kann, denn die Antwort kommt ja immer von der gegenüberliegenden Seite. Sie sehen aber sehr wohl, dass nach meinem Router noch drei weitere Systeme die Pakete routen, ehe das CGNAT-Device die Source-IP-Adresse umsetzt und das Paket weiter sendet. Die 185.22.46.145 ist dann die mir zugewandte Seite des ersten Routers mit einer öffentlichen IP-Adresse. Eine Abfrage beim RIPE liefert die Details


Quelle: https://apps.db.ripe.net/db-web-ui/lookup?source=ripe&key=185.22.44.0%20-%20185.22.47.255&type=inetnum

Das ist ein Subnetz mit bis zu 1024 Adressen. Sie sehen ab der Route aber auch, dass zwei Router aus dem Bereich sind und daher ist das Netz auf jeden Fall aufgeteilt. Insgesamt hat mein Provider laut Ripe gerade mal 36864 IPv4-Adressen:


https://stat.ripe.net/widget/routing-status#w.resource=AS60294

Interessant ist in dem Zuge auch ein IPv6-trace zum gleichen Ziel. Da muss der Provider nämlich nicht meine IPv4-Pakete erst zum CGNAT-System routen sondern kann sie native mit 7 statt 9 Hops übertragen.

PS C:\> Test-NetConnection www.google.de -TraceRoute

ComputerName           : www.google.de
RemoteAddress          : 2a00:1450:400e:802::2003
InterfaceAlias         : vEthernet (Extern)
SourceAddress          : 2a00:6020:xxxx:xxxx:c834:a9f1:25d5:db0b
PingSucceeded          : True
PingReplyDetails (RTT) : 11 ms
TraceRoute             : 2a00:6020:xxxx:xxxx:2e91:abff:fe49:d7c9
                         ::
                         ::
                         2a00:6020::9
                         2001:4860:0:f8b::1
                         2001:4860:0:1::518f
                         2a00:1450:400e:802::2003

Allerdings sieht die Gegenseite dann meine "öffentliche IPv6-Adresse" und je nach Provider bleibt die Adresse sogar dauerhaft unverändert. Bei öffentlichen IPv4-Adressen behalten sich die Provider vor, diese einmal am Tag zu ändern. Sie sind mit IPv6 hier also deutlich besser "trackbar".

Allerdings können Sie ihren Router über die IPv6-Adresse erreichen und mein Provider teilt mir sogar nicht nur diese eine Adresse so, sondern auch noch mehrere IPv6-Subnetze, die ich intern selbst verwalten kann. Genau genommen sind es 256 Subnetze mit 2 Milliarden IPv6-Adressen. Ich kann damit jedem Gerät eine IPv6-Adresse geben und die Fritz!Box kann auf NAT verzichten. Zum Glück sind die Clients dennoch nicht von extern Erreichbar. Eine Port-Freischaltung muss im Router schon noch erfolgen.

Weitere Links