Login

CIDR erklärt: Präfixlänge, Schreibweise und Umrechnung einfach erklärt

Mario ·

In den letzten Beiträgen ist dir ein Schrägstrich begegnet, und zwar überall: 10.0.0.0/8, 192.168.10.64/26, 203.0.113.0/24. In Routing-Tabellen steht 0.0.0.0/0, in Firewall-Regeln stehen Einträge wie 192.168.10.10/32. Was bedeutet diese Zahl hinter dem Strich genau, und wo kommt die Schreibweise her?

Sie heißt CIDR-Notation, und sie ist heute die Standardart, ein Netz anzugeben. Im Beitrag Subnetting verstehen hast du mit ihr schon gerechnet. Jetzt lernst du sie systematisch.

Wofür steht CIDR?

CIDR bedeutet Classless Inter-Domain Routing, auf Deutsch klassenloses Routing zwischen Domänen. Eingeführt wurde es Anfang der 1990er-Jahre, weil das alte System der Adressklassen aus dem Beitrag IPv4 verstehen zwei Probleme hatte:

  • Verschwendung. Wer 300 Adressen brauchte, bekam ein Klasse-B-Netz mit über 65.000 Adressen. Klasse C mit 254 war zu klein, Klasse B viel zu groß.
  • Riesige Routing-Tabellen. Jedes Netz brauchte einen eigenen Eintrag in den Routern des Internets. Die Tabellen wuchsen schneller, als die Geräte mithalten konnten.

CIDR löst beides mit einer einfachen Idee: Die Grenze zwischen Netz- und Hostanteil darf an jeder Bitstelle liegen, nicht nur bei 8, 16 oder 24. Außerdem lassen sich benachbarte Netze zu einem größeren zusammenfassen.

Die CIDR-Notation

Die Schreibweise besteht aus der Adresse, einem Schrägstrich und der Präfixlänge:

192.168.10.64/26
              ↑
     Präfixlänge: 26 Bit gehören zum Netzanteil

Die Präfixlänge sagt, wie viele der 32 Bit zum Netz gehören. Das entspricht genau der Zahl der Einsen in der Netzmaske, die du im Beitrag Netzmaske verstehen kennengelernt hast. Es sind zwei Schreibweisen für dieselbe Information:

Netzmaske Binär Präfix
255.255.255.0 11111111.11111111.11111111.00000000 /24
255.255.255.192 11111111.11111111.11111111.11000000 /26
255.255.240.0 11111111.11111111.11110000.00000000 /20

Die Kurzform ist praktischer: Sie ist kürzer, lässt sich nicht falsch eintippen und zeigt die Größe auf einen Blick. Je kleiner die Zahl, desto größer das Netz.

Die Präfixlänge zeigt, wie viele Bit zum Netz gehören. Der Rest sind Hostbits.

Präfix und Netzmaske umrechnen

Vom Präfix zur Maske

Du zerlegst die Präfixlänge in volle Oktette (je 8 Bit) und einen Rest r. Volle Oktette werden zu 255. Das Oktett mit dem Rest r bekommt den Wert 256 − 2(8 − r). Alle weiteren Oktette sind 0.

/26 → 26 = 3 × 8 + 2
      3 volle Oktette: 255.255.255
      Rest r = 2: 256 − 2^6 = 256 − 64 = 192
      → 255.255.255.192

/20 → 20 = 2 × 8 + 4
      2 volle Oktette: 255.255
      Rest r = 4: 256 − 2^4 = 256 − 16 = 240
      → 255.255.240.0

/13 → 13 = 1 × 8 + 5
      1 volles Oktett: 255
      Rest r = 5: 256 − 2^3 = 256 − 8 = 248
      → 255.248.0.0

Von der Maske zum Präfix

Du zählst die Einsen. Dazu merkst du dir, wie viele Einsen ein Oktettwert hat. Die Reihe 128, 192, 224, 240, 248, 252, 254, 255 steht für 1 bis 8 Einsen.

255.255.224.0
→ 255 = 8 Einsen, 255 = 8 Einsen, 224 = 3 Einsen, 0 = 0 Einsen
→ 8 + 8 + 3 = 19 → /19

Die CIDR-Tabelle

Diese Tabelle solltest du nach und nach auswendig können, zumindest die Zeilen von /24 bis /30. Sie ist das Standardwerkzeug aller Netzwerker:

