DNS - Domain Name System

Viktor Michálek, xmichal4(závin)fi(teč)muni(teč)cz

Obsah

Historie

Potřeba dát číselným adresám nějakou lépe zapamatovatelnou formu vznikla již v raném obdoí ARPANETu. Z počátku byl tento problém řešen souborem HOSTS.TXT, který byl na každé připojené stanici udržován lokálními uživateli. Po krátké době se ale tento systém stal díky rychlému rozvoji ARPANETu neudržitelným. Proto byl v roce 1973-74 navržen centralizovaný systém Host Names On-Line  (definován: RFC606, RFC608 , RFC623 a RFC625), který prakticky fungoval až do roku 1983. Na začátku 80. let přestával uvedený systém stačit a tak byl započat vývoj nového distribuovaného systému, jehož výsledkem byl v roce 1983 systém DNS, popsaný v RFC830 (samotná implementace pak v RFC882 a RFC883). Aktuální verze DNS vychází z RFC1035, RFC1123 a RFC2181.

Struktura

DNS systém tvoří hierarchickou stromovou strukturu. Každý uzel tohoto stromu obsahuje informace o části jména (doméně), které je mu přiděleno a odkazy na své podřízené domény.  Kořen tohoto stromu, nultou úroveň, tvoří tečka. Na prví úrovni se nacházejí tzv. Top Level Domains, TLD, které lze rozdělit do dvou základních tříd:

Každá doména může mít maximálně 127 úrovní. Jednotlivé subdomény mohou mít až 63 znaků (v praxi bývají zavedeny tvrdší limity) a celé doménové jméno z nich složené, může mít maximálně 255 ASCII znaků. Příklad topologie:

                                   .
|
+---------------------+------------------+
| | |
MIL EDU ARPA
| | |
| | |
+-----+-----+ | +------+------+------+------+------+
| | | | | | | | | |
BRL NOSC DARPA | E164 IN-ADDR IP6 IRIS URI URN
|
+--------+------------------+---------------+--------+
| | | | |
UCI MIT | UDEL YALE
| ISI
| |
+---+---+ |
| | |
LCS ACHILLES +--+-----+-----+--------+
| | | | | |
XX A C VAXA VENERA Mockapetris

Typy DNS serverů

Průběh řešení dotazu

  1. Uživatel zadá do prohlížeče nějakou adresu
  2. DNS klient se nejprve podívá do lokálního souboru /etc/hosts
  3. Pokud nenalezne patřičnou adresu, zašle dotaz lokálnímu name serveru (dle konfigurace v /etc/resolv.conf).
  4. Lokální name server se nejprve podivá do cache, pokud odpověď nenalezne vezme nejpravější část adresy a pošle dotaz na root server.
  5. Root server mu vrátí adresu autoritativního serveru dané TLD.
  6. Lokální name server pak na tento DNS server pošle dotaz na následující část jména (tj. doménu 2. řádu).
  7. Dotázaný DNS server TLD vrátí adresu autoritativního serveru dané domény.
  8. Lokální name server zašle na daný server dotaz s následující subdoménou.
  9. Dotázaný server vrátí buď adresu autoritativního serveru dané subdomény nebo konkrétního stroje.
  10. Body 8 a 9 se iterativně opakují dokud není zpracován celý doménový název a vrácena ip adresa požadovaného stroje.
    Pokud v bodech 5, 7 nebo 9 dotazovaný autoritativní server nenalezne odpověď,patřičně informuje tazatele a vyhledávání tím končí.
    Lokální name server nakonec vrátí klientskému stroji nalezenou ip adresu, nebo ho informuje o neúspěchu (nenalezeno).

Obdobně probíhá vyřízení reverzního dotazu s tím rozdílem, že před odesláním dotazu je nejprve obráceno pořadí oktet ip adresy a k tomuto řetězci připojen řetězec .in-addr.arpa, např.: pro dotaz na jméno domény s ip 147.229.208.1 to bude 1.208.229.147.in-addr.arpa.

Typy DNS záznamů

BIND a jeho nastavení

BIND je nejpoužívanějším multiplatformním DNS serverem, jehož vývoj začal v roce 1985. Jeho poslední stabilní verze 9.8.0 vyšla 1. března 2011. K dispozici je již také vývojová verze 10. Konfigurační soubory BINDu se v případě distribuce Debian 6.0 Squeeze v /etc/bind (včetně named.conf). Do souboru named.conf jsou naincludovány soubory: named.conf.default-zones, ve kterém jsou definovány výchozí zóny, a named.conf.options, kde jsou nastavení. BIND v systému běží jako démon named ale spouštěcí skript v /etc/init.d se ale jmenuje bind (/etc/init.d/bind start|stop|status|...). V souboru named.conf se definuje pouze typ zóny, základní prametry a odkaz na soubor s dns záznamy dané zóny.

Základní typy zón jsou:

Příklady definic zón:

zone "." {
type hint;
file "/etc/bind/db.root";
};
--
zone "misto.cz" in{
type master;
notify yes;
file "db.master.misto.cz";
};
--
zone "misto.cz" in{
type slave;
file "db.slave.misto.cz";
masters {11.0.0.23;};
};

Příklad zónového souboru db.master.misto.cz:

$TTL 1w
@ IN SOA server.misto.cz. novak.misto.cz. (
200605140
1h
5m
1w
1d
)
IN NS server
IN NS ns.jinde.cz.

IN MX 10 server
IN MX 20 mail.jinde.cz.

doma IN A 11.0.0.23
IN AAAA 2001:718:1c01:1:02e0:7dff:fe96:daa8
server IN A 11.0.0.21
www IN CNAME server

Nástroje a utility pro práci s DNS

Bezpečnost a DNSSEC

První implementace pokus o zavedení proběhl v roce 1999. Po krátké době byly ale zjištěny závažné technické problémy a proto byl celý DNSSEC přepracován a znovu byl uveden v roce 2005 v rámci RFC4033, RFC4034 a RFC4035. V roce 2010 došlo ke kompletnímu podepsání kořenové domény.

Literatura