|
There is much pleasure to be gained from useless knowledge.
Bertrand Russell
|
|
Vodič za podmreavanje
Take a look at my
Curriculum Vitæ
|
||
Podela IP adresa na manje mree (subnetting)Da bi se fundamentalno razumelo subnetovanje, potrebno je poznavati osnove IP adresiranja. Za to je najbolje konsultovati RFC791. Klasne mree i namena netmaskiOriginalni dizajn IP adresa prepoznaje nekoliko različitih klasa IP adresa. Ove klase razlikuju se kako po svojoj veličini (A, B, C), tako i po svojoj nameni (D, E). Za potrebe subnettinga, potrebno je razumeti razlike u veličini. Dakle, nećemo se baviti drugim razlikama između IP adresa. Osnovne klase IP adresa su:
Prva stvar koju se čovek zapita kad vidi netmasku je: "čemu ovo zapravo slui?". Da bi se odgovorilo na ovo pitanje, problem se mora sagledati van konteksta samih IP adresa. Poenta IP adresiranja je da se omogući komunikacija između dva uređaja na (IP - Internet) mrei. Da bi ta dva uređaja mogla međusobno da komuniciraju, moraju ne samo da poznaju adresu onog drugog, već da znaju putanju (rutu - route) do odredišta. Primer ispod je jednostavan: ![]() Slika 1 Računar [A] je direktno vezan sa računarom [B]. Problem sa znanjem putanje gotovo da ne postoji. Međutim, stvari u realnosti nisu tako jednostavne: ![]() Slika 2 U primeru iznad, ne samo da [A] nema direktnu vezu sa [B], već postoji više od nekoliko mogućih putanja od [A] do [B]. Svaka od imenovanih tačaka na dijagramu ima najmanje po jednu IP adresu. Da bi podaci od [A] stigli do [B], da li [A] mora da zna punu putanju do [B] ili je dovoljno da zna putanju do [V]? U konkretnom slučaju, problem je jednostavan. Znatno kompleksniji problem se predstavlja pred, recimo [V]. Gde će on da pošalje paket? Iako bi očigledno bilo da je odredište [W], to zavisi od mnogo faktora. Da se ovo ne bi pretvorilo u veliko razmatranje o rutiranju, pretpostavimo da je putanja nebitna. Pogledajmo primer ispod: ![]() Slika 3 Dakle, iza [X] imamo ne samo [B], vec [C], [D], [E], [F]... Ako uzmemo u obzir da je mogući broj IP adresa 4294967296 i da su sve 32bitne, ako bi svaki uređaj na mrei znao putanju do svih adresa, dolazimo do problema da uređaji moraju da imaju stravično mnogo memorije da bi imali sve te informacije. Posebno što pored same adrese moraju imati i podatke o putanji. Kako rešiti ovaj problem? Odgovor je netmaskama. Netmaske su način da se na jednostavan načn referencira više IP adresa. Kako netmaske funkcionišu? Pogledajmo primer jedne IP adrese: 212.54.211.1 Predstavljena binarno, ova adresa je: 11010100.00110110.11010011.00000001 Predpostavimo da je to IP adresa našeg računara [B] u gornjem primeru. Neka su [C], [D] ... svi uvećani za 1. Dakle, imamo:
Kako je ova IP adresa iz klase C (vidi tabelu sa klasama iznad), osnovna maska je: 255.255.255.0. Maska predstavljena binarno je: 11111111.11111111.11111111.00000000 Ako uradimo logičko "I" adrese [B] i maske:
11010100.00110110.11010011.00000001 (212.54.211.1) Ponovimo isto i za [C]:
11010100.00110110.11010011.00000010 (212.54.211.2) ili pak [Z]:
11010100.00110110.11010011.11111110 (212.54.211.254) U sva tri slučaja, dobijamo isti rezultat! Dati rezultat je najveća zajednička adresa za sve računare od [A]-[Z]. Ova adresa se zove "network" adresa. Dakle, u primeru nase mree iznad, računar [A] (kao i svi ostali uređaji na putanji) ne mora da zna putanju do svih računara [B]-[Z], već samo do mrene adrese svih njih. Network adresa je jedna od dve specijalne adrese u IP svetu. Druga specijalna adresa je tzv. "broadcast" adresa. Za razliku od mrene adrese koja ima sve binarne 0 na kraju (host polje IP adrese), broadcast adresa ima sve binarne 1 u host polju. Dakle, broadcast adresa za naš primer je 212.54.211.255. Namena broadcast adrese prevazilazi namenu ovog teksta. Pogledom na masku iznad vidimo da njom "pokrivamo" 256 adresa. šta ukoliko naša mrea ima manje računara? Ovde dolazimo do osnovnog problema kojim se ovaj tekst bavi - subnetovanjem. Subnetovanje je proces kojim se iz default "host polja" pozajmljuje određeni broj bitova i dodaje masci, kako bi se mrea podelila na manje funkcionalne (administrativne) celine. Recimo da se u našem primeru iznad, krajnja mrea sastoji od pedeset računara sa adresama 212.54.211.1 - 212.54.211.50. U tom slučaju, preko 200 adresa sa default maskom bi bilo neupotrebljeno. Ovaj problem se moe rešiti tako što bi se mrea podelila u podmree (subnete). Najmanji subnet koji moe da opslui 50 računara je od 64 adrese (26). Iznad sam spomenuo da je subnetovanje proces pozajmljivanja bitova iz host polja i dodavanja masci. Dakle, da bismo imali subnet od 64 adrese, nama je potrebno 6 umesto 8 bitova za host. Dakle, masci treba dodati 2 bita. Pogledajmo kako to izgleda. Network adresa: 212.54.211.0
11010100.00110110.11010011.{00}000000 (212.54.211.0) Sa {} su označeni pozajmljeni bitovi. Ovo polje bitova se naziva "subnet polje". Da bi naša mrea ispravno funkcionisala, svaki računar na mrei je potrebno da ima konfigurisanu netmasku iznad. Promena netmaske sa default maske nam stvara još jedan problem. Broadcast adresa više nije ista! Da podsetim, broadcast adresa u host polju ima sve binarne 1. Pozajmljivanjem bitova za subnet polje, host polje je sad 6 bitova. Dakle, broadcast adresa je: 11010100.00110110.11010011.{00}111111 (212.54.211.63) Uz malo sreće ovo je do sada jasno. Sad sledi zaplet. Po klasnim pravilima subnetovanja, ovaj primer iznad je NEISPRAVAN! Ovo je veoma specifičan problem vezan za rutiranje. Naime, network adresa našeg subneta (212.54.211.0) je ista kao i adresa C klase 212.54.211.0. Ovo nije dozvoljena situacija. Još jedna nedozvoljena situacija je pravljenje subneta koji u sebi sadri default broadcast adresu mree (212.54.211.255). Ovo treba uzeti u obzir kao aksiom za klasne mree! Veoma često praktično pitanje je, kako za datu adresu i netmasku odrediti koje su network i broadcast adresa. Ovaj problem ću prvo da objasnim binarno, a onda da otkrijem trik za veoma brzo računanje bez konverzije u binarni sistem (na kraju teksta). Primer:
10101110.11010011.10001101.10110001 (174.211.141.177) Logičkim "I" dobijamo adresu mree:
10101110.11010011.10000000.00000000 (174.211.128.0) Ako u host polje (sva polja koja su u netmasci 0) stavimo sve 1, dobijamo broadcast adresu: 10101110.11010011.10011111.11111111 (174.211.159.255) Bezklasna pravila subnetovanjaKako je vreme prolazilo, tako je Internet rastao. Sve više firmi se povezivalo na mreu. Mnoge od organizacija koje su se povezivale na Internet, imale su manje računara nego sto su klasne granice (C: 28 - 2, B: 216 - 2, A: 224 - 2). Subnetovanje je rešavalo ovaj problem samo do izvesne granice. Zašto? Osnovni problem klasnog subnetovanja je što ne dozvoljava subnete različite veličine. Na primer, mreu B klase: 142.14.0.0 je bilo moguće podeliti, recimo na 254 (28 - 2) mree: 142.14.1.0, 142.14.2.0 ... 142.14.254.0 sa netmaskom 255.255.255.0. Pretpostavimo da je data B klasa bila dodeljena Internet provajderu kojem se javio korisnik koji u firmi ima samo 2 računara, a eli da se povee na Internet. Provajder nije imao šta drugo da radi, već da tom korisniku dodeli čitav subnet od 256 adresa. Ako uzmemo u obzir da je korisnik od ovoga mogao da koristi samo 254, dakle 251 adresa je neiskorišćena! Ubrzo je postalo jasno da Internetu predstoji ozbiljan problem - nedostatak IP adresa. Posebno IP adresa iz B klase. Rešenje problema se javilo uz pomoć dve tehnologije (pravilnije bi bilo reći dve teorije). Obe teorije bave se ukidanjem klasa IP adresa. Prva teorija je VLSM (Variable Length Subnet Mask - RFC1878), a druga CIDR (Classless Inter Domain Routing - RFC1519). Ukratko (za detalje pogledajte dva navedena RFC-a), ova dva RFC-a se bave mogućnošću da se se omogući deljenje kompletnog IP opsega (0.0.0.0 - 255.255.255.255) na različite delove, ne po klasama, već provizorno. Dakle, ukidaju se klase i čitav adresni prostor se smatra jednom mreom, koja moe da se deli na provizorno male delove, različite veličine (duine). Ovime se bavi VLSM. CIDR je koncept koji omogućava uređajima na mrei (uglavnom ruterima) da međusobno razmenjuju informacije o putanjama (rutama) imajući u vidu izmenjena pravila. Sa stanovišta subnetovanja, bitno je shvatiti par osnovnih razlika u odnosu na klasna pravila:
Iako nije netačno, kao netmaska se više ne preporučuje upotreba tzv. "dotted decimal" formata (npr. 255.255.255.0), već tzv. "prefix" format (/24). Prefix format nije ništa drugo do informacija o tome koliko konstantih bitova ima u masci. Konstantni bitovi su bitovi postavljeni na 1. Iako je na prvi pogled novi princip subnetovanja jednostavniji od klasnog (i jeste!), mnogima koncept bezklasnosti predstavlja problem. Razlog za ovo je klasna terminologija koja je još uvek veoma u upotrebi. Većina i dalje blok IP adresa od 256 adresa naziva "C klasom". Mnogi ljudi ovo rade bez obzira na to što mnoge adrese zapravo originalno ni ne bi bile C klasa, već subnet neke od B klasa (recimo: 147.91.75.0/24). Drugi koncept koji se javlja je mogućnost da se uz pomoć prefiksne notacije referencira veći adresni prostor od jedne klase, a da se pritom koriste adrese koje očigledno pripadaju toj klasi. Primer: 194.250.64.0/23. Da bi se olakšao prelaz sa klasne na bezklasnu terminologiju, osmišljen je naziv "supernet" koji označava datu situaciju. Praktično posmatrano, i subnet i supernet su nepotrebni izrazi. Najispravnije je koristiti izraz blok. Generalna pravila za subnetovanje i dalje postoje. Svaki blok mora da da počne od adrese koja za dat prefiks (netmasku) u host polju ima sve binarne 0 i da se završi na adresi koja u host polju ima sve 1. No, ne zaboravimo da se ceo adresni prostor tretira kao jednak - nema klasa! Evo primera. Od provajdera je dobijen blok IP adresa: 62.11.48.0/23. Potrebno je napraviti dva subneta za 50 računara, jedan za 200, a ostatak prostora iskoristiti za point-to-point veze (ruter-ruter, dakle potrebne po dve adrese). Za početak, kako dodeljeni blok izgleda binarno:
00111110000010110011000{000000000} Obratite panju da nisam koristio "." da razdvojim adresu i masku na oktete. To je zbog lakšeg razumevanja. Takođe, obratite panju da je host deo (označen sa {}) 9 bita. Prefiks /23 omogućava ukupno 512 adresa. 29=512. Za sad smo na dobrom putu. Naš problem kae da nam je potreban jedan subnet za 200 računara. Jedini prefix koji nam odgovara je /24 (28=256). Ako isto ponovimo za dva subneta od po 50 računara, vidimo da je najblii prefix /26. Za 4 adrese, prefix je /30. Dakle, da bismo subnetovali naš blok, trebaju nam sledeci blokovi:
Jedan koristan savet: Iako za to nema specijalnog razloga, obično je lakše izvrišiti subnetovanje određenog adresnog prostora ukoliko se krene od najvećeg ka najmanjem bloku. Ovo nije pravilo! Dakle, imajući u vidu date prefikse, kao i savet iznad, evo šta dobijamo kao rezultat našeg malog problema (ovo što sledi je klasično subnetovanje objašnjeno u prethodnom tekstu o klasnom subnetovanju - neću ponavljati objašnjenja). Blok za 200 adresa:
00111110000010110011000000000000 62.11.48.0 Ostaje:
00111110000010110011000100000000 62.11.49.0 Odavde su nam je potrebna dva /26 bloka:
00111110000010110011000100000000 62.11.49.0
00111110000010110011000101000000 62.11.49.64 Preostaju nam /30 blokovi. Evo dva sledeća:
00111110000010110011000110000000 62.11.48.128
00111110000010110011000110000100 62.11.48.132 ... Kako bez konverzije u binarni sistemSav dosadašnji tekst je bazirao računice na konverziji u binarni sistem i razumevanju osnovne binarne logike i aritmetike (binarno sabiranje). To moe da predstavlja problem. Srećom, postoji i skraćena metoda za brzo računanje subneta (network i broadcast adresa) na osnovu date IP adrese i netmaske (ukoliko je dat prefiks, poeljno je znati tabelu konverzije prefiks-netmaska napamet). Evo primera: 216.221.4.12/255.255.224.0 Da bi se izračunala network adresa, potrebno je napisati IP adresu i netmasku jednu iznad druge. Gde se u masci nalazi "255", prepisati broj iz IP adrese. Na mestu gde je u netmasci 0, napisati 0. Preostalo mesto ostaviti prazno.
216.221.4.12 Ukoliko ne ostane praznina nigde, to je network adresa. Ukoliko ostane praznina, preostali broj u netmasci oduzeti od 256. Ovo je veličina mree. U našem primeru, veličina mree je 32. Nazovimo ovaj broj mnoiocem. Da bismo dobili ispravan subnet, potrebno je naći proizvod mnoioca koji je najblii preostalom broju u IP adresi, a da je manji od tog broja. U našem slučaju, ovo je 0. Dobijeni rezultat je network adresa.
216.221.4.12 Kad smo izračunali network adresu, izračunavanje broadcast adrese je veoma jednostavno. Na prvi oktet u network adresi koju se nalazi iznad broja koji nije 255 u netmasci dodati mnoilac umanjen za 1. Sve ostale 0 u network adresi zameniti sa 255. U konkretnom primeru:
216.221.4.12 Evo još jednog, moda malo komplikovanijeg primera (korišćen je algoritam iznad):
62.74.52.41 62.74.52.41 62.74.52.41 62.74.52.41 U primeru iznad, mnoilac je 8. Proizvod mnoioca koji nam je potreban je broj koji se dobija umnoavanjem 8, a da je proizvod najblii, a manji od 52. Taj broj je 48. Broadcast adresu smo dobili tako što smo na 48 dodali (8 - 1). |