Menu Zavrieť

2.7. DNS

DNS: domain name system, komplexný systém spomínaný v mnohých RFC, základný protokol na získanie DNS záznamov je popísaný v RFC 1035.

DNS je systém, spravujúci distribuovanú databázu DNS záznamov (anglicky RR: resource record). Databáza DNS záznamov je organizovaná v hierarchickej štruktúre doménových serverov (DNS serverov, name serverov).

Hlavnou úlohou DNS je preklad doménových mien na IP adresy a späť. IP adresy používa sieťová vrstva Internetu na adresáciu datagramov a identifikáciu zariadení v sieti. Keďže IP adresy sú 32-bitové čísla (alebo, v prípade IPv6, 128-bitové čísla), sú pre ľudí ťažko zapamätateľné. Ľudia teda používajú na adresáciu zariadení v sieti doménové mená. Samotná komunikácia na internete s daným zariadením je možná až po preklade na IP adresu.

DNS ponúka aj širšie možnosti ako len preklad z doménových mien na IP adresy:

  • nevynucuje reverzné doménové mená
    • Nie každá IP adresa musí mať pridelené doménové meno. Niekedy sa stáva, že sa preklad z doménového mena na IP adresu podarí, ale opačný preklad už nie. Ak chceme zabezpečiť aj opačný smer prekladu, tak pre danú IP adresu musíme prideliť reverzné doménové meno.
  • host aliasing
    • Viac doménových mien môže mať pridelenú rovnakú IP adresu. Toto je často využívané vo webhostingu, kde na jednom počítači (aj v jednom webovom serveri) sú k dispozícii webové stránky rôznych zákazníkov s rôznymi doménovými menami.
  • mail server aliasing
    • Mailový server pre danú doménu môže sídliť, a často aj sídli, na inom počítači ako webový server, aj keď s rovnakým doménovým menom v mailovej adrese (za zavináčom) a pre web. Tiež je možné špecifikovať aj náhradné mailové servery pre jednu doménu.
  • distribúcia záťaže
    • Táto metóda umožňuje viacerým IP adresám prideliť rovnaké doménové meno. Využitie je pri veľmi zaťažených serveroch, kedy je potrebné vytvoriť viac replikovaných serverov poskytujúcich rovnakú službu. DNS klient potom dostane zoznam IP adries týchto serverov v náhodnom poradí (pre každého klienta náhodnom). Klient si obvykle vyberie prvú IP adresu a daný server kontaktuje. Keďže sa na prvom mieste zoznamov pre klientov vyskytujú jednotlivé IP adresy podobne často, klienti oslovujú všetky servery s rovnakou pravdepodobnosťou, čím sa rozkladá záťaž viac-menej rovnomerne.

Infraštruktúra DNS je tvorená celosvetovou hierarchiou serverov. Na vrchole hierarchie sa nachádza presne 13 koreňových DNS serverov, z ktorých každý má svoju IP adresu (niektoré z nich už aj IP adresu verzie 6). Nejde však iba o 13 počítačov. Mnohé z týchto serverov majú svoje kópie s rovnakou IP adresou po celom svete. Umožňuje to smerovacia schéma anycast smerovacieho protokolu BGP, ktorá paket s danou cieľovou IP adresou nasmeruje iba k „najbližšiemu“ počítaču s touto IP adresou. Prehľad všetkých lokalít koreňových serverov si môžete pozrieť na adrese http://www.root-servers.org/

V hierarchii pod koreňovými DNS servermi sa nachádzajú TLD (Top Level Domain) DNS servery. Ide o servery zodpovedné za poslednú časť názvu domény napr. comnetorgeduskczeu, a tak ďalej. Každý z týchto „serverov najvyššej úrovne“ je zodpovedný za jednu z koncoviek. Záznamy o tom, ktorý z TLD serverov je zodpovedný za ktorú koncovku, spravujú práve koreňové servery. Samozrejme, že pre každú koncovku je prevádzkovaných viac TLD DNS serverov, aby pri výpadku niektorého z nich boli k dispozícii ďalšie, ktoré vedia poskytnúť rovnaké informácie. TLD DNS servery spravujú záznamy o DNS serveroch prvej úrovne napr. upjs.sksme.sk, atď., ktoré môžu mať pod sebou ďalšiu hierarchiu serverov druhej a ďalších úrovní. Okrem toho servery prvej a ďalších úrovní už spravujú aj záznamy o IP adresách konkrétnych cieľových počítačov. DNS servery, ktoré spravujú danú doménu pre cieľové počítače, sa nazývajú aj autoritatívne DNS servery.

