V jednej ruke CIDR, v druhej sekera – ako deliť siete

2019/08/10

Ako rozdeliť sieť na podsiete? V letný podvečer zoberieme sekerku, sajder do ruky a počneme rozsekávať počítačovú sieť na podsiete.

ISO, osy a sieťový model

Sieťová vrstva (network layer), alias tretia vrstva (L3) v ISO-OSI modeli vymieňa medzi stanicami instadatagramy s údajmi.

Každá stanica v sieti je na tejto vrstve identifikovaná IP adresou, čo je:

10011110 11000101 00011111 00100011

Alebo ak ste Sandra Bullock v archívnom filme The Network, máte aj vyššie IP adresy.

Image result for the network movie sandra bullock ip address

IPv4

Toto platí v najčastejšie používanom protokole, IPv4 (štyri bloky!). Je starý, je overený, má očividný limit: maximálny teoretický počet IP adries. Momentálne (už X rokov) sa nasadzuje protokol IPv6, ale tomu sa venovať nebudeme.

Stanice v sieti

Stanice sa združujú do stádasiete, na čele s bačom routerom. Každá stanica môže mať viacero sieťových rozhraní (network interface), kde obvykle platí:

Bežný počítač môže mať 1 kartu pre ethernet (= kábel), 1 kartu pre WiFi a teda môže byť pripojený do sietí 2 IP adresami.

CIDR

CIDR nie je alkohol, ale Classless Inter-Domain Routing, štýlový spôsob adresácie staníc.

Každá IP adresa pozostáva z dvoch častí:

  1. sieťovú časť: identifikuje konkrétnu sieť
  2. stanicovú časť: identifikuje konkrétne stanice.

Bežná metafora sú ulice a popisné čísla. Ulica je „sieťová časť“, popisné číslo identifikuje konkrétny „dom“.

Vďaka maske vieme oddeliť sieťovú časť od stanicovej. Maska je 32bitový štrúdlik jednotkových bajtov nasledovaný štrúdlikom nulových bajtov.

Každá stanica v CIDR notifikácii uvedie svoju IP adresu a dĺžku masky. Napríklad:

192.168.1.16/24

Táto adresa hovorí, že maska má 24 jednotkových bitov. Binárny prepis:

  192      168      1         16
11000000 10101000 00000001 00010000 adresa
11111111 11111111 11111111 00000000 maska 

Maska sa dá prepísať ekvivalentne do štvorblokového formátu:

255.255.255.0

Oba zápisy: cez IP adresu a dĺžku i cez IP adresu a masku sú ekvivalentné.

Napríklad vo Windowse možno napiecť IP adresu sieťovej karty pomocou masky:

Image result for windows mask

Sú stanice v rovnakej sieti? Adresa siete

Vďaka maske vieme ľahko zistiť, či sú dve stanice v rovnakej sieti, teda za spoločným routerom.

Majme dve stanice:

Pre každú stanicu zistíme adresu siete, a ak sa zhodujú, sú v rovnakej sieti. Tú zistíme logickým AND-om bitov IP adresy a masky siete.

158.197. 31.170 | 10011110 11000101 00011111 10101010
255.255.255.224 | 11111111 11111111 11111111 11100000
-----------------------------------------------------
AND             | 10011110 11000101 00011111 10100000

a

158.197. 31.155 | 10011110 11000101 00011111 10011011
255.255.255.224 | 11111111 11111111 11111111 11100000
-----------------------------------------------------
AND             | 10011110 11000101 00011111 10000000

Získame dve adresy siete, ktoré sú odlišné:

A teda stanice nie sú v rovnakej sieti.

Treba trúbiť každej stanici? Broadcastová adresa

V každej sieti existuje broadcastová adresa určená pre datagramy, ktoré majú byť prijaté všetkými sieťovými rozhraniami. Ak chceme trúbiť info každému, datagramy posielame na broadcastovú adresu.

Získame ju logickým OR medzi IP adresou a invertovanou maskou siete.

Zoberme si 158.197.31.170/27

158.197. 31.170             | 10011110 11000101 00011111 10101010
invertovaná 255.255.255.224 | 00000000 00000000 00000000 00011111 
-----------------------------------------------------------------
OR                          | 10011110 11000101 00011111 10111111 | 158.197.31.191

Broadcastová adresa tejto siete je 158.197.31.191.

Rozsahy a kapacity siete

Sieťová adresa a broadcastová adresa tvoria dolné a horné ohraničenia pre rozsahy IP adries staníc v sieti.

Pre 158.197.31.170/27 máme:

IP adresy v tomto rozsahu (od .161 po .191) môžu byť pridelené staniciam.

Počet staníc podľa masky

Z masky vieme tiež určiť maximálny počet staníc v sieti. Napríklad naša 27bitová maska zároveň určuje 32 - 27 = 5 bitov pre stanicové adresy. To nám dáva 2^5 = 32 staníc v danej sieti. Od tejto kapacity odčítame 2 adresy: sieťovú IP adresu a broadcastovú IP adresu, čím získame 30 staníc.

Príklad / cvičenie na rozsahy siete

