DNS

Oldřich Stražovský, xstrazov@fi.muni.cz


Obsah


Co je DNS?

DNS (Domain Name System) je nástroj pro převod doménových jmen (aisa.fi.muni.cz) na IP adresy (147.251.48.1) a naopak. O tento převod se stará hierarchický systém nameserverů. Na vrcholu stromu jsou nameservery kořenové, jejichž seznam a IP adresy je zveřejňován na
ftp://internic.net/domain/named.root. Zjistit adresu stroje pak znamená projít stromem. Např. chceme-li znát adresu stroje aisa.fi.muni.cz, musíme se nejdříve dotázat jednoho z kořenových nameserverů na záznam cz, odkud se dozvíme, že cz je doména a jaké jsou nameservery, které za ni odpovídají, a jejich adresy. Těch se zase musíme zeptat na muni.cz atd. Nakonec zjistíme, že aisa.fi.muni.cz už není doména, ale konečně stroj a dostaneme jeho IP adresu. Aby počítače nemusely tuhle složitou cestu podnikat při každém pokusu o převod, znají po síti blízké nameservery, které to dělají za ně, tj. chovají se rekurzivně. Každý nameserver ví, kdo je jeho nadřízený nameserver (nadřízený ve smyslu, koho se ptá, když sám neví, nikoli ve smyslu hierarchického stromu domén), nebo zná adresy kořenových nameserverů. Naopak ve stromu vysoko postavené nameservery (kořenové a spravující domény první úrovně) se většinou z důvodu vysoké zátěže chovají iterativně, tj. neptají se nikde dál, ani neprocházejí strom, pouze vás odkáží na další směr hledání.

Nameservery, na které je odkaz z nějaké domény, tj. jsou z kořene dosažitelné ve stromu domén, jsou registrované a budou na ně kladeny dotazy "zvenku". Pro účely vnitřní sítě je možno mít i nameserver neregistrovaný, o kterém se nikdo ze světa nedozví, a bude tak moci vyřizovat požadavky pouze z vaší sítě.

Protože nameserverů pro jednu doménu je vždy více, právě jeden z nich je primární a ostatní sekundární. Zóna je spravována na primárním nameserveru a na sekundární se při změně kopíruje. Nameserver, který není ani primární ani sekundární pro žádnou doménu se nazývá cache-only nameserver.

Pro převod IP adres na jména se používá pseudodoména in-addr.arpa, před kterou se IP adresa píše desítkově v obráceném pořadí. Např. 1.48.251.147.in-addr.arpa. S přidělením balíku IP adres na vás automaticky spadá povinnost spravovat příslušnou doménu pro reverzní převod.


BIND

BIND je balík programů pro DNS na Unixech. Najdete jej na
http://www.isc.org/products/BIND/. Měli byste v něm najít démona named(8), který se stará o převody, a program nslookup(1), co se na ně umí interaktivně dotazovat.

Nastavení klienta

Klienten myslím počítač, na kterém nameserver neběží. Na Linuxu je potřeba mít tyto soubory:
/etc/host.conf
order hosts,bind
multi on
/etc/resolv.conf
domain kroniky.cz
search kroniky.cz
nameserver 192.168.2.79
nameserver 192.168.2.12
/etc/hosts
127.0.0.1		lo localhost localhost.localdomain

Nastavení serveru

I server je třeba napřed nastavit jako
klienta. V /etc/resolv.conf můžete potom nastavit nameserver 127.0.0.1 (sami sebe). Nastavení serveru je v souborech:
/etc/named.conf
options {
	directory "/var/named"; //adresář, kde hledat soubory se zónama
}

// definice jednotlivých zón

// cache-only pro root
zone "." {
	type hint;
	file "root.hints";
};

// revezní pro localhost
zone "0.0.127.in-addr.arpa" {
	type master;
	file "master/127.0.0";
};

// kroniky.cz
zone "kroniky.cz" {
	type master;
	file "master/kroniky.cz";
};

// reverzní pro 192.168.2
zone "2.168.192.in-addr.arpa" {
	type master;
	file "master/192.168.2";
};