Okrem DNS serverov zapojených v hierarchii sa bežne prevádzkujú aj lokálne DNS servery, ktoré nie sú správcom žiadnej domény, ale slúžia ako predvolené DNS servery koncových staníc z rovnakej siete, aby za nich komunikovali s DNS servermi v hierarchii pri zisťovaní prekladu doména/IP adresa. Tieto DNS servery si ukladajú všetky zistené DNS záznamy do svojho lokálneho cache úložiska. Často požadované DNS záznamy sa tak nemusia vždy zisťovať z internetu, ale ak sú v cache, aj priamo od lokálneho DNS servera, čo odľahčuje hlavne DNS servery vyšších úrovní. Takéto odpovede z cache DNS servera sa nazývajú neautoritatívne. Záznamy v cache majú svoju životnosť a po čase musia byť obnovované. Obvykle je táto životnosť jeden deň.

Spôsob získania požadovaného DNS záznamu môže byť rekurzívny a nerekurzívny. Pri rekurzívnom spôsobe poprosíme oslovený DNS server, nech nám priamo on zistí hľadaný DNS záznam. Tento DNS server pre nás zistí v hierarchii požadovaný záznam a vráti nám ho. Rekurzívny spôsob teda nechá hľadanie záznamu z hierarchie serverov na iný (typicky lokálny) DNS server. Pri nerekurzívnom spôsobe, ktorý je typický na komunikáciu lokálneho DNS servera s inými DNS servermi v hierarchii, sa postupne pýtame koreňového servera na IP adresu TLD servera, následne oslovujeme TLD DNS server na získanie záznamu o serveri prvej úrovne a tak ďalej, pokiaľ nezískame od posledného z oslovených serverov hľadaný DNS záznam. Ak tento server už pozná niektorý zo serverov v tomto zozname kontaktovaných serverov, nemusí svoje hľadanie realizovať cez koreňový server. Postup nerekurzívneho hľadania záznamu uveďme na príklade hľadaného prekladu doménového mena web.ics.upjs.sk:

  1. Ak mám aktuálny záznam prekladu web.ics.upjs.sk v svojej cache, vrátim ho ako odpoveď.
  2. Ak mám aktuálny záznam o autoritatívnom doménovom serveri pre doménu web.ics.upjs.sk (ak taký DNS server vôbec existuje), opýtam sa ho na preklad doménového mena web.ics.upjs.sk a vrátim ho ako odpoveď.
  3. Ak mám aktuálny záznam o autoritatívnom doménovom serveri pre doménu ics.upjs.sk (ak taký DNS server vôbec existuje), opýtam sa ho na preklad doménového mena web.ics.upjs.sk. Ak ho má, vrátim ho ako odpoveď, ak nie, popýtam sa na adresu autoritatívneho doménového servera pre doménu web.ics.upjs.sk a pokračujem bodom 2.
  4. Ak mám aktuálny záznam o autoritatívnom doménovom serveri pre doménu upjs.sk (ak taký DNS server vôbec existuje), opýtam sa ho na preklad doménového mena web.ics.upjs.sk. Ak ho má, vrátim ho ako odpoveď, ak nie, popýtam sa na adresu autoritatívneho doménového servera pre doménu ics.upjs.sk a pokračujem bodom 3.
  5. Ak mám aktuálny záznam o TLD doménovom serveri pre koncovku sk (ak taký DNS server vôbec existuje), popýtam sa na adresu autoritatívneho doménového servera pre doménu upjs.sk a pokračujem bodom 4.
  6. Popýtam sa niektorého koreňového servera na adresu TLD doménového servera pre koncovku sk a pokračujem bodom 5.

DNS záznamy obsahujú meno, hodnotu, typ a čas života. Po uplynutí času života končí platnosť tohto záznamu v cache DNS servera a nemôže sa už použiť na neautoritatívne odpovede, ale musí byť opätovne vyžiadaný z hierarchie. Základné typy DNS záznamov sú nasledovné:

  • Typ A – Hodnota je IP adresa stanice, meno je doménové meno stanice. Táto stanica môže byť DNS server, ale aj nemusí. Záznamy typu A sú potrebné na základnú funkcionalitu DNS serverov t.j. preklad doménových mien na IP adresy a späť.
  • Typ AAAA – To isté ako typ A, len pre IPv6.
  • Typ NS – Menom je doména a hodnotou je meno (autoritatívneho alebo TLD) DNS servera spravujúceho túto doménu. Tieto záznamy sa používajú na nájdenie DNS servera v hierarchii serverov.
  • Typ CNAME – Menom je alias pre „skutočné“ doménové meno, ktorému je primárne určená daná IP adresa. Hodnotou je to skutočné doménové meno.
  • Typ MX – Tento typ sa používa na identifikáciu mailových serverov na základe mailovej adresy. Meno v zázname obsahuje doménové meno, ktoré sa v mailovej adrese vyskytuje za zavináčom. Hodnota v zázname je skutočné meno servera, na ktorom beží mailový server.

DNS server počúva na porte 53 a je možné s ním komunikovať s použitím protokolu TCP aj UDP. Žiadosti o preklad sa obvykle realizujú cez UDP. TCP komunikácia sa používa na stiahnutie celej množiny záznamov, typicky za účelom synchronizácie viacerých autoritatívnych DNS serverov pre tú istú doménu. DNS protokol používa binárne požiadavky a odpovede. Je popísaný v RFC 1035.