Private og offentlige IP-adresser og klasser

Et innlegg om klassifisering av IPv4-adresser, VLSM og subnetting av nettverk.

Dette er viktig grunnlagsinformasjon i nettverk, og vil være nødvendig å kunne for å forstå nettverk og subnetting, både som jeg skriver om på bloggen her, samt i nettverk generelt.

Jeg kommer til å fokusere på IPv4, siden det er det som folk flest kommer borti i sin hverdag.

Innholdsmessig kommer jeg til å starte med de forskjellige klassene av IPv4-adresser, som er primært A, B og C, samt konseptet med VLSM i klasseløse nettverk (Variable Length Subnet Masking). Til slutt tar jeg en seksjon med subnetting og bitregning i forbindelse med det.

Klasser av IPv4-adresser

IPv4-adresser er delt opp i forskjellige klasser ut i fra hvilken størrelse det er på nettet og samt hvilken bruk det har. Jeg går gjennom de forskjellige vanlige klassene her.

En ting til som er greit å nevne her i starten er hva begrepene klassebaserte nettverk («classful network») og klasseløse nettverk («classless network») betyr.

Enkelt og greit betyr det at med et klassebasert nettverk, må man forholde seg til den størrelsen på nettet- og nettverksmasken på nettet som gjelder for den spesifikke klassen som nettverket tilhører.

Et klasseløst nettverk betyr at selv om et nettverk tilhører f.eks klasse A, kan man subnette det og dele det opp i mindre nettverk slik man ønsker, uten å måtte forholde seg slavisk til nettverksmasken i klassen nettet tilhører.

De aller fleste benytter IPv4-nettene i de forskjellige klassene som klasseløse nettverk slik at de kan dele de opp i mindre nettverk etter behov.

CIDR-notasjon
Et nettverk med nettverksmaske 255.0.0.0 er også kjent som et /8 nettverk med CIDR-notasjon (Classless Inter-Domain Routing). En CIDR-notasjon er beskrevet med en «/» etterfulgt av antall maskerte bits i nettverksmasken i et klasseløst nett. Siden en oktett inneholder 8 bit, blir den totale summen 255 om alle bitene er aktivert, så nettverksmaske 255.0.0.0 blir et /8 i CIDR-notasjon.

IPv4 klasse A nettverk

Dette er nettverk som er ment å inneholde mange adresser per nettverk, 16 777 224 adresser, og har nettverksmaske 255.0.0.0, så bare første oktetten er maskert, som da blir et /8 nettverk.

I klasse A finner man nettverkene fra og med 0.0.0.0 /8 frem til og med 127.0.0.0 /8.

IPv4 klasse B nettverk

Som med klasse A nettverk nevnt ovenfor, er dette også nettverk som har høy kapasitet på antall klienter i nettet. Nettverksmasken på nettene i klasse B er 255.255.0.0, eller et /16 nettverk, siden 16 bits i nettverket er maskert. Antall tilgjengelige adresser i hvert av nettverkene i klasse B er 65 534.

Nettverkene du finner i klasse B er fra og med 128.0.0.0 /16 frem til og med 191.255.0.0 /16.

IPv4 klasse C nettverk

Denne klassen er nok den som de fleste kjenner til med tanke på størrelsen på de enkelte nettverkene. Nettverksmasken på nettverkene i denne klassen er 255.255.255.0, som tilsvarer en /24 i CIDR-notasjon siden 24 bits av nettverket er maskert. Dette er den vanlige størrelsen på et internt nettverk på et hjemmenett. Hvert nettverk har 254 adresser tilgjengelig.

Nettverkene du finner i denne klassen er fra og med 192.0.0.0 /24 frem til og med 223.255.255.0 /24.

Offentlige og private nettverk i klassene

I utgangspunktet er de aller fleste nettverkene som er nevnt i de forskjellige klassene over her offentlige rutbare nettverk på internett, men det finnes noen unntak. Det er noen nettverk som ikke skal være på internett og som ikke er rutbare der.

Dette er blant annet nettverk som er definert i dokumentet RFC1918 utgitt av Internet Engineering Task Force i 1996. Dette dokumentet definerer nettverk som skal bli brukt på interne, også kalt private, nettverk. Det er nettverk som er brukt på «innsiden» av routere og brannmurer for lokale nettverk, som eksempelvis hjemmenettet ditt, eller gjerne nettverket lokalt på jobben din.

De private nettene som er definert i de forskjellige klassene for denne typen bruk er følgende:

Klasse A: 10.0.0.0 /8
(ett nettverk med 16 777 224 tilgjengelige adresser)

Klasse B: 172.16.0.0 /12
(opptil 16 nettverk med 65 534 tilgjengelige adresser hver)

Klasse C: 192.168.0.0 /16
(opptil 255 nettverk med 254 tilgjengelige adresser hver)

