Sådan Beregner Du en Undernetmaske (CIDR Forklaret med et Praktisk Eksempel)
For at beregne en undernetmaske ud fra en CIDR-præfiks sætter du det antal bit til 1, talt fra venstre i et 32-bit tal, fylder resten med 0, og læser hver gruppe af 8 bit tilbage som et decimaltal. En /24-præfiks sætter de første 24 bit til 1, hvilket bliver til 255.255.255.0.
Hvad CIDR-tallet faktisk betyder
En IPv4-adresse er 32 bit, skrevet som fire grupper af 8 bit (oktetter) i decimal. CIDR-notation, skråstregen og tallet efter en adresse som 192.168.1.0/24, fortæller hvor mange af de 32 bit der er låst fast som netværksdelen. De resterende bit tilhører værterne på det netværk.
En /24 låser de første 24 bit fast og efterlader 8 bit til værter. En /26 låser 26 bit fast og efterlader kun 6. Jo færre bit der er tilbage til værter, jo færre enheder kan netværket rumme, og matematikken bag det er en ren toerpotens: et netværk med h værtsbit har 2^h adresser i alt.
Beregning af masken i hånden: 192.168.1.0/24
Tag CIDR-præfikset, 24, og skriv et 32-bit tal hvor de første 24 bit er sat til 1 og de sidste 8 til 0:
11111111.11111111.11111111.00000000
Omregn hver gruppe af 8 bit til decimal. Otte 1-taller i træk giver 255, og otte 0-er giver 0:
255 . 255 . 255 . 0
Det er undernetmasken: 255.255.255.0. For at finde netværksadressen sætter du IP-adressen og masken op i binær og udfører en bitvis AND, bit for bit, hvor resultatet kun bliver 1, hvis begge input har 1:
| Oktet 1 | Oktet 2 | Oktet 3 | Oktet 4 | |
|---|---|---|---|---|
| IP-adresse | 11000000 | 10101000 | 00000001 | 00000000 |
| Undernetmaske | 11111111 | 11111111 | 11111111 | 00000000 |
| Netværk (AND) | 11000000 | 10101000 | 00000001 | 00000000 |
Det giver en netværksadresse på 192.168.1.0, uændret i dette tilfælde fordi værtsdelen af den oprindelige adresse allerede bestod af nuller. Broadcast-adressen er den modsatte operation: tag netværksadressen og sæt alle værtsbit til 1, hvilket her giver 192.168.1.255. Alt derimellem, 192.168.1.1 til 192.168.1.254, er en brugbar værtsadresse. Det giver 256 adresser i alt i blokken, minus 2 reserverede (netværksadressen og broadcast-adressen), altså 254 brugbare værter.
Opdeling af en /24 i fire /26-undernet
Sig du har 192.168.1.0/24 og skal dele den op i fire mindre, separate netværk, måske ét pr. etage på et kontor. At gå fra /24 til /26 låner 2 ekstra bit til netværksdelen (26 − 24 = 2), og 2 lånte bit giver altid 2^2 = 4 lige store undernet. Hvert /26-undernet har 32 − 26 = 6 værtsbit tilbage, så hvert af dem rummer 2^6 = 64 adresser i alt, heraf 62 brugbare.
| Undernet | Netværksadresse | Brugbart interval | 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 |
Læg mærke til at hver netværksadresse springer 64 frem, blokstørrelsen, og at hvert undernets broadcast-adresse altid er præcis én mindre end det næste undernets netværksadresse. Det mønster gælder uanset hvilken præfiks du opdeler til: blokstørrelsen er altid 2^h, hvor h er antallet af tilbageværende værtsbit, og undernettene lægger sig ved siden af hinanden uden huller og uden overlap.
Referencetabel: CIDR til undernetmaske
Et snydeark over de præfikser, du reelt støder på, fra en enkelt /32-værtsrute op til en /8-blok:
| CIDR | Undernetmaske | Adresser i alt | Brugbare værter |
|---|---|---|---|
| /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 (punkt-til-punkt) |
| /32 | 255.255.255.255 | 1 | 1 (værtsrute) |
Beregn med din egen adresse
Skriv en vilkårlig IPv4-adresse og CIDR-præfiks eller -maske herunder, og opdelingen, netværksadresse, broadcast, brugbart interval, og masken i binær, opdateres mens du skriver.
Almindelige fejl og specialtilfælde
Glemmer at netværks- og broadcast-adressen ikke er brugbare værter. En /24 har 256 adresser i alt, men kun 254 du reelt kan tildele en enhed. Det er en klassisk off-by-one-fejl at planlægge kapacitet ud fra det samlede antal adresser i stedet for det brugbare antal, og så løbe tør for plads to adresser før forventet.
Behandler /31 og /32 som alle andre præfikser. RFC 3021 gør /31 til et særtilfælde for punkt-til-punkt-forbindelser: begge adresser i parret er brugbare, fordi der ikke er plads i en blok på 2 adresser til at afsætte en til broadcast. En /32 er en enkelt adresse for sig selv, oftest set som en værtsrute eller en loopback-adresse, og den har slet ingen netværks- eller broadcast-adresse at trække fra.
Forveksler undernetmasken med wildcard-masken. Undernetmasken markerer netværksbit med 1-taller, 255.255.255.0 for en /24. Wildcard-masken er dens bitvise modstykke og markerer i stedet værtsbit med 1-taller, 0.0.0.255 for samme /24. Wildcard-masker dukker op i adgangslister på Cisco-udstyr og lignende, og skriver du en undernetmaske ind, hvor en enhed forventer en wildcard-maske (eller omvendt), rammer den stille og roligt det forkerte sæt adresser.
Antager at en undernetmaske altid er en sammenhængende række af 1-taller. En maske som 255.0.255.0 ser plausibel ud ved et hurtigt blik, men er ikke gyldig: 1-bittene udgør ikke en sammenhængende blok fra venstre, så den kan slet ikke udtrykkes som en CIDR-præfiks. Rigtige undernetmasker er altid et antal indledende 1-bit efterfulgt af afsluttende 0-bit, intet andet.
Ofte stillede spørgsmål
Hvordan konverterer jeg en undernetmaske tilbage til en CIDR-præfiks?
Tæl antallet af 1-bit i masken, læst fra venstre mod højre i binær. 255.255.255.0 er 11111111.11111111.11111111.00000000, som har 24 ettaller, så det er en /24. Det virker kun rent, når masken er en gyldig, sammenhængende række af 1-taller efterfulgt af 0-taller. En maske som 255.0.255.0 har ingen CIDR-tilsvarende, fordi dens bit ikke er sammenhængende.
Hvorfor giver det at låne bit til undernet altid en toerpotens? Hvert bit du låner fra værtsdelen, fordobler antallet af mulige værdier det bit kan repræsentere, 0 eller 1. Lån 1 bit og du får 2 undernet, lån 2 og du får 4, lån 3 og du får 8. Det er samme grund til at en byte (8 bit) kan repræsentere 256 forskellige værdier: hvert ekstra bit fordobler antallet.
Hvad er forskellen på en undernetmaske og en standardgateway? En undernetmaske fortæller en enhed, hvilken del af en IP-adresse der er netværket, og hvilken del der er værten, så den kan afgøre om en anden adresse ligger på dens eget lokale netværk. En standardgateway er en separat indstilling, IP-adressen på den router en enhed sender trafik til, når destinationen ikke ligger på dens lokale netværk. Du skal have begge sat korrekt op, for at en enhed kan nå noget uden for sit eget undernet.
Kan jeg dele op med en præfiks, der ikke går lige op, som at opdele en /24 i 3 netværk? Ikke i præcis 3 lige store dele, nej, for opdeling i undernet giver altid en toerpotens. Deler du en /24 op, får du 2, 4, 8, 16 og så videre, aldrig 3. I praksis betyder det, at du ville dele op i 4 (ved at låne 2 bit) og enten lade et /26 stå ubrugt eller dele det yderligere op til en mindre afdeling, i stedet for at forsøge at tvinge en præcis 3-vejs opdeling igennem.