IPv4 Subnetze ohne Schmerzen
Sehr häufig werde ich gefragt, wie Subnetze im IPv4-Netz sinnvoll und vor allem richtig berechnet werden. Lasst Euch gesagt sein, so schwer ist das gar nicht! Im Grunde genommen, muß man sich’s nur richtig vorstellen, ab da reichen ein paar Finger zum zählen und die guten alten Zweierpotenzen.
Und dank der Hilfe von ipcalc ist die Erklärung sogar sehr angenehm zu lesen.
Für den Anfang schauen wir uns zunächst die privaten IP-Bereiche, sogenannte RFC1918-Netze an:
Die RFC1918-Netz werden im Internet nicht geroutet, was bedeutet, daß hinter NAT-Gateways oder in rein internen Bereichen diese Netze ohne Genehmigung oder Ähnlichem genutzt werden dürfen. (Natürlich bitte trotzdem darauf achten, daß jede IP nur genau einmal im Netz vorkommen darf!)
Es gibt allerdings noch zwei Sonderfälle, die jedem Admin sehr häufig unterkommen werden:
Die folgenden Netze werde ich etwas ausführlicher erklären:
- 192.168.1.1/24
- 192.168.1.1/25
- 192.168.1.1/30
- 172.16.0.0/16
- 172.18.0.0/16
- 10.100.0.0/15
- 10.102.0.0/15
- 80.190.170.0/23
- 80.190.171.176/29
Sobald die Netze alle grob beschrieben sind, gibt’s noch ein paar allgemeine Hinweise.
10.0.0.0/8 [hoch]
Das größte private Subnetz ist 10.0.0.0/8. Wenn man sich die komplette Anzahl aller exitierenden IPs vorstellt, so ist ein /8 ein zweihundertsechsundfünfzigstel. Man stelle sich einen langen Strich als die gesammte Anzahl von existierenden IPs vor, und schneide ein zweihundertsechsundfünfzigstel davon ab. Das ist ein /8. /8-Netze wurden früher als Class-A bezeichnet, doch seit der Einführung von CIDR sollte man nicht mehr länger von Klassen sprechen.
| Address: | 10.0.0.0 | 00001010. 00000000.00000000.00000000 |
| Netmask: | 255.0.0.0 = 8 | 11111111. 00000000.00000000.00000000 |
| Wildcard: | 0.255.255.255 | 00000000. 11111111.11111111.11111111 |
| => | ||
| Network: | 10.0.0.0/8 | 00001010. 00000000.00000000.00000000 |
| HostMin: | 10.0.0.1 | 00001010. 00000000.00000000.00000001 |
| HostMax: | 10.255.255.254 | 00001010. 11111111.11111111.11111110 |
| Broadcast: | 10.255.255.255 | 00001010. 11111111.11111111.11111111 |
| Hosts/Net: | 16777214 | Class A, Private Internet |
172.16.0.0/12 [hoch]
Der nächste private IP-Block ist 172.16.0.0/12. Ebenfalls für die private Nutzung vorgesehen, umfasst dieser Block etwa eine Million IPs und enspricht damit einem sechtzehntel /8. Um die Klassen anzusprechen: ein /12 enthält insgesammt 16 Class-B Netze.
In den meisten Fällen werden aus 172.16.0.0/12 /16-Netze gemacht, in dem das komplette 172.16.0.0/12 in 16 Teile geschnitten wird (z.B. 172.16.0.0/16).
| Address: | 172.16.0.0 | 10101100.0001 0000.00000000.00000000 |
| Netmask: | 255.240.0.0 = 12 | 11111111.1111 0000.00000000.00000000 |
| Wildcard: | 0.15.255.255 | 00000000.0000 1111.11111111.11111111 |
| => | ||
| Network: | 172.16.0.0/12 | 10101100.0001 0000.00000000.00000000 |
| HostMin: | 172.16.0.1 | 10101100.0001 0000.00000000.00000001 |
| HostMax: | 172.31.255.254 | 10101100.0001 1111.11111111.11111110 |
| Broadcast: | 172.31.255.255 | 10101100.0001 1111.11111111.11111111 |
| Hosts/Net: | 1048574 | Class B, Private Internet |
192.168.0.0/16 [hoch]
Der letzte private IP-Block ist 192.168.0.0/16 und entspricht damit einem zweihundertsechsundfünfzigstel /8. Der extrem lange Stich von eben, von dem wir ein zweihundertsechsundfünfzigstel abgebrochen haben? Dieses abgebrochene Teil brechen wir nochmals in 256 Teile. Jeder dieser Teile ist ein /16.
Ähnlich wie bei 172.16.0.0/12 geht man häufig dazu über den 192.168.0.0/16-Block in wieder 256 Teile zu brechen und /24 Netze aus dem 192.168.0.0/16-Bereich zu machen (z.B. 192.168.1.1/24).
| Address: | 192.168.0.0 | 11000000.10101000. 00000000.00000000 |
| Netmask: | 255.255.0.0 = 16 | 11111111.11111111. 00000000.00000000 |
| Wildcard: | 0.0.255.255 | 00000000.00000000. 11111111.11111111 |
| => | ||
| Network: | 192.168.0.0/16 | 11000000.10101000. 00000000.00000000 |
| HostMin: | 192.168.0.1 | 11000000.10101000. 00000000.00000001 |
| HostMax: | 192.168.255.254 | 11000000.10101000. 11111111.11111110 |
| Broadcast: | 192.168.255.255 | 11000000.10101000. 11111111.11111111 |
| Hosts/Net: | 65534 | Class C, Private Internet |
127.0.0.0/8 [hoch]
Dies ist das sogenannte Loopback-Netz, was bedeutet, daß Pakete, die an eine der Adressen 127.X.X.X (X kann beliebig zwischen 0 und 255 gewählt werden) geschickt werden die Netzwerk-Hardware gar nicht verlassen, und das Betriebssystem automagisch auf sich selbst auflöst. Einfach mal versuchen, vielleicht funktioniert’s: http://127.0.0.1.
| Address: | 127.0.0.0 | 01111111. 00000000.00000000.00000000 |
| Netmask: | 255.0.0.0 = 8 | 11111111. 00000000.00000000.00000000 |
| Wildcard: | 0.255.255.255 | 00000000. 11111111.11111111.11111111 |
| => | ||
| Network: | 127.0.0.0/8 | 01111111. 00000000.00000000.00000000 |
| HostMin: | 127.0.0.1 | 01111111. 00000000.00000000.00000001 |
| HostMax: | 127.255.255.254 | 01111111. 11111111.11111111.11111110 |
| Broadcast: | 127.255.255.255 | 01111111. 11111111.11111111.11111111 |
| Hosts/Net: | 16777214 | Class A, Loopback |
169.254.0.0/16 [hoch]
169.254.0.0/16 ist ein Spezialfall, bei dem sich der Admin – in den meisten Fällen – Gedanken machen sollte.
169.254.0.0/16 – This is the “link local” block. It is allocated for communication between hosts on a single link. Hosts obtain these addresses by auto-configuration, such as when a DHCP server may not be found.
Ansonsten aber: genug Ausnahmen, jetzt rann ans Werk!
| Address: | 169.254.0.0 | 10101001.11111110. 00000000.00000000 |
| Netmask: | 255.255.0.0 = 16 | 11111111.11111111. 00000000.00000000 |
| Wildcard: | 0.0.255.255 | 00000000.00000000. 11111111.11111111 |
| => | ||
| Network: | 169.254.0.0/16 | 10101001.11111110. 00000000.00000000 |
| HostMin: | 169.254.0.1 | 10101001.11111110. 00000000.00000001 |
| HostMax: | 169.254.255.254 | 10101001.11111110. 11111111.11111110 |
| Broadcast: | 169.254.255.255 | 10101001.11111110. 11111111.11111111 |
| Hosts/Net: | 65534 | Class B, APIPA |
192.168.1.1/24 [hoch]
Aus den meisten DSL-Routern und sonstiger Home-Hardware fallen IPs im Stile von 192.168.1.1/24 raus, was den 192.168.0.0/16-Block zu einem beliebten Ziel für Mißverständnisse und doppelten IPs macht. Wir betrachten hier ein /24, also den zweihundertsechsundfünfzigsten Teil eines /16, was der zweihundertsechsundfünfzigste Teil eines /8 ist, was wiederum der zweihundertsechsundfünfzigste Teil der gesammten Menge an IPs ist. Da fühlt man sich doch plötzlich klein, oder?
192.168.1.1/24 ist ein IP-Netz mit 256 IPs, doch auch hier – wie üblich – sind die erste und die letzte IP reserviert. Die erste IP in jedem IP-Netz ist die Netzwerk-IP, in diesem Beispiel die 192.168.1.0, und die letzte mögliche IP wird als Broadcast-IP bezeichnet – hier die 192.168.1.255. Diese beiden IPs dürfen unter gar keinen Umständen einer Maschine zugeordnet werden. Beide haben spezielle Aufgaben, auf die ich aber an dieser Stelle nicht eingehen möchte.
Innerhalb dieses /24 sind also alle IP-Adressen von 192.168.1.1 bis 192.168.1.254 nutzbar.
| Address: | 192.168.1.1 | 11000000.10101000.00000001. 00000001 |
| Netmask: | 255.255.255.0 = 24 | 11111111.11111111.11111111. 00000000 |
| Wildcard: | 0.0.0.255 | 00000000.00000000.00000000. 11111111 |
| => | ||
| Network: | 192.168.1.0/24 | 11000000.10101000.00000001. 00000000 |
| HostMin: | 192.168.1.1 | 11000000.10101000.00000001. 00000001 |
| HostMax: | 192.168.1.254 | 11000000.10101000.00000001. 11111110 |
| Broadcast: | 192.168.1.255 | 11000000.10101000.00000001. 11111111 |
| Hosts/Net: | 254 | Class C, Private Internet |
192.168.1.1/25 [hoch]
Es kann der Fall sein, daß 192.168.1.1/24 für das geplante Netz schlichtweg zu groß ist. Wenn nur etwa 100 IPs benötigt werden, kann die Größe des Netzes wunderbar angepasst werden. Bitte nochmals zum Messer greifen, und einen sauberen Schnitt in der Mitte des 192.168.1.1/24 anbringen. Wir haben nun zwei Netze mit jeweils einem halben /24, also einem /25 gewonnen. 192.168.1.1/25 und 192.168.1.128/25. Ein /25 enthält noch 128 IPs. Zieht man auch hier wieder Netzwerk-IP und Broadcast ab, bleiben 126 nutzbare IPs.
Im großen Zusammenhang ist als ein /25 die Hälfte des zweihundertsechsundfünfzigsten Teil eines /16, was der zweihundertsechsundfünfzigste Teil eines /8 ist, was wiederum der zweihundertsechsundfünfzigste Teil der gesammten Menge an IPs ist. Aber es geht noch kleiner!
| Address: | 192.168.1.1 | 11000000.10101000.00000001.0 0000001 |
| Netmask: | 255.255.255.128 = 25 | 11111111.11111111.11111111.1 0000000 |
| Wildcard: | 0.0.0.127 | 00000000.00000000.00000000.0 1111111 |
| => | ||
| Network: | 192.168.1.0/25 | 11000000.10101000.00000001.0 0000000 |
| HostMin: | 192.168.1.1 | 11000000.10101000.00000001.0 0000001 |
| HostMax: | 192.168.1.126 | 11000000.10101000.00000001.0 1111110 |
| Broadcast: | 192.168.1.127 | 11000000.10101000.00000001.0 1111111 |
| Hosts/Net: | 126 | Class C, Private Internet |
192.168.1.1/30 [hoch]
Das Netz 192.168.1.1/30 ist schon wirklich sehr klein, denn es enthält noch genau 4 IPs. Solche Netze eignen sich wunderbar um genau zwei Geräte miteinander zu verbinden. Stichwort: Transfer-Netz. Genau zwei nutzbare IPs, also genau Platz für zwei Geräte. Ein /30 ist der vierundsechzigste Teil eines /24.
| Address: | 192.168.1.1 | 11000000.10101000.00000001.000000 01 |
| Netmask: | 255.255.255.252 = 30 | 11111111.11111111.11111111.111111 00 |
| Wildcard: | 0.0.0.3 | 00000000.00000000.00000000.000000 11 |
| => | ||
| Network: | 192.168.1.0/30 | 11000000.10101000.00000001.000000 00 |
| HostMin: | 192.168.1.1 | 11000000.10101000.00000001.000000 01 |
| HostMax: | 192.168.1.2 | 11000000.10101000.00000001.000000 10 |
| Broadcast: | 192.168.1.3 | 11000000.10101000.00000001.000000 11 |
| Hosts/Net: | 2 | Class C, Private Internet |
172.16.0.0/16 [hoch]
Die nächsten beiden werden wieder einfach, ich versprech’s. 172.16.0.0/16 ist ein /16, also einer der 256 Teile des /8 von oben. Der nutzbare Bereich dieses Netzes – ohne es weiter zu unterteilen – ist also 172.16.0.1 bis 172.16.255.254.
Wichtig ist hierbei zu verstehen, daß abgesehen von Netzwerk-IP (172.16.0.0) und Broadcast (172.16.255.255) jede andere IP nutzbar ist, also auch z.B. 172.16.13.0 oder 172.16.82.255. Hier liegt es im Sinne des Admins und seines ästhetischen Empfinden ob diese IPs genutzt werden oder nicht. Ich persönlich nutze sie nicht.
| Address: | 172.16.0.0 | 10101100.00010000. 00000000.00000000 |
| Netmask: | 255.255.0.0 = 16 | 11111111.11111111. 00000000.00000000 |
| Wildcard: | 0.0.255.255 | 00000000.00000000. 11111111.11111111 |
| => | ||
| Network: | 172.16.0.0/16 | 10101100.00010000. 00000000.00000000 |
| HostMin: | 172.16.0.1 | 10101100.00010000. 00000000.00000001 |
| HostMax: | 172.16.255.254 | 10101100.00010000. 11111111.11111110 |
| Broadcast: | 172.16.255.255 | 10101100.00010000. 11111111.11111111 |
| Hosts/Net: | 65534 | Class B, Private Internet |
172.18.0.0/16 [hoch]
Wie eben schon 172.16.0.0/16 ist auch 172.18.0.0/16 an sich ein triviales Netz. Die Netzwerk-Maske ist identisch zu 172.16.0.0/16 und das Netz ist auch genauso groß. Nichts desto trotz ist es ein komplett eigenes Netz, und hat mit 172.16.0.0/16 nichts zu tun. Auch wenn beide Netze Teilstücke von 172.16.0.0/12 sind.
| Address: | 172.18.0.0 | 10101100.00010010. 00000000.00000000 |
| Netmask: | 255.255.0.0 = 16 | 11111111.11111111. 00000000.00000000 |
| Wildcard: | 0.0.255.255 | 00000000.00000000. 11111111.11111111 |
| => | ||
| Network: | 172.18.0.0/16 | 10101100.00010010. 00000000.00000000 |
| HostMin: | 172.18.0.1 | 10101100.00010010. 00000000.00000001 |
| HostMax: | 172.18.255.254 | 10101100.00010010. 11111111.11111110 |
| Broadcast: | 172.18.255.255 | 10101100.00010010. 11111111.11111111 |
| Hosts/Net: | 65534 | Class B, Private Internet |
10.100.0.0/15 [hoch]
Alle Leser noch anwesend? Dann weiter. 10.100.0.0/15 ist kleiner als ein /8 jedoch größer als ein /16. Genau genommen doppelt so groß wie ein /16. Der nutzbare Bereich erstreckt sich also von 10.100.0.1 bis 10.101.255.254. Mit etwa 130000 nutzbaren IPs sollt dieses Netz groß genug sein um den DSL-Router, den kleinen iMac und die X-Box anzusprechen.
Man stelle sich nochmals den langen Strich vom /8 vor. Um /16-Netze zu erhalten, haben wir diesen Strich in 256 Teile zerschnitten. Fuer /15 zerschneiden wir ihn nur in 128 gleich große Teile.
| Address: | 10.100.0.0 | 00001010.0110010 0.00000000.00000000 |
| Netmask: | 255.254.0.0 = 15 | 11111111.1111111 0.00000000.00000000 |
| Wildcard: | 0.1.255.255 | 00000000.0000000 1.11111111.11111111 |
| => | ||
| Network: | 10.100.0.0/15 | 00001010.0110010 0.00000000.00000000 |
| HostMin: | 10.100.0.1 | 00001010.0110010 0.00000000.00000001 |
| HostMax: | 10.101.255.254 | 00001010.0110010 1.11111111.11111110 |
| Broadcast: | 10.101.255.255 | 00001010.0110010 1.11111111.11111111 |
| Hosts/Net: | 131070 | Class A, Private Internet |
10.102.0.0/15 [hoch]
10.100.0.0/15 war nicht schwer, also sollte 10.102.0.0/15 auch nicht schwer werden. Es ist nämlich einfach nur das nächste /15, also der nächste hundertachundzwanzigstel Fetzen des /8. Worauf ich hinaus will ist folgendes:
Wenn in einem Unternehmen 10.100.0.0/15 und 10.102.0.0/15 verwendet werden, und eines Tages den Admins die Anforderung eines einzelnen großen Netzes in der Inbox landet, ist das in diesem Falle sehr einfach, da beide Netze zu einem großen aggregiert (zusammengefasst) werden können. Beide /15 werden zu einem großen /14, nämlich zu 10.100.0.0/14, und das nur durch die Änderung der Netzwerk-Masken auf allen Teilnehmern des Netzes. Dieses /14 ist dann voll nutzbar, angefangen bei 10.100.0.1 bis schließlich 10.103.255.254. Das umfasst in etwa 260000 IPs.
| Address: | 10.103.0.0 | 00001010.0110011 1.00000000.00000000 |
| Netmask: | 255.254.0.0 = 15 | 11111111.1111111 0.00000000.00000000 |
| Wildcard: | 0.1.255.255 | 00000000.0000000 1.11111111.11111111 |
| => | ||
| Network: | 10.102.0.0/15 | 00001010.0110011 0.00000000.00000000 |
| HostMin: | 10.102.0.1 | 00001010.0110011 0.00000000.00000001 |
| HostMax: | 10.103.255.254 | 00001010.0110011 1.11111111.11111110 |
| Broadcast: | 10.103.255.255 | 00001010.0110011 1.11111111.11111111 |
| Hosts/Net: | 131070 | Class A, Private Internet |
80.190.170.0/23 [hoch]
Ein konkreteres Beispiel, denn alles was hier steht bezieht sich nicht nur auf RFC1918-Netze. 80.190.170.0/23 ist ein reelles Netz im Internet, zufälliger Weise der Firma Interdose zugeordnet. Es enthält insgesammt 512 IP-Adressen von denen – ohne weitere Aufteilung – 510 nutzbar sind. Der nutzbare Bereich ist also von 80.190.170.1 bis 80.190.171.254. Auch hier wieder sind 80.190.170.255 und 80.190.171.0 theoretisch nutzbar. 80.190.170.0/23 ist der hundertachtundzwanzigste Teil von 80.190.0.0/16.
Im nächsten Beispiel greifen wir ein Teil dieses Netzwerks noch weiter an.
| Address: | 80.190.170.0 | 01010000.10111110.1010101 0.00000000 |
| Netmask: | 255.255.254.0 = 23 | 11111111.11111111.1111111 0.00000000 |
| Wildcard: | 0.0.1.255 | 00000000.00000000.0000000 1.11111111 |
| => | ||
| Network: | 80.190.170.0/23 | 01010000.10111110.1010101 0.00000000 |
| HostMin: | 80.190.170.1 | 01010000.10111110.1010101 0.00000001 |
| HostMax: | 80.190.171.254 | 01010000.10111110.1010101 1.11111110 |
| Broadcast: | 80.190.171.255 | 01010000.10111110.1010101 1.11111111 |
| Hosts/Net: | 510 | Class A |
80.190.171.176/29 [hoch]
Für den NoName e.V. haben wir ein /29 reserviert. Ein /29 enthält insgesammt 8 IPs von denen 6 nutzbar sind. Die IP-Adresse 80.190.171.179 ist eine der IPs aus diesem Netz, und damit ein Teil von 80.190.171.176/29.
| Address: | 80.190.171.179 | 01010000.10111110.10101011.10110 011 |
| Netmask: | 255.255.255.248 = 29 | 11111111.11111111.11111111.11111 000 |
| Wildcard: | 0.0.0.7 | 00000000.00000000.00000000.00000 111 |
| => | ||
| Network: | 80.190.171.176/29 | 01010000.10111110.10101011.10110 000 |
| HostMin: | 80.190.171.177 | 01010000.10111110.10101011.10110 001 |
| HostMax: | 80.190.171.182 | 01010000.10111110.10101011.10110 110 |
| Broadcast: | 80.190.171.183 | 01010000.10111110.10101011.10110 111 |
| Hosts/Net: | 6 | Class A |
Subnetze sollten jetzt keine unlösbare Herausforderung mehr sein. Doch in allen Beispielen gingen wir davon aus, dass immer in exakt gleich große Teile zerschnitten wird. Man kann aber z.B. aus einem /24 auch ein /25, ein /26 und zwei /27 machen. Beim Beispiel 10.102.0.0/15 sprach ich vom Aggregieren von Netzen, also dem Zusammenfassen kleinerer Netze zu einem großen.
Unterschiedlich große Teile erreicht man z.B. über den Umweg, daß erst das vorhandene Netz (bleiben wir beim /24) in die größe des kleinsten benötigten Netzes aufgeteilt wird – hier ein /28. Außerdem benötigen wir noch drei Netze der Größe /27 und ein /25. Das /24 zerteilen wir in 16 Teile, um das /28 zu erhalten. Zwei /28 ergeben ein /27, also können wir die drei /27 erstellen, in dem wir jeweils zwei /28 zusammenfassen – und das genau sechs mal. Ein /25 besteht aus zwei /26, also aus vier /27. Aus acht /28 können wir also das gewünschte /25 aggregieren. Von den 16 Teilen verbleibt also am Ende noch genau ein /28 übrig, der Rest ist zu den benötigten Netzen aggregiert worden. Eigentlich gar nicht so schwer, oder?
Dann bleibt ja nur noch die Frage der richtigen Netzwerk-Maske offen. Jedes Mal ipcalc anwerfen ist auch nicht die optimale Methode, aber hier kommen die Zweierpotenzen ins Spiel. Und das schönste: an dieser Stelle darf sogar wieder in den Klassen A, B und C gedacht werden.
Ein /8 hat die Netz-Maske 255.0.0.0, ein /16 bringt 255.255.0.0 mit sich und /24 entspricht 255.255.255.0. Sobald die Klassen-Netze weiter unterteilt werden, ändern sich natürlich die Stellen der Maske, an denen sich das Netz ändert. Was war aber von der IT anders zu erwarten? Es Ändert sich immer nach dem gleichen Muster. Die nachfolgende Tablelle zeigt den Werdegang der Maske an Hand des Weges von einem /24 zu einem /16:
| CIDR | Subnetz-Maske |
|---|---|
| /24 | 255.255.255.0 |
| /23 | 255.255.254.0 |
| /22 | 255.255.252.0 |
| /21 | 255.255.248.0 |
| /20 | 255.255.240.0 |
| /19 | 255.255.224.0 |
| /18 | 255.255.192.0 |
| /17 | 255.255.128.0 |
| /16 | 255.255.0.0 |
Die Änderungen sind immer linear, was so viel bedeutet wie, daß sich beim Weg von einem /16 zu einem /8 die gleichen Änderungen ergeben, wenn auch eine Stelle weiter vorne in der Maske. Man brauch sich also eigentlich nur die folgenden Zahlen merken, und die Stelle der Maske. Ab da kann gezählt werden:
- 255
- 254
- 252
- 248
- 240
- 224
- 192
- 128
- 0
Oder die umgekehrte Reihenfolge, falls das Netz vekleinert werden soll:
- 0
- 128
- 192
- 224
- 240
- 248
- 252
- 254
- 255
War doch eigentlich gar nicht so schwer, oder?
Für Fragen und Anregungen bin ich natürlich immer offen. Ansonsten: viel Spaß mit den Netzen. Notfalls: ipcalc hilft!
Related:






gut geschrieben
DANKE!!
Danke für die Lobeshymnen.