DNS

Martin Kvočka, mkvocka@gmail.com


Obsah

História

Potreba pamätať si názvy počítačov namiesto ich numerických adries siaha do dôb ARPANETu. V tej dobe sa na UNIXoch používal súbor /etc/hosts, ktorý mapoval numerické adresy na mená. Tento súbor si musel každý počítač na sieti stiahnuť(v tej dobe umiestnený na servri SRI). V dnešních UNIXoch stále súbor hosts existuje a používa sa najmä pri riešení problémov s DNS servrom. Tento prístup je ale nevhodný - distribuovať súbor hosts na každý počítač je veľmi neefektívne. Tento problém vyriešil Paul Mockapetris, ktorý v roku 1983 vyvinul protokol DNS.

Čo je to DNS

DNS(Domain Name System) je systém, ktorý distribuuje hierarchickú databázu. Táto slúži hlavne na preklad medzi adresami a menami v sieti. Samotná databáza je uložená na tzv. name serveroch, ktorých sa klienti pýtajú pomocou resolverov.

Štruktúra DNS

Priestor domenových mien tvorí strom, ktorého koreňom je tzv. koreňová doména(zapisuje sa ako bodka). Pod ňou sa nachádzajú tzv. Top-Level Domains, ktoré obsahujú domény národné(.cz, .sk, .jp ...) a generické(.com, .org, .net ...). TLD sa ďalej delia na subdomény, pričom každá obsahuje vlastný nameserver. Ak nameserver nevie odpovedať, pýta sa koreňového nameservru.

Údaje v DNS

Údaje DNS servru sú uložené v tvare tzv. zdrojových viet(RR, Resource Record), ktoré obsahujú:

	NAME		- doménové meno, pre ktoré sa záznam vytvára
	TYPE 		- typ záznamu
	CLASS		- rodina protokolov, ku ktorej sa záznam vzťahuje
	TTL  		- time to live, doba počas ktorej je záznam udržovaný v cache ako platný
	RDLENGTH	- dľžka pola RDATA
	RDATA 		- vlastné dáta, formát závisí na type a triede RR

Typy záznamov

Najčastejšie typy RR:

    
SOA - (Start Of Authority) - určuje autoritatívny nameserver pre zónu, je vždy práve jeden a to na začiatku súboru

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

	
sériové číslo	- verzia databázového súboru. Pri zmene súboru musíme toto číslo zvýšiť.
refresh		- ako často majú sekundárne nameservre overovať svoje data.
retry		- ak sekudárny NS nemôže kontaktovať primárny po uplynutí intervalu refresh,
 		  bude to ďalej skúšať každých Retry sekúnd.
expire		- ak sa sekundárnemu NS nepodarí kontaktovať primárny NS do Expire sekúnd, prestane
	 	  poskytovať informácie (data sú príliš staré).
TTL		- hodnota sa vzťahuje k všetkým záznamom v db súbore a ovplyvňuje ako dlho môžu ostatné
		  servery (neautoritatívne) udržovat daný záznam v svojej cache(nula - nevkladať RR do cache).
      
NS - (Name Server) - definuje autoritatívny NS pre doménu.
	aaa   	IN    NS   ns
		IN    NS   ns.niekde.sk.

A - (host Adress) - priraďuje doménovému menu IPv4 adresu.
	www     IN   A   1.2.3.4

AAAA - (host Adress) - priraďuje doménovému menu IPv6 adresu
	www     IN   AAAA   2001:714:cc01:1:02e0:66ff:fe96:daa6

MX - (Mail eXchange) - špecifikuje meno poštovného servru.
	www     IN   MX   10 mail
		IN   MX   20 mail.niekde.sk.

CNAME - (Canonical NAME) - definuje synonymá doménových mien.
	www      IN   CNAME   nieco

PTR - (PoinTeR) - slúži k prekladu IP adresy na doménové meno(reverzný preklad).
	1.2.3.4    IN   PTR   nieco.niekde.sk.

