V IP sítích se používá adresování uzlů pomocí číselných identifikátorů - adres. Tato koncepce přirozeně nevyhovuje člověku, který rád využívá jistou mnemotechniku. Proto je myšlenka překladu názvů na jména téměř stejně stará jako IP sítě sami.
Prvotní koncepce vycházela ze souborů se záznamy adresa-název, který dodnes přežívá ve formě /etc/hosts
. Systém je vhodný pro malé a téměř neměnné sítě. Částečné řešení přináší NIS (Sun Yellow pages) - systém vzájemné distribuce souborů /etc/hosts
po síti. Tím se sice odstraní možné nekonzistence, není ovšem řešen problém možné velikosti těchto souborů - hledání mezi mnoha milióny záznamů není příliš rychlé.
Systém DNS vychází z konceptu namapování počítačů do hierarchické (stromové) struktury. Ta je zavedena především proto, aby nemusel každý DNS server evidovat záznamy všech ostatních. DNS zavádí systém domén a jejich vzájemné delegace - kořenem DNS stromu je doména ., ta deleguje tzv Top Level Domains (např. .cz, .com, .net), ty tedy tvoří další patro stromu. Delegovat tedy znamená učinit nameserver autoritativním, dát mu právo spravovat příslušnou doménu. V praxi tedy všechny dotazy v doméně ., které se týkají její poddomény .cz budu nameserverm domény . přeposlány na autoritativní nameserver domény .cz. . Mezi autoritativními nameservery dané domény (např. .cz) je vždy server primární (ten přímo definuje danou doménu) a několik serverů sekundárních (drží kopie informací primárního a periodicky si je obnovují).
Poznámka: seznam nameserverů pro doménu . je k dispozici (ve formě zónového souboru pro BIND) na ftp://internic.net/domain/named.root
Resolvery bývají často poměrně přímočaré - dovedou se pouze zeptat tam, kde mají a v případě neúspěchu oznámit chybu. Intelignece tedy zůstává na straně DNS serverů, od nich můžeme očekávat v zásadě dvojí chvání:
Krátké shrnutí typů nameserverů:
Poměrně přirozeným požadavkem je potřeba překládat IP adresy zpět na příslušná doménová jména. Tento problém se v DNS systému řeší zavedením pseudo-domény IN-ADDR.ARPA. Do této domény se umísťují IP adresy v reverzním tvaru - to proto, že DNS je little-endian systém, zatímco IP adresy big-endian. Sluší se tedy vždy při konfigfuraci nějaké zóny (domény) přidat i nastavení pro reverzní záznam.
Reslover je společný název pro sadu machanismů, kterými klientí přistupují k systému DNS. Jeho chování se typicky konfiguruje soubory /etc/resolv.conf
a /etc/host.conf
. Nejedná se o službu ve smyslu běžícího deamona, či nějakého serveru, ale o sadu knihovních funkcí, kterou příslušné aplikace využívají.
/etc/resolv.conf slouží k nastavnení IP adres DNS serverů, kterých se má resovler ptát. Dále definuje místní doménu, příp. seznam dalších domén, ve kterých vyhledávat. Soubor může být prázdný - v takovém případě se předpokládá běžící DNS server na localhostu. Více informací man resolver
.
/etc/host.conf specifikuje především v jakém pořadí oslovovat jednotlivé zdroje (tedy místní soubor /etc/hosts
, DNS server nebo NIS). Více man host.conf
.
Berkley Internet Name Deamon je referenční implementací DNS. Je možné si jej stáhnout z linků odkazovaných z domovské stránky http://www.isc.org/products/BIND, je ovšem obsažen ve většině obvyklých Linuxových distribucí. Aktuální verze je 9.2.6, stále se používá i předchozí verze 8 (aktuálně 8.4.7).
Po stažení zdrojové distribuce se aplikace připraví obligátní trojicí příkazů ./configure
, make
a make install
.
Konfiguračním souborem BINDu je /etc/named.conf
. Nastavuje obecné chování serveru a definuje zóny o kterých má server co říct.
options { directory "/var/named"; forwarders { 195.128.203.2;195.128.203.3; }; forward only; }; // korenove nameservery zone "." IN { type hint; file "named.root"; }; // zona localhost zone "localhost" IN { type master; file "master/localhost.zone"; allow-update { none; }; }; zone "0.0.127.in-addr.arpa" IN { type master; file "master/127.0.0.zone"; allow-update { none; }; }; // zona bytnet zone "bytnet.ty.acvyskov.cz" IN { type master; file "master/bytnet.ty.acvyskov.cz.zone"; allow-update { none; }; allow-transfer { any; }; }; zone "2.168.192.in-addr.arpa" IN { type master; file "master/2.168.192.zone"; allow-update { none; }; allow-transfer { any; }; } // sekundarni pro ty.acvyskov.cz zone "ty.acvyskov.cz" IN { type slave; file "slave/ty.acvyskov.cz.zone"; masters { 192.168.3.1; }; allow-transfer { any; }; };
Konfigurační soubor zóny obsahje záznamy nazývané Resource Records, obecný formát:
name ttl class rr parameter
opět příklad:
$TTL 1D @ IN SOA ns.bytnet.ty.acvyskov.cz. root.ns.bytnet.ty.acvyskov.cz. ( 20060304 ; Serial 3H ; Refresh 15M ; Retry 2W ; Expire 1D ) ; MINIMUM TTL IN NS ns IN MX 10 ns ; mia je alias pro ns mia IN CNAME ns ns IN A 192.168.2.111 hydra IN A 192.168.2.110
Spouštění BINDu v chrootovaném prostředí se jeví jako žádoucí bezpečnostní zásah - pokud se nějakému útočníkovi podaří napadnout DNS, chrootované prostředí mu výrazně sváže ruce.
Následujcící mini-HOWTO je stručným výtahem výborného Chroot BIND HOWTO
named
a skupiny named
/chroot/named
a jeho podadresářů etc/
, dev/
a var/run/
, případně dalších (záleží na parametrech ./configure
)/dev/null, /dev/random
:
mknod /chroot/named/dev/null c 1 3
mknod /chroot/named/dev/random c 1 8
chmod 666 /chroot/named/dev/{null,random}
-a /chroot/named/dev/log
, zajistí vytvoření nového socketu pro syslogdaemon /usr/local/sbin/named -u named -t /chroot/named -c /etc/named.conf
(-u uživatel, -t klec, -c konfiguračníSoubor
Alternativou k BINDu může být djbdns od D. J. Bernsteina (mimo jiné autora qmailu). Tento svérázný produkt nepracuje jako monolitický server, namísto toho je rozdělen do více modulů (tinydns, dnscache, axfrdns).
recursion (on|off)
rndc
pro ovládáná běžícího BINDu