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
make
Pozn.: 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.mil
Ak 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.