TXT - (TeXT) - textová poznámka.

Resolver

Je to sada knihovných funkcií(lib c), ktoré využívajú klientské aplikácie pre prístup k DNS. Jeho konfigurácia je typicky uložená v súboroch /etc/resolv.conf(nastavenie IP adries DNS servrov, miestna doména...) a /etc/host.conf(poradie v ktorom sa majú oslovovať /etc/hosts, DNS a NIS).

príklad /etc/resolv.conf

	domain mojadomena.sk
	nameserver 11.12.13.14
	nameserver 11.12.13.15

príklad /etc/host.conf
	127.0.0.1 localhost
	147.251.48.1 aisa

DNS v linuxe

Bind(Berkley Internet Name Domain)

Najpoužívanejší DNS server v UNIXovom prostredí, zvláda veľkú záťaž a je de facto štandartom na UNIXových DNS servroch. Púšťať BIND(named) je ako root nebezpečné, používa sa preto chroot.

Inštalácia

Pre nameserver sa vytvorí nový užívateľ a skupina a potrebná adresárová štruktúra
	/chroot/named/etc
	/chroot/named/etc/named
	/chroot/named/dev
	/chroot/named/var
	/chroot/named/var/run
ďalej sa vytvoria špeciálne súbory, ako /dev/null a /dev/random, adresaru chroot sa nastavia oprávnenia a následne sa BIND do tohto adresáru nainštaluje.

Konfigurácia

Konfigurácia BINDU je uložená v /etc/named.conf.

acl - definuje zoznam IP adries pre riadenie prístupu
controls - definuje riadiace kanály pre použitie rndc utilitou
	controls {
        	inet 127.0.0.1 allow { localhost; };
	};
include - vkladá súbor
	include meno_suboru;
key - špecifikuje informácie pre použitie pri autentizácii a autorizácii
logging - definuje udalosti, ktoré sa majú zaznamenávať
options - globálne nastavenia servru
	options {
      	  	directory "/var/named";

       		query-source port 53;

        	forward prvy_spytovany_server;

        	forwarders {
           		ostatne_servry;
	};
server - nastavuje rôzne konfiguračné možnosti
trusted-keys - definuje trusted DNSSEC keys
zone - definuje zónu

Typy zón:
master - znamená: tento server vlastní tzv. master kópiu dát pre zónu a je pre ňu primárnym menným serverom.
slave - zóna je kópiou master zóny. Parameter masters zdelí IP stroja ktorý má named kontaktovať pre kópiu a updaty zóny.
forward - presmerovávanie požiadaviek podľa forward a forwarders.
hint - zoznam koreňových menných servrov.
	zone "xyz.cz" {
  		type master;
   		notify yes;
   		file "xyz.sk.zone";
	};

	zone "abc.cz" {
  		type slave;
		masters { 174.129.115.18; };
		file "abc.sk.zone";
	};

	zone "." {
		type hint;
		file "root.hints";
	};      

Konfigurácia zónových súborov prebieha pomocou RR (Resource Records). Príklad zone súboru:


	$TTL 1d

	@       IN   SOA   ns.niekde.sk.  nieco.niekde.sk. (
			200605140 - sériové číslo
			1h        - refresh
			5m        - retry
			1w        - expire
			1d        - TTL
			)

		IN  NS  ns
        	IN  MX  10 mail.ns

	www     IN   CNAME   nieco

	www     IN   A   1.2.3.4

Kontrola

Pre kontrolu vytvorených konfiguračných súborov named.conf a súborov zón slúžia programy named-checkconf a named-checkzone.

Spustenie

Spustenie je odporúčané v chrootovskom režime pomocou príkazu named -u named -t /chroot/named/.

Ako ďalej

Ďalsie informácie je možné získať z manuálu BINDu, DNS How-To a rôznych ďalších stránok priložených v zozname použitej literatúry.

Literatúra