Utvecklare

Så Här Beräknar Du en Nätmask (CIDR Förklarat med ett Praktiskt Exempel)

7 min läsning

För att beräkna en nätmask utifrån ett CIDR-prefix sätter du så många bitar som prefixet anger till 1, räknat från vänster i ett 32-bitarstal, fyller resten med 0, och läser sedan varje 8-bitarsgrupp tillbaka som ett decimaltal. Ett /24-prefix sätter de första 24 bitarna till 1, vilket blir 255.255.255.0.

Vad CIDR-talet faktiskt betyder

En IPv4-adress är 32 bitar, skriven som fyra 8-bitarsgrupper (oktetter) i decimalform. CIDR-notationen, snedstrecket och talet efter en adress som 192.168.1.0/24, anger hur många av dessa 32 bitar som är låsta till nätverksdelen. Bitarna som blir över tillhör värdarna på det nätverket.

Ett /24 låser de första 24 bitarna och lämnar 8 bitar till värdar. Ett /26 låser 26 bitar och lämnar bara 6. Ju färre bitar som blir kvar till värdar, desto färre enheter ryms i nätverket, och matematiken bakom det är en ren tvåpotens: ett nätverk med h värdbitar rymmer 2^h adresser totalt.

Räkna ut masken för hand: 192.168.1.0/24

Ta CIDR-prefixet, 24, och skriv ut ett 32-bitarstal där de första 24 bitarna är 1 och de sista 8 är 0:

11111111.11111111.11111111.00000000

Omvandla varje 8-bitarsgrupp till decimalform. Åtta ettor i rad blir 255, och åtta nollor blir 0:

255 . 255 . 255 . 0

Det är nätmasken: 255.255.255.0. För att få fram nätverksadressen ställer du upp IP-adressen och masken bit för bit i binärform och kör en bitvis AND, där resultatet bara blir 1 om båda talen har 1 på samma position:

Oktett 1Oktett 2Oktett 3Oktett 4
IP-adress11000000101010000000000100000000
Nätmask11111111111111111111111100000000
Nätverk (AND)11000000101010000000000100000000

Resultatet blir nätverksadressen 192.168.1.0, oförändrad i det här fallet eftersom värddelen av den ursprungliga adressen redan bestod av nollor. Broadcastadressen är den motsatta operationen: ta nätverksadressen och sätt varje värdbit till 1, vilket här ger 192.168.1.255. Allt däremellan, från 192.168.1.1 till 192.168.1.254, är en användbar värdadress. Det blir 256 adresser totalt i blocket, minus 2 reserverade (nätverksadressen och broadcastadressen), vilket ger 254 användbara värdar.

Att dela upp ett /24 i fyra /26-subnät

Säg att du har 192.168.1.0/24 och behöver dela upp det i fyra mindre, separata nätverk, kanske ett per våningsplan på ett kontor. Att gå från /24 till /26 innebär att man lånar 2 extra bitar till nätverksdelen (26 − 24 = 2), och 2 lånade bitar ger alltid 2^2 = 4 lika stora subnät. Varje /26-subnät har 32 − 26 = 6 värdbitar kvar, så vart och ett rymmer 2^6 = 64 adresser totalt, varav 62 är användbara.

SubnätNätverksadressAnvändbart intervallBroadcast
1192.168.1.0/26192.168.1.1192.168.1.62192.168.1.63
2192.168.1.64/26192.168.1.65192.168.1.126192.168.1.127
3192.168.1.128/26192.168.1.129192.168.1.190192.168.1.191
4192.168.1.192/26192.168.1.193192.168.1.254192.168.1.255

Lägg märke till att varje nätverksadress hoppar med 64, blockstorleken, och att varje subnäts broadcastadress är exakt ett tal lägre än nästa subnäts nätverksadress. Det mönstret gäller oavsett vilket prefix du delar upp i: blockstorleken är alltid 2^h, där h är antalet värdbitar som är kvar, och subnäten läggs sida vid sida utan luckor och utan överlapp.

Referenstabell: CIDR till nätmask

En snabbreferens för de prefix du faktiskt stöter på, från en enskild /32-värdrutt upp till ett /8-block:

CIDRNätmaskAdresser totaltAnvändbara värdar
/8255.0.0.016 777 21616 777 214
/16255.255.0.065 53665 534
/24255.255.255.0256254
/25255.255.255.128128126
/26255.255.255.1926462
/27255.255.255.2243230
/28255.255.255.2401614
/29255.255.255.24886
/30255.255.255.25242
/31255.255.255.25422 (punkt-till-punkt)
/32255.255.255.25511 (värdrutt)

