Úvod do DNS

Internet zahŕňa milióny zariadení vrátane počítačov, routrov, tlačiarní a iných súčastí. Každé takéto zariadenie sa nazýva nod (uzol). Aby bolo možné s týmito nodmi komunikovať a odlíšiť jeden od druhého, každý z nich vyžaduje jedinečný identifikátor – IP adresu. Intranety taktiež môžu používať TCP/IP protokol, čo tiež vyžaduje unikátnu adresu pre každý nod. Pri intranete ale môžu byť adresy použité z rozsahu neverejných rezervovaných rozsahov (napr. 192.168.0.x). Nody na internete musia mať unikátnu verejnú IP adresu. Tieto adresy je ale pre ľudí obtiažne si zapamätať a ich používanie je nepraktické. Domain Name Service (DNS) prekonáva tento problém tak, že umožňuje ľuďom pracovať s prirodzenými menami miesto IP adries. Presnejšie povedané, DNS umožňuje mapovanie názvov na adresy. Je jednoduchšie napr. pre prístup k tomuto webu písať www.ervin.sk než 88.212.18.39. DNS si berie na starosť prevod tohto názvu na IP adresu. Mapovanie názvov na IP adresy sa nazýva name resolution (rozlišovanie názvov).

Internet pôvodne vznikol zo siete ARPANET. Táto sieť pozostávala z relatívne malého počtu počítačov (rok 1970). S malým počtom nodov bolo relatívne jednoduché poskytovať rozlišovanie názvov. Stanford Research Institute (SRI) spravoval jeden textový súbor nazvaný Hosts.txt pomocou ktorého prevádzal názvy na adresy. Administrátori obvykle pravidelne kopírovali tento súbor zo SRI na ich lokálne systémy, aby mali k dispozícii aktuálny zoznam mapovaní. Ako sa počet hostov zvyšoval, používanie tohto súboru sa stávalo nepraktickým. V polovici 80-tych rokov rokov bol vyvinutý DNS systém, ktorý poskytoval dynamické rozlišovanie názvov na rozdiel od statického.

Pochopenie doménových názvov

Ako som spomínal, každé zariadenie na IP sieti je nod. Mnoho nodov sa taktiež môže nazývať host. Hostom je obvykle počítač, router alebo iné „inteligentné“ zariadenie. V skutočnosti môže byť za host-a považované ľubovoľné zariadenie a mať pridelený názov. V systéme Windows 2003 Server názov počítača ako sa zobrazuje na sieti je typicky aj hostiteľským názvom (host name). Napríklad, názov počítača je SERVER a počítač sídli v doméne ervin.sk. Teda názov hosta je server, názov domény je ervin.sk, takže plne kvalifikované doménové meno (Fully Qualified Domain Name – FQDN) počítača je server.ervin.sk. FQDN jednoznačne identifikuje nod v DNS.

Domény nie sú limitované jednou úrovňou ako v predošlom príklade. Predpokladajme, že doména ervin.sk zahŕňa niekoľko ďalších (napr. organizačných) jednotiek a každá z nich má vlastnú subdoménu – hotline, vyvoj, obchod. Doménové názvy by potom boli hotline.ervin.sk, vyvoj.ervin.sk, obchod.ervin.sk. Každá z týchto domén by ešte mohla mať pobočky na rôznych miestach – napr. Košice, Prešov a názov by potom mohol byť kosice.hotline.ervin.sk. A takto by sme mohli pokračovať ďalej.

FQDN v tomto prípade by bolo server.kosice.hotline.ervin.sk. Poznamenávam, že koreň doménového menného systému je null – často repezentovaný bodkou (.).

Zoznam niektorých top level domén:

Prípona Účel Príklad
com Commercial organizations such as businesses microsoft.com
edu Educational organizations such as colleges and universities berkeley.edu
gov Governmental organizations such as the IRS, SSA, NASA, and so on nasa.gov
int International organizations such as NATO nato.int
mil Military organizations such as the Army, Navy, and so on army.mil
net Networking organizations such as ISPs mci.net
org Noncommercial organizations such as the IEEE standards body ieee.org

Krajiny majú obvykle svoju vlastnú doménu, napríklad .sk pre Slovensko, .cz pre Česko a pod.

Ako pracuje DNS

Súčasný DNS systém pracuje ako klient-server distribuovaná databáza. Použitím architektúry distribuovaných databáz DNS umožňuje lokálne riadenie vlastných domén, pričom umožní prístup všetkých klientov k databáze vždy keď to potrebujú. DNS zahrňuje hierarchickú štruktúru domén, pričom každá doména reprezentuje skupinu subdoménových stromov ležiacich pod ňou. Na najvyššej úrovni sú tzv. koreňové servre (root servers), ktoré spravujú koreňové domény (napr. .com, .org, .net a pod). Koreň je označovaný obvykle bodkou.