Präfix Netzmaske Hostbits Adressen gesamt Nutzbare Hosts
/16255.255.0.01665.53665.534
/17255.255.128.01532.76832.766
/18255.255.192.01416.38416.382
/19255.255.224.0138.1928.190
/20255.255.240.0124.0964.094
/21255.255.248.0112.0482.046
/22255.255.252.0101.0241.022
/23255.255.254.09512510
/24255.255.255.08256254
/25255.255.255.1287128126
/26255.255.255.19266462
/27255.255.255.22453230
/28255.255.255.24041614
/29255.255.255.248386
/30255.255.255.252242
/31255.255.255.254122 (Sonderfall)
/32255.255.255.255011 (einzelner Host)

Die Regel dahinter: Mit jedem Bit weniger im Präfix verdoppelt sich das Netz. Mit jedem Bit mehr halbiert es sich. Die Zahl der Adressen ist 2(32 − Präfix), die der nutzbaren Hosts jeweils 2 weniger.

Die Sonderfälle /31 und /32

  • /32 beschreibt genau eine Adresse. Man benutzt es, um einen einzelnen Host zu bezeichnen, etwa in einer Firewall-Regel („nur der Server 192.168.10.10/32“).
  • /31 hat nur zwei Adressen und eigentlich keinen Platz für Netz- und Broadcast-Adresse. In Punkt-zu-Punkt-Verbindungen zwischen zwei Routern verwendet man es trotzdem und nutzt beide Adressen für die beiden Enden. Das ist in RFC 3021 geregelt. Für normale Netze mit mehreren Geräten ist es nicht gedacht.

Netze jenseits der Oktettgrenze: das /23-Beispiel

Mit klassenlosem Routing gibt es auch Netze, die über ein Oktett hinausreichen. Die Firma braucht für einen neuen Standort 400 Geräte. Ein /24-Netz hat nur 254 nutzbare Adressen, ein /22 mit 1.022 wäre zu groß. Die passende Größe ist ein /23:

Hostbits h mit 2^h − 2 ≥ 400:
h = 8  → 254  (zu wenig)
h = 9  → 510  (reicht)

Präfix = 32 − 9 = /23
Maske:   255.255.254.0

Das Netz 192.168.10.0/23 umfasst jetzt zwei aufeinanderfolgende /24-Blöcke. Im dritten Oktett gibt die Maske 254 die Blockgröße 256 − 254 = 2 vor:

Netzadresse:  192.168.10.0
Erste Host:   192.168.10.1
Letzte Host:  192.168.11.254
Broadcast:    192.168.11.255

Beachte: Das Netz reicht von 192.168.10.0 bis 192.168.11.255, also über zwei Oktettwerte im dritten Block. Adressen wie 192.168.10.255 und 192.168.11.0 sind hier ganz normale Hostadressen, denn sie liegen mitten im Netz.

Eine Einschränkung gilt immer: Die Netzadresse muss auf einer Blockgrenze liegen. Bei /23 beginnt jedes Netz im dritten Oktett bei einer geraden Zahl: .0, .2, .4 und so weiter. Die Angabe 192.168.11.0/23 wäre also keine gültige Netzadresse. Die Adresse gehört zum Netz 192.168.10.0/23.

Ein /23-Netz umfasst zwei /24-Blöcke und beginnt immer bei einem geraden Wert im dritten Oktett.

Netze zusammenfassen: Route Aggregation

CIDR kann auch in die andere Richtung arbeiten: Mehrere aufeinanderfolgende Netze lassen sich zu einem größeren zusammenfassen. Man nennt das Route Aggregation oder Supernetting. Der Router braucht dann statt vieler Einträge nur noch einen.

Ein Beispiel: Ein Provider hat vier Netze, die direkt aufeinanderfolgen:

192.168.0.0/24  = 11000000.10101000.000000|00.00000000
192.168.1.0/24  = 11000000.10101000.000000|01.00000000
192.168.2.0/24  = 11000000.10101000.000000|10.00000000
192.168.3.0/24  = 11000000.10101000.000000|11.00000000
                                    ↑
                   die ersten 22 Bit sind bei allen gleich

