9
Predavanje 7 - DNS DNS (Domain Name Service) je jedan od osnovnih servisa aplikativnog sloja (osnovni servisi, pored DNSa, su još i elektronska pošta te WWW). Nalazi se na nivou koji pruža usluge korisnicima, odnosno na nivou koji pruža usluge za koje mreže uopšteno služe – TCP i UDP portovi (adrese usluga na računaru). DNS u opštem slučaju pruža podršku velikom broju drugih servisa. 7.1 DNS DNS pretvara domenska imena u IP adrese, jer računari ne razumiju ono što otkucamo u Web browser, odnosno oni moraju da koriste IP adrese, da bi se došlo do računara (servera) na kojem se nalazi taj Web server (na primjer kada otkucamo www.google.com, to je čovjeku naravno prihvatljivije od IP adrese, ali računaru nije). Ljudi uglavnom ne koriste DNS direktno nego ga koriste aplikacije. Na primjer, Web browser za korisnika odradi DNS upit prema DNS serveru i vrati IP adresu. 7.2 Problemi koji postoje sa DNSom Broj domenskih imena je sigurno reda veličine oko 100 miliona (najmanje). Zamislimo bazu podataka koja ima 100 miliona zapisa (i to jednostavni zapisi oblika domensko ime/IP adresa). Pretraživanje i ažuriranje takve baze bi bilo „nemoguće“, budući da bi bila na jednom mjestu. Šta bi se onda desilo, kada ona ne bi radila? Bez DNSa internet ne bi radio. Na primjer, kada su Anonymousi planirali pad interneta, ideja im je bila da zaustave rad DNSa. Problem koji DNS pokušava riješiti je, kako u tako velikoj bazi podataka omogućiti njeno pohranjivanje, efikasno pretraživanje i ažuriranje. Na početku kada je internet bio mali, postojala je datoteka u kojoj su bili upisani bukvalno svi serveri koji su postojali i njihove IP adrese. Kasnije je broj servera naglo skočio i dalje održavanje takve datoteke (hosts.txt) je postalo nemoguće. 7.3 Kako aplikacije koriste DNS?

Predavanje 7 - DNS

Embed Size (px)

DESCRIPTION

arm-dns server

Citation preview

Page 1: Predavanje 7 - DNS

Predavanje 7 - DNS

DNS (Domain Name Service) je jedan od osnovnih servisa aplikativnog sloja (osnovni servisi, pored DNSa, su još i elektronska pošta te WWW). Nalazi se na nivou koji pruža usluge korisnicima, odnosno na nivou koji pruža usluge za koje mreže uopšteno služe – TCP i UDP portovi (adrese usluga na računaru). DNS u opštem slučaju pruža podršku velikom broju drugih servisa.

7.1 DNS

DNS pretvara domenska imena u IP adrese, jer računari ne razumiju ono što otkucamo u Web browser, odnosno oni moraju da koriste IP adrese, da bi se došlo do računara (servera) na kojem se nalazi taj Web server (na primjer kada otkucamo www.google.com, to je čovjeku naravno prihvatljivije od IP adrese, ali računaru nije). Ljudi uglavnom ne koriste DNS direktno nego ga koriste aplikacije. Na primjer, Web browser za korisnika odradi DNS upit prema DNS serveru i vrati IP adresu.

7.2 Problemi koji postoje sa DNSom

Broj domenskih imena je sigurno reda veličine oko 100 miliona (najmanje). Zamislimo bazu podataka koja ima 100 miliona zapisa (i to jednostavni zapisi oblika domensko ime/IP adresa). Pretraživanje i ažuriranje takve baze bi bilo „nemoguće“, budući da bi bila na jednom mjestu. Šta bi se onda desilo, kada ona ne bi radila? Bez DNSa internet ne bi radio. Na primjer, kada su Anonymousi planirali pad interneta, ideja im je bila da zaustave rad DNSa. Problem koji DNS pokušava riješiti je, kako u tako velikoj bazi podataka omogućiti njeno pohranjivanje, efikasno pretraživanje i ažuriranje. Na početku kada je internet bio mali, postojala je datoteka u kojoj su bili upisani bukvalno svi serveri koji su postojali i njihove IP adrese. Kasnije je broj servera naglo skočio i dalje održavanje takve datoteke (hosts.txt) je postalo nemoguće.

7.3 Kako aplikacije koriste DNS?

Na primjer, pokrećemo mail program (mail klijent) i želimo da pošaljemo mail nekom korisniku na cs.princeton.edu (njegova mail adresa je na primjer: [email protected]). Tada se naš mail klijent obraća name serveru (usluga DNS servisa) i bukvalno mu govori: „Moram da pošaljem mail na adresu cs.princeton.edu i meni je rečeno da ti znaš koja IP adresa odgovara tom imenu.“. Tada mu name server usluga DNSa vraća IP adresu na kojoj se nalazi taj servis i na osnovu koje se odvija dalja komunikacija. Uglavnom, aplikacije se same obraćaju DNSu te od njega dobijaju odgovor i koriste ga.

Page 2: Predavanje 7 - DNS

7.4 Od čega se DNS sistem sastoji?

1. Prostor domenskih imena – sve dozvoljene vrijednosti domenskih imena.

2. Baza DNS podataka – neki način na koji se pohranjuju podaci o domenskim imenima i njihovo preslikavanje u IP adrese.

3. Name serveri (poslužitelji imena) – komadi softvera koji omogućavaju da oni budu upitani da urade pretvaranje domenskog imena u neku IP adresu. Da bi to uradili, oni moraju imati pristup bazi podataka. DNS podataka.

4. DNS klijenti (tzv. DNS resolvers) – komadi softvera koji pitaju name servere da pretraže bazu podataka i da nađu za konkretno domensko ime njegovu odgovarajuću IP adresu.

Dakle, komunikacija u ovom slučaju ide kao:

APLIKACIJA -> RESOLVER -> [Daj mi IP od tog i tog domenskog imena] -> NAME SERVER -> [Traži u bazi podataka] -> DNS BAZA PODATAKA -> [Vrati nazad do resolvera] ->RESOLVER

Na lokalnim računarima su instalirani resolveri, tj. naša aplikacija se obraća procesu resolvera na našem računaru koji se onda obraća name serveru.

7.4 Prostor domenskih imena

Prostor domenskih imena je prvi element DNSa (domain namespace). Domenska imena ne mogu biti bilo kakva. Domen je dakle grupa računara koji na administrativnom nivou, odnosno koji su pod kontrolom jedne organizacije. Domeni su organizovani hijerarhijski. U principu postoji nekoliko ROOT domena (korijenskih) ispod kojih se nalaze drugi domeni, poddomeni, ..., itd. . Zbog toga se u adresama najviše ime kreće od desne strane i pomjera se ulijevo. Kompletan internet ima nekoliko osnovnih domena nakon kojih dolaze poddomeni.

Osnovni domeni (TOP LEVEL ili ROOT domeni) su: .com – na njemu se nalaze komercijalne organizacije. .edu – obrazovne institucije. .gov – vladine institucije. .mil – vojne institucije. .net – organizacije koje pružaju mrežne usluge. .org – razne vrste, na neki način, neprofitnih organizacija. .arpa – koja služi za promjenu naopako, tj. iz IP adrese u domensko ime.

Pored ovih, definirane su i dvoslovne skraćenice za sve zemlje (.ba za našu zemlju). Nekad su domenska imena bila zasnovana samo na ASCII znakovima, a danas mogu biti i UNICODE (256 znakova), tako da danas postoje i domenska imena arapskih slova, na ćirilici i sl. . Vremenom se dodalo još nekoliko TOP LEVEL domena, na primjer .int (nato) koji je uveden 1988. godine. Dodana su i četiri za testiranje i

Page 3: Predavanje 7 - DNS

dokumentaciju: .test, .example, .invalid i .localhost te su i na drugom nivou rezervirane example.com i example.net.

Internet Corporation for Assigned Names and Numbers (ICANN) je organizacija koja se bavi dodjelom samo TOP LEVEL domena, tj. samo dodjelom imena na TOP LEVEL nivou. Nakon toga, unutar svakog TOP LEVEL domena, postoji neka organizacija koja se bavi dodjelom poddomena, tako je na primjer administrator .ba domene UTIC koji iznajmljuje poddomenu (ovlašten od države). Dakle, on može dati dio poddomene nekom drugom pa da i taj neko drugi izdaje svoje poddomene. Konkretno, UTIC je univerzitetu u Sarajevu izdao domen .unsa.ba. Unutar tog univerzitetskog domena, unverzitet može svojim članicama davati poddomene, pa je podomen ETFa etf.unsa.ba. Dakle, ETF je administrator etf.unsa.ba domene i svi domeni ispod tog domena, kao što su Zamger, Zimbra i c2 se nalaze unutar tog domena: c2.etf.unsa.ba, zamger.etf.unsa.ba, webmail.etf.unsa.ba, ... i sl. . Dakle, kompletan internet je podijeljen, tako da nad nekim dijelovima neko ima administraciju. Svaki administrator samo treba da zna svoj domen i one kojima je izdao adrese iz svog poddomena. Na primjer, .unsa.ba ne treba znati ništa oko poddomena koje pripadaju domeni etf.unsa.ba, to treba da zna samo etf.unsa.ba.

Postoje neka ograničenja: Domena ne može biti više od 127 (ne više od 127 tačaka). Ukupno ime domena ne može biti duže od 255 karaktera. Pojedino polje ne može biti duže od 63 znaka.

7.5 Dio internet DNS stabla

Domenska imena trebaju biti pohranjena u nekoj bazi podataka. Kada se radi bilo kakva pretraga, cilj je da se omogući da se na osnovu domenskog imena dobije IP adresa. Prave se baze podataka po nekom standardnom načinu koje služe za pohranjivanje podataka na osnovu kojih se može uraditi ova pretraga. Zapisi u tim bazama podataka se nazivaju Resource Records – RR (zapisi o resursima). Ideja je da se prema bazi uputi upit u kojem se nalazi domensko ime, a da baza vrati ne samo IP adresu nego i kompjuter RR.

Resource Record se sastoji od slijedećih polja: Prvo polje (prva kolona u bazi) – domensko ime. Drugo polje – TTL (Time To Live) u sekundama. Uz neki zapis se zapiše i za

koje vrijeme se ne očekuje da će se taj zapis promijeniti. Kao da baza kaže: „Unutar TTL perioda nema potrebe da se ponovo pita za taj zapis, jer će biti isti odgovor.“, tj. za to i to domensko ime, toliko i toliko sekundi će sve isto vrijediti.

Treće polje – class polje u kojem je uvijek oznaka IN (internet). Teoretski može biti i neka druga klasa.

Četvrto polje – tip zapisa. Ne mora se RR zapis odnositi samo na preslikavanje domenskog imena u IP adresu (inače to je zapis tipa „A“). Postoje razni tipovi RR zapisa na osnovu kojeg se vraća odgovarajuća vrijednost.

Peto polje – sama vrijednost.

Page 4: Predavanje 7 - DNS

Dakle, to je struktura baze – 5 kolona od kojih svaka ima odgovarajuću vrijednost:

DOMAIN_NAME ¿ TTL ¿ CLASS ¿ TYPE ¿ VALUE

Zapis tipa MX – ako pošaljemo mail na adresu @etf.unsa.ba, u etf.unsa.ba domeni postoji jedan ili više servera koji je ustvari mail server. U DNS zapisima postoji potreban zapis koji kaže koji je mail server za tu domenu. Taj zapis je tipa MX. Tim zapisom se definira IP adresa na kojoj se nalazi mail server za tu zonu.Za jedno ime može postojati nekoliko načina zapisivanja. Tako zimbra i webmail imaju originalno ime igman (igman.etf.unsa.ba proslijeđuje na webmail). Dakle, to originalno ime IGMAN ima još dva imena (nadimka) – webmail i zimbra. Zašto se daju i druga imena? U principu da bi bilo lakše zapamtiti. Ako na istom serveru postoje i webmail i Web server, jedan se može zvati www.etf.unsa.ba, a drugi webmail.etf.unsa.ba, a ustvari se pokazuje na istu IP asresu.

SOA (Start of Authority) – su neki osnovni podaci o zoni, name serveru, TTLu.

Tip NS – zapravo kaže samo kako se zove name server za dotični domen.

Tip MX – kaže koja IP adresa, tj. kako se zove mail server za dotični domen.

CNAME – alternativna imena (webmail cname je igman).

7.6 Kako radi DNS?

Šta se dešava kada korisnik u svom na primjer Web browseru ili mail klijentu, ukuca, tj. pokuša da pristupi nekom računaru, odnosno nekoj usluzi koja se nalazi na nekoj adresi koja je definirana domenskim imenom?

Korisnikov program (aplikacija) kontaktira name resolver (lokalni proces na računaru) i pita ga: „Ti bi trebao da mi daš uslugu pretvaranja tog i tog domenskog imena u tu i tu IP adresu?“. Tada name resolver svaki put prvo provjeri neki keš (generalno, ideja sa DNSom je da se DNS kešira, gdje god je to moguće). Pored toga, ako USER program na primjer tipa Web browser ima i svoj keš domenskih imena, tj. ako je korisnik pristupio nekom domenskom imenu, Web browser je dobio odgovarajujuću IP adresu i on će je keširati određeno vrijeme i neće za to domensko ime pitati name reoslver. Znali prvo posotji lokalni keš te aplikacije, zatim ona provjerava u svom kešu da li je neko nedavno od drugih apliakcija sa računara pitala za pretvaranje tog domenskog imena u IP adresu. Ako jeste, vraća se odgovor iz keša, ako nema nakon toga name resolver pristupa name serveru (ovdje se radilo o kešu koji radi na nivou računara koji je provjeren od strane resolvera). Name server se nalazi na IP adresi koja je upisana kroz konfiguraciju mrežne kartice (IP adresa, Subnet maska, default gateway i DNS). Dakle, name resolver pristupa toj adresi koja je upisana kao DNS i na toj adresi se nalazi name server (njegov „lokalni“ name server). Taj name server može biti bilo gdje, odnosno ožemo izabrati google-ov name server.

Zašto je bolje izabrati lokalni server? U principu, bolje je pitati nekog ko je bliži, jer su veće šanse da će se brže dobiti odgovor. Kako god, ko je god pitan, odgovor bi trebao biti isti. Name server prvo pregleda kakvo se domensko ime traži. Ako je to domensko ime za koje je dotični name server odgovoran (tj. ako je taj server na

Page 5: Predavanje 7 - DNS

primjer na etf.unsa.ba, a korisnik traži www.etf.unsa.ba), tada on zna da je to poddomen njegovog domena i on će onda to ime provjeriti u svojoj bazi podataka. Iz baze će pročitati i vratiti odgovor, a ako to domensko ime koje se traži nije u njegovom domenu, na primje rkorisnik traži www.pmf.etf.unsa.ba, onda on zna da nema potrebe da pretražuje svoju bazu podataka, ali će onda prvo provjeriti svoj keš da vidi da li je neko drugi u skorije vrijeme tražio to domensko ime (jer on opslužuje sve računare u njegovoj domeni, kao što i name resolver poslužuje više aplikacija na jednom računaru, odnosno svi računari iz jednog domena se obraćaju svome name serveru). Ako posotji informacija u kešu, vratit će se keširani odgovor, a ako ga nema, on će po ustaljenom protokolu pitati, tj. obratiti se nekom drugom name serveru. Generalno, jedan name server zna samo adrese koje su u njegovom domenu, ostale adrese ne zna i može eventualno tada provjeriti keš, ako nema ni tu, pitati drugi name server.

Kojem će se name serveru obratiti?Dva su načina na koja se to rješava:

Prvi način – u tom name serveru se definira koga će tada pitati (nešto u smislu alternativnog name servera).

Drugi način – pita tzv. ROOT name server, tj. name servere koji znaju TOP LEVEL domene.