Koreňové servre spravujú iba limitované množstvo informácií o danej doméne. Typicky informácie zahrňujú iba menné servre identifikované ako autoritatívne pre zónu. Záznamy, ktoré mapujú mená na adresy v jednotlivých doménach sú obvykle uložené na DNS serveroch jednotlivých domén. Tieto servre sú obvykle spravované ISP pre ich klientov, alebo vlastníkmi domén.

Resolvery, menné servery a dopredné vyhľadávanie.

DNS klienti (nazývaní resolver) posielajú žiadosti o preklad názvov na IP adresy DNS serverom. Ak sa napríklad chcete pripojiť na www.ervin.sk, www je názov hosta (alebo alias na iné meno) a ervin.sk je názov domény. Resolver na vašom klientskom počítači pripraví DNS query pre www.ervin.sk a odošle ho DNS serveru, ktorý máte nastavený v TCP/IP nastaveniach (obvykle počítač na lokálnej sieti). DNS server skontroluje lokálnu cache (v ktorej sú uložené výsledky predošlých dotazov) a databázu a zistí, že nemá žiaden záznam pre www.ervin.sk. Preto odošle dotaz na root server pre doménu .sk. Koreňový server vyhľadá doménu ervin.sk a vráti IP adresu DNS servera, ktorý spravuje doménu ervin.sk. Váš server potom odošle dotaz na uvedený DNS server pre ervin.sk, ktorý vráti IP adresu hostiteľa www. Váš server túto informáciu poskytne obratom vášmu resolveru, ktorý jú odovzdá aplikácii (napr. web browser). Mapovanie hostiteľských názvov na IP adresy týmto spôsobom sa nazýva dopredné vyhľadávanie (forward lookup).

Obvykle konkrétny DNS server riadi všetky záznamy v určitej časti menného priestoru – obvykle nazývanej zóna. Termíny zóna a doména sú obvykle to isté, ale nie vždy. Zóna zahrňuje všetky dáta pre doménu okrem tých, ktoré sú delegované iným DNS serverom. Zóna je časť domény hostovaná na danom DNS serveri. Doména zahŕňa celú doménu bez ohľadu na to, kde sídli. Pokiaľ celá doména sídli na jednom DNS serveri, potom zóna a doména sú synonymá.

DNS server ktorý má celú informáciu o zóne sa nazýva autoritatívny, alebo že má autoritu pre zónu. DNS server môže byť autoritatívny pre ľubovoľný počet zón a môže byť autoritatívny pre niektoré a pre iné neautoritatívny. Navyše DNS server môže byť primárny alebo sekundárny. Primárny DNS server spravuje lokálne záznamy domén, pre ktoré je autoritatívny. Správca primárneho servera pridávať, modifikovať alebo mazať záznamy na tomto serveri.

Sekundárny server pre doménu číta záznamy z primárneho pomocou procesu nazývaného „zone transfer“. Tieto záznamy sú ukladané ako read-only kópie a periodicky sú znova načítavané z primárneho servera. Frekvenciu týchto zónových transferov môžete riadiť podľa vašich potrieb. Sekundárny server je v podstate záložný DNS server. Jediný rozdiel je v tom, ako server riadi zóny ale nie v zónach samotných.

Doménové záznamy a zónové súbory.

Každá zóna obsahuje záznamy o hostiteľoch a ďalších častiach domény v zóne. Tieto záznamy sú uložené v zónovom súbore na DNS serveri. Zónový súbor je textový súbor, ktorý používa špeciálny formát pre ukladanie DNS záznamov. Defaultný názov pre zónový súbor je domain.dns, kde domain je meno domény v zóne, napr. ervin.sk.dns. Windows 2003 server ukladá zónové súbory v adresári %systemroot%\System32\Dns. Na správu týchto súborov cez grafické rozhranie poskytuje MMC konzolu.

Každá zóna obsahuje niekoľko zdrojových záznamov (resource records), ktoré definujú hostiteľov a ďalšie dáta pre zóny. Existuje niekoľko odlišných typov záznamov, každý pre špecifický účel. Každý záznam má asociované vlastnosti, ktoré sa líšia podľa typu záznamu.

Typy zdrojových záznamov:

Typ Popis
A Maps host name to an address
AAAA Maps host name to Ipv6 address
AFSDB Location of Andrew File System (AFS) cell’s database server or Distributed Computing Environment (DCE) cell’s authenticated server
ATMA Maps domain name to Asynchronous Transfer Mode (ATM) address
CNAME Creates an alias (synonymous) name for the specified host
HINFO Identifies the host’s hardware and operating system type
ISDN Maps host name to Integrated Services Digital Network (ISDN) address (phone number)
KEY Public key related to a DNS domain name
MB Associates host with specified mailbox; experimental
MG Associates host name with mail group; experimental
MINFO Specifies mailbox name responsible for mail group; experimental
MR Specifies mailbox name that is correct rename of other mailbox; experimental
MX Mail exchange server for domain
NS Specifies address of domain’s name server(s)
NXT Defines literal names in the zone; implicitly indicates nonexistence of a name if not defined
PTR Maps address to a host name for reverse lookup
RP Identifies responsible person for domain or host
RT Specifies intermediate host that routes packets to destination host
SIG Cryptographic signature record
SOA Specifies authoritative server for the zone
SRV Defines servers for specific purpose such as http, ftp, and so on
TXT Associates textual information with item in the zone
WINS Enables lookup of host portion of domain name through WINS server
WINS-R Reverses lookup through WINS server
WKS Describes services provided by specific protocol on specific port
X.25 Maps host name to X.121 address (X.25 networks); used in conjunction with RT records

Primárny záznam je SOA (Start of authority). Tento záznam indikuje, že server je autoritatívny pre doménu. Zakaždým, keď vytvoríte novú zónu, Windows Server 2003 vytvorí SOA záznam pre zónu. NS záznamy identifikujú menné servery a zóna by mala obsahovať NS záznamy pre každý menný server v doméne.

Adresy, alebo A záznamy, mapujú mená hostiteľov na IP adresy. Multi-homed hostitelia (t.j. tí, ktorí majú viac IP adries) môžu mať viacero A záznamov. Každý z nich mapuje to isté meno na odlišnú IP adresu hostiteľa. Pri vyhľadávaní v DNS vráti výsledok všetky A záznamy odkazujúce na to isté meno. Pre zvýšenie výkonu DNS server triedi zoznam adries tak, že najbližšia adresa je na vrchu zoznamu pokiaľ resolver a DNS server sú na tej istej sieti. Adresy sú rotované počas nasledujúcich dotazov metódou round-robin.

Round robin a DNS

Ako vlastne funguje mechanizmus Round robin?

Ak existuje viac A záznamov k menu, DNS sa správa tak, že na dotaz klienta odpovie jedným záznamom a na ďalší dotaz odpovie ďalším záznamom v poradí. Ide o jednoduché rozloženie záťaže.

Uveďme príklad, firma so zaregistrovanou doménou ervin.sk používa 3 proxy servre s názvom:

proxyA.ervin.sk (172.16.1.1)
proxyB.ervin.sk (172.16.1.2)
proxyC.ervin.sk (172.16.1.3)

Ďalej sú vytvorené alias mená (záznamy CNAME) tak, že všetky tri servre používajú alias proxy. Klienti majú v IE definovaný ako proxy server na prístup do Internetu server s menom proxy.ervin.sk.

Ak klient bude pristupovať do Internetu, potrebuje sa dostať na niektorý firemný proxy server. Vyžiada si IP adresu servera proxy.ervin.sk a DNS server mu vráti IP adresu servera proxyA.ervin.sk (172.16.1.1), ďaľší klient s tou istou požiadavkou dostane od DNS servera IP adresu počítača proxyB.ervin.sk (172.16.1.2) atď.

Takýmto spôsobom sa záťaž rozloží rovnomerne na všetky tri proxy servre. Ak by jeden z proxy serverov bol neprístupný, klienta to neovplyvní, použije ďaľší.

Príklad:
Vyskúšajte toto. Pomocou utility nslookup v DOS prompte pošlite dotaz na zistenie IP adresy servera www.google.com. Výstup bude vyzerať asi takto:


Name: www.l.google.com
Addresses: 209.85.135.147, 209.85.135.99, 209.85.135.103, 209.85.135.104
Aliases: www.google.com

Zopakujte ten istý dotaz, výstup sa zmení:


Name: www.l.google.com
Addresses: 209.85.135.104, 209.85.135.147, 209.85.135.99, 209.85.135.103
Aliases: www.google.com

Zoznam IP adries sa zmenil, adresa 209.85.135.147, ktorá bola v zozname prvá, je v druhom výpise posunutá. Existuje viac serverov, ktoré používajú alias meno www.google.com a Round robin robí to, že dotazy od klientov „rozhadzuje“ rovnomerne medzi všetky servre.

