DNS (Domain Name System)

Petr Volný, severin(at)mail(dot)muni(dot)cz

Obsah


1 Historie

Historie DNS sahá až do dob sítě ARPANET kde DNS vznikal jako reakce na rychle narůstající objem emailove komunikace. S postupným přibýváním uzlů v síti vyvstala potřeba adresovat tyto stroje jinak než s pomocí pro člověka špatně zapamatovatelných IP adres. Prvotním řešením byl soubor HOSTS.TXT, který byl na každém připojeném stroji a ve kterém byla uložena jednoduše editovatelná tabulka mapující jednotlivé názvy strojů na IP adresy. Ovšem díky stále rychlejšímu zvětšování sítě začalo být postupně obtížné udržovat tuto tabulku na všech strojích a i ta začala být kvůli své stále rostoucí velikosti nepřehledná a špatně editovatelná.

Další myšlenkou tak bylo udržovat tuto stránku pomocí nějaké centrální autority. Dynamika rozvoje sítě ovšem vyžadovala velmi časté změny a všechny uzly v síti museli stahovat celý aktuální soubor každou noc. Nehledě na to, že chybně zanesený záznam na centrálním serveru se tak přes noc vypropagoval do celé sítě. A tak v někdy v roce 1982 byly položeny základy pro Distributed System for Internet Name Service (RFC 830), na jehož principech funguje překlad adres prakticky dodnes. Jedná se o rozdělení odpovědnosti za překlad adres do hierarchie doménových serverů odpovědných za svou doménu a její subdomény.


2 Doménová jména

Hierarchie doménových jmen tvoří strom. Kořenem tohoto stromu je kořenová dména reprezentována tečkou. Následující patro je vyhrazeno pro TLD (Top-Level Domain) domény a další patra jsou vyhrazena pro domény nižších řádů. Hloubka stromu může být až 127. Tento strom se dále dělí na zóny, které můžou obsahovat jeden nebo více spojených uzlů a jsou spravovány tzv. autoritativním name serverem. Tím tak dávají možnost serverům starat se o více než jednu doménu a zároveň celý systém umožňuje delegování správy subdomén na další servery níže v hierarchii


3 DNS servery (name server)

DNS server je služba pracující na bázi klient-server paradigmatu. Každá doména musí mít alespoň jeden autoritativní server, který poskytuje informace o své doméně a zároveň je schopen odkázat na další name servery, které jsou v doménové hierarchii pod ním (subdomény). Podle funkce rozlišujeme tyto základní typy name serverů:

Každá doména musí mít jeden primární server a z důvodů bezpečnosti by měla mít alespoň jeden sekundární server. Drtivá většina dnešních name serverů je realizována pomocí softwaru BIND (Berkeley Internet Name Domain)

3.2 Údaje DNS serveru (Resource records)

DNS server v sobě uchováv databázi RR (Resource Record) záznamů které také posílá i jako odpověď na dotaz resolveru. Jeden Resource Record se skládá z těchto položek:

3.2 BIND

Zdrojove kody BINDu můžete stáhnout zde, nebo instalovat BIND v podobě balíku podle vaší distribuce. Celá konfigurace BINDu se skrývá v souboru /etc/named.conf. Konfigurace serveru BIND byla už mnohokrát popsána a proto jen odkážu na zdroje: BIND configuration, nebo dřívější referáty od Martina Kvočky nebo Pavla Schneidera.

3.3 djbdns

Tato implementace DNS vznikla jako odezva na chybovost a bezpečnostní díry v BINDu a je na poli DNS serveru jeho hlavním konkurentem. Djbdns je na rozdíl od BIND modulární a skládá se z více nástrojů jak pro serverovou stranu, tak stranu klienta. Ze serverové části stojí za zmínku dnscache (resolver a cache server), axfrdns (zóny), ale hlavně tinydns (autoritativní name server). Rozdělení funkcí DNS systému do více menších programů umožnilo zredukovat složitost a velikost kódu a tedy i zjednodušení verifikace kódu z hlediska bezpečnosti. Podrobný popis instalace a konfigurace lze nalézt zde nebo zde.


4 Konfigurace klienta

Proto, aby celý DNS fungoval správně, měl by každý klient využivajicí tento system znat, koho se má ptát při překladu doménových jmen na IP adresy. Toto je mozno udělat dvěma způsoby. Můžete využít stařičký (ale funkční) způsob a využít služeb souboru /etc/hosts. Nebo využít distribuovaného mechanismu name serveru pomoci konfigurace souboru /etc/resolv.conf.

4.1 /etc/hosts

/etc/hosts je velmi jednoduchý konfigurační soubor kde každý řádek je jeden záznam udávající alfabetické názvy jako "synonyma" pro danou ip adresu. Např.

	127.0.0.1     localhost lchost blabla
	147.251.48.1  aisa.fi.muni.cz aisa

To se hodí, pokud víte že nějaké doménové jméno používáte často a nechcete posílat dotaz do hierarchie DNS serverů. Ulehčíte tak serverům a zároveň zrychlíte proces převodu jména na IP adresu. Pokud chete tuto cestu kofigurace překladu jmen použít, musíte to explicitně říci v souboru /etc/host.conf řádkem "order hosts bind", kde se říká, že se nejdřív bude procházet soubor /etc/hosts

4.2 /etc/resolv.conf

Tento soubor se konfiguruje podobně jednoduše jako soubor hosts. Jednotlivé řádky odpovídají name serverům, kterých se má kofigurovaný stroj na překlad adres ptát. Např. tedy:

	domain Domain
	nameserver  192.168.1.254
	nameserver  213.46.172.36

Literatura