Du har kanskje lagt merke til at nettverket på hjemmenettet ditt med stor sannsynlighet er 192.168.1.0 med nettverksmaske 255.255.255.0? Det det mest brukte nettverket for hjemmenett som er ferdig oppsatt på routeren som du får fra internettleverandøren din.

Det samme nettet kan alle naboene dine ha på sine hjemmenettverk også, uten at det har noen påvirkning på noen andre, siden det er kun på innsiden av routeren du finner det. Når man går inn på f.eks en nettside på internett, vil routeren gjøre om på den trafikken slik at det fremstår som at du kommer ifra den offentlige IPv4-adressen som er på utsiden av routeren din, som man har fått tildelt av internettleverandøren. Routeren vet da hvilken intern adresse denne trafikken kom ifra, f.eks 192.168.1.10, og når den mottar svar fra internett, sender den den spesifikke trafikken tilbake til 192.168.1.10.

Dette er et konsept som kalles NAT og er hele grunnen til at IPv4 fortsatt er i drift siden det ikke finnes flere offentlige IPv4-adresser til tildeling utover de som allerede er tildelt forskjellige internettleverandører og bedrifter.

Et helt internt /8 nettverk som 10.0.0.0 /8 med opp til 16 777 224 enheter kan benytte èn enkelt offentlig IPv4-adresse for å komme på internett på grunn av NAT, og på grunn av det kunne IPv4 leve videre en stund til.

VLSM – Variable-Lenght Subnet Masking

Det er nyttig og viktig å kunne de forskjellige klassene av IPv4-adresser som ble skrevet om i forrige seksjon, men om man skulle benyttet klassebaserte nettverk på alt, ville det vært veldig ineffektivt og sløsing med adresser. Derfor er VLSM og klasseløse nett et veldig fint konsept å jobbe med.

For å ta et greit eksempel med at en liten bedrift har 4 avdelinger med 40-50 ansatte i hver avdeling, og de ønsker separerte nettverk mellom hver avdeling. Da er det lite effektivt å bruke et klassebasert /24 C-nettverk med 254 adresser i hvert nettverk til hver av avdelingene.

En fin løsning er å benytte VLSM og bruke ètt /24 klasse C-nettverk som man deler opp i 4 deler. Det blir da 4 nettverk med /26 nettverksmaske som passer akkurat inn i et /24 nettverk. Det er på grunn av at et /26-nettverk har 26 maskerte bit, som gjør at hvert nettverk har 62 adresser tilgjengelig hver. Jeg skal gå mer grundig gjennom dette om litt.

Så i stedet for at nettverket ser slik ut om man skal benytte klassebaserte nett:

Avdeling 1: 192.168.1.0 /24 (254 adresser)
Avdeling 2: 192.168.2.0 /24 (254 adresser)
Avdeling 3: 192.168.3.0 /24 (254 adresser)
Avdeling 4: 192.168.4.0 /24 (254 adresser)

Kan det se slik ut med klasseløs subnetting:

Avdeling 1: 192.168.1.0 /26 (62 adresser)
Avdeling 2: 192.168.1.64 /26 (62 adresser)
Avdeling 3: 192.68.1.128 /26 (62 adresser)
Avdeling 4: 192.168.192 /26 (62 adresser)

Dette er da klasseløs subnetting siden man ikke benytter de faste nettverksmaskene som er definert i den spesifikke klassen nettet ligger inni, som i dette tilfellet er klasse C. Dette gjør at man i mye større grad kan utnytte adressene i hvert enkelt subnett.

Så alt i alt betyr VLSM stort sett at man ikke trenger å slavisk følge de maskene som er definert i de spesifikke klassene for et gitte nettverk, men kan dele det opp i mindre nettverk slik man ønsker.

Om man har et /24 nettverk med 254 adresser, trenger man ikke å dele opp dette i faste størrelser, men man kan dele det opp i nettverk med forskjellige masker, som 1 nettverk med /25 (126 adresser) i tillegg til 1 nettverk med /26 (62 adresser) og 2 nettverk med /27 maske (30 adresser pr nettverk).

Om du synes antallet adresser i de mindre nettverkene ikke stemmer overens totalt med antall adresser i det større nettverket som har blitt delt opp, er det en grunn til det. Det kommer jeg til i neste del; subnetting.

Subnetting og maskering av nettverk

I dagens nettverkshverdag er det nødvendig å kunne dele opp nettverk i mindre nettverk, alt avhengig av hvilke behov man har, og det er greit å vite hvordan maskering av nettverk fungerer med tanke på oppdeling av nett.

Jeg skal her ta utgangspunkt i et klasse C-nettverk med nettverksmaske 255.255.255.0, som også tilsvarer en /24 CIDR-maske, eller CIDR-notasjon.

Hele konseptet med maskering av et nettverk er å dele IP-adressene i nettverket opp i en nettverksdel og en klientdel. Nettverksdelen vil ikke forandre seg og er den binære verdien en klient som f.eks en datamaskin ser på for å hvite hvilket nettverk den er er en del av og hvor stort det er. Klientdelen av IP-adressen er den delen som kan brukes fritt til klienter. Det er denne delen som ikke er maskert. Det demonstrer jeg under her:

Nettverk:        192.168.010.0
Klient-IP        192.168.010.10
Maske:           255.255.255.0
Klient-IP binær: 11000000.10101000.00001010.00001010
Maske binær:     11111111.11111111.11111111.00000000

Som du kan se i eksempelet over, som er et /24-nett, dekker den binæren versjonen av masken de 3 første delene av IP-adressen, også kalt oktetter, og de delene som masken dekker, må være likt på alle klienter/enheter som er på dette nettverket, men den delen av IP-adressen som masken ikke dekker, skal være unik for hver enkelt enhet på nettverket.

Måten man kan regne seg frem til hvor mange klienter/enheter som kan være på et nettverk, er ganske rett frem og fungerer på den måten at man ser på de binære versjonene av IP-adressen og masken og regner antall bit i klientdelen av masken opphøyd i 2. I eksempelet over ser man at det er 8 bit som ikke er maskert, de siste 8 bitene hvor masken står med 0 på bitene.

8 opphøyd i 2 blir da 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 og som blir 256.

Det som også er viktig å vite med regning av antall adresser i et slikt nettverk er at når man har fått et resultat slik som det over, skal man trekke ifra 2. Det er fordi at den siste adressen i hvert nettverk er en broadcast-adresse og skal ikke brukes til klienter, og den første adressen i hvert nettverk er nettverksidentifikatoren og skal heller ikke brukes på klienter.

Så når man regner seg frem til 256 på et /24-nettverk, trekker man ifra 2 adresser og sitter da igjen 254 brukbare adresser på det nettverket. Det er dette jeg henviste til i slutten av forrige seksjon.

Så om man deler et /24-nettverk opp i f.eks 4 stk /26-nettverk, mister man i praksis 2 * 4 adresser man kan bruke.

Bare for å repetere binær-eksempelet nevnt over i et tilfelle hvor man benytter 2 stk /25-nettverk i stedet for ett /24, vil det bli slik:

Nettverk A:        192.168.010.0
Nettverk B:        192.168.010.128
Klient-IP A        192.168.010.10
Klient-IP B        192.168.010.138
Maske A:           255.255.255.128
Maske B:           255.255.255.128
Klient-IP A binær: 11000000.10101000.00001010.00001010
Maske A binær:     11111111.11111111.11111111.10000000
Klient-IP B binær: 11000000.10101000.00001010.10001010
Maske B binær:     11111111.11111111.11111111.10000000 

Her kan man igjen regne antall klienter på hvert nett. Som du ser er det maskert èn ekstra bit i nettverkene her i motsetning til det forrige eksempelet, så regnestykket blir 7 opphøyd 2, så 2*2*2*2*2*2*2 = 128. Trekker man da ifra 2 adresser for broadcast og nettverksID har man 126 brukbare adresser.

Siden første biten i hver oktett representerer tallet 128, vil alle klienter i nettverk B nettet må ha minimum .128 i siste oktetten sin, siden den biten er aktivert i det nettverket, og maks-tallet regnes også ut av klientmaskinene basert på umaskerte bits i nettverksmasken i nettverkene. Summen av de 7 umaskerte bitene alltid være 128, som vist ved utregningen over, så ingen av nettverkene vil kunne ha mer enn 128 adresser tilgjengelig.

Måten man vet at første biten er 128 på vises under. Her viser jeg alle 8 bitene i en oktett og hvilket tall det representerer. Dette fungerer likt for alle oktettene.

Om tallet i en oktett er 192 er binær-koden slik:
Bits: 1 1 0 0 0 0 0 0
Tall: 128 64 32 16 8 4 2 1
Bitene for 128 og 64 er aktivert så 128 + 64 = 192

Om tallet i en oktett er 168 er binær-koden slik:
Bits: 1 0 1 0 1 0 0 0
Tall: 128 64 32 16 8 4 2 1
Bitene for 128, 32 og 8 er aktivert så 128 + 32 + 8 = 168

Dette kan vises som en IP-adresse 192.168.0.1 slik binært:
11000000.10101000.00000000.00000001

Merk også at om man deler opp et /24-nettverk i f.eks 4 stk /26-nettverk med 64-adresser i hvert nettverk, MÅ nettverkene starte på en IP som representerer størrelsen på nettverket. Så /26-nettverk med 64 adresser hver, kan starte kun på .0, .64, .128, osv. Det kan ikke starte på f.eks .50.

Dette dekker nok basene for en del av det grunnleggende innen IP-netting, men det er også mer i detaljene her, så om du synes dette virker interessant, kan jeg anbefale å kikke litt på bøker for f.eks Cisco CCENT sertifisering, som er Cisco Certified Entry Networking Technician, som går mer i dybden på dette om du vil lære mer. Du finner også mye spennende og godt stoff på internett generelt om disse temaene.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *