DNS (Domain Name Service) je služba sloužící pro překlad doménových jmen na IP adresy a naopak (IP adres na doménová jména). Vznik doménových jmen přirozeně vyplynul z těžké zapamatovatelnosti IP adres. Doménová hierarchie v Internetu má stromovou strukturu. Kořenem je '.' a prvními podstromy jsou domény prvního řádu (com,org,net, lokální domény: cz, sk atd.). Zpočátku byla doménová jména zpravována centralizovaně a byla uložena v souboru HOSTS, který si servery rozkopírovaly mezi sebou. Pokud chtěl někdo změnu musem požádat NIC (Network Information Center). To se zdá dnes nemožné, ale v době kdy Internet fungoval na menším písečku je to pochopitelné. Tento těžkopádný způsob fungoval do roku 1984, kdy Paul Mockapetris navrhl systém DNS. A od těch dob se o šíření informací o doménovýh jménech stará hierarchie serverů zajišťující službu DNS.
Služba DNS má stranu serveru a stranu klienta. Server spravuje záznamy o doménových jménech v rámci své domény a o serverech spravující nadřazené domény. Klient klade dotazy na IP adresy na základě doménového jména a naopak, server zná buď odpověď nebo ví kde se zeptat. Takto se při vyhodnocování dotazu putuje stromem domén směrem vzhůru, případně až ke kořenovým serverům. Záznamy o těchto serverech lze získat na ftp NIC ftp.internic.net
Existují primární, sekundární a cahe-only DNS servery. Každý server může být primární pro jednu zónu a zároveň sekundární pro jinou. Primární uchovává informace pro překlad adres, pro každou zónu zvlášť. Sekundární si pouze stahuje informace o požadované zóně od primárního nebo od jiného sekundárního (zone transfer) a nemá právo zónu změnit. Cache-only server si pouze pamatuje odpovědi na dotazy dříve kladené, které přepošle.
Server se může chovat buď rekurzivně tj. sám se ptá serverů v hierarchii nad ním a klientovi dá odpověď až ji zjistí, nebo klienta pouze odkáže na server v hierarchii nad ním.
Existuje spousta implementací DNS serverů. V první řadě je asi vhodné zmínit BIND (Berkeley Internet Name Domain), který je referenční implementaci DNS pro UNiX, další rozšířené jsou DJBDNS, DentsKlientská část DNS se nazývá resolver a má za úkol mimo jiné zadávat DNS dotazy. Reslover je součástí knihovny 'libc' tudíž asi každé distribuce. Koho se má ptát je definváno v konfiguračním souboru '/etc/resolv.conf' a obvykle vypadá takto:
search lab.fi.muni.cz //v kterých doménách se má hledat domain neco //jméno naší domény nameserver 10.0.0.1 // Nameserver kterého se má reslover ptát
BIND je DNS server vhodný pro malé a středně velké domény. BIND je monolitický program named. Poslouchá na UDP i TCP portu 53. Používá pro dotazy a odpovědi UDP, jen u vyjímečně složité komunikace používá TCP.
/chroot +-- named +-- dev +-- etc +-- named +-- var +-- runV ní vytvoříme nové /dev/null:
mknod /chroot/named/dev/null c 1 3Nový localtime:
cp /etc/localtime /chroot/named/etc/Přispůsobíme si logování, ve skriptu syslodémona upravíme:
syslogd -m 0a restarujeme syslogd.
// na:
syslogd -m 0 -a /chroot/named/dev/log
useradd -u 200 -g 200 -c nameserver -d /chroot/named -s /bin/false namedZměníme práva adresáře /chroot
chown named /chroot/named -R
chmod 700 /chroot/named
./configure && make && make install DESTDIR=/chroot/named
options { // Pracovní adresář directory "/var/named"; // Pro komunikaci s jinou DNS použij port 53 query-source port 53; // Pokud něco neví, ptá se nejprve serverů // uvedených ve forwarders forward first; forwarders { 212.65.193.6; 212.65.242.210; }; //Kdo smí klást dotazy allow-query { any; }; //Konfigurace kořenové zóny, informace o root nameserverech jsou uloženy v //souboru 'named.ca' zone "." IN { type hint; file "named.ca"; }; //Konfigurace překladu jména localhost, zone "localhost" IN { type master; //značí že server je pro tuto zónu primární file "pri/localhost.zone"; allow-update { none; }; // udává kdo může updatovat zónu notify no; }; //Konfigurace překladu reverzního dotazu na localhost zone "127.in-addr.arpa" IN { type master; file "pri/127.zone"; allow-update { none; }; notify no; }; // konfigurační soubor named.neco.net // (pojmenovat si ho můžete jakkoliv) // je uložen v cestě uvedené v directory zone "neco.net" { type master; file "named.neco.net"; }; // Slouží ke zpětnému překladu. (IP -> jméno) zone "4.168.192.in-addr.arpa" { //toto jméno je složeno z IP adresy třídy // C (192.168.4) a .in-addr.arpa type master; file "named.rev"; };a nyní konfigurace jednotlivých zón:
$TTL 86400 @ IN SOA neco.net. spider.neco.net. (// jméno domény, email správce: místo @ je tu "." 2002102100 ; // Identifikační číslo (rok, měsíc, den) 10800 ; // Obnovovací frekvence (v sekundách) 1800 ; // Opakované pokusy (v sekundách) 1209600 ; // Expirace datových tabulek na // sekundárním serveru, pokud nedojde k aktualizaci 604800 ) ; // minimum - doba, po které prohlásí sekundarní // server požadavek za nesplnitelný // nezapomenout na koncích tečku! IN NS ns.neco.net. // záznam typu NS (Name Server) IN MX 10 mail.neco.net.// mail server MX (MailExchage),10 (váha) přednostně se použije ten s nejnižší ns IN A 192.234.4.13 ;// Záznam typu A (Address) mail IN A 192.234.4.13 ;// slouží k převodu jména na IP adresu.k mail se automaticky připojí neco.net, chief IN A 192.234.4.13 ; www IN CNAME chief // Záznam typu CNAME (Canonical Name) smtp IN CNAME chief pop3 IN CNAME chief misa IN A 192.234.4.11 ; peta IN A 192.234.4.12 ; luda IN A 192.234.4.14 ; aja IN A 192.234.4.15 ;a tet reverzní named.rev
$TTL 604800 @ IN SOA 4.168.192.in-addr.arpa. spider.neco.net. ( 2002102101 ; 10800 ; 1800 ; 1209600 ; 604800 ) ; IN NS ns.neco.net. 11 IN PTR spider.neco.net // Typ PTR (pointer); číslo na začátku je poslední v celé IP adrese (192.168.4.11) 13 IN PTR www.neco.net 13 IN PTR chief.neco.net 13 IN PTR mail.neco.net 13 IN PTR ns.neco.net 13 IN PTR smtp.neco.net 13 IN PTR pop3.neco.net 11 IN PTR misa.neco.net 12 IN PTR peta.neco.net 14 IN PTR luda.neco.net 15 IN PTR aja.neco.net
named-checkconfa
named-checkzonepřípadně programy:
host [-aCdlriTwv] [-c class] [-N ndots] [-t type] [-W time]nebo
dig [@dns] domain [[-c ]q-type] [[-t ]q-class] [+q-opt] [-d-opt] [%comment]
named -u named -t /chroot/named/ -c /etc/named.conf
rndc [-c config] [-s server] [-p port][-k key-file ] [-y key] [-V] command
BIND 9 Administrator Reference Manual
Ftp se seznamem kořemnových nameservrů - internic.net
Internet Systems Consortium
BIND FAQ
BIND HOWTO