IPAddress-Lookup.com

Subnetting en CIDR-notatie uitgelegd (met voorbeelden)

IPAddress-Lookup.com ·

Als je ooit naar een adres als 192.168.1.0/24 en je je afgevraagd hebt wat die schuine streep en dat getal eigenlijk betekenen, dan ben je hier precies op de juiste plek. Subnetting en CIDR-notatie vormen de kern van hoe moderne netwerken worden ontworpen, beveiligd en gerouteerd, maar het onderwerp staat bekend als intimiderend. Dat hoeft niet zo te zijn. Zodra je begrijpt dat een IP-adres eigenlijk gewoon een reeks bits is, en dat een subnetmasker je simpelweg vertelt waar het „netwerk“-gedeelte ophoudt en het „host“-gedeelte begint, valt de rest vanzelf op zijn plaats. In deze handleiding bouwen we het concept op vanaf de basisprincipes, werken we verschillende praktijkvoorbeelden volledig door en geven we je een spiekbriefje dat je naast je toetsenbord kunt bewaren. Onderweg kun je elke berekening zelf controleren met onze Subnet Calculator-tool.

Wat is een subnet, en waarom maken we überhaupt gebruik van subnetten?

Een subnet, kort voor subnetwerk, is een logische onderverdeling van een groter IP-netwerk. In plaats van elk apparaat op één enorm, plat netwerk te plaatsen, verdelen technici die adresruimte in kleinere, op zichzelf staande blokken. Elk blok is een subnet met een eigen adresbereik, een eigen netwerkadres en een eigen broadcastadres. Routers sturen verkeer tussen subnetten door, terwijl apparaten binnen één subnet rechtstreeks met elkaar kunnen communiceren zonder dat er een router aan te pas komt.

Subnetting is geen zinloos werk. Er zijn verschillende concrete redenen waarom netwerken op deze manier worden verdeeld:

  • Efficiëntie en zuinig omgaan met adressen. Door een organisatie één gigantisch blok toe te wijzen, worden adressen verspild. Met subnetting kun je precies zoveel adressen toewijzen als een afdeling, verdieping of filiaal daadwerkelijk nodig heeft, in plaats van af te ronden naar de dichtstbijzijnde enorme klasse.
  • Kleinere broadcastdomeinen. Bepaald verkeer, zoals ARP-verzoeken, wordt naar elke host in een subnet uitgezonden. Op een plat netwerk met duizenden apparaten wordt die communicatie een belemmering. Door het netwerk in subnetten op te splitsen, blijft elk broadcastdomein klein en blijft het netwerk snel.
  • Beveiligingssegmentatie. Door servers, gast-wifi en interne werkstations op afzonderlijke subnetten te plaatsen, kun je firewallregels en toegangscontrolelijsten tussen deze subnetten toepassen. Een gecompromitteerd gastapparaat kan geen database-server bereiken als beide zich op geïsoleerde subnetten bevinden.
  • Eenvoudigere, snellere routing. Routers nemen beslissingen op basis van netwerkprefixen. Goed ontworpen subnetten kunnen worden samengevat in één enkele route, waardoor routingtabellen kleiner worden en doorstuurbeslissingen via het internet worden versneld.

Een korte opfrissing van de binaire basis: bits, octetten en maskers

Een IPv4-adres is 32 bits lang. We schrijven het op als vier decimale getallen gescheiden door punten, zoals 192.168.1.10, maar elk van die getallen is in feite een binaire groep van 8 bits, een zogenaamd octet. Acht bits per octet, vier octetten, is in totaal 32 bits. Elk octet kan een waarde van 0 tot 255 bevatten, omdat acht bits 2^8 = 256 verschillende waarden kunnen vertegenwoordigen.

De bitposities in een octet hebben de plaatswaarden 128, 64, 32, 16, 8, 4, 2 en 1. Om te converteren, tel je de posities bij elkaar op die een 1 bevatten. Bijvoorbeeld, het octet 11000000 is 128 + 64 = 192, en 10101000 is 128 + 32 + 8 = 168. Dus 192.168.1.10 in binair is dat:

  • 192 = 11000000
  • 168 = 10101000
  • 1 = 00000001
  • 10 = 00001010