Majme sieť 101.101.101.64/26. Aký je rozsah IP adries?

Riešenie

IP     101.101.101. 64 | 01100101 01100101 01100101 01000000
Maska:                 | 11111111 11111111 11111111 11000000 | 255.255.255.192
Adresa siete (AND)     | 01100101 01100101 01100101 01000000 | 101.101.101.64
Invertovaná maska      | 00000000 00000000 00000000 00111111
Broadcast (OR s inv.)  | 01100101 01100101 01100101 01111111 | 101.101.101.127

Rozsah IP adries je 101.101.101.65101.101.101.126.

Riešenie 2

Maska s 26 bitmi ponecháva 32 - 26 = 6 bitov pre stanicové IP adresy. Dva na šiestu, t. j. 2^6 = 64, čo znamená, že v sieti môže byť maximálne 64 mínus adresa siete mínus broadcast = 62 staníc.

Rozbíjanie siete na podsiete

Administrátorovi siete sa neraz stáva, že je mu pridelený konkrétny rozsah IP adries a je na ňom, ako sa s ním vysporiada. (To sa deje hierarchicky, cárom IP adries je organizácia IANA, a pod ňou, pre Európu je organizácia RIPE NCC.)

Obvykle zoberie sekeru, či iný nástroj a počne sekať bity.

Rozbíjanie siete na 2 podsiete

Tvárme sa, že nám zhora spadla sieť 158.197.28.0/22. Čo z toho zistíme?

Maska vyzerá nasledovne:

255.255.252.  0 | 11111111 11111111 11111100 00000000

Ak chceme pridať dve podsiete, potrebujeme predĺžiť masku. Ak ju natiahneme o 1 bit, vieme odlíšiť dve podsiete (0 a 1).

Inými slovami: dva na koľkú dá dve podsiete? Dva na prvú.

Riešenie 1: kupecké počty

Poďme prideľovať od posledného (štvrtého oktetu). 512 staníc sa sa nezmestí do jedného oktetu, ale do dvoch. Vyplňme teda prvú podsieť, pričom ignorujeme adresu siete a broadcast.

Ostalo nám ešte 254 staníc, ktoré dáme do tretieho oktetu .29.XXX.

Druhá podsieť funguje podobne. Má 512 staníc, ktoré rozsekneme do do oktetov .30 a .31.

Riešenie 2: exaktnejšie

Keďže sme masku rozšírili o 1 bit, budeme vyrábať všetky kombinácie núl a jednotiek v rozšírenej sekcii masky.

Prvá podsieť

Začneme s nulou na 23. pozícii a zistíme adresu siete.

158.197. 28.  0 | 10011110 11000101 000111|0|0 00000000
255.255.254.  0 | 11111111 11111111 111111|1|0 00000000
-------------------------------------------------------
AND             | 10011110 11000101 000111|0|0 00000000 | 158.197.28.0

Zároveň zistíme broadcastovú adresu, čo bude horný rozsah pre prvú podsieť. Určíme to OR-ovaním s invertovanou maskou.

  158.197. 28.  0 | 10011110 11000101 000111|0|0 00000000
! 255.255.254.  0 | 00000000 00000000 000000|0|1 11111111
---------------------------------------------------------
   OR             | 10011110 11000101 000111|0|1 11111111 | 158.197.29.255

Pre prvú podsieť teda máme rozsah 158.197.28.1158.197.29.254.

Druhá podsieť

Začneme s jednotkou na 23. pozícii a zistíme adresu siete a broadcast.

158.197. 30.  0 | 10011110 11000101 000111|1|0 00000000
255.255.254.  0 | 11111111 11111111 111111|1|0 00000000
-------------------------------------------------------
AND             | 10011110 11000101 000111|1|0 00000000 | 158.197.30.0

Broadcast:

  158.197. 28.  0 | 10011110 11000101 000111|1|0 00000000
! 255.255.254.  0 | 00000000 00000000 000000|0|1 11111111
-------------------------------------------------------
  OR             | 10011110 11000101 000111|1|1 11111111 | 158.197.31.255

Pre druhú podsieť teda máme rozsah 158.197.30.1158.197.31.254.

Rozbíjanie siete na 4 podsiete

Majme opäť sieť 158.197.28.0/22, ktorú chceme rozbiť na 4 podsiete.

Dva na koľkú dá štyri podsiete? Dva na druhú.

Riešenie: kupecké počty

Teraz je to jednoduché: 254 staníc sa vždy zmestí do jedného oktetu. Stačí teda každú podsieť hodiť pod postupne zvyšovanú adresu v treťom oktete, postupne .28.29, .30 a .31.

Riešenie: poctivé počty

Rozšírme masku na 24 bitov:

158.197. 28.  0 | 10011110 11000101 000111|00| 00000000
                  11111111 11111111 111111|11| 00000000 | 255.255.255.0

Sieťové adresy budú získavané všetkými kombináciami 7. a 8. bitu v treťom oktete, pretože o ten sme natiahli masku:

  1. prvá podsieť: 00011100 = ___.___.28.000
  2. druhá podsieť: 00011101 = ___.___.29.000
  3. tretia podsieť: 00011110 = ___.___.30.000
  4. štvrtá podsieť: 00011111 = ___.___.31.000

