DNS

Vladimír Makovský, xmakovsk@fi.muni.cz


Obsah


DNS (Domain Name System)

je distribuovaný systém sloužící k vzájemným převodům mezi doménovými jmény a IP adresami. Je založen na principu klient-server. Skládá se z tří hlavních komponent-prostor doménových jmen, nameservery a resolvery (viz. dále). Prostor doménových jmen má stromovou hierarchii. Kořenem stromu je fiktivní doména označovaná ".". Z ní vedou odkazy na domény. Stromová hierarchie domén je realizována systémem serverů, který však kopíruje hierarchii domén jen částečně. Seznam kořenových nameserverů je zveřejňován na internic.net). Zónou rozumíme část prostoru jmen, kterou obhospodařuje jeden nameserver.

Klient, který chce získat IP adresu k danému jménu, vznese dotaz ke svému lokálnímu serveru a po chvíli ji buď získá nebo dostane odkazy na jiné servery. V prvním případě se server ujme sám zjišťování odpovědi a říkáme tomu rekurzivní způsob vyřízení dotazu. Tento způsob je výhodnější pro klienta a dává serveru možnost seznámit se s odpovědí, kterou si může zaznamenat do cache. Nevýhodou je vyšší zátěž serveru. V druhém případě musí klient svůj dotaz zopakovat - jedná se o iterativní způsob.

Typy nameserverů


BIND(Berkeley Internet Name Domain)

je síťová aplikace v unixu, která implementuje systém DNS. Má dvě hlavní části: síťového klienta (resolver) a jmenný server realizovaný démonem named. Resolver je soustava knihovních fcí (gethostbyname, gethostbyaddr), která se linkuje s aplikačními programy (ftp, telnet, prohlížeč). BIND v současné verzi s hlavním číslem 9 podporuje oproti předchozí některé nové mechanismy. Naleznete jej na fakultním ftp a mnoha dalších mirrorech.

Konfigurace klienta.

Pokud chcete DNS konzumovat pak je třeba nakonfigurovat soubory /etc/resolv.conf případně /etc/host.conf a /etc/hosts. Př:
$cat /etc/resolv.conf
search fi.muni.cz muni.cz #aisa -> aisa.fi.muni.cz 
nameserver 177.136.5.1    #adresy nameserverů, které řeší dotazy
nameserver 177.136.5.3
Pokud je soubor prázdný, pak resolver předpokládá, že se nameserver běží na tomto počítači.
$cat /etc/host.conf
order hosts,bind #v jakém pořadí se mají prohledat zdroje, které mohou 
		 #být použity pro převod mezi jménem a adresou
multi on         #hostitel může mít více IP adres (má všechny z /etc/hosts)

$cat /etc/hosts
127.0.0.1               localhost localhost.localdomain

Konfigurace serveru

Démon named načítá nastavení ze souboru /etc/named.conf (ve verzi 4 named.boot) a z datových souborů, které jsou v tomto souboru uvedeny.

Konfigurační soubor /etc/named.conf

komentáře #,//,/*...*/
příkazy: acl, include, key, logging, options, server, zone jsou ukončeny středníkem, obsahují podpříkazy.

Př:
options {  directory "/var/lib/named"; //pracovní adresář named se zónami
}

zone "." {
        type hint;
        file "named.cache";
};

// reverzní pro localhost
zone "0.0.127.in-addr.arpa" {
        type master;
        file "127.0.0";
};

// nekde.cz
zone "nekde.cz" {
        type master;
        file "nekde.cz.zone";
};

// reverzní pro 177.136.5
zone "5.136.177.in-addr.arpa" {
        type master;
        file "177.136.5";
};

// slave pro jinde.cz
zone "jinde.cz" {
        type slave;
        file "jinde.cz.zone";
        masters {177.136.5.3;};
};

Datové soubory

jsou kompatibilní s verzí 4. Poznámky se uvádějí ";". Řádky v těchto souborech mají obecnou syntax:
[doménové jméno] [ttl] třída typ data_závislá_na_typu_věty

Př: aisa:/var/named/var/named erigona:/var/named

Na co mimojiné nezapomenout:

Více informací viz. man named. DNS můžete ladit pomocí programů nslookup, dig a perlovským skriptem
dnswalk.


Bezpečnost

Jako v každém programu jsou i v BINDu chyby (zatím se vyskytly ve všech až do verze 8.2.2-používejte aspoň verzi 8.2.3). Chceme-li zmenšit následky škod, necháme běžet named místo se superuživatelskými právy s právy běžného uživatele a se změněným kořenovým adresářem, aby nemohl přistupovat k souborům mimo něj. Aktuální informace o nastavení a kompilaci BINDu v chroot režimu naleznete na www.losurs.org/docs/howto/Chroot-BIND.html


Literatura

RFC 1033-1035, DNS HOWTO, Chroot-BIND HOWTO
Satrapa J.-Randus J.: Linux-Internet server II. Neokortext.
Dostálek L.-Kabelová A.: Velký průvodce TCP/IP a systémem DNS. Computer press.