Alle vier Netze stimmen in den ersten 22 Bit überein, nur die letzten zwei Bit des dritten Oktetts unterscheiden sie. Die Zusammenfassung lautet also 192.168.0.0/22. Ein Eintrag ersetzt vier.

Das funktioniert nur unter zwei Bedingungen:

  • Die Netze müssen unmittelbar aufeinanderfolgen.
  • Ihre Zahl muss eine Zweierpotenz sein (2, 4, 8, …), und die erste Adresse muss auf der passenden Blockgrenze liegen.

Zwei Standorte mit 192.168.10.0/24 und 192.168.11.0/24 lassen sich zu 192.168.10.0/23 zusammenfassen. Die Netze 192.168.11.0/24 und 192.168.12.0/24 dagegen nicht, obwohl sie direkt nebeneinander liegen. Der Grund: 11 ist ungerade, ein /23 muss aber bei einer geraden Zahl beginnen. Hier lohnt sich vorausschauende Planung. Wer Standorte von Anfang an mit zusammenpassenden Bereichen versieht, kann sie später zu einer Route zusammenfassen und spart Konfigurationsaufwand.

Zwei Spezialfälle, die du ständig siehst

0.0.0.0/0: Alle Adressen

Ein Präfix von 0 bedeutet: Kein einziges Bit muss übereinstimmen. Damit passt jede Adresse. In einer Routing-Tabelle steht 0.0.0.0/0 deshalb für die Standardroute: „Alles, wofür es keinen genaueren Eintrag gibt, geht hierhin.“ Der Router wählt grundsätzlich den passendsten, also den längsten Präfix.

In einer Firewall-Regel bedeutet 0.0.0.0/0 „das gesamte Internet“. Dort ist Vorsicht geboten: Die Regel „SSH-Zugriff erlauben von 0.0.0.0/0“ öffnet den Fernzugang für alle Welt. Wo es geht, beschränkst du die Quelle auf ein konkretes Netz oder eine einzelne Adresse.

/32: Genau ein Host

Ein Präfix von 32 legt alle Bits fest. Es steht für eine einzelne Adresse, zum Beispiel 192.168.10.10/32.

CIDR in der Praxis ansehen und prüfen

Unter Linux zeigt dir ip route die Routing-Tabelle in CIDR-Schreibweise. Eine typische Ausgabe enthält die Zeile default via ..., das ist die Standardroute, und eine Zeile mit dem eigenen Netz wie 192.168.10.0/24 dev eth0. Unter Windows zeigt route print dieselbe Information, dort mit Netzmasken statt Präfixen.

Zum Rechnen und Kontrollieren eignet sich wieder das Python-Modul ipaddress:

import ipaddress

n = ipaddress.ip_network("192.168.10.0/23")
print(n.netmask)         # 255.255.254.0
print(n.num_addresses)   # 512
print(n.broadcast_address)  # 192.168.11.255

nets = [ipaddress.ip_network(f"192.168.{i}.0/24") for i in range(4)]
print(list(ipaddress.collapse_addresses(nets)))

Die ersten drei Zeilen geben Maske, Adressanzahl und Broadcast des /23-Netzes aus. Die letzten zwei fassen vier aufeinanderfolgende /24-Netze zusammen. Das Ergebnis ist ein einziges Netz, nämlich 192.168.0.0/22, passend zur Handrechnung oben.

Eine Falle für Cisco-Lernende: die Wildcard-Maske

In den Zugriffslisten (ACLs) von Cisco-Geräten tauchen Masken auf, die rückwärts aussehen: 0.0.0.255 statt 255.255.255.0. Das ist die Wildcard-Maske, die Umkehrung der Netzmaske. Wo die Wildcard-Maske 0 hat, muss das Bit übereinstimmen. Wo sie 1 hat, ist es egal. Sie ergibt sich, indem du jedes Bit der Netzmaske invertierst. Das NICHT aus den Beiträgen zur Digitaltechnik lässt grüßen. Aus 255.255.255.0 wird 0.0.0.255, aus 255.255.240.0 wird 0.0.15.255.

Praxisbeispiel: Adressplanung mit CIDR

Die Firma plant ihre Standorte neu und möchte Bereiche vergeben, die sich später zusammenfassen lassen. Der Plan:

Standort Bedarf Gewähltes Netz Nutzbare Hosts
Hauptsitzrund 400 Geräte192.168.10.0/23510
Filiale Nordrund 100 Geräte192.168.12.0/25126
Filiale Südrund 100 Geräte192.168.12.128/25126

Die beiden Filialnetze folgen direkt aufeinander und lassen sich zu 192.168.12.0/24 zusammenfassen. Und der Hauptsitz mit 192.168.10.0/23 passt von seiner Blockgrenze her gut zum Rest, denn 192.168.10.0 liegt bei einer geraden Zahl. Der Router am Standort der Zentrale braucht für beide Filialen nur einen Eintrag.

Gut geplante Adressbereiche lassen sich zu einem Routing-Eintrag zusammenfassen.

Typische Fehler

  • Präfix mit Hostzahl verwechseln. /24 heißt 24 Netzbits, nicht 24 Geräte.
  • Falsche Netzadresse bei /23, /22 und Co. Die Netzadresse muss auf einer Blockgrenze liegen. 192.168.11.0/23 ist keine.
  • Nicht ausgerichtete Netze zusammenfassen. Aufeinanderfolgend allein reicht nicht, die Blöcke müssen zusammenpassen.
  • Maske und Präfix doppelt angeben. Die Schreibweise 255.255.255.0/24 ist unüblich. Eines von beiden genügt.
  • 0.0.0.0/0 in der Firewall. Das heißt „alle“. Prüfe jede solche Regel besonders gründlich.
  • Wildcard-Maske und Netzmaske vertauschen. Bei Cisco-ACLs steht die invertierte Form.
  • Präfix über 32 angeben. Eine IPv4-Adresse hat nur 32 Bit.

Zum Üben

  1. Wie lautet die Netzmaske zu /19?
  2. Welches Präfix gehört zur Maske 255.255.248.0?
  3. Wie viele nutzbare Hosts hat ein /22-Netz?
  4. Ist 192.168.5.0/23 eine gültige Netzadresse? Wenn nicht, wie lautet die richtige?
  5. Wie lautet die Broadcast-Adresse von 192.168.10.0/23?
  6. Fasse die Netze 10.1.0.0/24, 10.1.1.0/24, 10.1.2.0/24 und 10.1.3.0/24 zusammen.
  7. Welches Präfix brauchst du für ein Netz mit 1.000 Geräten?
  8. Was bedeuten 0.0.0.0/0 und 192.168.10.10/32?

Lösungen: (1) 19 = 2 × 8 + 3, Rest r = 3: 256 − 25 = 224, also 255.255.224.0. (2) 255 + 255 + 248 → 8 + 8 + 5 = 21, also /21. (3) Hostbits 10, 210 − 2 = 1.022. (4) Nein. Im dritten Oktett muss die Netzadresse bei /23 gerade sein. 5 liegt im Netz 192.168.4.0/23. (5) Das Netz reicht von 192.168.10.0 bis 192.168.11.255, also Broadcast 192.168.11.255. (6) Die ersten 22 Bit stimmen überein: 10.1.0.0/22. (7) 2h − 2 ≥ 1.000 → h = 10 (1.022), Präfix 32 − 10 = /22. (8) 0.0.0.0/0 steht für alle Adressen, in einer Routing-Tabelle für die Standardroute. 192.168.10.10/32 steht für genau diese eine Adresse.

Das solltest du dir merken

  • CIDR ersetzt die starren Adressklassen. Die Grenze zwischen Netz- und Hostanteil darf an jeder Bitstelle liegen.
  • Die Präfixlänge hinter dem Schrägstrich ist die Zahl der Netzbits und gleichzeitig die Zahl der Einsen in der Netzmaske.
  • Umrechnen: Volle Oktette ergeben 255, das Rest-Oktett ergibt 256 − 2(8 − r).
  • Adressen im Netz: 2(32 − Präfix), nutzbare Hosts: zwei weniger.
  • Die Netzadresse muss auf einer Blockgrenze liegen.
  • Aufeinanderfolgende, passend ausgerichtete Netze lassen sich zusammenfassen. So bleiben Routing-Tabellen klein.
  • 0.0.0.0/0 ist „alles“, /32 ist „genau ein Host“.

Als Nächstes wird es konkret: Wie du für jedes Netz die erste und die letzte Adresse sicher berechnest, zeigt der Beitrag Netzwerkadresse und Broadcast.

Weiterlesen