CNAME (Canonical Name) mapuje alias na FQDN, nazývajú sa aj alias záznamy. A a CNAME záznamy pracujú ruka v ruke. Vytvoríte A hostiteľský záznam a následne použijete CNAME záznamy na vytvorenie aliasov. Napríklad vytvoríte záznam ns.ervin.sk a potom použijete CNAME záznamy pre aliasy www a ftp, ktoré ukazujú na ten istý server.

MX (Mail Exchanger) umožňujú serverom routovať maily. MX záznam zahrňuje FQDN poštového servera a jeho preferenčné číslo (0 – 65535). Preferenčné číslo určuje prioritu poštového servera špecifikovaného MX záznamom. Ak jestvuje viac poštových serverov, potom zóna obsahuje viac MX záznamov. Poradie doručenie mailov je určené preferenčným číslom, nižšie hodnoty sú skúšané ako prvé. Ak sú preferenčné čísla rovnaké, vzdialenému serveru je umožnené zasielať mail na ľubovoľný poštový server v doméne.

SRV (Service Locator) ponúkajú podobnú funkčnosť ako MX záznamy ale pre iné služby ako napr. HTTP, FTP, LDAP…

PTR (Pointer) záznamy mapujú adresy na mená – plnia opačnú funkciu ako A záznamy – toto sa volá reverzné vyhľadávanie (reverse lookup). Windows 2003 Server vie tieto záznamy vytvárať automaticky.

Každý záznam má obvykle asociované nejaké vlastnosti, mnoho z nich je spoločných pre všetky typy záznamov. Každý záznam má napríklad vlastnosť TTL (time-to-live). Táto hodnota je 32 bitový integer, ktorý určuje koľko sekúnd si má resolver cache-ovať výsledok DNS dotaz pred tým, ako ho zmaže. Pouplynutí tohto času resolver vymaže položku z cache a je odoslaný ďalší dotaz na DNS server. Napriek tomu, že TTL môže vylepšiť výkon siete (menj dotazov) treba brať aj ohľad na dynamiku internetu a že záznamy sa môžu často meniť.

Reverzné vyhľadávanie.

Dopredné vyhľadávanie mapuje názvy na adresy. Resolver vytvorí dotaz na DNS server, ktorý obsahuje názov hostiteľa a ako odpoveď dostane jeho IP adresu. Reverzné dotazy (reverse query) alebo tiež nazývané reverzné vyhľadávanie (reverse lookup) robí opačný prevod – mapuje IP adresu k menu. Klient pozná IP adresu ale potrebuje vedieť názov hostiteľa, ktorý je asociovaný s danou adresou. Reverzné vyhľadávanie je najčastejšie použité na zabezpečenie systémov založené na hostiteľskom názve.

Mapovanie adries na mena pomocou regulárnych dopredných vyhľadávaní nie je praktické a vyžaduje úplné prehľadanie celého menného priestoru DNS servera, aby sme našli správnu informáciu. Je to ako prehľadávať telefónny zoznam a pokúšať sa nájsť adresu podľa telefónneho čísla. Preto musí byť na takéto hľadanie použitý špeciálny mechanizmus.

Riešením je vytvorenie menného priestoru pre IP adresy – inak povedané, doménu v mennom priestore, ktorá používa IP adresy miesto názvov. Pre tieto účely slúži menný priestor in-addr.arpa. Takéto domény slúžia ako koreňové servery pre reverzné prehľadávanie. Pre pochopenie ako tento princíp pracuje si musíme najprv povedať niečo ako pristupuje k IP adresám.

Každá IP pozostáva zo štyroch čísel (0-255) oddelených bodkou. Príklad: 88.212.18.39. Doména in-addr.arpa deleguje každé číslo z IP adresy ako subdoménu. Na prvej úrovni je n.in-addr.arpa, kde n reprezentuje prvé (najviac vľavo) číslo z IP adresy. Každá z týchto domén obsahuje 256 subdomén a každá z nich reprezentuje druhé číslo zľava v IP adrese. Na tretej úrovni sú subdomény reprezentujúce tretie číslo. Takže IP adresa z nášho príkladu by v reverznej zóne bola zapísaná ako 18.212.88.in-addr.arpa.

7 komentárov k “Úvod do DNS”

    1. Ale aj tie môžu mať výpadky… Navyše koreňové servery nevedia nič o subdoménach a udržiavajú iba top level domény :). Osobné odporúčanie: ako DNS server by mal byť server fyzicky čo najbližšie ku vám – z dôvodu čo najrýchlejších odpovedí.

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *