Návody
-
Nastavení DNS
Nastavení DNS
Komentovaný příklad nastavení DNS.
Myslím si, že DNS je užitečná věc, a to nejen na internetu, ale i v malé
domácí síti. Už třeba jenom kvůli proxy serveru, ke kterému se možná dostaneme
v dalším článku. Tento článek se budu snažit psát pro začátečníky, protože se
za začátečníka pořád považuji. Vím, jaké jsem měl problémy se sháněním
informací. Buď jsem si je musel překládat, nebo nebyly úplné a nebo napsané
tak, že jsem z toho pochopil jen málo. A co si budeme povídat, nastaveni DNS
patří k těm těžším úkolům.
Takže, co bychom se v tomto článku měli naučit?
- Pochopení principu DNS
- Porozumět konfiguračním souborům
- Spustit danou službu
- Nakonfigurovat svůj milovaný Linux, aby využíval DNS služeb
- Nakonfigurovat nenáviděný OS, který stejně všichni používají, aby
využíval DNS služeb
Historie
Co to vlastně DNS je? Jednoduše řečeno, slouží k převodu jmenných adres
na IP adresy a naopak. Nejlépe se to chápe na příkladu. Co si zapamatujete
lépe?
www.abclinuxu.cz nebo 80.95.102.12
www.abclinuxu.cz je jmenná adresa a 80.95.102.12 je IP adresa. Pokud nejste kybernetik, budete určitě volit první možnost. Kdysi na to existoval soubor /etc/hosts , který se šířil pomocí služby FTP a musel být uložen na každém počítači připojeném do Internetu. Jenže postupem času začalo být jasné, že to takhle dál nepůjde, a tak se začala hledat náhradní řešení. A vymyslelo se DNS (Domain Name System), jenž si
udržuje informace o počítačích, které se v síti nacházejí. Neboli, každá
síť má jeden počítač, který zná všechny počítače v síti. Adresa daného
počítače je uložena v centrální tabulce a ostatní stroje se ho mohou
dotazovat na adresy počítačů, které obsluhuje.
Tak, teď se vrhněme na instalaci. Nainstalujte si BIND verze 9.x. Měl by
ve vaší distribuci být. Pokud chcete kompilovat, hledejte zde ftp://ftp.isc.org/isc/. Kompilací se zde
zabývat nebudu; předpokládám, že ten, kdo kompiluje ze zdrojových kódů, ví
co dělá a co má číst, a proto pro tento článek předpokládám instalaci z
balíčku (jsem začátečník .
Konfigurace
Po instalaci se podívejte do souboru /etc/named.conf . Pokud
jste modemisti, případně máte jednoduchou síť jako já, měli byste tento
soubor upravit asi takhle:
Malá poznámka: text který je uveden za '// ' nemusíte
opisovat. Místo yakuza.net a mé IP dosazujte vaše správné
údaje.
options {
directory "/var/named";
// Zde bude BIND hledat své konfigurační soubory
// Obecně to tu bývá přednastaveno vaší distribucí
// (v Debianu /etc/bind), takže neměnit!
// Moje nastavení
// Pokud DNS nezná odpověd použije DNS od Contactelu
auth-nxdomain no;
// Server neposkytuje informace o naší síti
query-source port 53;
// Pro komunikaci s jinou DNS použij port 53
forward first;
// Pokud něco neví, ptá se nejprve serverů
// uvedených ve forwarders
forwarders {
212.65.193.6;
212.65.242.210;
};
cleaning-interval 259200;
// Pročišťuje tabulku pomocného serveru od záznamů,
// na které se nikdo neptal (v sekundách)
};
// a caching only nameserver config
zone "." IN {
type hint;
file "named.ca";
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
};
// Informace o DNS ns.yakuza.net
zone "yakuza.net" {
type master;
file "named.yakuza.net";
};
// konfigurační soubor named.yakuza.net
// (pojmenovat si ho můžete jakkoliv)
// je uložen v cestě uvedené v directory
// v tomto případě /var/named/named.yakuza.net
// Slouží ke zpětnému překladu. (IP -> jméno)
zone "4.168.192.in-addr.arpa" {
//toto jméno je složeno z IP adresy třídy
// C (192.168.4) a .in-addr.arpa
type master;
file "named.rev";
// opět konfigurační soubor
};
Všimněte si, že ve file "....." není celá cesta. To díky
direktivě directory "/var/named" . Pokud chcete konfigurační
soubory dát do nějakého adresáře, např. /var/named/moje_sit ,
musíte v souboru named.conf v direktivě file
napsat i ten adresář. file moje_sit/named.yakuza.net . Všimněte
si, že prakticky každý příkaz končí středníkem ; ! Opomenutí
bývá nejčastější chybou.
Takže máme nakonfigurováno chování démona bind. Teď mu musíme ještě
vytvořit databázi počítačů v síti. Ještě si vysvětlíme rozdíl mezi zónou a
doménou a pak se vrhneme na konfigurační soubory. Mimochodem, pokud nejste v síti, stačí vám soubory, které jste našli už přednastavené k loopbacku.
Prostě je jenom editujte a dopište tam, co potřebujete.
Doména je tvořena zónami. Například doména abclinuxu.cz
může mít poddoménu firewall.abclinuxu.cz nebo router.abclinuxu.cz a každá
z těchto domén má vlastní zónu. Takže doména abclinuxu.cz se v našem
příkladu skládá ze 2 zón.
Soubor named.yakuza.net
$TTL 86400
@ IN SOA yakuza.net. metalman.yakuza.net. (
// jméno domény, email správce: místo @ je tu "."
2002102100 ; // Identifikační číslo (rok, měsíc, den)
10800 ; // Obnovovací frekvence (v sekundách)
1800 ; // Opakované pokusy (v sekundách)
1209600 ; // Expirace datových tabulek na
// sekundárním serveru, pokud nedojde k aktualizaci
604800 ) ;
// minimum - doba, po které prohlásí sekundarní
// server požadavek za nesplnitelný
IN NS ns.yakuza.net. // záznam typu NS (Name Server)
// nezapomenout na konci tečku!
IN MX 10 mail.yakuza.net.
// mail server MX (MailExchage)
// 10 (váha) přednostně se použije ten s nejnižší
ns IN A 192.168.4.13 ;
// Záznam typu A (Address)
// slouží k převodu jména na IP adresu.
mail IN A 192.168.4.13 ;
// k mail se automaticky připojí
// yakuza.net, takže vznikne mail.yakuza.net
hobitton IN A 192.168.4.13 ;
www IN CNAME hobitton
// Záznam typu CNAME (Canonical Name)
// funguje jako alias
smtp IN CNAME hobitton
pop3 IN CNAME hobitton
metalman IN A 192.168.4.11 ;
igis IN A 192.168.4.12 ;
myra IN A 192.168.4.14 ;
kess IN A 192.168.4.15 ;
notre IN A 192.168.4.16 ;
evik IN A 192.168.4.17 ;
pavla IN A 192.168.4.18 ;
darkstar IN A 192.168.4.20 ;
Pozor: ve 2. řádku na konci jména domény a emailu nezapomeňte napsat "."
-> yakuza.net. metalman.yakuza.net. Dále by vás mohlo zmást
www , smtp a pop3 . Mám to, protože
mi na serveru běží služba www a mail. Pokud tyto služby neposkytujete,
tak to tam samozřejmě nepište.
Teď soubor named.rev k překladu IP na jména.
$TTL 604800
@ IN SOA 4.168.192.in-addr.arpa. metalman.yakuza.net. (
2002102101 ;
10800 ;
1800 ;
1209600 ;
604800 ) ;
IN NS ns.yakuza.net.
11 IN PTR metalman.yakuza.net // Typ PTR (pointer); číslo
// na začátku je poslední v celé IP adrese (192.168.4.11)
13 IN PTR www.yakuza.net
13 IN PTR hobitton.yakuza.net
13 IN PTR mail.yakuza.net
13 IN PTR ns.yakuza.net
13 IN PTR smtp.yakuza.net
13 IN PTR pop3.yakuza.net
13 IN PTR www.metalman.yakuza.net
13 IN PTR www.myra.yakuza.net
13 IN PTR www.kess.yakuza.net
13 IN PTR www.notre.yakuza.net
13 IN PTR www.igis.yakuza.net
13 IN PTR www.satan.yakuza.net
14 IN PTR myra.yakuza.net
15 IN PTR kess.yakuza.net
16 IN PTR notre.yakuza.net
17 IN PTR evik.yakuza.net
18 IN PTR pavla.yakuza.net
20 IN PTR darkstar.yakuza.net
Tak, teď máme konfigurační soubory napsány a zkontrolujeme si
jejich správnost:
named-checkconf - zkontroluje syntaxi
named.conf . Vypisuje čísla řádků, kde se chyba nachází.
Většinou chybějící ;
named-checkzone jméno_zóny cesta_ke_konfiguráku -
zkontroluje syntaxi databáze
Tyto soubory jsem viděl ve Slackware 8.1 a Debian 3.0, nevím, jestli
jsou i v ostatních distribucích. Poté spustíme démona named . V
Debianu: /etc/init.d/bind9start ve Slackware v
/etc/rc.d/rc.inet2 najít a odkomentovat spuštění
named , ostatní si poradí sami. Dá se spustit i ručně -
/usr/sbin/named . Pokud ho chcete spouštět automaticky při
startu, tak v Debianu se vám nastaví automaticky (pokud jste instalovali z
*.deb balíčku), Slackwaristé už určitě editovali rc.inet2 ,
RedHaťáci použijí chkconfig a SuSEovcirctab .
Pokud si nebudete vědět rady, použijte man , nebo
--help 
Teď naučíme využívat DNS, se kterou jsme si dali tolik práce, Linux a
pak Windows. V Linuxu je třeba mrknout do souboru
/etc/host.conf . Měli byste tam mít následující:
order hosts,bind
multi on
Pokud máte soubor hosts a chcete mu dát přednost, nechte
to tak, v opačném případě prohoďte bind a hosts .
Bind je naše slavná DNS. A pak do /etc/resolv.conf
připsat:
search yakuza.net
nameserver 192.168.4.13
Samozřejmě, že za yakuza.net a IP si dosadíte svoje údaje,
které odpovídají vašim požadavkům a síti. Uložte a zkuste položit dotaz
DNS programem host .
Příklad:
host hobitton
hobitton.yakuza.net has address 192.168.4.13
Pokud to nefunguje, zkontrolujte si, jestli vám DNS vůbec běží (ps
-A| grep named ). Pokud ne, projeďte si znova konfiguráky výše
uvedenými programy, případně kontaktujte /var/log/messages .
A pokud ani to neodhalí chybu, ptejte se v diskusi 
Teď se vrhneme na Windows:
Dostaňte se do okna Vlastnosti sítě , vyberte protokol
TCP/IP a klikněte na Vlastnosti .

V tomto okně zatrhneme Použít následující adresy serverů
DNS , do pole Upřednostňovaný server DNS napíšeme IP
adresu naší DNS, náhradní server jsme si nenastavovali. Po vyplnění
klikneme na tlačítko Upřesnit...
Zde klepneme na kartu DNS , zvolíme možnost Připojit
následující přípony DNS v tomto pořadí a klikneme na
Přidat . Do nového okna napíšeme naší doménu. Pak už jenom
potvrdíme kliknutím na OK naše nastavení.

Zbývá už jen všechny okna zavřít, a pokud máme funkční DNS, tak ji
Windows začnou používat. Výše uvedené nastavení je z Windows XP. Pro jiné
druhy Windows je nastavení hodně podobné.
Závěr
Závěrem bych měl napsat důvody, proč si DNS dělat:
- DNS je třeba, pokud si chcete posílat v lokální síti emaily.
- Pokud máte webový server a často měníte URL (zkoušíte), je jednodušší
upravit záznam v DNS než vysvětlovat uživatelům, co si maji zapsat do
souboru
hosts
- Modemisté si ušetří čas, který je potřeba k dotazům DNS u svého
providera.
- Budete umět zase něco navíc a i to se počítá.
Diskuse k tomuto článku
Moc pekny uvod do DNS nastavovani. Zavidim ten dar takhle psat..
Neboli, každá síť má jeden počítač, který zná všechny počítače vE SVÉ síti. Na ty další se doptá jinde a může si je zapamatovat.
Ano, skutecne jsem tam zapomel dopsat to ve SVE siti stane se...
Doporučuji kontrolovat zóny na adrese http://atrey.karlin.mff.cuni.cz/~mj/sleuth/. Chyba je popsana na adrese:
http://www.cis.ohio-state.edu/cgi-bin/rfc/rfc1912.html#sec-4.1
V konfiguraci DNS serveru chybí sekce:
zone "localhost" IN {
type master;
file "localhost.zone";
allow-update { none; };
};
Může mi někdo vysvětlit, proč je ze začátku 2x navíc A záznam. Myslele jsem, že podle RFC má být jedno IP = jedno kanonické jméno ?
Dík.
To je jednoduche - CNAME mi blbnul, a vsechny sluzby bezi na jednom PC, protoze jsme vsichni v siti jeste nevydelecne cinni, tudiz si nemuzem dovolit kupovat PC na kazdou sluzbu zvlast a to nemluvim o tom jaky kraval ty vetraky ve zdroji delaji, a ne kazdy si na to zvykne.Muzu vas ujistit,ze i kdyz to mozna neni podle RFC, tak to funguje.Pekny zbytek dne.
Já bych měl jeden OT komentář: takovéhle screenshoty prosím zavěšujte jako PNG, ne JPEG. Budou kratší a o hodně hezčí. Opakuju to furt všude dokola, ale je to marný 
Omlouvam se, je to moje prvotina, zkusenosti s psanim pro web teprve sbiram. Priste, pokud pouziji screenshoty na to zkusim myslet.
bohuzel autori mi casto screenshoty posilaji v jpegu nevalne kvality a kdyz jsem pod casovym tlakem, nemuzu je pozadat o nove zaslani. pak to dopada takto 
super vec ,pouzivam a nemuzu si vynachvalit
Pouzival jsem, ale jen jako dnscache. Mira nestandardnosti djbdns je oproti qmailu mnohonasobna, takze bych uvital jeste dalsi alternativu: non-bind, non-DJB. Existuje? Pouziva ji nekdo? Dik.
Jenom drobne upresneni: ke kanonickemu nazvu by nemely byt definovany reverzni zaznamy - pokud z nejakeho duvodu reverzni zaznam potrebujete, je lepsi misto " CNAME " dat " A " (uz to tam stejne dvakrat mate, takze dalsi navic na vnitrni siti nicemu nevadi).
Presneji - alespon reverzni zaznam IP adresy by mel byt jedinecny (i pro vnitrni sit, pokud rozjede autentizaci, nektere programy budou delat problemy), tzn. nejlepsi reseni bude:
...
ns IN A 192.168.4.13
mail IN A 192.168.4.13
hobitton IN A 192.168.4.13
www IN CNAME hobitton
smtp IN A 192.168.4.13
pop3 IN A 192.168.4.13
... atd.
- a v reverznich zaznamech bude napr. jenom:
13 IN PTR ns.yakuza.net
14 IN PTR myra.yakuza.net
... atd.
Moc hezky clanek. Rekl bych, ze po jeho precteni si 90% spravcu konecne opravi sve konfiguracni soubory a budou vsude reverzni zaznamy. Zbyvajicich 10% doporucuji zastrelit 
Dobrý článek, opravdu. Díky autorovi.
Sice bych měl pár připomínek k interpretaci významů některých číselných proměnných v SOA záznamu, ale nejsou příliš podstatné. Pro jistotu se podívám do knihy a kdyžtak to sem napíšu.. :)
Zajímá mě, zdali někdo neví, jak v BIND 8, resp. 9, vypnout v konfiguraci serveru jeho vlastnost, která způsobuje, že server na určitý dotaz z vnějšku odpovídá údajem o jeho verzi. Proč je toto potřeba, snad není nutno podotýkat - již několikrát se vyskytly různé exploity nebo nástroje, které v internetu scannovaly nameservery "ve velkém" za účelem zjištění jejich verzí, a upozorňování (v případě exploitu hackera, který scanning prováděl) na ty, které svého času byly nějakým způsobem zranitelné...
Díky za jakoukoliv radu.
Vzhledem k tomu, ze nastaveni DNS v tomto clanku neni uplne tip top, prosim vsechny, aby zde rekli sve pripominky, a ja to opravim, pokud to bude v mezich meho chapani.
Zajimalo by mne, jak se profesionalne resi tento problem:
Mam webovy serever, hlavni stranka je na www.yakuza.net. Uzivatel kess ma na serveru sve stranky, a protoze se mi nelibi zapis www.yakyza.net/kess, rozhodl jsem se pouzivat zapis www.kess.yakuza.net, ktery je podle meho nazoru pro laiky lepe zapamatovatelny. Ve sve DNS jsem to resil tak ze jsem napsal:
www.kess IN A 192.168.4.13
no a v reverznich zaznamech
13 IN PTR www.kess.yakuza.net
Tak mi to funguje bez problemu. Lepe jsem to vymyslet nedokazal. Ale zajima me to jak se to dela v profesionalni praxi a clanek doupravil.
Moc Vam dekuji
Vetsinou se takoveto veci resi pomoci hvezdickove konvence
* IN A 192.168.4.13
a v apachovi se pouzije modul rewrite (o nem konkretne byl hezky clanek na root.cz)
Dobre napsany clanek. Prosim autora, jestli by mohl napsat jeste neco o konfiguraci proxy serveru, tak je slibovano na zacatku clanku. Jen vice podobnych clanku!
V článku je několik nepřesností, které bych tu rád shrnul:
1. Parametr hned za SOA nemá být jméno domény, ale doménové jméno počítače, z něhož data pocházejí. Jménem domény je ve skutečnosti ten zavináč na začátku řádku. Viz RFC 1035, sekce 3.3.13.
2. Parametr minimum v SOA záznamu je vysvětlen značně nepřesně. Ve skutečnosti znamená dolní mez pro TTL (životnost) záznamů příslušné zóny. Těm záznamů, které mají TTL menší se automaticky použije hodnota minimum.
3. Není mi jasný smysl těch středníků na konci každého řádku v zónovém souboru. Pro BIND to znamená komentář, takže je ignoruje, ale k čemu mít na každém řádku prázdný komentář?
4. V přiřazení A a PTR záznamů je docela zmatek. Správně to má být tak, že ke každé IP adrese existuje jen jeden A záznam, všechna ostatní jména jsou realizována pomocí CNAME na to jedno kanonické a (jediný) reverzní záznam směřuje opět na toto kanonické jméno. Pokud to uděláte jinak, bude vám to většinou fungovat, ale zaděláváte si na problémy.
5. Na konci doménových jmen v PTR záznamech by také měly být tečky, stejně jako všude jinde.
ad 4. ne tak docela. podle rfc1035 jde skutecne o nedefinovany stav, ale nejake nasledujici tusim, ze jeste porad <2000 definuje RRSet, kde pro stejny klic (name,type,class) muze existovat vice zaznamu s rozlisnou hodnotou rdata,rdlength, a ttl jsem moc nestudoval, ale tusim, ze kvuli cache-ovani se muzou i lisit nekdy, ale je nejakej zpusob, jak se dopocitat spravnych cisel.
tusim ze je to kvuli necemu, cemu se rika multihoming hosts, ale kdo vi ten at to rozvede...
sorry predchozi je OT. zase sem si neprecet poradne na co odpovidam ;)
ja mluvim o name->A+ predchozi prizpevek o A->name+
takze ted uz snad k tematu. todle reseni vice jmen pro jeden A zaznam muze pusobit chybu pri kontrole reversniho dns zaznamu, pokud se stane, ze je napsana zrovna takto:
Q:jmeno,A,IN
A:jmeno,A,IN,...,1.2.3.4
Q:4.3.2.1.in-addr.arpa,PTR,IN
A:4.3.2.1.in-addr.arpa,PTR,IN,...,jmeno2
--ted muze skoncit s tim, ze "jmeno" nema reversni zaznam
Q:jmeno2,A,IN
A:jmeno2,A,IN,...,1.2.3.4
--ted skonci s tim, ze "jmeno" ma reversni zaznam
Ještě maličkost: soubor /etc/host.conf ovlivňuje pouze programy linkované proti libc5 a starší. Programy linkované proti glibc2 (tj. na současných distribucích prakticky všechny) se řídí podle /etc/nsswitch.conf
|