DNS

Pavel Schneider, schneider@mail.muni.cz


Obsah


Historie DNS

Již v dobách ARPAnetu byla potřeba si pamatovat adresy jednotlivých počítačů. A jelikož si člověk pamatuje spíše jména či názvy než skupiny čísel vznikla myšlenka převodu číselných adres na jmenné adresy. V této době ARPAnetu byl překlad na UNIXových strojích řešen pomocí souboru /etc/hosts, který byl distribuován na všechny počítače (dodnes se používá pro účely přezdívek často navštěvovaných serverů a pro použití před dotazem na DNS server nebo v případě výpadku DNS serveru). Tato koncepce přestala však vyhovovat především kvůli nárokům na rychlou aktualizaci a na zvyšující se množství adres díky Internetu. A tak v roce 1983 vyvinul Paul Mockapetris DNS protokol, který je popsán v RFC 882, 883 a aktualizován v RFC 1034, 1035.


DNS

DNS (Domain Name System, systém doménových jmen) - je ucelený celek, umožňující uživatelům používat symbolická doménová jména místo číselných adres. Součástí tohoto systému jsou jak pravidla pro tvorbu doménových jmen i domén jako takových, tak i mechanismy a prostředky pro praktický převod symbolických jmen na číselné IP adresy. Systém tzv. name serverů dohromady tvoří distribuovanou databázi obsahující potřebné převodní informace.

Prostor doménových jmen tvoří strom. Každý uzel stromu obsahuje informace o části jména neboli doméně. Kořenem stromu je tzv. kořenová doména, která se zapisuje tečkou. Pod ní se v hierarchické úrovni nacházejí tzv. domény nejvyšší úrovně Top-Level Domain neboli TLD, například státní cz, sk a další jako com, edu, org. Každý koncový počítač má ve své konfiguraci síťových parametrů obsaženu i adresu lokálního DNS serveru, na nějž se má obracet s dotazy. V operačních systémech odvozených od Unixu je obsažena v souboru /etc/resolv.conf. Pokud počítač hledá určitou informaci v DNS (např. IP adresu k danému jménu), obrátí se s dotazem na tento lokální server. Každý DNS server má ve své konfiguraci uvedeny IP adresy kořenových serverů. Obrátí se tedy s dotazem na některý z nich. Kořenové servery mají autoritativní informace o kořenové doméně. Konkrétně znají všechny existující domény nejvyšší úrovně a jejich servery. Dotaz je tedy následně směrován na některý ze serverů domény nejvyšší úrovně, v níž se nachází cílové jméno. Ten je opět schopen poskytnout informace o své doméně a posunout řešení o jedno patro dolů v doménovém stromě. Tímto způsobem řešení postupuje po jednotlivých patrech doménové hierarchie směrem k cíli, až se dostane k serveru autoritativnímu pro hledané jméno, který pošle definitivní odpověď.

DNS servery se chovají dvěma způsoby:

Protokol DNS používá k přenosu dat UDP nebo TCP protokol. Základní komunikace probíhá přes protokol UDP avšak jen do velikosti 512B, nad tuto velikost je používán protokol TCP stejně jako pro šíření databáze DNS serverů. Pro přenos prostřednictvím obou protokolů je používán port 53.

Údaje v DNS

Informace o doménových jménech a jejich IP adresách, stejně jako všechny ostatní informace DNS záznamu jsou uloženy v paměti DNS serverů ve tvaru zdrojových vět (Resource Records - RR).

Typy záznamů

Nejčastěji používané typy zdrojových záznamů jsou tyto:


Resolver

Resolver je vlastně DNS klient, který není spuštěn na PC jako démon, ale zprostředkovává dané služby pomocí knihovny resolveru, které jsou implementovány ve standardních knihovnách C.

Konfigurace

Konfiguračním souborem pro resolver je /etc/resolv.conf. Slouží jako seznam name serverů a zpravidla obsahuje dva typy řádků (druhý se může několikrát opakovat):


    domain       mojedomena.cz
    nameserver    1.2.3.4
    nameserver    1.2.3.5

PC můžeme také konfigurovat bez použití DNS, v tom případě se veškeré dotazy na překlad adres provádějí lokálně pomocí souboru /etc/hosts. Nejčastěji se tento soubor používá pro vytvoření přezdívek. Například následující příklad umožňuje používat přezdívku localhost a umožňuje zadat do browseru jen http://oo místo http://www.openoffice.cz.

    127.0.0.1    localhost
    212.47.25.165   oo

Možno obě metody kombinovat (nejčastější případ), pomocí souboru /etc/host.conf nebo /etc/nsswitch.conf , ve kterých se nastavuje pořadí, v jakém se budou databáze prohlížet. Zpravidla se nejdříve prohlíží /etc/hosts a posléze DNS.


DNS servery v Linuxu

BIND

BIND je bezesporu nejpoužívanějším DNS serverem na platformě Unix. Je konstruován pro obrovské zatížení, a proto se u všech velkých DNS serverů setkáme právě s touto aplikací.

Instalace

BIND (proces named) se standardně spouští pod uživatelem root, což není z hlediska bezpečnosti příliš přívětivé. Proto je velmi vhodné vytvořit nového uživatele, pod kterým by se BIND spouštěl a spouštět tak BIND v tzv. chrootovském režimu. Na stránkách Chroot-BIND-HOWTO naleznete velice podrobný postup jak nastavit chrootovský režim, tady jen ve zkratce:

Konfigurace

Konfigurace jmenného serveru BIND probíhá pomocí souboru /etc/named.conf, který je po startu přečten a následně zavedeny příslušné DNS databáze do paměti. Příkazy pro nastavení v /etc/named.conf:

Konfigurace zónových souborů probíhá pomocí vět RR (Resource Records), které již byly popsány dříve. Příklad zone souboru:


$TTL 1d

@       IN   SOA   ns.kdesi.cz.  franta.kdesi.cz. (
                   200605140 - seriové číslo
                   1h        - refresh
                   5m        - retry
                   1w        - expire
                   1d        - TTL
                   )

        IN  NS  ns
        IN  MX  10 mail.ns

www     IN   CNAME   neco

www     IN   A   1.2.3.4

Kontrola

Pro kontrolu vámi vytvořených konfiguračních souborů named.conf a souborů zón slouží programy named-checkconf a named-checkzone.

Spuštění

Spouštění je doporučeno v chrootovském režimu pomocí příkazu named -u named -t /chroot/named/.

djbdns

Narozdíl od BINDu není djbdns jediným programem, ale souborem několika malých programů, které plní vždy jen jedinou funkci.

Návod jak nainstalovat djbdns.

Další


Zdroje informací

www.owebu.cz
www.fi.muni.cz/~xbatko
cs.wikipedi.org
archiv P090
www.earchiv.cz
www.abclinuxu.cz
linux.tosovsky.info
www.isc.org