djbdns - alternativní DNS server

Jakub Nešetřil, nesetril@mail.muni.cz



Obsah

O autorovi
O djbdns
Nutné vybavení
Instalace a konfigurace
Běh
Shrnutí


O autorovi

Autorem programu djbdns je Daniel J. Bernstein, odborník na počítačovou bezpečnost a profesor University of Illinois. Jelikož je tento fakt pro další instalaci software poměrně důležitým, neuškodí se s jeho postoji sběžně seznámit.

Dan Bernstein má své sídlo na adrese http://cr.yp.to/. Zde najdete kromě software také jeho články, názory a rady. Hned na první pohled je zřejmé, že autor se s nikým nemazlí: kromě výhrad k SMTP si také přečtete, jak naprosto pokažený je vývoj IPv6, jak neschopný je CERT, proč autor zásadně nepoužívá syslog apod. V souvislosti s dnešním tématem pak se pak dozvíme, že stávající implementace DNSSEC je k ničemu a BIND je zkratka pro Buggy Internet Name Daemon. Ne, že by autor v řadě věcí neměl pravdu. Nicméně začínáme tušit, že autor je tvrdohlavý a dělá věci po svém. Instalace nebude tedy úplně "obvyklá".


O djbdns

djbdns je (dle autora) po BIND druhý nejpoužívanější DNS server, přesto je poměrně neznámý. V .com doméně ho používá 8% serverů (BINDv9 24%, BINDv8 45%), mezi jinými např. Lycos, pobox.com, directNIC. Autor při návrhu vycházel primárně z bezpečnostních funkcí. Jak je pro Dana Bernsteina typické, program je tvořen sadou malých, mezi sebou vzájemně komunikujících prográmků, z nichž každý článek může být vyměněn za jiný, více specializovaný. Výsledkem je pěkný, modulární a rozšiřitelný design.

Porovnání s BIND:


Nutné vybavení

Při instalaci djbdns plně doporučuji postupovat krok za krokem dle webového návodu, jelikož můžete předem zapomenout na vše na co jste z instalačních balíků zvyklí a na dobré mravy vůbec. Jelikož má Dan všechno rád po svém, je nutné před instalací DNS serveru nainstalovat ještě pomocné programy, které budeme používat na ovládání software (místo inetd), logování (místo syslogu) a další drobnosti, jako například chrootované prostředí. Jedná se o daemontools a ucspi-tcp. Oba nástroje mají dobře popsanou instalaci na webu.

Upozornění:


Instalace a konfigurace

Po instalaci potřebných utilit stačí pokračovat v instalačním návodu. Následující instalace je již poměrně přímočará, platí nicméně stále výše zmíněná upozornění. Po instalaci máme k dispozici následující sadu programů:

Následující konfigurace se liší podle toho, pro jaký účel chceme balík programů použít. Pro účely rozjetí vlastních DNS záznamů slouží na danových stránkách odkaz "How to run a DNS server" (není to úplně jednoduché najít napoprvé). Popisuje vytvoření dvou dedikovaných uživatelů (Gtinydns pro tinydns a Gdnslog pro zápis logu). Zbytek obstará příkaz
 
tinydns-conf Gtinydns Gdnslog /etc/tinydns 10.0.40.1
 
který vytvoří strukturu konfiguračních adresářů pod /etc/tinydns (IP adresu nutno nahradit adresou rozhraní, na kterém chcete DNS provozovat). Příkaz
 
ln -s /etc/tinydns /service
 
pak způsobí, že běžící svscan (součást daemontools) tinydns spustí, změní uživatele procesu, chrootuje proces, pustí logovací program multilog, změní jeho uživatele a rourou pošle výsledek prvního do druhého. Přesně to najdete v /etc/tinydns/run a /etc/tinydns/log/run.

Upozornění:


Běh

tinydns se zapíná a vypíná pomocí programu svc (přepínače -u a -d), který je součástí daemontools. Tenhle balík Vám doporučuji důkladně prostudovat, pokud hodláte djbdns používat. Po nabootovaní server automaticky spustí, pokud spadne (což ovšem neudělá), tak ho pustí znovu (po určitém intervalu), kontroluje jeho běh, zajišťuje precizní logování událostí, rotování logů a vůbec - je pro provoz důležitý. Konkrétně se zaměřte na programy svscanboot, svscan, supervise, svc a multilog.

Přidávání nových záznamů se děje pomocí konfiguračních nástrojů v /etc/tinydns/root - add-host,add-alias,add-mx,add-ns. Pro detailnější kontrolu si prostudujte tinydns-data a jeho formát ukládání dat. Kromě nastavení všech parametrů DNS záznamu (např. TTL) umožňuje i automatickou aktivaci či deaktivaci záznamu v daném časovém okamžiku, nastavení plošných wild-card záznamů, load-balancing pomocí DNS a další. Veškeré záznamy se ukládají do textového souboru data s poměrně přehlednou strukturou (na každé řádce záznam, pro typ záznamu je rozhodující první znak). Tento formát pak pomocí make přeložíte do binárního souboru data.cdb, který tinydns používá. Při celém postupu se používají záložní soubory a atomické operace, takže nemůže dojít ke ztrátě dat při výpadku proudu.

Pokud potřebujete kopírovat záznamy na sekundární server (či naopak), máte dvě možnosti. Buď použít axfrdns (pro odchozí zone transfer) a axfr-get (pro příchozí zone-transfer) a nebo Danem doporučované elegantnější řešení pomocí ssh a rsync. Do Makefile, který se používá při budování data.cdb přidáte několik řádek (viz web), které zajistí přenos přes rsync a ssh a vytvoření data.cdb i na sekundárním serveru.

Upozornění:


Shrnutí

Instalace:

wget http://cr.yp.to/djbdns/djbdns-1.05.tar.gz
wget http://cr.yp.to/djbdns/doc.tar.gz
wget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
mkdir -p /package ; chmod 1755 /package
tar xzf daemontools-0.76.tar.gz -C /package
( cd /package/admin/daemontools-0.76 ; vi src/conf-* ; ./package/install )
#reboot nebo start svscan
tar xzf ucspi-tcp-0.88.tar.gz
( cd ucspi-tcp-0.88 ; vi conf-* ; make setup check )
tar xzf djbdns-1.05.tar.gz
( cd djbdns-1.05 ; vi conf-* ; make setup check )

Konfigurace:

#vytvořit účty Gtinydns a Gdnslog
tinydns-conf Gtinydns Gdnslog /etc/tinydns moje-ip-adresa
ln -s /etc/tinydns /service
sleep 5
svstat /service/tinydns