V IP s�t�ch jsou p�ipojen� za��zen� identifikov�na IP adresou. Tuto adresu m� v s�ti p�id�leno ka�d� z p�ipojen�ch za��zen� (respektive ka�d� za��zen�, kter� chceme z jin�ho za��zen� prost�ednictv�m IP s�t� "oslovit") a je v cel� s�ti jedine�n�, tak�e jednozna�n� identifikuje dan� prvek s�t�. Je v�ak nep��jemn�, �e jde o 32 bit� dlouh� ��slo, kter� nav�c nic nevypov�d� o za��zen�, jemu� je p�id�leno. To je vcelku nep��jemn� vlastnost, proto�e nen� jednoduch� pamatovat si tak dlouh� ��slo pro ka�d� po��ta� v s�ti, kter� chci pou��vat. V mal�ch s�t�ch o p�r po��ta��ch to sice mo�n� je, ale v s�ti ��dov� des�tek a� stovek po��ta�� je to nemysliteln�. Proto vznikl DNS, co� je syst�m, kter� umo��uje nazvat ka�d� po��ta� libovoln�m jm�nem, a dok�e toto jm�no p�ev�st na IP adresu, jej�m� prost�ednictv�m je ji� mo�n� v s�ti komunikovat. P�ecijen je p�ijateln�j�� pamatovat si, �e vyhledava� Google je na adrese "www.google.com", ne� abych musel v�d�t, �e je na adrese "66.102.9.104".
Po�adavek na p�ijateln�j�� identifikaci po��ta�� ne� prost�ednictv�m IP adresy je snad stejn� star�, jako IP s�t� samotn�. DNS v�ak nen� prvn�m syst�mem, kter� tento probl�m vy�e�il. P�edch�dcem DNS je takzvan� soubor HOSTS (na Linuxov�ch stroj�ch /etc/hosts ), kter� (i p�es svoji zastaralost) d� se ��ci funguje dodnes. Jde o soubor, ve kter�m jsou naps�ny dvojice "IP_adresa dom�nov�_jm�no" nebo trojice "IP_adresa pln�_dom�nov�_jm�no kr�tk�_dom�nov�_jm�no". Tady je p��klad linuxov�ho souboru /etc/hosts. Tento soubor se d� i v dne�n� dob� vyu��t, nap��klad k "usnadn�n� pr�ce" s psan�m dom�nov�ch adres (pokud do souboru zad�me nap��klad ��dek "193.86.103.40 mobily", pak m��eme pou��vat adresu mobily a dostaneme se na stejn� stroj jako kdybychom psali www.mobilmania.cz), nebo v mal�ch s�t�ch kde je m�lo po��ta�� m�sto DNS.
Tento p�eklad jmen na IP adresy v�ak brzy p�estal sta�it, zaprv� bylo nutn� vytvo�it n�jakou hierarchii jmen (pou�iteln� jednoslovn� jm�na se brzy vy�erpaj�) a zadruh� s rostouc�m po�tem za��zen� p�ipojovan�ch do IP s�t� (tedy i Internetu) rostla i velikost souboru HOSTS. Tento soubor musel b�t na ka�d�m po��ta�i a obsahovat jm�na a IP adresy v�ech stroj� v s�ti, kter� m�ly b�t vol�ny jm�nem, tak�e p�i ka�d� zm�n� ve jm�nu nebo p�i p�ipojen� nov�ho stroje musel b�t rozkop�rov�n na v�echny stroje v s�ti. Jist� si ka�d� dovede p�edstavit, jak� vliv na z�t� s�t� by m�lo kop�rov�n� n�kolikamegabajtov�ho souboru (t�eba i n�kolikr�t denn�) i na n�kolik des�tek tis�c stroj�, nato� do v�ech stroj� v Internetu. Proto vznikl syst�m DNS, kter� tyto probl�my vy�e�il.
DNS vlastn� nen� nic jin�ho, ne� obrovsk� distribuovan� datab�ze, ve kter� jsou (zjednodu�en� �e�eno) ulo�eny dvojice jm�no-IP_adresa. Je zalo�ena na modelu klient-server, kdy servery znaj� IP adresy p�i�azen� dom�nov�m jm�n�m, a klienti se na tyto adresy dotazuj� server�. Servery n�sledn� klient�m pos�laj� odpov�di s IP adresou p��slu�ej�c� k dan�mu dom�nov�mu jm�nu.
Pln� kvalifikovan� dom�nov� jm�no se skl�d� z n�kolika textov�ch ��st� odd�len�ch te�kami. Ka�d� z ��st� m��e b�t dlouh� maxim�ln� 63 znak� a celkov� nesm� d�lka cel�ho jm�na p�es�hnout 255 znak�. Pln� kvalifikovan�m dom�nov�m jm�nem stroje je tedy jm�no, kter� jednozna�n� ukazuje na konkr�tn� stroj (v Internetu tedy nap��klad www.seznam.cz, booyone.nasiti.cz a podobn�). Jednotliv� ��sti jm�na nejsou nijak n�hodn� poskl�d�ny, jsou uspo��d�ny hierarchicky, a ka�d� ��st je dom�nou. Posledn� ��st je takzvan� dom�na prvn�ho ��du (neboli top-level dom�na), p�edposledn� je dom�na druh�ho ��du, t�et� od konce je dom�na t�et�ho ��du a tak d�le. Pro jm�no booyone.nasiti.cz tedy v�me, �e le�� v top-level dom�n� "cz", v dom�n� cz je dom�na "nasiti" a v dom�n� "nasiti" je dom�na "booyone". Aby takov� syst�m m�l smysl, samoz�ejm� plat�, �e nesm� existovat dv� IP adresy, kter� maj� ve stejn� dom�n� p�i�azeno stejn� jm�no (tak�e nesm� existovat dv� adresy se jm�nem "booyone.nasiti.cz", ale u� m��e m�t jedna jm�no "booyone.nasiti.cz" a druh� t�eba "booyone.netart.cz").
Takov�to uspo��d�n� nen� n�hodn�, naopak je velmi d�le�it�. Existuje toti� hierarchie DNS server�, kter� odpov�d� hierarchii dom�nov�ch jmen. Plat� toti�, �e ka�d� existuj�c� dom�na (tj. ka�d� ��st pln� kvalifikovan�ho dom�nov�ho jm�na) mus� m�t minim�ln� jeden DNS server, kter� danou dom�nu obsluhuje. Tomuto serveru se ��k� "Prim�rn� DNS server". Majitel dom�ny, pro kterou je DNS server vytvo�en, pak rozhoduje o jeho konfiguraci, s dom�nou si m��e hospoda�it jak chce (nap��klad m��e prost�ednictv�m tohoto DNS serveru vytv��et dom�ny ni���ch ��d� pod svoj� dom�nou, pov��ovat jin� lidi spr�vou t�chto subdom�n a tak d�le). Ka�d� dom�na (a� u� je kter�hokoliv ��du) tedy mus� m�t sv�j prim�rn� DNS server, na n�m� jsou definov�ny v�echny subdom�ny v dom�n� a jejich prim�rn� DNS servery, nebo p��mo IP adresy, na kter� se maj� dan� subdom�ny p�ekl�dat, jinak nebude ��dn� v n� definovan� jm�no dostupn�. Spr�vce/majitel dan� dom�ny se spr�vn� naz�v� "autorita", a m��e pov��ovat dal�� autority spr�vou subdom�n pod svoj� dom�nou.
Tento model byl zvolen pr�v� proto, �e nen� mo�n� aby v�echna jm�na i s IP adresami byla na jednom stroji, takov� stroj by byl permanentn� p�et��en�. Jak ale tedy funguje dotazov�n� na dom�ny kdy� je ka�d� definov�na jinde? Je to jednoduch�. Ka�d� klient, kter� chce DNS vyu��vat, m� na sv�m stroji DNS resolver. Tento resolver m�vaj� stroje p��mo v sob� (respektive v implementaci s�t�) tak�e neb�v� nutn� nic doinstalov�vat. DNS Resolveru mus�me ��ci IP adresu nejbli���ho DNS serveru (p��padn� n�kolik adres bl�zk�ch DNS server�, kdyby n�kter� z nich vypadl). Od t� chv�le resolver v�, kde se m� pt�t. Pokud tedy n�kdo zad� po�adavek na p�eklad adresy, resolver vezme dom�nov� jm�no a po�le ho DNS serveru. Ten se na adresu pod�v�, a bu� ji zn�, a po�le klientovi odpov�� rovnou, a nebo ji nezn�, proto�e se klient dotazuje na jinou ne� jeho dom�nu. Pak mu nezbyde ne� dotaz vz�t, a p�eposlat ho jednomu z ko�enov�ch DNS server�. Ko�enov� DNS servery jsou prvn� uzel stromu DNS server�. Jde o servery, kter� obsluhuj� Top-Level dom�ny a nach�zej� se v dom�n� "root-servers.net". V Internetu je jich n�kolik, jsou odli�eny p�smeny ("a.root-servers.net", "b.root-servers.net", "c.root-servers.net" atd.). Top-Level dom�ny p�id�luje organizace internic (www.internic.net), konfigurace ko�enov�ch DNS server� je tedy v jej� kompetenci. Tyto servery p�evezmou dotaz, pod�vaj� se na n�j a odpov� "nev�m, ale tuto top-level dom�nu spravuje ten a ten DNS server, zeptej se tam". Tato odpov�� se vr�t� DNS serveru, kter�ho se ptal klient, a ten znovu po�le rotaz na klientem zadanou dom�nu, tentokr�t ov�em nikoliv ko�enov�mu DNS serveru, ale DNS serveru kter� dostal v odpov�di od ko�enov�ho DNS serveru. Tento bu� odpov� IP adresou stroje, jemu� je p�i�azena dom�na, nebo zase po�le adresu DNS serveru pro ni��� dom�nu, a tak se klient�v DNS server pt� a pt� a� se dobere posledn� dom�ny, na ni� by m�l jako odpov�� dostat IP adresu stroje. Tuto adresu pak po�le klientovi jako odpov��.
Nejlep�� asi bude vysv�tlen� na p��kladu. P�edstavme si, �e chceme p�elo�it adresu "booyone.nasiti.cz". DNS resolver po�le po�adavek na�emu DNS serveru (tomu, kter� jsme mu nastavili). Ten se na ni pod�v�, zjist� �e ji nezn� a po�le po�adavek ko�enov�mu DNS serveru. Ko�enov� DNS server odpov� "Nev�m, ale dom�nu .cz spravuje DNS server xxx.xxx.xxx.xxx". N� DNS server tedy po�le po�adavek na p�eklad dom�ny booyone.nasiti.cz DNS serveru, kter� dostal v odpov�di. Ten op�t odpov� "Nev�m, ale dom�nu nasiti v dom�n� cz spravuje DNS server yyy.yyy.yyy.yyy". N� DNS server tedy op�t po�le serveru yyy.yyy.yyy.yyy po�adavek na dom�nu booyone.nasiti.cz a ten u� odpov� "Ano, v m� dom�n� je subdom�na booyone, stroj, ke kter�mu pat�� ma IP adresu zzz.zzz.zzz.zzz" Tato adresa se n�sledn� vr�t� DNS resolveru na na�em po��ta�i.
Je�t� jsme nezm�nili dv� d�le�it� v�ci. Takov�to p�eklad funguje, probl�m ale nastane, pokud dojde k v�padku n�kter�ho z DNS server�. Pak se na dom�nu, kterou obsluhuje, nen� koho pt�t a p�eklad sel�e. Proto existuj� tak� sekund�rn� DNS servery, a je doporu�eno, aby ka�d� dom�na m�la alespo� jeden prim�rn� a jeden sekund�rn� DNS server. Sekund�rn� DNS server by m�l b�t um�st�n na jin� s�ti ne� prim�rn� DNS server a m�l by automaticky zrcadlit obsah prim�rn�ho DNS serveru, zm�ny v konfiguraci tedy sta�� d�lat jen na prim�rn�m DNS serveru. Prim�rn� a sekund�rn� DNS servery pat�� do skupiny registrovan�ch DNS server� (jsou registrov�ny u nad�azen�ho prim�rn�ho DNS serveru).
Existuje je�t� jeden v�znamn� typ DNS serveru, ��k� se mu Cache-Only a nen� registrovan� v ��dn� dom�n�. Tento DNS server slou�� vlastn� jen k p�epos�l�n� dotaz� k vy���m DNS server�m a m��e ho provozovat ka�d� i bez vlastnictv� dom�ny. Tak� urychluje vy�izov�n� dotaz� a sni�uje z�t� s�t� i ostatn�ch DNS server�, proto�e si u vy��zen�ch dotaz� chv�li pamatuje, �e dom�na ta a ta se p�ekl�d� na IP adresu tu a tu a pokud p�ijde po�adavek na dom�nu, kter� je v cache, okam�it� vr�t� jej� IP adresu ani� by se ptal nad�azen�ch DNS server�.
Odpov��, kterou klient dostane od serveru, m��e b�t dvou typ�: Autoritativn� (authoritative) a neautoritativn� (non-authoritative). Rozd�l mezi nimi je ten, �e autoritativn� odpov�� je odpov��, kter� byla z�sk�na postupn�m dotazov�n�m se DNS server�, kde�to neautoritativn� odpov�� je odpov��, kter� byla z�sk�na z n�kter�ho z nameserver� (a m��e se tedy st�t �e u� nen� platn�). Pokud klient dostane neautoritativn� odpov��, m� mo�nost si od DNS serveru explicitn� vy��dat odpov�� autoritatvn�.
Pokud chceme pou��t slu�by DNS server� v Linuxu (chceme se dotazovat jak� IP adresa p��slu�� ke jm�nu), mus�me korektn� zkonfigurovat DNS resolver. Toto se prov�d� v souboru /etc/resolv.conf (p��klad). Soubor je slo�en s ��dk�, kter� za��naj� jedn�m z n�sleduj�c�ch kl��ov�ch slov:
Existuje n�kolik implementac� DNS serveru pro OS Linux. Jednozna�n� nejzn�m�j�� a nejpou��van�j�� implementace je BIND (Berkeley Internet Name Domain), a proto se s n� budeme d�le zab�vat. Tato implementace vznikla v 80. letech a je sou��st� mnoha Linuxov�ch distribuc�. Domovsk� str�nka tohoto projektu je http://www.isc.org/sw/bind/. Asi druhou nejzn�m�j�� implementac� je DJBDNS (D. J. Bernstein DNS), kter� m� oproti BINDu v�hodu ve vy��� bezpe�nosti a slo�en� z men��ch utilitek. Homepage: http://cr.yp.to/djbdns.html
Hlavn� konfigura�n� soubor BINDu se jmenuje named.conf a nach�z� se v adres��i /etc. Jeho nejd�le�it�j�� parametry jsou options a zone:
options {...} - tato sekce obsahuje z�kladn� glob�ln� volby BINDu. Pat�� mezi n� tyto nejd�le�it�j��:Parametr� je mnohem v�ce, v�echny v�etn� popisu m��ete nal�zt nap��klad na adrese http://www.zytrax.com/books/dns/ch7/.
Nastaven� named.conf m�me tedy probr�no, nyn� je�t� mus�me pro ka�dou z�nu nastavit dom�ny, kter� v n� maj� b�t. K tomu slou�� soubory v adres��i, kter� je definov�n v souboru named.conf v sekci options parametrem directory. Pro ka�dou z�nu mus� b�t vytvo�en zvl�tn� soubor.
Z�na p�edstavuje dom�nu, kterou tento nameserver spravuje, nebo reverzn� z�znamy pro sv� adresy. Reverzn� z�znamy jsou z�znamy, kter� umo��uj� z IP adresy z�skat dom�nov� jm�no stroje. Tyto z�znamy jsou ve speci�ln� z�n� in-addr.arpa tak, �e nap��klad pro s�� 192.168.0.0/24 budou v z�n� "0.168.192.in-addr.arpa". To znamen�, �e mus�me m�t z�nu pro ka�dou dom�nu, kterou m� DNS server zn�t, a pro ka�dou s��, pro kterou m� poskytovat reverzn� z�znamy.
Praktickou konfiguraci bude nejl�pe pochopit z okomentovan�ch p��klad�:
Konfigurace BINDu: named.conf
Dop�edn� soubor pro z�nu int.rudna.net: int.rudna.net.zone
Reverzn� soubor pro z�nu 10.0.0.0/8: 10.zone
Dop�edn� soubor pro z�nu localhost: localhost.zone
Reverzn� soubor pro z�nu localhost: 127.0.0.zone
Soubor pro "sv�t" (ko�enov� nameservery): root.hint
Podle konfigurace v named.conf z p��kladu by soubory .zone musely b�t v adres��i /var/lib/named. Soubor root.hint se �asto m�n� a je dobr� ho �as od �asu st�hnout z ftp.internic.net. Pokud n�koho zaj�m�, v dob� psan� recenze aktu�ln� verze je vystavena v��e ;-)
V r�mci bezpe�nosti bychom m�li spou�t�t BIND v chrootovan�m prost�ed�, proto�e pak chyba v implementaci a n�sledn� nabour�n� serveru nen� tak nebezpe�n�. Stejn�tak je dobr� BIND spou�t�t pod jin�m u�ivatelem ne� rootem - nap��klad m�t u�ivatele named pro spou�t�n� BINDu. Nap��klad BIND s root adres��em /var/lib/named pod u�ivatelem named se spust� p��kazem "named -t /var/lib/named -u named". Pro spu�t�n� v chrootovan�m prost�ed� je nutn� m�t v adres��i, na kter� m�n�me root, vytvo�enu jistou adres��ovou strukturu. Na tuto �innost m�vaj� distribuce naps�ny skripty kter� toto ud�laj� automaticky (nap��klad u SuSE Linuxu skript /etc/init.d/named). Jak �sp�n� spustit BIND v chrootovan�m prost�ed� bez jejich asistence je pops�no nap��klad zde: http://www.losurs.org/docs/howto/Chroot-BIND.html
BIND tak� dovede obslou�it dva sign�ly: Pokud dostane sign�l SIGHUP, znovu na�te konfiguraci, a pokud dostane sign�l SIGINT, ulo�� z�znamy z cache.