Osnove funkcionisanja DNS-a (3)
U ovom serijalu tekstova želimo da vam pojasnimo osnove funkcionisanja DNS-a. Pred vama je treći od četiri članka.
DNS protokol i komunikacija
DNS protokol se nalazi na najvišem aplikacijskom nivou TCP/IP modela, te je preko zaglavlja povezan sa TCP (engl. Transmission control protocol) protokolom i UDP (engl. User datagram protocol) protokol nižeg prenosnog nivoa.
Za DNS upite i odgovore se koristi tzv. opšti oblik poruke, koji se sastoji od pet delova. Oni se popunjavaju kako upitima klijenta tako i odgovorom od servera i u oba slučaja i podacima u zaglavlju koji su nužni da se proces obavi ispravno i uspešno. Dotični odeljci sa sadržajem su:
- Zaglavlje (engl. Header) – nužna polja koja definišu tip poruke i pružaju klijentu ili serveru važne informacije o poruci. U zaglavlju se nalaze i brojači zapisa u drugim odeljcima poruke. Zaglavlje je prisutno u svim porukama i fiksne je veličine 12 bajtova. Jedna od važnih zastavica u zaglavlju je i QR koja označava da li je poruka pitanje ili odgovor
- Pitanje (engl. Question) – jedna ili više upita klijenta prema DNS serveru
- Odgovor (engl. Answer) – jedan ili više RR-ova koji su odgovor na klijentov upit, gde je RR jedan zapis, jedna jedinica u DNS sistemu – više o ovome u nastavku
- Autoritet (engl. Authority) – jedan ili više RR-ova koji predstavljaju delegaciju na autoritativne servere, odnosno pokazuju na autoritativne DNS servere koji se mogu koristiti za nastavak DNS rezolucije
- Dodatno (engl. Additional) – jedan ili više RR-ova koji sadrže dodatne informacije vezane uz upit, ali dotične nisu nužne za potpunost odgovora ili upita, npr. IP adresa DNS servera spomenutnog u polju za autoritet
Neke od mogućih zastavica u zaglavlju DNS poruke su sledeće:
- ID (engl. Identifier) – reč je o 16-bitnom identifikacijskom broju koje stvara računar ili uređaj koji šalje DNS upit. Server u poruci mora odgovoriti sa istim takvim brojem, što omogućava klijentu da prepozna par upit – odgovor
- QR (engl. Query/response flag) – služi za razlikovanje upita i odgovora. Postavljena je na 0 za upit od klijenta, a 1 za odgovor od servera
- AA (engl. Authoritative answer flag) – zastavica će biti postavljena na 1 ako je server koji šalje odgovor autoritativan za zonu koja je data u odeljku pitanja, a u suprotnom će biti 0
- TC (engl. Truncation flag) – zastavica koja kad je postavljena na 1 označava da je poruka nepotpuna budući da bi ukupna veličina UDP poruke bila veća od 512 bajtova. Klijent tada može poslati novi zahtev da bi dobio potpun odgovor, pa se najčešće ostvaruje novi upit – odgovor koristeći TCP
DNS međuskladište
Osnovni način pretraživanja (iterativni i rekurzivni silazak kroz DNS stablo) vrlo su neučinkoviti jer svaki upit implicitno znači novi prolazak kroz stablo, počevši od vršnih DNS servera. Jasno, kada bi se u stvarnom svetu nužno svaki put prolazilo od početka DNS stabla do traženog zapisa, proces DNS razrešavanja bi predugo trajao, a princip spremanja kako pozitivnih (uspešnih) tako i negativnih (neuspešnih) rezultata DNS upita na DNS serverima.
Formiranje međuskladišta (engl. Cache) DNS rezultata korisno je zbog dveju jednostavnih činjenica:
Veće su šanse da će se pristupati nekom resursu ako se nedavno pristupalo nekom drugom prostorno bliskom resursu – to je tzv. prostorna lokalnost reference. Ako se nekom resursu nedavno pristupalo veće su šanse da će mu se ponovo pristupati- to je tzv. vremenska lokalnost reference. U praksi je pokazano da se često šalju isti ili slični DNS uptiti u vremenski bliskim periodima. Stoga svi DNS serveri imaju interna međuskladišta o nedavnim DNS upitima koji im omogućavaju pribavljanje odgovora ili dela odgovora iz međuskladišta. DNS međuskladišta se nalaze i na većini DNS klijenata, a obavljaju isti posao kao i na DNS serverima. Na taj način se spremaju rezultati već obavljenih upita i na klijetskim računarima, što smanjuje saobraćaj prema serveru i njihovo opterećenje. Tako spremljeni odgovori će biti dalje sačuvani kod klijenata, budući da je svako međuskladište ograničene veličine i novi upiti brišu stare ili nekorištene odgovore.
Međuskladišta više poboljšavaju performanse što su bliže klijentu, ali daju bolju pokrivenost što su dalje od klijenta. Podaci spremljeni u međuskladištima imaju svoja vremena života TTL (engl. Time to live) pa se time osigurava da zastareli podaci nužno nestaju iz skladišta. DNS server će pri prihvatu DNS upita obaviti pretraživanje sopstvenog međuskladišta kao i lokalne DNS baze, pokušavajući što više skratiti vremenski „skup“ prolazak kroz DNS stablo. Negativni efekat postojanja TTL vremena za DNS zapise je što utiče i na vreme propagacije podataka (engl. Propagation time) po DNS stablu, budući da se promene između ne vide sve do eksplicitnog nestajanja zapisa zbog TTL-a.
Primarni i sekundarni DNS prenos zone
Autoritativni DNS server za određenu zonu je svaki server koji ima kompletnu kopiju zone bez potrebe za procesom razrešavanja. Dakle, reč je o serveru koji daje sopstvene podatke klijentu. Osnovni podatak koji informiše server da je autoritativan za zonu je SOA zapis. Neispravno definisan SOA zapis može dovesti do situacije da niti jedan DNS server nije autoritativan, a time i do prestanka normalnog rada DNS razrešivanja za tu zonu.
Dobro je definisati više DNS servera za istu zonu koristići više odgovarajućih NS zapisa. Svaka zona trebala bi imati barem dva DNS servera. Nakon isteka TTL vremana pojedinog RR-a (definiranog u svakom RR-u), podaci sačuvani po raznim klijentima i serverima nestaju. U slučaju da je postojao samo jedan autoritativni DNS, a da je on neaktivan ili neispravan, zona je nedostupna. Stoga je razvijen princip primarnog (engl. Primary, master) i sekundarnog (engl. Secundary, slave) DNS servera. Primarni server je onaj autoritativni DNS server koji podatke o svojoj zoni ima lokalno sačuvane. Sekundarni server je onaj koji podatke dobija od nekog spoljnog izvora, obično koristeći prenos zone (engl. Zone transfer) primarnog servera. Primarni server za jednu zonu može biti sekundarni za drugu i sl. Sa strane klijenta, oba su serveri jednake vrednosti i jednakog prioriteta (slučajni izbor). Dobro je da sekundarni server bude fizički udaljen od primarnog.
Dinamički DNS
Današnji DNS i DHCP (engl. Dynamic Host Configuration Protocol) serveri omogućavaju međusobno povezivanje sistema dodeljivanjem IP adresa i DNS sistema. Takav sistem naziva se dinamički DNS (engl. Dynamic DNS), a radi na način da se svaki računar koji dobija IP adresu od DHCP servera registruje u DNS sistemu ktoz automatizovani proces. DHCP klijent šalje DNS UPDATE poruku koja indicira DNS serveru šta treba obaviti s odgovarajućim RR-ovima. Naravno, dinamički DNS kao takav nije ograničen nužno na DHCP, već u praksi svaki autorizovani DNS klijent može upravljati odgovarajućim zapisima u zoni.