12k
All articles

CIDR-Notation und IP-Bereiche verstehen

CIDR-Notation, IP-Bereiche und Subnetzberechnung für IPv4 und IPv6 erklärt. So lesen Sie Präfixe, planen Netze und vermeiden Überschneidungen.

OpenReplay Team
OpenReplay Team
CIDR-Notation und IP-Bereiche verstehen

Die CIDR-Notation wird als address/prefix geschrieben, wobei das Präfix die Anzahl der führenden Bits angibt, die als Netzwerkanteil festgelegt sind — in 10.0.0.0/16 identifizieren also die ersten 16 Bits das Netzwerk, und die verbleibenden 16 stehen für Hosts zur Verfügung.

Die meisten lernen das auf die harte Tour — etwa beim dritten Mal, wenn eine Security Group stillschweigend Traffic blockiert und sich am Ende herausstellt, dass ein Präfix um eine Ziffer danebenlag. Diese eine Zeile ist bereits der Großteil dessen, was Sie brauchen, um nicht mehr 10.0.0.0/16 in eine Terraform-Datei zu kopieren, sondern sie tatsächlich zu lesen. Dieser Artikel liefert Ihnen das mentale Modell, die zweistufige Rechnung vom Präfix zum nutzbaren Bereich und zur Host-Anzahl sowie die Stellen, an denen Web- und Full-Stack-Entwickler CIDR tatsächlich begegnen (VPC-Dimensionierung, Security-Group-Regeln, Allowlists und Container-Netzwerke) — einschließlich der Stolperfallen, die Verbindungen unbemerkt zerstören.

Die wichtigsten Erkenntnisse

  • Die CIDR-Notation lautet address/prefix; das Präfix zählt die führenden Netzwerk-Bits, nicht die Gesamtzahl der Bits in der Adresse.
  • Die Anzahl nutzbarer Hosts eines IPv4-Blocks beträgt 2^(32 − prefix) − 2: ein /24 ergibt 254, ein /26 ergibt 62 und ein /30 ergibt 2 — abzüglich der Netzwerk- und der Broadcast-Adresse.
  • 0.0.0.0/0 (IPv4) und ::/0 (IPv6) bedeuten jede Adresse: Eine Allow-Regel mit 0.0.0.0/0 auf SSH oder einem Datenbank-Port gibt diesen für das gesamte Internet frei.
  • RFC 1918 reserviert drei private Bereiche, die Ihnen in Cloud- und Container-Konfigurationen ständig begegnen: 10.0.0.0/8, 172.16.0.0/12 und 192.168.0.0/16.
  • Zwei Netzwerke, die Sie per Peering oder VPN verbinden wollen, dürfen keine überlappenden CIDR-Blöcke verwenden, sonst wird das Routing zu gemeinsamen Adressen mehrdeutig.

Was ist die CIDR-Notation?

Die CIDR-Notation (Classless Inter-Domain Routing) beschreibt ein Netzwerk als IP-Adresse, gefolgt von einem Schrägstrich und einer Präfixlänge, wobei die Präfixlänge die Anzahl der führenden Bits angibt, die als Netzwerkanteil festgelegt sind. Sie ersetzte das starre Class-A/B/C-System, sodass Blöcke eine beliebige Größe haben können, statt auf 8-, 16- oder 24-Bit-Grenzen einzurasten. Das Verfahren wurde 1993 mit RFC 1519 eingeführt und 2006 in der heute maßgeblichen RFC 4632 zusammengefasst. Das Präfix ist nicht die Gesamtzahl der Bits in der Adresse — ein weit verbreitetes Missverständnis. In 192.168.129.23/17 bedeutet das /17, dass die ersten 17 Bits Netzwerk-Bits sind, womit 15 für Hosts übrig bleiben.

Das Bit-Modell: Netzwerk-Bits und Host-Bits

Eine IPv4-Adresse ist eine 32-Bit-Zahl, aufgeteilt in vier 8-Bit-Oktette, und das Präfix /n zieht eine Linie durch diese 32 Bits: Alles links der Linie ist fester Netzwerkanteil, alles rechts davon variabler Hostanteil. Verschieben Sie die Linie nach rechts (größeres Präfix), erhalten Sie mehr, aber kleinere Netzwerke; verschieben Sie sie nach links, erhalten Sie weniger, aber größere.

Nehmen wir 10.0.1.0/24. Das /24 schneidet nach dem dritten Oktett, die ersten 24 Bits sind also festgelegt, die letzten 8 gehören Ihnen:

00001010 . 00000000 . 00000001 . 00000000
└──────── network (24 bits) ──────┘ └ host ┘
   10          0          1        0–255

Diese 8 Host-Bits reichen von 00000000 bis 11111111: 256 Kombinationen, also 10.0.1.0 bis 10.0.1.255. Allein das Präfix entscheidet darüber, wo der Schnitt verläuft.

Wie viele Hosts umfasst ein CIDR-Block?

Die Anzahl nutzbarer Hosts in einem IPv4-Block beträgt 2^(32 − prefix) − 2: ein /24 ergibt 254, ein /26 ergibt 62 und ein /30 ergibt 2. Die beiden abgezogenen Adressen sind die Netzwerkadresse (alle Host-Bits 0) und die Broadcast-Adresse (alle Host-Bits 1), von denen keine einem Host zugewiesen werden kann. Berechnen Sie zuerst die Gesamtzahl der Adressen (2^(32 − prefix)) und ziehen Sie dann zwei ab.

PräfixAdressen gesamtNutzbare HostsTypischer Einsatz
/1665.53665.534Eine komplette VPC
/24256254Ein Standard-Subnetz
/266462Ein Tier innerhalb eines Subnetzes
/3042Punkt-zu-Punkt-Verbindung
/3122Punkt-zu-Punkt (RFC 3021)
/3211Einzelne Host-Route

Zwei Ausnahmen von der −2-Regel sind in der Praxis relevant: Ein /31 liefert 2 nutzbare Adressen, weil RFC 3021 die Reservierung von Netzwerk- und Broadcast-Adresse bei Punkt-zu-Punkt-Verbindungen entfallen lässt, und ein /32 ist eine einzelne Host-Route — genau die Form, mit der Sie eine exakte IP in einer Firewall- oder Allowlist-Regel benennen.

Einen CIDR-Block in der Praxis lesen

So lesen Sie einen Block wie 10.0.1.0/24: Die Netzwerkadresse ist 10.0.1.0, die Broadcast-Adresse ist 10.0.1.255, und der nutzbare Bereich reicht von 10.0.1.1 bis 10.0.1.254. Das Rezept umfasst vier Schritte: (1) Das Präfix sagt Ihnen, wie viele Bits festgelegt sind; (2) setzen Sie die verbleibenden Host-Bits auf 0 für die Netzwerkadresse; (3) setzen Sie sie auf 1 für die Broadcast-Adresse; (4) alles dazwischen ist nutzbar.

Für den umgekehrten Weg — von einer Host-Anforderung zum Präfix — wählen Sie den kleinsten Block, dessen nutzbare Anzahl Ihren Bedarf deckt. Sie brauchen Platz für 30 Geräte? Ein /27 liefert 30 nutzbare Adressen; ein /28 nur 14, also ist /27 die Antwort. Jeden Block können Sie mit dem Standardbibliotheks-Modul ipaddress von Python überprüfen, ganz ohne Installation:

python3 -c "import ipaddress; n=ipaddress.ip_network('10.0.1.0/24'); print(n.network_address, n.broadcast_address, n.num_addresses)"
# 10.0.1.0 10.0.1.255 256

Führen Sie das für einen beliebigen Block aus, um Ihre Kopfrechnung zu prüfen, bevor Sie sie in eine Konfiguration übernehmen.

Wenn Sie lieber nicht ins Terminal wechseln möchten, erledigt der OpenReplay CIDR-Rechner dieselbe Auflösung im Browser. Fügen Sie einen Block wie 10.0.0.0/16 ein, und Sie erhalten die Netzwerk- und Broadcast-Adresse, Netzmaske und Wildcard, den ersten und letzten nutzbaren Host sowie die Gesamtzahl der Adressen. Er unterstützt IPv4 und IPv6 und rechnet mit Big-Integer-Arithmetik, sodass große Blöcke und IPv6-Bereiche exakt zurückgegeben werden. Die Berechnung erfolgt vollständig lokal, interne Bereiche verlassen Ihren Rechner also nie.