// slave pro blabla.cz
zone "blabla.cz" {
	type slave;
	file "blabla.cz";
	masters {
		192.168.2.12;
	};
};
root.hints Je potřeba aktualizovat!
.		6D IN NS	G.ROOT-SERVERS.NET.
.		6D IN NS	J.ROOT-SERVERS.NET.
.		6D IN NS	K.ROOT-SERVERS.NET.
.		6D IN NS	L.ROOT-SERVERS.NET.
.		6D IN NS	M.ROOT-SERVERS.NET.
.		6D IN NS	A.ROOT-SERVERS.NET.
.		6D IN NS	H.ROOT-SERVERS.NET.
.		6D IN NS	B.ROOT-SERVERS.NET.
.		6D IN NS	C.ROOT-SERVERS.NET.
.		6D IN NS	D.ROOT-SERVERS.NET.
.		6D IN NS	E.ROOT-SERVERS.NET.
.		6D IN NS	I.ROOT-SERVERS.NET.
.		6D IN NS	F.ROOT-SERVERS.NET.

G.ROOT-SERVERS.NET.	5w6d16h IN A	192.112.36.4
J.ROOT-SERVERS.NET.	5w6d16h IN A	198.41.0.10
K.ROOT-SERVERS.NET.	5w6d16h IN A	193.0.14.129
L.ROOT-SERVERS.NET.	5w6d16h IN A	198.32.64.12
M.ROOT-SERVERS.NET.	5w6d16h IN A	202.12.27.33
A.ROOT-SERVERS.NET.	5w6d16h IN A	198.41.0.4
H.ROOT-SERVERS.NET.	5w6d16h IN A	128.63.2.53
B.ROOT-SERVERS.NET.	5w6d16h IN A	128.9.0.107
C.ROOT-SERVERS.NET.	5w6d16h IN A	192.33.4.12
D.ROOT-SERVERS.NET.	5w6d16h IN A	128.8.10.90
E.ROOT-SERVERS.NET.	5w6d16h IN A	192.203.230.10
I.ROOT-SERVERS.NET.	5w6d16h IN A	192.36.148.17
F.ROOT-SERVERS.NET.	5w6d16h IN A	192.5.5.241
master/127.0.0
$ORIGIN 0.0.127.in-addr.arpa.
@		IN	SOA	tas.kroniky.cz. olda.kroniky.cz. (
				2       ; Serial
				8H      ; Refresh
				2H      ; Retry
				1W      ; Expire
				1D)     ; Minimum TTL
			NS	tas.kroniky.cz.

1			PTR	localhost.
master/kroniky.cz
@		IN	SOA	kroniky.cz. olda.kroniky.cz. (
				2000050500       ; Serial
				8H      ; Refresh
				2H      ; Retry
				1W      ; Expire
				1D)     ; Minimum TTL
		IN	NS	tas.kroniky.cz.
		IN	NS	paladin.kroniky.cz.
		IN	MX	1 tas.kroniky.cz.

tas		IN	A	192.168.2.79
tede		IN	A	192.168.2.78
paladin		IN	A	192.168.2.12
fispan		IN	CNAME	paladin.kroniky.cz.
raistlin 	IN	MX	1 paladin.kroniky.cz.
		IN	A	192.168.2.11
raist		IN	CNAME	raistlin.kroniky.cz.
tanis		IN	MX	1 paladin.kroniky.cz.
		IN	A	192.168.2.60
tantalas	IN	CNAME	tanis.kroniky.cz.
master/192.168.2
@		IN	SOA	kroniky.cz. olda.kroniky.cz. (
				2000050500       ; Serial
				8H      ; Refresh
				2H      ; Retry
				1W      ; Expire
				1D)     ; Minimum TTL
		IN	NS	tas.kroniky.cz.
		IN	NS	paladin.kroniky.cz.
		IN	MX	1 tas.kroniky.cz.

11		IN	PTR	raistlin.kroniky.cz.
12		IN	PTR	paladin.kroniky.cz.
60		IN	PTR	tanis.kroniky.cz.
78		IN	PTR	tede.kroniky.cz.
79		IN	PTR	tas.kroniky.cz.

Časté chyby


Další informace

DNS HOWTO
Chroot-BIND HOWTO