DNS - Domain Name Server

  1. Co je DNS
  2. Instalace named (RedHat)
  3. Konfigurace (BIND)
    1. Konifgurační soubor /etc/named.boot
    2. Konifgurační soubor /etc/resolv.conf
    3. Konifgurační soubor /etc/hosts
    4. Tvar databázových souborů domén
  4. Spouštění DNS
  5. Programy a funkce pro práci s DNS
  6. Reference

  1. Co je DNS
  2. Díky prudkému rozvoji počítačových sítí a vzniku Internetu se doslal do popředí síťový protokol TCP/IP. Pomocí tohoto protokolu se adresují jednotlivé počítače 4-byte adresou obvykle zapisovanou ve tvaru x.x.x.x (x je cislo 1-255). Takovéto adresy se však špatně pamatují, spravují a je s nimi spojeno spousta salších problémů (třeba se změnou providera). Proto byly zavedeny adresy v tzv. doménovém tvaru. Adresa v doménovém tvaru se zapisuje jako několik slov, oddělených tečkami. Tato struktura je hierarchicky členěna. Jeho kořenem je tzv. toplevel domain, což je většinou značka státu (cz, com, sk, ...), a je uvedena vpravo. Dále následují nižší domény, jejichž větvení není téměř omezeno.
    Takže např. fi.muni.cz je v toplevel domain cz a patří do domény muni.cz. Vlastní jména počítačů jsou uvedena úplně vlevo. Každá doménová adresa počítače má svou duální IP adresu (číselný tvar). Existují i záznamy pro doménu, nejsou to však záznamy typu dom.adresa = ip.adresa. O překlad adres v doménovém tvaru na číselné a naopak se stará právě DNS. Např:

    aisa.fi.muni.cz147.251.48.1
    anxur147.251.48.3
    www.cesnet.cz147.230.16.108
    a podobně. (V pravém sloupci jsou uvedeny jejich IP ekvivalenty)

    Je několik možných pohledů na věc.

  3. Instalace named (RedHat)
  4. Nejznámější implementací DNS pro UNIXy je pravděpodobně
    BIND - Berkeley Internet Name Daemon. Instalace je velmi jednoduchá pomocí rpm. Příslušné rpm lze stáhnout např. na ftp.fi.muni.cz. Příkazem rpm -i bind-4.9.6-6.i386.rpm s root oprávněním balík nainstalujeme. Zdrojový kód lze získat z výše uvedené adresy domovské stránky BINDu.

  5. Konfigurace (BIND)
  6. Konfigurace BINDu je uložena v několika souborech. Hlavní soubor je většinou /etc/named.boot, který daemon načte při spuštění a zachová se podle jeho obsahu. Tento soubor neobsahuje přímo databáze domén, ale je v něm uvedeno, kde se tyto data nacházejí. Je jim vyhražen určitý adresář (specifikovaný pomocí příkazu directory viz níže). Jejich formát je popsán v níže. Dále je třeba nastavit soubory /etc/resolv.conf, kde se specifikuje, na které DNS se obracet při žádosti o překlad adresy. Dále je vhodné upravit init subsystém (většinou adresáře /etc/rc.d/...), aby se DNS spouštěl při startu systému.

    1. Soubor /etc/named.boot
    2. Hlavní konfigurační soubor DNS. Tento soubor může být uložen i na jiném místě (pokud jej zadáme jako parametr příkazu named).
      Formát souboru je následující:

      Každý příkaz začíná na novém řádku, vše za znakem ";" je ingnorováno. Příkazy jsou následující:
      directory adresář
      nastaví adresář jako pracovní adresář serveru. V tomto adresáři se ukládají databáze domén. Většinou je umístěn v podstromu /var.
      primary doména soubor
      nastaví tento DNS jako primární pro doménu doména. Konfiguraci vezme ze souboru soubor, jehož formát je uveden níže.
      secondary doména server soubor
      nastaví DNS jako sekundární pro doménu doména. Databáze se bude kopírovat ze serveru server (pokud je jich specifikováno více, další budou brány jako sekundární). Veškeré zjištěné informace se uloží do souboru soubor, který se pak používá pro odpovědi o doména. Tato data se obnovují podle informací v SOA záznamu (viz níže).
      cache soubor
      Načte soubor soubor při startu DNS do paměti. Tyto informace jsou brány jako neměnné. Používá se pro definování DNS nejvyšší úrovně.
      forwarders server
      Definuje DNS s adresou server, na který poslat dotaz, pokud jej nelze zodpovědět z vlastních databází. Serverů je možné uvést více.
      options forward-only
      Nastaví DNS tak, že se dotazuje pouze serverů uvedených ve "forwarders".
      options no-recursion
      Odpovídá na dotazy pouze o lokálních (tj. primary nebo secondary) doménách. Na ostatní dotazy odpoví referencí na příslušný DNS.
      options query-log
      Zapne logování každého dotazu do systémového logu.
      limit jméno hodnota
      Nastaví některý limit DNS. Limity jsou
      transfers-in
      počet simultálních procesů pro zpracování dotazů
      transfers-per-ns
      počet procesů pro kopírování dat z ostatních DNS (pouze, pokud je lokální DNS sekundární)
      datasize
      maximální velikost lokálních souborů DNS

    3. Soubor resolv.conf
    4. V tomto souboru nastavujeme, jakým způsobem se bude převádět doménová adresa.
      Každý příkaz začíná na novém řádku, poznámka začíná znakem ";" nebo "#". Příkazy jsou:
      domain lokální_doména
      Nastavuje, ve které doméně se počítač nalézá (např. fi.muni.cz). Tento parametr lze uvést pouze jednou.
      search seznam_domén
      První parametr změní lokální doménu (totéž jako u domain výše). Pokud je zadán dotaz na jméno, které neobsahuje tečku, jsou poustupně zkoušena všechny domény.
      Např je-li v souboru řádek
      search fi.muni.cz muni.cz cesnet.cz
      při dotazu na stroj xxx se zkusí xxx.fi.muni.cz, xxx.muni.cz, xxx.cesnet.cz.
      nameserver IP_adresa_DNS
      Nastavuje, na které DNS se obracet s překladem adres. Je možno jich uvést více příkazů nameserver, jsou pak prohledávány postupně.
      sortlist seznam_masek
      Adresy (při dotazu) jsou uspořádány podle masky - čím více vlevo, tím dřívěji vypsána.

    5. Soubor /etc/hosts
    6. Zde lze zadat jména všech strojů, které nechceme zjišťovat u DNS a definujeme jejich IP adresy přímo. Lze definovat také několik aliasů stroje. Např:
      127.0.0.1 localhost mujpocitac localhost.localdomain
      Tento řádek říká, že při dotazu na "localhost" nebo "mujpocitac" se odpoví 127.0.0.1, aniž by se dotazovalo DNS.

    7. Nastavení vlastních databázových souborů
    8. Řádky těchto souborů jsou tvaru
      {name} {ttl} {addr-class} {Record Type} {Record Specific data}
      {name}
      musí začínat v prvním sloupci souboru a označuje jméno doménového záznamu. Pokud je prázdné, vezme se z předchozího řádku.
      {ttl}
      time to leave - volitelný parametr, říkající, jak dlouho se mají data uchovávat v databázi (pro sekundární DNS).
      {addr-class}
      třída adresy - momentálně IN nebo HS
      {Record Type}
      typ záznamu - SOA, NS, A, MX, CNAME, RP, PTR, HINFO
      {Record Specific data}
      data pro daný typ záznamu
      Tyto znaky mají speciální význam:
      "."kořenová doména
      "@"momentální doména
      "\eX"kde X je lib. znak - pro speciální znaky
      "\eDDD"speciální znak, zapsaný osmičkově
      "( )"spojení dat přes několik řádků
      ";"začátek poznámky
      "*"wildcard
      Pomocí $INCLUDE lze přidat libovolný soubor v místě příkazu.
      Příkazem $ORIGIN lze měnit momentální doménu.
      Následují jednotlivé typy záznamů:

      SOA - Start Of Authority
      Začátek definice domény. Tento záznam musí být právě jeden pro jednu doménu. Jméno obvykle udává doménu, ve které se DNS nalézá. Do datového pole se zadávají tyto informace:
      jméno počítače, který je hlavní DNS
      email adresa zodpovědné osoby (@ se změní na .)
      sériové číslo verze tohoto záznamu o doméně
      jak často mají sekundární DNS kontrolovat záznamy proti primárnímu v sekundách
      jak dlouho mají sekundární DNS čekat (v sekundách) s dalším dotazem po selhání připojení k primárnímu serveru
      maximální doba (v sekundách) od posledního načtení, po kterou jsou data na sekundárním DNS platná
      implicitní nastavení ttl
      NS - Name Server
      "Autorizované" Nameservery pro danou doménu. Každá doména by měla mít minimálně dva NS záznamy. V datové požce je adresa počítače s DNS.
      A - Address
      V datové položce je adresa stroje v číselném tvaru. Každý stroj v doméně musí mít alespoň jeden A záznam.
      HINFO - Host Information
      Informace o stroji, na kterém běží DNS. Obsahuje obvykle typ HW a OS.
      CNAME - Canonical Name
      Zástupné jméno počítače - používá se např pro definování jména www, ftp, ... Na toto jméno se nesmí odkazovat ostatní řádky (např MX záznamy,...). Základní jméno stroje je v datové položce.
      PTR - Domain Name Pointer
      Používá se pro reverzní záznamy (ve jméně je uvedena číselná adresa a v datové složce doménová)
      MX - Mail Exchange
      Adresa stroje (před ní je uvedena priorita) pro příjem pošty v doméně.
      TXT - Text
      Libovolný text
      RP - Responsible Person
      Podobně jako v SOA. Jméno odpovědné osoby.

  7. Startování a ukončování DNS
  8. Je většinou žádoucí, aby se DNS spustil hned po nastartování systému. Toho docílíme vytvořením příslušného skriptu v adresářích /etc/rc.d/... (záleží na typu systému a distribuce) DNS je možné spustit ručně z příkazové řádky příkazem named [options]. Je nutný superuživatel.

  9. Funkce a programy pro práci s DNS
  10. Linux nabízí několik programů pro dotazování NS:
    nslookup - interaktivní program pro dotazování DNS
    host - zjištění základních informací o doméně (kde je primární NS, kam se posílá pošta, ...)
    Pro převod adres slouží funkce gethostbyname(3) a gethostbyaddr(3).

  11. Reference