Obsah:
DNS - Domain Name Sysem - vznikol na základe potreby prevodu IP adries počítačov v internete na ich (zrozumiteľné) názvy.
V počiatkoch sa na prevod mien počítačov na ich adresy v UNIXových OS používal súbor /etc/hosts. Udržovať takto údaje o počítačoch lokálne malo zmysel len pre malý okruh používaných mien, no po celosvetovom rozšírení internetu sa tento spôsob stal prakticky nepoužiteľný (v celosvetovom merítku). A tak vzniklo DNS... :-)
Súbor /etc/hosts sa stále môže používať pre statické nastavenie názvov/aliasov počítačov. Či sa primárne použije zadaný názov v /etc/hosts alebo či sa použije DNS na preklad adresy sa nastavuje v súbore /etc/nsswitch.conf.
Keďže prevažná väčšina počítačov v internete sa nenachádza samostatne, ale patria do istých skupín
(sietí/podsietí), DNS je navrnuté ako stromová štruktúra, kde každý uzol (doména) upresní identifikáciu počítača.
Keďže systém DNS tvorí strom, musí mať koreň - tým je "koreňová doména" označená ".".
V súčastnosti existuje 13 DNS serverov pre koreňovú doménu označených A - M. IP adresy týchto DNS servery
sú všeobecne známe. Konfiguračný súbor pre BIND sa dá stiahnuť napr. tu:
ftp://internic.net/domain/named.root.
Pod koreňovou doménou sa nachádzajú tzv. Top-Level Domain - sú tvorené národnými domény ako napr. "sk", "cz", "uk",
alebo nenárodné ako napr. "com", "net", "edu", "org",... Tie následne obsahujú údaje o svojich
subdoménach atd.
Každá doména musí mať práve jeden primárny DNS server (autoritatívny) a môže mať niekoľko sekundárnych serverov (ktoré slúžia ako zálohy primárneho servera a poskytujú tie isté údaje).
Resolverom sa nazýva sada knižničných funkcií, ktoré tvoria "klientskú" časť
DNS systému.
Chovanie Resolvera sa typicky nastavuje v súbore /etc/resolv.conf a tiež
v /etc/nsswitch.conf.
DNS server je program, ktorý poskytuje klientom odpoveď na ich dotazy. DNS servery sa pri zodpovedaní na dotaz môžu chovať dvomi spôsobmi:
Typy záznamov, ako sú popísané v RFC1035 (http://www.ietf.org/rfc/rfc1035.txt):
Základnou jednotkou sú tzv. RR - Resource Records.
Formát RR: (citované z http://www.ietf.org/rfc/rfc1035.txt)
1 1 1 1 1 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | | / / / NAME / | | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | TYPE | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | CLASS | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | TTL | | | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | RDLENGTH | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--| / RDATA / / / +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ where: NAME an owner name, i.e., the name of the node to which this resource record pertains. TYPE two octets containing one of the RR TYPE codes. CLASS two octets containing one of the RR CLASS codes. TTL a 32 bit signed integer that specifies the time interval that the resource record may be cached before the source of the information should again be consulted. Zero values are interpreted to mean that the RR can only be used for the transaction in progress, and should not be cached. For example, SOA records are always distributed with a zero TTL to prohibit caching. Zero values can also be used for extremely volatile data. RDLENGTH an unsigned 16 bit integer that specifies the length in octets of the RDATA field. RDATA a variable length string of octets that describes the resource. The format of this information varies according to the TYPE and CLASS of the resource record. TYPE value and meaning A 1 a host address NS 2 an authoritative name server MD 3 a mail destination (Obsolete - use MX) MF 4 a mail forwarder (Obsolete - use MX) CNAME 5 the canonical name for an alias SOA 6 marks the start of a zone of authority MB 7 a mailbox domain name (EXPERIMENTAL) MG 8 a mail group member (EXPERIMENTAL) MR 9 a mail rename domain name (EXPERIMENTAL) NULL 10 a null RR (EXPERIMENTAL) WKS 11 a well known service description PTR 12 a domain name pointer HINFO 13 host information MINFO 14 mailbox or mail list information MX 15 mail exchange TXT 16 text strings
Toto je všeobecný formát záznamov v DNS systéme. Každý DNS server však môže mať inú syntax pri zápise
týchto údajov do konfiguračných súborov.
BIND je asi najrozšírenejším DNS serverom. Je naprogramovaný ako monolitický a teda obsahuje mimo iné samotný server, resolver (pre riešenie rekurzívnych dotazov), cache a tiež nástroje pre overenie správnej činnosti DNS servera.
Schéma konfiguračných súborov serveru BIND je mnohokrát popísaná, preto ju nebudem opisovať, ale uvediem odkazy na rôzne zdroje:
Popis, ako rozbehat BIND v chrootovanom prostredí je podrobne popísané napr. tu: http://www.linuxsecurity.com/docs/LDP/Chroot-BIND-HOWTO.html, a zhrnuté napr. v tých vyššie uvedených referátoch.
BIND je aj nechvalne známy kvôli svojím chybám - pretekaniu bufferov, ktoré tvorili veľké bezpečnostné diery. Možno aj kvôli znechuteniu nad serverom BIND vznikol server djbdns, ktorý naprogramoval D. J. Bernstein.
djbdns nie je jeden program - démon, ale je sadou nástrojov pre prístup k systému DNS. Základnými časťami sú:
Keďže rôznych variánt popisov a postupov pre inštaláciu a nastavenie BIND-u je mnoho, ale nestretol som sa s ani jedným popisom servera djbdns, tak by som sa o to pokúsil.
Kompletný popis od autora je možné nájsť na http://cr.yp.to/djbdns/install.html.
V skratke:
makeprípadne:
echo gcc -O2 -include /usr/include/errno.h > conf-cc make
make setup check
djbdns beží natívne v chroot prostredí, takže sa netreba starať o žiadne extra úpravy a konfigurácie.
tinydns-conf Gtinydns Gdnslog /etc/tinydns 1.8.7.200
ln -s /etc/tinydns /service sleep 5 svstat /service/tinydns
cd /service/tinydns/root ./add-ns heaven.af.mil 1.8.7.200 ./add-ns heaven.af.mil 1.8.7.201 ./add-ns 7.8.1.in-addr.arpa 1.8.7.200 ./add-ns 7.8.1.in-addr.arpa 1.8.7.201 makePozn.: make na konci je nutný, aby sa zmeny prejavili do databáze, s ktorou tinydns server práve pracuje.
cd /service/tinydns/root ./add-host lion.heaven.af.mil 1.8.7.4 ./add-host tiger.heaven.af.mil 1.8.7.5 ./add-host bear.heaven.af.mil 1.8.7.6 ./add-alias www.heaven.af.mil 1.8.7.4 ./add-alias ftp.heaven.af.mil 1.8.7.4 make
cd /service/tinydns/root ./add-mx heaven.af.mil 1.8.7.193 make
cd /service/tinydns/root ./add-childns elysium.heaven.af.mil 1.2.3.144 make
+www.heaven.af.mil:1.8.7.4Riadky môžu začínať rôznym znakom podľa toho, o aký záznam sa jedná (napr. '=' - meno počítača; '+' - alias pre službu; '@' - MX záznam; '&' - delegovaný DNS server; '.' - ?delegácia domény? )
cd /service/tinydns/root tinydns-get a www.heaven.af.mil
cat /service/tinydns/env/IP netstat -n -i
svstat /service/tinydns
dnsq a www.heaven.af.mil 1.8.7.200 dnsq a www.heaven.af.mil 1.8.7.201
dnsqr a www.heaven.af.milAk dnscache nebude schopný nájsť adresu, problém bude takmer určite v nadradenom DNS serveri, ktorý nedelegoval náš tinydns server pre našu doménu. Poslednou záchranou by mohol byť výpis z dnstrace, prípadne výpis z logu /service/dnscache/log/main/current.