V době kdy počet stanic zapojených do Internetu nebyl příliš velký a mapování jmen na adresy se dalo zaručit jednoduchým nástrojem, používal se soubor hosts.txt, který se distribuoval k jednolivým počítačům přes InterNIC. Pak nastal zlom, kdy už byl soubor velký a nebylo v lidských silách tento systém distribuce dále udržovat. Proto byl vymyšlen DNS.
DNS se dá rozdělit na tři logické části:Jmenné prostory (DNSpace) tvoří hiearchickou stromovou strukturu. V kořeni jsou tzv. root-servers jejichž seznam je zveřejňován na ftp.internic.net. Na nich jsou uloženy informace o nameserverech (registrovaných), na které jsou delegována práva spravovat subdomény .cz .edu .com atd. Stejným postupem se dostáváme až k listům.
Nameservery můžeme rozlišit z hlediska postavení v doméně na primární (informace má uloženy v master souboru), sekundární (informace si periodicky stahuje z primárního) a cache-only (přeposílá dotazy a slouží jako cache) pro zónu.
Nameservery lze rozlišit též podle chování - iterativní v. rekurzivní.
Kromě převodu doménových jmen na IP adresy zajišťuje DNS i činnost opačnou tzv. reverzní mapování - převod IP adres na jména (doména IN-ADDR.ARPA).
Spolupráce Uživatelského programu s Resolverem a NS:
z RFC1035:
Local Host | Foreign
|
+---------+ +----------+ | +--------+
| | user queries | |queries | | |
| User |-------------->| |---------|->|Foreign |
| Program | | Resolver | | | Name |
| |<--------------| |<--------|--| Server |
| | user responses| |responses| | |
+---------+ +----------+ | +--------+
| A |
cache additions | | references |
V | |
+----------+ |
| Shared | |
| database | |
+----------+ |
A | |
+---------+ refreshes | | references |
/ /| | V |
+---------+ | +----------+ | +--------+
| | | | |responses| | |
| | | | Name |---------|->|Foreign |
| Master |-------------->| Server | | |Resolver|
| files | | | |<--------|--| |
| |/ | | queries | +--------+
+---------+ +----------+ |
A |maintenance | +--------+
| +------------|->| |
| queries | |Foreign |
| | | Name |
+------------------|--| Server |
maintenance responses | +--------+
Question - Dotaz a jeho parametry,
Answer - RR s odpovědí na dotaz,
Authority - RR které popisují jiné autoritativní nameservery
Additional - RR které mohou být užitečné.
Více o struktuře DNS dotazu v části BIND
named:x:200:200:Nameserver:/chroot/named:/bin/falseA todle do /etc/group
named:x:200:Pozor ať nepoužijete existující PID a GID...
/chroot
+-- named
+-- dev
+-- etc
+-- named
+-- var
+-- run
Uděláme /dev/null v chroot-u: mknod /chroot/named/dev/null c 1 3Taky potřebujeme čas do logů:
cp /etc/localtime /chroot/named/etc/Protože named poběží v chroot-ovaném prostředí, nemůže pro logování používat socket /dev/log. Pokud náš syslogd podporuje volbu -a, vyřešíme to tímto způsobem: V souboru se startovacím skriptem (v RedHatu /etc/rc.d/init.d/syslog) zaměníme řádku
daemon syslogd -m 0 za daemon syslogd -m 0 -a /chroot/named/dev/logStejnou volbu musíme u některých distribucí změnit též v /etc/sysconfig/syslog (nebo přibližně někde tam...)
daemon named -u named -t /chroot/named/ -c /etc/named.conf
//named.conf
// c style komentare strednik na konci kazdeho radku
options {
directory "/var/named"; // pracovni adresar named
pid-file "/var/run/named.pid"; // pid named
statistics-file "/var/tmp/named.stats"; // statistiky
forwarders { 147.251.48.3 147.251.48.1; 147.251.4.33; }; // kam se preposilaji dotazy
allow-query { any; }; // povolit dns dotazy odkud
allow-transfer { none; }; // povolit stahnuti tabulek odkud
forward-only // pouze preposilat dotazy...
};
zone "localhost" { //definice lokalni smycky
type master; // pro localhost jsme master
file "master/localhost"; // cesta k souboru localhost
allow-update { none; };
allow-transfer { any; };
};
zone "0.0.127.in-addr.arpa" { //reverzni zaznam pro loopback
type master;
file "master/127.0.0";
allow-update { none; };
allow-transfer { any; };
};
zone "." { //zaznamy pro korenovou domenu
type hint;
file "named.root";
};
// dale prevzato z erigony definice subdomeny lab.fi.muni.cz
acl internal_net { 10.0.0.0/8; 127.0.0.1; };
zone "lab.fi.muni.cz" {
type master;
file "master/lab.fi.muni.cz";
allow-query { internal_net; };
};
zone "0.0.10.in-addr.arpa" {
type master;
file "master/10.0.0";
allow-query { internal_net; };
};
; komentare zacinaji strednikem
$ORIGIN localhost.
@ IN SOA @ root.localhost. (
2001042700 ; serial
3H ; refresh
15M ; retry
2W ; expire
1D ) ; minimum
NS @ ; autoritativni nameserver pro zonu
A 127.0.0.1 ; ip adresa (bez parametru origin)
; reverzni domena
$TTL 1D
$ORIGIN 0.0.127.in-addr.arpa.
$TTL 1D
@ IN SOA localhost. root.localhost. (
2001042700 ; serial
3H ; refresh
15M ; retry
2W ; expire
1D ) ; minimum
NS localhost.
0 PTR localnet.
1 PTR localhost.
;slave file fi.muni.cz z aisy
; BIND version named 8.2.2-P5 Fri Jul 21 15:50:22 MET DST 2000
; BIND version kron@aisa2:/export/local/kron/bind/src/bin/named
; zone 'fi.muni.cz' last serial 2002030100
; from 147.251.48.3:53 (local 147.251.48.1) using AXFR at Fri Mar 1
16:59:27 2$$ORIGIN muni.cz.
fi 86400 IN SOA anxur.fi.muni.cz.
postmaster.anxur.fi.muni.cz. ( 2002030101 10800 900 1209600
86400 )
86400 IN NS anxur.fi.muni.cz.
86400 IN NS aisa.fi.muni.cz.
86400 IN NS ns.muni.cz.
86400 IN TXT "Faculty of Informatics"
86400 IN TXT "Masaryk University Brno"
86400 IN TXT "Botanicka 68a, 602 00, Brno, Czech republic"
86400 IN MX 50 relay.muni.cz.
86400 IN MX 500 adis.cesnet.cz.
86400 IN A 147.251.48.3
$ORIGIN fi.muni.cz.
otos 86400 IN MX 50 relay.muni.cz.
86400 IN MX 500 adis.cesnet.cz.
86400 IN A 147.251.52.186
helios 86400 IN MX 50 relay.muni.cz.
86400 IN MX 500 adis.cesnet.cz.
86400 IN A 147.251.52.67
;... atd
; muzete se kouknout na erigonu a aisu