Wo Entwickler CIDR tatsächlich begegnen

Die meisten Entwickler treffen auf CIDR in Cloud- und Anwendungskonfigurationen, lange bevor sie ihm in einer Routing-Tabelle begegnen. RFC 1918 reserviert drei private Bereiche, die Ihnen ständig begegnen (10.0.0.0/8, 172.16.0.0/12 und 192.168.0.0/16), von denen keiner im öffentlichen Internet routbar ist — genau deshalb bedienen sich Cloud-VPCs und Docker-Netzwerke daraus. Vier Muster decken nahezu alles ab, womit Sie zu tun haben werden:

  • VPC- und Subnetz-Dimensionierung. Sie legen bei der Erstellung einen Block fest und schneiden daraus Subnetze. Der IPv4-Block einer AWS-VPC muss zwischen /16 und /28 liegen, und jedes Subnetz reserviert die ersten vier Adressen sowie die letzte (fünf, nicht zwei) — ein /24-Subnetz liefert auf AWS also 251 nutzbare Adressen, nicht 254. Die allgemeine −2-Regel ist eine Obergrenze, keine Garantie.
  • Firewall- und Security-Group-Regeln. Regeln werden auf einen CIDR-Bereich eingegrenzt, z. B. eingehenden Traffic auf 5432 nur von 10.10.1.0/24 erlauben, damit eine Datenbank-Schicht Postgres-Traffic ausschließlich von der Web-Schicht annimmt und sonst von niemandem.
  • Allowlists und Denylists in der Anwendungskonfiguration. CORS-Origins, WAF-Regeln, Quellbereiche im API-Gateway und allow/deny-Direktiven in nginx erwarten alle CIDR-Blöcke. Ein zu enges Präfix blockiert legitime Clients stillschweigend; Session Replays solcher Implementierungen zeigen den Fehler häufig als blockierte oder fehlschlagende Requests, die sich auf ein einziges falsches Präfix zurückführen lassen.
  • Die Stolperfalle überlappender CIDR-Blöcke. Zwei Netzwerke, die Sie per Peering oder VPN verbinden wollen, dürfen keine überlappenden CIDR-Blöcke verwenden, denn ein Host kann nicht zwei eindeutige Routen zur selben Adresse haben. Geben Sie jedem seinen eigenen, nicht überlappenden RFC-1918-Bereich, etwa 10.10.0.0/16 und 10.20.0.0/16.

Einen Wert sollten Sie sich einprägen: 0.0.0.0/0 in IPv4 (und ::/0 in IPv6) bedeutet jede Adresse. Für eine Default-Route ist das nützlich, als eingehende Allow-Regel dagegen ein Selbstschuss: 0.0.0.0/0 auf Port 22 oder 5432 ist eine offene Tür für das gesamte Internet.

IPv6 verwendet dieselbe Notation

IPv6 wendet dieselbe Schrägstrich-Notation auf 128-Bit-Adressen an, und /64 ist die Standardgröße pro Subnetz, womit 64 Bits für Hosts innerhalb jedes Subnetzes bleiben. Betrachten Sie /64 als Konvention, nicht als Gesetz: Es ist keine universelle Konstante, und selbst AWS erlaubt IPv6-Subnetzmasken von /44 bis /64 in /4-Schritten. Die Logik der Bit-Aufteilung ist exakt dieselbe. Nur die Adresse ist länger.

Lesen Sie das Präfix als Anzahl der Netzwerk-Bits, wenden Sie 2^(32 − prefix) − 2 für nutzbare IPv4-Hosts an, denken Sie an die Ausnahmen /31, /32 und die Cloud-Reservierungen, und halten Sie per Peering verbundene Netzwerke überlappungsfrei. Damit können Sie ein Subnetz dimensionieren oder eine Firewall-Regel prüfen, ohne zum Taschenrechner zu greifen. Wenn das nächste Mal ein CIDR-Block in einem Pull Request auftaucht, lesen Sie ihn auf einen Blick — und prüfen Sie, ob dieses /0 wirklich dort stehen sollte.