Uglavnom, pitat će neki drugi name server, a taj će drugi name server ili odgovoriti ili će mu reći koga drugog da pita. U svakom slučaju, dotični name server će doći do imena i to ime će se vratiti name resolveru (name server pruža uslugu name serveru) koji će ga vratiti onom koji ga je tražio. Važno je napomenuti da na svakom ovom kešu postoji keširanje što je u skladu sa tim da DNS treba da bude keširan gdje god je to moguće. Korisnički programi, name resolveri, svi oni imaju svoj keš, a sve u cilju da se ne bi pravio veliki saobraćaj.

Kada name server pita nekog drugog, kao što smo rkeli ima dva načina - situacija da osoba A pita osobu B za broj telefona osobe C:

Prva varijanta je da osoba B kaže da ne zna, ali će se raspitati i kada dobije broj daće ga osobi A.

Druga varijanta je da osoba B kaže da ne zna broj (kao i u prvoj varijanti), ali daće osobi A broj osobe D ili neke druge da pita tu osobu.

To je u principu razlika između rekurzivnog i iterativnog ponašanja. Rekurzivno ponašanje name servera je on (name server koji je upitan) ne zna da odgovori, ali će pitati nekog drugog i eventualno dobiti odgovor i vratiće ga on „lično“, onome ko je pitao. Iterativno ponašanje name servera je to da name server koji je upitan će odmah dati adresu nekog drugog name servera koji bi mogao to znati. Sa aspekta onoga koji pita, bolje je rekurzivno ponašanje (ne šaltaju ga), a sa aspekta onog koji pruža uslugu, bolje je iterativno ponašanje, jer mu je puno jendostavnije umjesto da se on raspituje, da uputi tog koji ga je pito da se sam dalje raspituje. Kada nam resolver pita name server, on mora odgovoriti rekurzivno (inače kada klijent pita server on uvijek odgovara rekurzivno). Ali kad dva name servera komuniciraju, čista je stvar dogovora da li će to biti rekurzivno ili iterativno ponašanje.

Slika 7.2 – Kako radi DNS?

7.7 Primjer iterativnog ponašanja

Slika 7.3 – Primjer iterativnog ponašanja

Page 6: Predavanje 7 - DNS

Klijent pita lokalni nam server i između njih je uvijek rekurzivno ponašanje. Lokalni name server vidi da mu treba IP adresa od www.nesto.ba. Pod pretpostavkom da to nema u lokalnom kešu, tada pretraga u opštem slučaju počinje od ROOT name servera (name server koji se nalazi na najvišem nivou domena). Počinje tako što će se lokalni server obratiti ROOT name serveru. Lokalni name server kaže ROOT name serveru da traži na primjer adresu www.bla.nesto.ba, ROOT name server ne mora niti treba da zna ovakve adrese, ali treba samo da zna adresu administratora .ba domene. Dakle, ROOT name server će u ovom slučaju vratiti IP adresu na kojoj se nalazi name server za .ba domenu. Dakle, glavna ideja je da ROOT name server treba da zna samo IP adrese name servera za sve TOP LEVEL domene. Time je količina podataka koju treba da zapamte ograničena, a samim time povećana brzina odgovora, lakše ažuriranje i slično. Nakon toga, dakle pita se .ba server (tj. TOP LEVEL .ba server) zna li išta o adresi www.bla.nesto.ba, on će reći da ne zna, ali će odgovoriti sa IP adresom domena nesto.ba (.ba daje IP adresu name servera na domenu nesto.ba). Nakon toga pita se nesto.ba i on će odgovoriti, evo ti IP adresa name servera koji će znati odgovoriti na bla.nesto.ba. Na kraju kada bude upitan name server domena bla.nesto.ba, on će vratiti traženu IP adresu.

Šta je prednost ove procedure? Svaki od name servera, zna samo ustvari lokalne informacije. Dakle ROOT serveri imaju adrese name servera osnovnih domena. Svaki osnovni domen zna IP adrese svojih name servera domena ispod njega i tako dalje.

Na taj način se osigurava: Nijedan server ne mora da phrani previše podataka. Lakše ažuriranje u smislu da ako se adresa promijeni, promijeniće se samo na

name serveru domena do kojeg se svakako mora doći.

Dakle, svako pamti i ažurira svoje lokalne informacije čime je riješen problem pitanja kako pohraniti ogromnu količinu podataka i kako je pretražiti na najjednostavniji način. Ako se stvarno ne zna ko treba biti pitan, onda se pitaju ROOT name serveri te je u realnosti i malo upita za njih. Teoretski kako smo rekli DNS je podijeljen hijerarhijski da na svakom nivou postoji name server. Međutim, u realnosti i nije baš tako. Kompletno internet stablo je podijeljeno na zone.

7.8 Zona

Zona je skup domenskih imena pod inherencijom (uticajem) jednog name servera. Znači jedan name server ima informacije o određenom broju domenskih imena, a ta domenska imena ne moraju biti na istom nivou hijerarhije. Jedna zona je svakako za TOP LEVEL domene.

Slika 7.4 – Zone

Na primjer ovdje jedan name server (princeton name server) može imati podatke o princeton.edu i isto tako može imati podatke o physics.princeton.edu. Ako se pitanje odnosi na cs.princeton.edu, neće odgovoriti već će reći za ovaj moj poddomen posotji poseban name server.

Šta može biti? Odsjek za informatiku na Princetonu je rekao da mogu sami održavati svoj name server, odsjek za fiziku je rekao da ne može i da to radi univerzitet. Dakle, zona ne mora biti jedan nivo i može biti podijeljena na na primjer osnovni

Page 7: Predavanje 7 - DNS

nivo i neke grane podnivoa, ali spadaju pod jedan name server dok neki poddomeni imaju svoje odgovaraćuje name servere.

Generalno, informacije o adresama TOP LEVEL domen name servera bi mogle teoretski biti pohranjene na jednom name serveru. Međutim, sve bi ond azavršilo od tog jednog name servera. Zato su informacije o IP adresama, tj. RR zapisi TOP LEVEL domena name servera zapisane u 13 ROOT name servera. Zapravo to nije čak ni 13 name servera, već je to formalno 13 domenskih imena i IP adresa koje se preslikavaju na 250 fizičkih mašina.

7.9 Pješke ono što name serveri i resolveri rade

Tražimo adresu www.etf.unsa.ba, tj. IP adresu koja odgovara tom domenskom imenu. Taj neki name resolver bi pitao svoj loklani name server. Namjestili smo tako (kao NSLOOKUP) da se prvo pita jedan od ROOT name servera. On kaže da ja to ne znam, niti trebam da znam, ali kaže name server koji bi mogao znati. IP adresa koja odgovara domenskom imenu (ni .ba domen nije baš za jednog name servera, jer kada on ne bi bio dostupan, domenska imena unutar .ba domene ne bi bila dostupna). Vraća se konkretno 5 IP adresa, prvi i peti name server su u UTICu (SAVA.UTIC.net.ba i NS.ba). Znači ROOT name server vraća IP adresu name servera za .ba domenu.

Nakon toga smo izabrali SAVA.UTIC.net.ba i pitamo njega gdje je www.etf.unsa.ba. On kaže da ja to možda ne znam i vraća IP adresu name servera etf.unsa.ba domena i onda njega kad pitamo on vraća IP adresu od www.etf.unsa.ba.

7.10 Neautoritativni odgovor

Na primjer, možemo pitati naš server da nam vrati IP adresu nekog domena i da on vrati tzv. neautoritativni odgovor. To znači da to nije odgovor koji je server dobio od name servera koji je zadužen za to ime, već je to odgovor koji je naš server povukao iz keša (on ili neko drugi). Dakle, odgovori koji se dobijaju iz keša su neautoritativni odgovori, tj. autoritativni odgovor može dati samo name server tog domena. Za bilo koju adresu iz etf.unsa.ba domena jedini autoritativni odgovor potiče od našeg name servera. Budući da se domenska imena ne mijenjaju baš tako brzo, neautoritativni odgovor je sasvim u redu.