Portál AbcLinuxu, 8. května 2025 18:24
Nastavení DNS serveru BIND v režimu cache-only - srozumitelný a praktický návod.
Počítače komunikují v sítích založených na protokolu TCP/IP (IPv4) pomocí 32bitových čísel, tj. ip_adresy (např. 192.168.1.1). Pro snadnější zapamatování a vlastně i usnadnění komunikace se počítačům přidělují jména. Takže počítač o adrese 192.168.1.1 se může jmenovat třeba "zofka". Pokud bychom měli malou síť, nebylo by těžké udržovat informace o jménech, jež jsou přidělena jednotlivým adresám v jednom souboru. Avšak ve velkých strukturovaných sítích (třeba dnešní Internet) by to bylo téměř nemožné a přinejmenším velmi pracné, nemluvě o problémech, když by došlo ke změně nějakého jména. Pro lokální účely lze této možnosti s výhodou využít zapsáním jmen a adres do souboru /etc/hosts. Avšak u větších sítí je nutné zpravovat takovou databázi centrálně, což také řeší tzv. NIS (Network Information System). K problémům však dochází v případě, kdy je síť opravdu rozsáhlá, kde při každé změně si musí klienti znovu kopírovat databázi "hosts", což může při větším počtu stanic a velikosti databáze značně zatěžovat síť. Právě všechny tyto problémy řeší systém DNS (Domain Name Service).
U systému DNS je využito principu klient-server. Kde se server stará o udržování databáze jmen a klient odesílá serveru dotaz, jenž je buď vyřízen přímo serverem, nebo je přeposlán na jiný server, schopný požadavek vyřídit.
Mezi nejpoužívanější DNS servery patří BIND, proto se v tomto článku budu zabývat právě jím. Poslední verzi BINDu lze najít na ftp://ftp.isc.org/isc/bind9/.
BIND je bezesporu nejpoužívanějším DNS serverem na platformě Unix. Je konstruován pro obrovské zatížení, a proto se u všech velkých DNS serverů setkáme právě s touto aplikací. Trochu jiný případ je otázka "Je BIND vhodný i pro náš účel?" Hodně uživatelů totiž volí pro DNS cache v menších sítích alternativy k BINDu (např. dnsmasq, pdnsd a další). Osobně mohu říci, že BIND pro náš účel vhodný je. Existuje mnoho jiných aplikací, některé jsou dokonce vyvinuty primárně pro účel DNS cache a je na každém, jestli použije tu, nebo onu aplikaci. BIND cachování umožňuje - jak ho zprovoznit, se dozvíte v tomto textu.
Zprovoznění DNS cache je výhodné pro sítě, které jsou připojené do internetu pomalejší linkou. Jelikož si DNS keš pamatuje již vyřízené požadavky, další jejich vyřízení, je-li o ně opět požádáno, probíhá na úrovni lokální sítě (již není kontaktován vzdálený DNS server), což může v jistých případech příjemně snížit zatížení a zkrátit odezvy. Nutno však dodat, že BIND si po rebootu počítače obsah nakešované paměti nepamatuje.
Zde je použit klasický postup.
tar -xvzf bind-9.3.1.tar.gz cd bind-9.3.1 ./configure make make install
BIND (proces named) se standardně spouští pod uživatelem root, což není z hlediska bezpečnosti příliš přívětivé. Proto je velmi vhodné vytvořit nového uživatele, pod kterým by se BIND spouštěl. Nyní se podíváme na postup, jak vytvořit nového uživatele, a nastavení práv adresářů.
named:x:200:
;named:x:200:200:,,,:/var/named:/bin/false
mkdir /var/named/dev mkdir /var/named/etc mkdir /var/named/etc/namedb mkdir /var/named/etc/namedb/slave mkdir /var/named/var mkdir /var/named/var/run cp -p /etc/named.conf /var/named/etc/ cp -a /var/named/* /var/named/etc/namedb/ mknod /var/named/dev/null c 1 3 mknod /var/named/dev/random c 1 8 chmod 666 /chroot/named/dev/{null,random}
chown named:named /var/named chown -R named:named /var/named/*
Vlastní konfigurace je poměrně jednoduchá. zde se zaměřuji na nastavení BINDu z hledika kešování. Zabývat se ostatními volbami by značně přesáhlo rámec tohoto článku. Veškeré nastavení se nyní bude týkat souboru /var/named/etc/named.conf.
controls { inet 127.0.0.1 port 953 allow { 127.0.0.1; } keys { "rndc-key"; }; }; options { directory "/var/named"; query-source address 193.178.150.241 port 53; # pro komunikaci s DNS použijeme port 53 auth-nxdomain no; # neposkytujeme informace o síti forward first; # pokud neví, ptá se níže uvedených serverů forwarders { # adresy DNS serverů, kterých se budeme ptát 193.179.149.2; 212.47.0.4; 212.47.1.4; }; listen-on { # naslouchá na těchto IP adresách 127.0.0.1; 192.168.33.1; }; }; # nastavení cache-only nameserveru zone "." IN { type hint; file "named.ca"; }; zone "localhost" IN { type master; file "localhost.zone"; allow-update { none; }; }; zone "0.0.127.in-addr.arpa" IN { type master; file "named.local"; allow-update { none; }; #file "0.0.127.in-addr.arpa.zone"; };
Poslední nastavení provedeme v /etc/resolv.conf, kde uvedeme náš loopback jako DNS server:
nameserver 127.0.0.1
Proces named musí být spuštěn s právy našeho nově vytvořeného uživatele. Pokud budeme spouštět named ručně, postačí příkaz:
named -u named -t /var/named
U mnoha distribucí bude spouštěcí skript v /etc/rc.d nebo /etc/init.d, do kterého doplníme nebo upravíme uvedený příkaz ke spuštění.
Pokud se chceme přesvědčit, zda náš DNS server opravdu pracuje, jak má, můžeme si vypsat obsah keše:
rndc -k /var/named/etc/rndc.key dumpdb
Je možné, že budou někteří uživatelé volit alternativy BINDu, zejména co se keše týče. Věřím ale, že pro tento úkol má BIND své uplatnění také a zvládá ho velmi dobře. Proto ať je tento návod skromným pomocníkem těm, kteří ho potřebují.
$TTL 86400 @ IN SOA localhost. root.localhost. ( 1997022700 ; Serial 28800 ; Refresh 14400 ; Retry 3600000 ; Expire 86400 ) ; Minimum IN NS localhost. 1 IN PTR localhost.Sám používám defaultní nastavení více jak 4 roky a zatím jsem se nesetkal s problémem.
Obcas miva take problemy s bezpecnosti.Nejaky priklad dejme tomu za posledni dva roky? P.S. Pred usetrenymi par MB RAM teda rozhodne davam prednost dodrzovani standardu, ktere tinydns a spol. dodrzuje akorat tehdy, kdyz se to autorovi hodi do kramu a bugreporty v tomto smeru zvesela ignoruje a jejich autory oznacuje za blbce, kteri nepochopili jeho genialni reseni.
Nářek nad systémovými prostředky mi v dnešní době přijde k smíchu.Ono pokud to ma clovek na notebooku kvuli pomalemu GPRS a jede z baterky, tak je zajimavy kazdy procento vykonu.
#dhcp_eth0="release nodns nontp nonis" # Only get an addres) Na gentoo.org je niekde beta verzia ich Network Howto. Je to dost kvalitne.
options { pid-file "/var/run/named/named.pid"; directory "/etc/bind"; };/etc/resolv.conf:
search gavanet.czf nameserver 127.0.0.1 nameserver 213.180.32.2 nameserver 213.180.33.225Vsechno funguje, vsechno se preklada, ale kdyz spustim "rndc -k /etc/rndc.key dumpdb" tak to vubec nic nevypise. Ani na jednom serveru. Pritom si myslim ze cache chodi, kdyz treba nefunguje inet, tak domenove jmeno se casto prelozi, ale ping nejde. Nevite nekdo v cem je zakopanej pes? Zdenek
http://www.abclinuxu.cz/clanky/show/86044
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.