FAQs

Was ist der Unterschied zwischen einer Subnetzmaske wie 255.255.255.0 und einem CIDR-Präfix wie /24?

Beide drücken dieselbe Grenze auf zwei Arten aus. Eine Subnetzmaske ist ein 32-Bit-Wert, bei dem die Netzwerk-Bits 1 und die Host-Bits 0 sind; 255.255.255.0 entspricht binär also 24 Einsen gefolgt von 8 Nullen. Das CIDR-Präfix /24 zählt schlicht diese führenden 1-Bits. 255.255.255.0 entspricht /24, 255.255.255.192 entspricht /26 und 255.255.255.252 entspricht /30. CIDR ist die Kurzschreibweise für dieselbe Maske.

Wie viele nutzbare IP-Adressen liefert ein /30, und warum ist es bei Punkt-zu-Punkt-Verbindungen so verbreitet?

Ein /30 liefert 2 nutzbare von insgesamt 4 Adressen, weil die Netzwerk- und die Broadcast-Adresse nach der Standard-Regel minus 2 weiterhin reserviert sind. Zwei nutzbare Adressen reichen genau für die beiden Endpunkte einer Punkt-zu-Punkt-Verbindung, weshalb /30 traditionell die Wahl war. RFC 3021 erlaubte später /31 für denselben Zweck mit 2 nutzbaren von 2 Adressen: Die Reservierung von Netzwerk- und Broadcast-Adresse entfällt, und es wird keine Adresse verschwendet.

Können zwei Subnetze im selben Netzwerk überlappende CIDR-Blöcke haben?

Nicht, wenn sie zueinander routen müssen. Innerhalb einer einzelnen Routing-Tabelle wird eine Überlappung durch Longest Prefix Match aufgelöst: Ein Paket an 10.0.1.5 folgt der Route 10.0.1.0/24 statt der weiter gefassten 10.0.0.0/16, der Pfad ist also nie mehrdeutig. Das Problem entsteht, wenn Sie zwei unabhängig voneinander adressierte Netzwerke verbinden. Eine Peering-Verbindung zwischen zwei VPCs, die beide 10.0.0.0/16 verwenden, schlägt fehl, weil jede Seite diesen Block bereits lokal routet und die andere nicht erreichen kann. Deshalb erfordern VPC-Peering und Site-to-Site-VPNs überlappungsfreie Bereiche. Weisen Sie jedem Netzwerk von Anfang an einen eigenen, eindeutigen RFC-1918-Block zu.

Bedeutet eine kleinere Präfixzahl ein größeres oder ein kleineres Netzwerk?

Eine kleinere Präfixzahl bedeutet ein größeres Netzwerk. Das Präfix zählt die festgelegten Netzwerk-Bits, also bleiben bei weniger Netzwerk-Bits mehr Host-Bits frei. Ein /8 hat 24 Host-Bits und über 16 Millionen Adressen, während ein /24 8 Host-Bits und 256 Adressen hat. Mit jeder Stufe, um die die Präfixzahl sinkt, verdoppelt sich die Blockgröße: Ein /23 fasst doppelt so viele Adressen wie ein /24, und ein /16 fasst 256-mal so viele wie ein /24.

Warum liefert ein /24-Subnetz bei AWS nur 251 statt 254 nutzbare Adressen?

AWS reserviert fünf Adressen pro Subnetz, nicht die zwei, von denen die allgemeine Regel minus 2 ausgeht. AWS behält die ersten vier Adressen jedes Subnetz-CIDR-Blocks sowie die letzte für Netzwerkadresse, VPC-Router, DNS, künftige Verwendung und Broadcast ein. Ein /24 mit insgesamt 256 Adressen ergibt auf AWS also 251 nutzbare gegenüber 254 in einer reinen Netzwerkberechnung. Prüfen Sie stets die Reservierungsregeln Ihres Cloud-Anbieters, bevor Sie ein Subnetz knapp dimensionieren.

Understand every bug

Uncover frustrations, understand bugs and fix slowdowns like never before with OpenReplay — self-hosted, with full data ownership.

Star on GitHub

We use cookies to improve your experience. By using our site, you accept cookies.