Rozbíjanie inej siete na 4 podsiete

Zoberme si inú sieť 101.101.101.64/26 a rozbime ju na 4 podsiete s rovnakým počtom adries.

Riešenie: kupecké počty

Na 4 siete potrebujeme rozšíriť masku tak, aby obsiahla dodatočné 4 siete. Dva na koľkú je 4? Na druhú, teda masku rozšírime o 2 bity.

To nám dáva 32 - 28 = 4 bity pre stanicové IP adresy, čiže 2^4 mínus adresa siete mínus broadcast = 14 staníc na každú podsieť.

Z toho vieme napočítať rozsahy:

Riešenie: presné počty

Natiahnime masku z 26 bitov na 28 bitov (dva dodatočné bity obsiahnu 2^2 = 4 podsiete).

                       |                              |!!|     
Maska:                 | 11111111 11111111 11111111 11|11|0000 | 255.255.255.240

Teraz vyrábajme všetky kombinácie núl a jednotiek na pozíciách v adrese siete, o ktoré sme natiahli masku.

Prvá podsieť (bity 00)

                                                       ..
101.101.101.64         | 01100101 01100101 01100101 01|00|0000
Maska:                 | 11111111 11111111 11111111 11|11|0000 | 255.255.255.192
Adresa siete:          | 01100101 01100101 01100101 01|00|0000 | 101.101.101. 64

Druhá podsieť (bity 01)

                                                       ..
101.101.101.64         | 01100101 01100101 01100101 01|01|0000
Maska:                 | 11111111 11111111 11111111 11|11|0000 | 255.255.255.192
Adresa siete:          | 01100101 01100101 01100101 01|01|0000 | 101.101.101. 80

Tretia podsieť (bity 10)

                                                       ..
101.101.101.64         | 01100101 01100101 01100101 01|10|0000
Maska:                 | 11111111 11111111 11111111 11|11|0000 | 255.255.255.192
Adresa siete:          | 01100101 01100101 01100101 01|10|0000 | 101.101.101. 96

Štvrtá podsieť (bity 11)

                                                       ..
101.101.101.64         | 01100101 01100101 01100101 01|11|0000
Maska:                 | 11111111 11111111 11111111 11|11|0000 | 255.255.255.192
Adresa siete:          | 01100101 01100101 01100101 01|11|0000 | 101.101.101.112

Sumárne

Rozbíjanie siete na 3 podsiete

Majme opäť sieť 158.197.28.0/22. Teraz sú však požiadavky netradičné:

Možnosti:

Riešenie

Rozšírime masku o 2 bity (aby sme pojali 4 podsiete) na 158.197.28.0/24:

-------------------------------------------!!-------------------------
158.197. 28.  0 | 10011110 11000101 000111|00| 00000000
                  11111111 11111111 111111|11| 00000000 | 255.255.255.0
-----------------------------------------------------------------------
                  10011110 11000101 000111|00| 00000000 | 158.197.28.0

A 2. podsieť:

-------------------------------------------!!-------------------------
158.197. 28.  0 | 10011110 11000101 000111|01| 00000000
                  11111111 11111111 111111|11| 00000000 | 255.255.255.0
-----------------------------------------------------------------------
                  10011110 11000101 000111|01| 00000000 | 158.197.29.0

A tretia podsieť:

-------------------------------------------!!-------------------------
158.197. 28.  0 | 10011110 11000101 000111|10| 00000000
                  11111111 11111111 111111|11| 00000000 | 255.255.255.0
-----------------------------------------------------------------------
                  10011110 11000101 000111|10| 00000000 | 158.197.30.0

A štvrtá podsieť:

-------------------------------------------!!-------------------------
158.197. 28.  0 | 10011110 11000101 000111|11| 00000000
                  11111111 11111111 111111|11| 00000000 | 255.255.255.0
-----------------------------------------------------------------------
                  10011110 11000101 000111|11| 00000000 | 158.197.31.0

Získame tak 4 podsiete:

Posledné dve však vieme zlúčiť do podsiete pre zvyšok firmy a dať im masku o jedna menšiu:

-------------------------------------------!--------------------------
158.197. 28.  0 | 10011110 11000101 000111|1|0 00000000
                  11111111 11111111 111111|1|0 00000000 | 255.255.254.0
-----------------------------------------------------------------------
                  10011110 11000101 000111|1|0 00000000 | 158.197.30.0

Horná hranica pre zlúčenú sieť:

-------------------------------------------!--------------------------
158.197. 28.  0 | 10011110 11000101 000111|1|0 00000000
                  00000000 00000000 000000|0|1 11111111 | !255.255.254.0
------------------------------------------------------------------------
                  10011110 11000101 000111|1|1 11111111 | 158.197.31. 255

Špeciálne IP adresy

V IPv4 rozoznávame aj špeciálne typy adries.

Nástroje

Na overenie delenia existuje množstvo nástrojov:

>> Home