Het subnetmasker is ook een 32-bits waarde, maar het is bijzonder: het bestaat altijd uit een reeks 1-en gevolgd door een reeks 0-en. De 1-en geven het netwerkgedeelte van het adres aan en de 0-en het hostgedeelte. Een masker van 255.255.255.0 is 11111111.11111111.11111111.00000000 in binair, wat neerkomt op 24 enen gevolgd door 8 nullen. Om te bepalen tot welk netwerk een adres behoort, voer je een bitgewijze AND-bewerking uit tussen het adres en het masker: overal waar het masker een 1 heeft, blijft het adresbit behouden; overal waar het masker een 0 heeft, wordt het bit 0. Die AND-bewerking is de allerbelangrijkste berekening bij het hele proces van subnetting.

Classful addressing: een korte geschiedenisles

In de begintijd van het internet werden adressen toegewezen in vaste „klassen“ op basis van de waarde van het eerste octet. Dit wordt classful addressing genoemd, en hoewel het inmiddels achterhaald is, verklaart het begrip ervan waarom CIDR zo’n verbetering was.

  • Klasse A omvatte de eerste octetten 1 tot en met 126 en maakte gebruik van een 8-bits netwerkgedeelte (masker 255.0.0.0, een /8), en kende aan elk netwerk ongeveer 16,7 miljoen hosts toe.
  • Klasse B omvatte de waarden 128 tot en met 191, maakte gebruik van een 16-bits netwerkgedeelte (masker 255.255.0.0, a /16) en bood ongeveer 65.000 hosts per netwerk.
  • Klasse C omvatte de nummers 192 tot en met 223, maakte gebruik van een 24-bits netwerkgedeelte (masker 255.255.255.0, een /24) en bood slechts 254 bruikbare hosts.

Het probleem was de starheid. Een organisatie die 2.000 adressen nodig had, was te groot voor een klasse C (254 hosts), maar moest een klasse B (65.000 hosts) toegewezen krijgen, waardoor meer dan 60.000 adressen werden verspild. Nu het internet exponentieel groeide, dreigde deze verspilling de IPv4-ruimte volledig uit te putten. Er was iets flexibelers nodig.

Maak kennis met CIDR: de notatie bit voor bit uitgelegd

CIDR, of Classless Inter-Domain Routing, werd in 1993 geïntroduceerd ter vervanging van het starre klassensysteem. In plaats van de netwerkgrootte aan het eerste octet te koppelen, laat CIDR de grens tussen netwerk en host overal binnen de 32 bits vallen. We drukken dit uit met de inmiddels bekende slash-notatie, het zogenaamde CIDR-prefix.

Het getal na de schuine streep is simpelweg het aantal 1-bits in het subnetmasker, met andere woorden: hoeveel bits tot het netwerk behoren. Dus:

  • /8 betekent 8 netwerkbits, masker 255.0.0.0 (de oude Klasse A-grootte).
  • /16 betekent 16 netwerkbits, masker 255.255.0.0 (de oude Klasse B-grootte).
  • /24 betekent 24 netwerkbits, masker 255.255.255.0 (de oude Klasse C-grootte).
  • /26 betekent 26 netwerkbits, masker 255.255.255.192, waardoor er slechts 6 hostbits overblijven.

De magische formule voor het aantal adressen dat een prefix bevat, is 2^(32 − n), waarbij n de prefixlengte is. Omdat de totale IPv4-ruimte 32 bits beslaat, blijven na aftrek van de netwerkbits de hostbits over, en 2 tot die macht geeft het totale aantal adressen in het blok. Voor een /24 dat zijn 2^(32−24) = 2^8 = 256 adressen in totaal. Voor een /26 zijn dat 2^(32−26) = 2^6 = 64 adressen. Hoe groter het prefixnummer, hoe kleiner het subnet.

De belangrijkste waarden van een subnet berekenen

Elk subnet heeft een aantal speciale adressen die je moet kunnen identificeren. Hieronder wordt uitgelegd wat elk adres betekent en hoe je het kunt vinden.

  1. Netwerkadres. Het allereerste adres in het blok. Alle hostbits zijn 0. Dit identificeert het subnet zelf en kan niet aan een apparaat worden toegewezen.
  2. Broadcastadres. Het allerlaatste adres in het blok. Alle hostbits zijn 1. Verkeer dat hierheen wordt verzonden, bereikt elke host in het subnet, dus het is ook onbruikbaar als hostadres.
  3. Eerste bruikbare host. Eén adres boven het netwerkadres (netwerk + 1).
  4. Laatste bruikbare host. Eén adres onder het broadcastadres (broadcast − 1).
  5. Totaal aantal adressen. 2^(32 − n).
  6. Bruikbare hosts. Het totaal minus 2, omdat het netwerk- en het broadcastadres gereserveerd zijn. De formule is 2^(32 − n) − 2.

Er is nog één waarde die de moeite waard is om te kennen: het wildcardmasker. Dit is het omgekeerde van het subnetmasker, verkregen door elke bit om te draaien (elk octet van 255 af te trekken). Waar een subnetmasker van 255.255.255.0 het netwerk selecteert, selecteert het bijbehorende wildcardmasker 0.0.0.255 selecteert het hostbereik. Wildcardmaskers komen voortdurend voor in Cisco-toegangscontrolelijsten en OSPF-configuraties, dus het loont de moeite om ze te herkennen.

Uitgewerkt voorbeeld 1: 192.168.1.0/24

Laten we beginnen met het meest eenvoudige geval. Een /24 eindigt netjes op een octetgrens, dus er is geen binaire acrobatiek nodig. Met 24 netwerkbits is het hostgedeelte het gehele laatste octet.

EigenschapWaarde
CIDR-notatie192.168.1.0/24
Subnetmasker255.255.255.0
Jokermasker0.0.0.255
Netwerkadres192.168.1.0
Broadcastadres192.168.1.255
Eerste bruikbare host192.168.1.1
Laatste bruikbare host192.168.1.254
Totaal aantal adressen256 (2^8)
Bruikbare hosts254

Dit is het klassieke netwerk voor thuis en op het kleine kantoor. Alles van .1 tot .254 is beschikbaar voor apparaten, .0 geeft de naam van het netwerk aan, en .255 is de broadcast.

Voorbeeld 2: 10.0.0.0/26

Nu een prefix dat niet op een octetgrens valt. Een /26 betekent 26 netwerkbits, dus het laatste octet wordt opgesplitst: de eerste twee bits behoren tot het netwerk en de overige zes bits zijn hostbits. Zes hostbits leveren 2^6 = 64 adressen per subnet op. Dat betekent /26 subnetten in stappen van 64 in het laatste octet: 0, 64, 128, 192.

Als we ons concentreren op het eerste blok 10.0.0.0/26: het netwerkmasker is 255.255.255.192 omdat 11000000 in het laatste octet gelijk is aan 192.

EigenschapWaarde
CIDR-notatie10.0.0.0/26
Subnetmasker255.255.255.192
Jokermasker0.0.0.63
Netwerkadres10.0.0.0
Broadcastadres10.0.0.63
Eerste bruikbare host10.0.0.1
Laatste bruikbare host10.0.0.62
Totaal aantal adressen64 (2^6)
Bruikbare hosts62

Het volgende subnet in de reeks zou zijn 10.0.0.64/26 (hosts .65 tot .126, broadcast .127), vervolgens 10.0.0.128/26, en ten slotte 10.0.0.192/26. Merk op dat de blokgrootte, 64, precies het "magische getal" is dat bepaalt waar elk subnet begint.

Praktijkvoorbeeld 3: 172.16.5.0/28

In ons laatste voorbeeld wordt het subnet nog kleiner gemaakt. Een /28 heeft 28 netwerkbits en slechts 4 hostbits, wat 2^4 = 16 adressen in totaal oplevert en slechts 14 bruikbare hosts. Het laatste octet wordt gebruikt 11110000 voor het netwerkgedeelte, wat gelijk is aan 240, dus het masker is 255.255.255.240. Subnetten worden in stappen van 16 verdeeld.

EigenschapWaarde
CIDR-notatie172.16.5.0/28
Subnetmasker255.255.255.240
Jokermasker0.0.0.15
Netwerkadres172.16.5.0
Broadcastadres172.16.5.15
Eerste bruikbare host172.16.5.1
Laatste bruikbare host172.16.5.14
Totaal aantal adressen16 (2^4)
Bruikbare hosts14

A /28 is een populaire grootte voor kleine point-to-point-netwerken en voor strak beheerde serversegmenten waar je slechts een handvol adressen nodig hebt. Als je slechts twee hosts nodig had, bijvoorbeeld voor een verbinding tussen twee routers, zou je helemaal teruggaan naar een /30, die precies 2 bruikbare adressen biedt.

Het spiekbriefje voor subnetting

In plaats van elke keer opnieuw de machten van twee te berekenen, kun je de onderstaande tabel beter uit je hoofd leren of als bladwijzer opslaan. Deze omvat de meest voorkomende prefixen, van /24 tot /30, met vermelding van het masker, de joker, de blokgrootte (totaal aantal adressen) en het aantal bruikbare hosts.

CIDRSubnetmaskerJokerTotaal aantal adressenBeschikbare hosts
/24255.255.255.00.0.0.255256254
/25255.255.255.1280.0.0.127128126
/26255.255.255.1920.0.0.636462
/27255.255.255.2240.0.0.313230
/28255.255.255.2400.0.0.151614
/29255.255.255.2480.0.0.786
/30255.255.255.2520.0.0.342

Let op het elegante patroon: elke stap van één bit in het prefix halveert het aantal hosts, en elke maskerwaarde in het laatste octet is 128, 192, 224, 240, 248 of 252. Dat zijn de enige geldige waarden die een laatste maskeroctet kan aannemen.

VLSM: subnetten van verschillende grootte

Bij traditionele subnetting wordt een netwerk in stukken van gelijke grootte verdeeld, wat zonde is als je afdelingen heel verschillende behoeften hebben. Variable Length Subnet Masking (VLSM) lost dit op door je verschillende prefixlengtes toe te staan binnen hetzelfde algemene netwerk. In feite maak je een subnet van een subnet.

Stel dat je 192.168.10.0/24 en één afdeling met 100 hosts, één met 50 hosts en twee routerverbindingen van elk 2 hosts moet bedienen. Met VLSM zou je het volgende toewijzen:

  • Een /25 (126 hosts) voor de grote afdeling: 192.168.10.0/25.
  • A /26 (62 hosts) voor de middelgrote afdeling: 192.168.10.128/26.
  • Twee /30 blokken (elk 2 hosts) voor de routerverbindingen, afgetrokken van de resterende ruimte.

De gouden regel van VLSM is om eerst de grootste subnetten toe te wijzen en vervolgens naar beneden te werken, zodat de blokken netjes in elkaar passen zonder elkaar te overlappen. Zo voorkomen adresplannen in de praktijk verspilling en laten ze toch ruimte over om te groeien.

Een opmerking over IPv6-prefixen

Alles hierboven heeft betrekking op IPv4, maar de CIDR-notatie is rechtstreeks toepasbaar op IPv6, alleen met veel grotere getallen. Een IPv6-adres bestaat uit 128 bits in plaats van 32, dus prefixen lopen helemaal door tot /128. De belangrijkste die je moet kennen is de /64: volgens een al lang bestaande conventie is een enkel IPv6-subnet een /64, waarbij de eerste 64 bits worden gereserveerd voor het netwerkprefix en de laatste 64 bits voor de host, oftewel de „interface-identificatie“. Dat levert 2^64 adressen per subnet op, een bijna onvoorstelbaar aantal. Daarom hoeft men bij IPv6 zelden de adresbesparende capriolen uit te halen die bij IPv4-subnetting zo gebruikelijk zijn. Als je een diepgaandere vergelijking van de twee protocollen wilt, bekijk dan onze gids over IPv4 versus IPv6.

