Subnetmasker Berekenen (CIDR Uitgelegd met een Praktisch Voorbeeld)
Om een subnetmasker uit een CIDR-prefix te berekenen, zet je dat aantal bits op 1, te beginnen links in een 32-bits getal, vul je de rest aan met 0, en lees je elke groep van 8 bits terug als decimaal getal. Een /24-prefix zet de eerste 24 bits op 1, wat omgezet wordt naar 255.255.255.0.
Wat het CIDR-getal precies betekent
Een IPv4-adres bestaat uit 32 bits, geschreven als vier groepen van 8 bits (octetten) in decimale vorm. CIDR-notatie, de schuine streep met het getal achter een adres zoals 192.168.1.0/24, geeft aan hoeveel van die 32 bits vastliggen als netwerkdeel. De overgebleven bits horen bij de hosts op dat netwerk.
Een /24 legt de eerste 24 bits vast, waardoor 8 bits overblijven voor hosts. Een /26 legt 26 bits vast, waardoor er nog maar 6 overblijven. Hoe minder hostbits, hoe minder apparaten er op dat netwerk passen, en de rekenkunde erachter is een simpele macht van twee: een netwerk met h hostbits heeft 2^h adressen in totaal.
Het masker met de hand berekenen: 192.168.1.0/24
Neem de CIDR-prefix, 24, en schrijf een 32-bits getal uit met de eerste 24 bits op 1 en de laatste 8 op 0:
11111111.11111111.11111111.00000000
Zet elke groep van 8 bits om naar decimaal. Acht enen op een rij is 255, en acht nullen is 0:
255 . 255 . 255 . 0
Dat is het subnetmasker: 255.255.255.0. Om het netwerkadres te vinden, leg je het IP-adres en het masker in binaire vorm naast elkaar en pas je bit voor bit een bitwise AND toe, waarbij er alleen een 1 overblijft als beide invoerwaarden een 1 hebben:
| Octet 1 | Octet 2 | Octet 3 | Octet 4 | |
|---|---|---|---|---|
| IP-adres | 11000000 | 10101000 | 00000001 | 00000000 |
| Subnetmasker | 11111111 | 11111111 | 11111111 | 00000000 |
| Netwerk (AND) | 11000000 | 10101000 | 00000001 | 00000000 |
Dat levert een netwerkadres op van 192.168.1.0, in dit geval ongewijzigd omdat het hostdeel van het oorspronkelijke adres al helemaal nul was. Het broadcastadres is de omgekeerde bewerking: neem het netwerkadres en zet elke hostbit op 1, wat hier 192.168.1.255 oplevert. Alles ertussenin, 192.168.1.1 tot en met 192.168.1.254, is een bruikbaar hostadres. Dat zijn 256 adressen in totaal in het blok, min 2 gereserveerde (het netwerkadres en het broadcastadres), dus 254 bruikbare hosts.
Een /24 opsplitsen in vier /26-subnetten
Stel dat je 192.168.1.0/24 hebt en dit wilt opsplitsen in vier kleinere, gescheiden netwerken, bijvoorbeeld één per verdieping van een kantoor. De stap van /24 naar /26 leent 2 extra bits voor het netwerkdeel (26 − 24 = 2), en 2 geleende bits leveren altijd 2^2 = 4 gelijke subnetten op. Elk /26-subnet heeft nog 32 − 26 = 6 hostbits over, dus elk subnet bevat 2^6 = 64 adressen in totaal, waarvan 62 bruikbaar.
| Subnet | Netwerkadres | Bruikbaar bereik | Broadcast |
|---|---|---|---|
| 1 | 192.168.1.0/26 | 192.168.1.1 – 192.168.1.62 | 192.168.1.63 |
| 2 | 192.168.1.64/26 | 192.168.1.65 – 192.168.1.126 | 192.168.1.127 |
| 3 | 192.168.1.128/26 | 192.168.1.129 – 192.168.1.190 | 192.168.1.191 |
| 4 | 192.168.1.192/26 | 192.168.1.193 – 192.168.1.254 | 192.168.1.255 |
Elk netwerkadres springt met 64, de blokgrootte, en het broadcastadres van elk subnet is precies één minder dan het netwerkadres van het volgende subnet. Dat patroon geldt ongeacht welke prefix je gebruikt: de blokgrootte is altijd 2^h, waarbij h het aantal overgebleven hostbits is, en de subnetten dekken de adresruimte zonder gaten en zonder overlap.
CIDR-naar-subnetmasker referentietabel
Een spiekbriefje voor de prefixen die je in de praktijk tegenkomt, van een enkele /32-hostroute tot een /8-blok:
| CIDR | Subnetmasker | Adressen totaal | Bruikbare hosts |
|---|---|---|---|
| /8 | 255.0.0.0 | 16.777.216 | 16.777.214 |
| /16 | 255.255.0.0 | 65.536 | 65.534 |
| /24 | 255.255.255.0 | 256 | 254 |
| /25 | 255.255.255.128 | 128 | 126 |
| /26 | 255.255.255.192 | 64 | 62 |
| /27 | 255.255.255.224 | 32 | 30 |
| /28 | 255.255.255.240 | 16 | 14 |
| /29 | 255.255.255.248 | 8 | 6 |
| /30 | 255.255.255.252 | 4 | 2 |
| /31 | 255.255.255.254 | 2 | 2 (point-to-point) |
| /32 | 255.255.255.255 | 1 | 1 (hostroute) |
Bereken met je eigen adres
Typ hieronder een willekeurig IPv4-adres en CIDR-prefix of masker, en de uitsplitsing, met netwerkadres, broadcast, bruikbaar bereik en het masker in binaire vorm, werkt zich meteen bij terwijl je typt.
Veelgemaakte fouten en randgevallen
Vergeten dat het netwerk- en broadcastadres geen bruikbare hosts zijn. Een /24 heeft 256 adressen in totaal, maar slechts 254 die je daadwerkelijk aan een apparaat kunt toewijzen. Het is een veelvoorkomende off-by-one fout om capaciteit te plannen op basis van het totale aantal adressen in plaats van het bruikbare aantal, en dan twee adressen eerder dan verwacht zonder ruimte te zitten.
/31 en /32 behandelen als elke andere prefix. RFC 3021 maakt van /31 een speciaal geval voor point-to-point-verbindingen: beide adressen in het paar zijn bruikbaar, omdat er in een blok van 2 adressen geen ruimte overblijft voor een apart broadcastadres. Een /32 is een enkel adres op zichzelf, meestal gebruikt als hostroute of loopback-adres, en heeft helemaal geen netwerk- of broadcastadres om van af te trekken.
Subnetmasker en wildcard-masker door elkaar halen. Het subnetmasker markeert netwerkbits met enen, 255.255.255.0 voor een /24. Het wildcard-masker is de bitwise inverse ervan en markeert juist de hostbits, 0.0.0.255 voor diezelfde /24. Wildcard-maskers duiken op in access control lists op Cisco-apparatuur en vergelijkbare hardware, en een subnetmasker invoeren waar een apparaat een wildcard-masker verwacht (of andersom) zorgt er stilletjes voor dat de verkeerde set adressen wordt gematcht.
Aannemen dat een subnetmasker altijd een aaneengesloten reeks enen is. Een masker als 255.0.255.0 lijkt op het eerste gezicht plausibel, maar is ongeldig: de 1-bits vormen geen enkel aaneengesloten blok vanaf links, waardoor het helemaal niet als CIDR-prefix uit te drukken is. Een geldig subnetmasker bestaat altijd uit een aantal opeenvolgende 1-bits gevolgd door 0-bits, niets anders.
Veelgestelde vragen
Hoe zet ik een subnetmasker terug om naar een CIDR-prefix?
Tel het aantal 1-bits in het masker, van links naar rechts in binaire vorm. 255.255.255.0 is 11111111.11111111.11111111.00000000, met 24 enen, dus dat is een /24. Dit werkt alleen netjes als het masker een geldige aaneengesloten reeks enen gevolgd door nullen is; een masker als 255.0.255.0 heeft geen CIDR-equivalent omdat de bits niet aaneengesloten zijn.
Waarom levert het lenen van bits voor subnetten altijd een macht van twee op? Elke bit die je van het hostdeel leent, verdubbelt het aantal mogelijke waarden dat die bit kan aannemen, 0 of 1. Leen 1 bit en je krijgt 2 subnetten, leen 2 en je krijgt 4, leen 3 en je krijgt 8. Het is dezelfde reden waarom een byte (8 bits) 256 verschillende waarden kan weergeven: elke extra bit verdubbelt het aantal.
Wat is het verschil tussen een subnetmasker en een default gateway? Een subnetmasker vertelt een apparaat welk deel van een IP-adres het netwerk is en welk deel de host, zodat het kan bepalen of een ander adres op hetzelfde lokale netwerk staat. Een default gateway is een aparte instelling, het IP-adres van de router waar een apparaat verkeer naartoe stuurt zodra het doel niet op het lokale netwerk ligt. Je hebt beide correct geconfigureerd nodig om iets buiten je eigen subnet te bereiken.
Kan ik subnetten met een prefix die niet gelijk deelt, zoals een /24 in 3 netwerken splitsen? Niet in precies 3 gelijke delen, nee, want subnetten splitst een blok altijd in een macht van twee. Een /24 opsplitsen levert 2, 4, 8, 16, enzovoort op, nooit 3. In de praktijk betekent dit dat je opsplitst in 4 (door 2 bits te lenen) en één /26 ongebruikt laat, of verder opsplitst voor een kleinere afdeling, in plaats van een exacte 3-voudige split te forceren.