Prova med din egen adress

Skriv in valfri IPv4-adress och CIDR-prefix eller mask nedan, så uppdateras uppdelningen, nätverksadressen, broadcasten, det användbara intervallet och masken i binärform medan du skriver.

IPv4 Subnätskalkylator (CIDR)
Gratis, ingen registrering, fungerar på alla enheter.
Öppna hela verktyget

Vanliga misstag och specialfall

Att glömma att nätverksadressen och broadcastadressen inte är användbara värdar. Ett /24 har 256 adresser totalt, men bara 254 av dem går att tilldela en enhet. Det är ett vanligt fel att planera kapacitet utifrån det totala antalet adresser i stället för det användbara antalet, och sedan få slut på plats två adresser tidigare än väntat.

Att behandla /31 och /32 som vilket prefix som helst. RFC 3021 gör /31 till ett specialfall för punkt-till-punkt-länkar: båda adresserna i paret är användbara, eftersom ett block med bara 2 adresser inte har utrymme att avsätta en till broadcast. Ett /32 är en enda adress för sig själv, oftast sedd som en värdrutt eller en loopback-adress, och den har varken någon nätverks- eller broadcastadress att dra bort över huvud taget.

Att blanda ihop nätmasken och wildcardmasken. Nätmasken markerar nätverksbitar med ettor, 255.255.255.0 för ett /24. Wildcardmasken är dess bitvisa motsats, den markerar i stället värdbitar med ettor, 0.0.0.255 för samma /24. Wildcardmasker används i access control lists på Cisco-utrustning och liknande, och att skriva in en nätmask där en enhet väntar sig en wildcardmask (eller tvärtom) gör att fel uppsättning adresser matchas utan att något felmeddelande visas.

Att anta att en nätmask alltid är en sammanhängande rad ettor. En mask som 255.0.255.0 ser rimlig ut vid en snabb blick men är inte giltig: ettorna bildar inte ett enda obrutet block från vänster, så den går inte att uttrycka som ett CIDR-prefix alls. Riktiga nätmasker består alltid av ett visst antal inledande ettor följt av nollor, aldrig något annat.

Vanliga frågor

Hur omvandlar jag en nätmask tillbaka till ett CIDR-prefix? Räkna antalet ettor i masken, läst från vänster till höger i binärform. 255.255.255.0 är 11111111.11111111.11111111.00000000, vilket har 24 ettor, alltså är det ett /24. Det här fungerar bara rent när masken är en giltig sammanhängande rad ettor följd av nollor, en mask som 255.0.255.0 saknar CIDR-motsvarighet eftersom bitarna inte är sammanhängande.

Varför ger det alltid en tvåpotens att låna bitar till subnät? Varje bit du lånar från värddelen fördubblar antalet möjliga värden den biten kan representera, 0 eller 1. Lånar du 1 bit får du 2 subnät, lånar du 2 får du 4, lånar du 3 får du 8. Det är samma anledning till att en byte (8 bitar) kan representera 256 olika värden: varje extra bit fördubblar antalet.

Vad är skillnaden mellan en nätmask och en standardgateway? En nätmask talar om för en enhet vilken del av en IP-adress som är nätverket och vilken del som är värden, så att den kan avgöra om en annan adress finns på det egna lokala nätverket. En standardgateway är en separat inställning, IP-adressen till den router en enhet skickar trafik till när målet inte finns på det lokala nätverket. Båda måste vara korrekt konfigurerade för att en enhet ska nå något utanför sitt eget subnät.

Kan jag dela upp med ett prefix som inte går jämnt ut, som att dela ett /24 i 3 nätverk? Inte i exakt 3 lika stora delar, nej, eftersom uppdelning i subnät alltid delar ett block i en tvåpotens. Delar du ett /24 får du 2, 4, 8, 16 och så vidare, aldrig 3. I praktiken innebär det att du delar upp i 4 (genom att låna 2 bitar) och antingen låter ett /26 stå oanvänt eller delar upp det ytterligare för en mindre avdelning, i stället för att försöka tvinga fram en exakt tredelning.

SubnätCIDRIPv4Nätverk
IPv4 Subnätskalkylator (CIDR)
Prova det nu själv med hela verktyget.
Prova nu