Alles op een rijtje

Subnetting komt neer op drie ideeën: een IP-adres bestaat uit 32 bits, het masker bepaalt waar het netwerk eindigt, en de formule 2^(32 − n) geeft aan hoe groot elk blok is. Als je die onder de knie hebt, is de rest rekenwerk. Begin met het bepalen van het prefix, zet dit om in een blokgrootte, zoek de netwerk- en broadcastadressen, en het bruikbare bereik ligt daartussen. Oefen met een paar voorbeelden en het proces gaat je vanzelf af. Als je je werk direct wilt controleren, voer dan een willekeurig adres en prefix in onze Subnet Calculator-tool in en vergelijk de resultaten met die van jezelf.

Veelgestelde vragen

Waarom trekken we 2 af van het totale aantal adressen om het aantal bruikbare hosts te krijgen?

Twee adressen in elk IPv4-subnet zijn gereserveerd en kunnen niet aan apparaten worden toegewezen: het netwerkadres (alle hostbits op 0), dat het subnet een naam geeft, en het broadcastadres (alle hostbits op 1), dat wordt gebruikt om alle hosts tegelijk te bereiken. Als je deze twee aftrekt, blijft het aantal adressen over dat je daadwerkelijk aan hosts kunt toewijzen, dus 2^(32 − n) − 2.

Wat is het verschil tussen een subnetmasker en een CIDR-prefix?

Ze geven exact dezelfde informatie weer in twee formaten. Een subnetmasker zoals 255.255.255.0 is een 32-bits decimaalgetal met punten, terwijl het CIDR-prefix /24 gewoon het aantal 1-bits in dat masker is. Elk masker kan als prefix worden geschreven en omgekeerd; de CIDR-notatie is gewoon korter en minder foutgevoelig.

Wat betekent de /24 in een IP-adres eigenlijk?

Het getal na de schuine streep is de prefixlengte, dat wil zeggen hoeveel van de 32 bits van het adres het netwerk definiëren. Een /24 reserveert de eerste 24 bits voor het netwerk en laat 8 bits over voor hosts, wat in totaal 256 adressen (2^8) en 254 bruikbare adressen oplevert. Dit komt overeen met het subnetmasker 255.255.255.0.

Waarom heeft CIDR classful addressing vervangen?

Classful-adressering dwong netwerkgroottes om in enorme stappen te springen: 254 hosts, vervolgens 65.000, daarna 16 miljoen, zonder tussenliggende opties. Organisaties kregen stelselmatig veel meer adressen toegewezen dan ze nodig hadden, waardoor de beperkte IPv4-ruimte werd verspild. Met CIDR kan de netwerkgrens op elke willekeurige bit vallen, zodat blokken op maat kunnen worden gemaakt; bovendien kunnen routes worden samengevat, waardoor routetabellen kleiner worden.

Waarvoor wordt een wildcard-masker gebruikt?

Een wildcard-masker is de bitgewijze inverse van een subnetmasker, te berekenen door elk octet van 255 af te trekken. Terwijl een subnetmasker overeenkomt met het netwerkgedeelte, geeft een wildcard-masker aan welke bits mogen variëren. Het komt vooral voor in Cisco-toegangscontrolelijsten en routeringsprotocollen zoals OSPF om adresbereiken beknopt te beschrijven.

Gelden dezelfde regels voor subnetting ook voor IPv6?

Het CIDR-concept is identiek: een prefixlengte na een schuine streep markeert de netwerkgrens. Het verschil zit in de schaal. IPv6-adressen bestaan uit 128 bits in plaats van 32, en de standaard subnetgrootte is een /64, wat 2^64 hostadressen per subnet oplevert. Omdat de ruimte zo enorm is, richt IPv6-subnetting zich op structuur en hiërarchie in plaats van het tot het uiterste benutten van elk adres.