DNS [BIND]

CentOS 5 obsahuje již bind9 (bind-9.3.3-10.el5). Pro konfiguraci se mi vyplatilo nahrát defaultní data, která jsem pak upravoval.

Teoretická část:
Pro konfiguraci bindu je třeba porozumnět několika základním věcem.
a) soubor /etc/resolv.conf obsahuje záznamy nadřazených nameserverů (od poskytovatele).

b) soubor /etc/nsswitch.conf udává odkud si bude systém brát informace. Obvyklé pořadí je files (=/etc/hosts) dns a nis:
hosts: files dns nis
c) Soubor named.conf bývá umístěn na různých místech. Buď v přímo v /etc nebo by v /etc měl být alespoň odkaz.

Důležité upozornění:
Do not manually edit the /etc/named.conf file or any files in the /var/named/ directory if you are using the Bind Configuration Tool. Any manual changes to those files will be overwritten the next time the Bind Configuration Tool is used.
Obsah souboru: (z http://www.abclinuxu.cz/clanky/show/15213)
options {
directory „/var/named“;
// Zde bude BIND hledat své konfigurační soubory

auth-nxdomain no;
// Server neposkytuje informace o naší síti

query-source port 53;
// Pro komunikaci s jinou DNS použij port 53
// užitečné v případě firewallu

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
};

Jak je vidět, named.conf obsahuje:
– obecné povely pro named
– cache zónu (bez ní by dns server nebyl schopný rekurzivně prohledávat stromovou strukturu DNS
a nacházet další stroje na Ineternetu). Vypadá např. takto:
zone „.“ {
type hint;
file „named.ca“;
};
– zóna zajišťující, že server sám sebe bude považovat za primární. Vypadá např. takto:

zone „0.0.127.in-addr.arpa.“ {
type master;
file „named.localca“;
};

– dopředný databázový soubor (umožňující překlad IP adres na jména)
– zpětný databázový soubor (umožňující překlad jmen zpět na IP adresy)
Minimální konfigurace tak obsahuje 4 základní soubory:
– named.conf, který obsahuje obecné informace, informace o dopředné a zpětné cache zóně (vč. okazu na databázové soubory)
a informace o dopředné a zpětné zóně (včetně informací o umístění databázového souboru)
– dopřednou cache zónu
– zpětnou cache zónu
– dopředný databázový soubor pro naši zónu
– zpětný databázový soubor pro naši zónu
Pozn:
DNS zóna není totéž co DNS doména. V jednoduchých případec, kdy doména nemá žádné poddomény jsou pojmy zóna a doména skutečně totéž (alespoň z pohledu jednotlivých strojů a konfigurací). Jinak každá z poddomén by měla svoji zónu.
Problémy:
Při konfiguraci jsem narazil na problém se zadáním jména stroje do databázového souboru, které obsahovalo podtržítko (např. R61i_1). Bind sice naběhl, ale překlad nefungoval.
Dopátral jsem se k tomu přes výpisy v logu.
Jak jsem uvedl, vyplatilo se mi nahrát defaultní konfiguraci, kterou jsem potom jen mírně upravil:

Příklad

named.conf
// Red Hat BIND Configuration Tool
//
// Default initial „Caching Only“ name server configuration
//

options {
directory „/var/named“;
dump-file „/var/named/data/cache_dump.db“;
statistics-file „/var/named/data/named_stats.txt“;

// doplneno LS a otevren port 53 – neni nezbytne
//forwarders {
//212.71.128.8;
//212.71.133.6;
//62.240.161.226;
//};
/*
* If there is a firewall between you and nameservers you want
* to talk to, you might need to uncomment the query-source
* directive below.  Previous versions of BIND always asked
* questions using port 53, but BIND 8.1 uses an unprivileged
* port by default.
*/
// query-source address * port 53;
//query-source address * port 53;
};

zone „.“ IN {
type hint;
file „named.root“;
};

zone „localdomain.“ IN {
type master;
file „localdomain.zone“;
allow-update { none; };
};

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; };
};

zone „0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa.“ IN {
type master;
file „named.ip6.local“;
allow-update { none; };
};

zone „255.in-addr.arpa.“ IN {
type master;
file „named.broadcast“;
allow-update { none; };
};

zone „0.in-addr.arpa.“ IN {
type master;
file „named.zero“;
allow-update { none; };
};

include „/etc/rndc.key“;

zone „mojedomena.cz.“ IN {
type master;
file „mojedomena.zone“;
allow-update { none; };
};

zone „1.168.192.in-addr.arpa.“ IN {
type master;
file „mojedomena.local“;
allow-update { none; };
};

/var/named/localdomain.zone (defaultní nastavení):
$TTL    86400
@        IN SOA    localhost root.localhost (
42        ; serial (d. adams)
3H        ; refresh
15M        ; retry
1W        ; expiry
1D )        ; minimum
IN NS        localhost
localhost    IN A        127.0.0.1       

/var/named/localhost.zone (defaultní nastavení):
$TTL    86400
@        IN SOA    @       root (
42        ; serial (d. adams)
3H        ; refresh
15M        ; retry
1W        ; expiry
1D )        ; minimum

IN NS        @
IN A        127.0.0.1
IN AAAA        ::1

/var/named/broadcast (defaultní nastavení):

$TTL    86400
@               IN SOA  localhost.      root.localhost. (
42              ; serial (d. adams)
3H              ; refresh
15M             ; retry
1W              ; expiry
1D )            ; minimum
IN    NS    localhost.
/var/named/ip6.local (defaultní nastavení):
$TTL    86400
@       IN      SOA     localhost. root.localhost.  (
42         ; Serial
28800      ; Refresh
14400      ; Retry
3600000    ; Expire
86400 )    ; Minimum
IN      NS      localhost.
1      IN      PTR     localhost.
/var/named/ named.local (defaultní nastavení):
$TTL    86400
@       IN      SOA     localhost. root.localhost.  (
42         ; Serial
28800      ; Refresh
14400      ; Retry
3600000    ; Expire
86400 )    ; Minimum
IN      NS      localhost.
1       IN      PTR     localhost.
/var/named/named.root (defaultní nastavení):
; root „.“ zone hints file, queried of a.root-servers.net. by system-config-bind
; version of root zone: 2008040401
.            82553    IN    NS    A.ROOT-SERVERS.NET.
.            82553    IN    NS    B.ROOT-SERVERS.NET.
.            82553    IN    NS    C.ROOT-SERVERS.NET.
.            82553    IN    NS    D.ROOT-SERVERS.NET.
.            82553    IN    NS    E.ROOT-SERVERS.NET.
.            82553    IN    NS    F.ROOT-SERVERS.NET.
.            82553    IN    NS    G.ROOT-SERVERS.NET.
.            82553    IN    NS    H.ROOT-SERVERS.NET.
.            82553    IN    NS    I.ROOT-SERVERS.NET.
.            82553    IN    NS    J.ROOT-SERVERS.NET.
.            82553    IN    NS    K.ROOT-SERVERS.NET.
.            82553    IN    NS    L.ROOT-SERVERS.NET.
.            82553    IN    NS    M.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET.    172800    IN    A    198.41.0.4
A.ROOT-SERVERS.NET.    172800    IN    AAAA    2001:503:ba3e::2:30
B.ROOT-SERVERS.NET.    518400    IN    A    192.228.79.201
C.ROOT-SERVERS.NET.    518400    IN    A    192.33.4.12
D.ROOT-SERVERS.NET.    518400    IN    A    128.8.10.90
E.ROOT-SERVERS.NET.    518400    IN    A    192.203.230.10
F.ROOT-SERVERS.NET.    172800    IN    A    192.5.5.241
F.ROOT-SERVERS.NET.    172800    IN    AAAA    2001:500:2f::f
G.ROOT-SERVERS.NET.    518400    IN    A    192.112.36.4
H.ROOT-SERVERS.NET.    518400    IN    A    128.63.2.53
H.ROOT-SERVERS.NET.    518400    IN    AAAA    2001:500:1::803f:235
I.ROOT-SERVERS.NET.    511854    IN    A    192.36.148.17
J.ROOT-SERVERS.NET.    172800    IN    A    192.58.128.30
J.ROOT-SERVERS.NET.    172800    IN    AAAA    2001:503:c27::2:30
/var/named/named.zero (defaultní nastavení):
$TTL    86400
@               IN SOA  localhost.      root.localhost. (
42              ; serial (d. adams)
3H              ; refresh
15M             ; retry
1W              ; expiry
1D )            ; minimum
IN    NS    localhost.
A konečně „dopředný“ databázový soubor pro moji zónu /var/named/mojezona.local:
$TTL    86400
@       IN      SOA     localhost. root.localhost.  (
42         ; Serial
28800      ; Refresh
14400      ; Retry
3600000    ; Expire
86400 )    ; Minimum

IN      NS      localhost.

1       IN      PTR     jmenostanice.
2       IN      PTR     jmeno_druhe_stanice.

A zpětný databázový soubor pro moji zónu /var/named/mojedomena.zone:
$TTL    86400
@        IN SOA    @       root (
42        ; serial (d. adams)
3H        ; refresh
15M        ; retry
1W        ; expiry
1D )        ; minimum

IN NS        @
IN A        127.0.0.1
IN AAAA        ::1

jmenostanice         IN A        192.168.1.1
jmeno_druhe_stanice       IN A        192.168.1.2

==============
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?

  1. Pochopení principu DNS

  2. Porozumět konfiguračním souborům

  3. Spustit danou službu

  4. Nakonfigurovat svůj milovaný Linux, aby využíval DNS služeb

  5. 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 :o)).

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 :o)

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. :o) 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 :o)

Teď se vrhneme na Windows:

Dostaňte se do okna Vlastnosti sítě, vyberte protokol TCP/IP a klikněte na Vlastnosti.

ukazka

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í.

ukazka

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á.

´´´´´´´´´´´

Pomocí DNS serveru budeme překládat doménová jména na IP adresy. Místo 192.168.1.2 budeme moci vždy použít vader a podobně. Začneme hlavním konfiguračním souborem serveru BIND a sice souborem /etc/named.conf. Jiné distribuce než Slackware mohou tento soubor umísťovat jinam, tak jej najděte. Záznamy v něm již uložené neměňte a přidejte k nim tyto řádky:

zone "doma.cz" {         type master;         file "doma.named"; };  zone "1.168.192.in-addr.arpa" {         type master;         file "doma.rev"; };

Tento zápis přidává záznam pro domény doma.cz a 1.168.192.in-addr.arpa. Volba type master říká, že tento server je pro naší doménu master serverem. Soubory doma.named a doma.rev (naše konfigurační soubory, které budeme za chvíli vytvářet) mají cestu relativní k adresáři určeném příkazem directory v souboru /etc/named.conf. V mém souboru /etc/named.conf je

directory /var/named

a tak zmiňované soubory mají cestu /var/named/doma.named resp. /var/named/doma.rev. A protože nejsme připojeni k internetu, předchozí nastavení souboru named.conf bude dostačující.

Soubor doma.named

Vytvoříme soubor /var/named/doma.named s tímto obsahem:

$TTL 1w @       IN      SOA     server.doma.cz. root.doma.cz. (                         2004081700      ; Seriove cislo                         10800           ; Refresh                         1800            ; Retry                         604800          ; Expire na DNS 2                         900     )       ; Negative cache TTL ; Nameservery                         IN      NS      server.doma.cz. ; Mailservery                         IN      MX      10 mail.doma.cz. ; Hosts server                  IN      A       192.168.1.1 mail                    IN      CNAME   server pop3                    IN      CNAME   server smtp                    IN      CNAME   server www                     IN      CNAME   server vader                   IN      A       192.168.1.2 stanice                 IN      A       192.168.1.3

Nastavení DNS serveru bylo podrobně rozebráno v článku Nastavení DNS, a tak se pouze zmíním o druhé části souboru. Pod vysvětlivkou Nameservery definujeme náš nameserver (server.doma.cz. – záznam musí být zakončen tečkou) a pod vysvětlivkou mailservery definujeme náš mailový server (za moment zjistíme, že mail.doma.cz je pouze alias pro náš server). Číslo 10 udává prioritu (čím menší číslo, tím větší priorita). Zbytek souboru se už skládá z adresových záznamů, které přiřazují názvy hostitelů k IP adresám (tedy např. dvojice server = 192.168.1.1). Názvy mail, pop3, smtp a www určují aliasy pro hostitele server. Dále jsou tu samozřejmě záznamy pro naše dvě stanice (vader, stanice).

Soubor doma.rev

Reverzní soubor domén přiřazuje IP adresy k názvům hostitelů. Je to tedy opak databáze domén, která mapuje názvy hostitelů na adresy. Tento reverzní soubor bychom podle naší definice v named.conf měli mít uložený ve /var/named/doma.rev. Záznamy v tomto souboru by se měly logicky shodovat s těmi v souboru doma.named, jinak se dočkáme nepříjemných překvapení.

$TTL 1w @       IN      SOA     server.doma.cz. root.doma.cz. (                         2004081701                               10800                                    1800                                     1209600                                  604800  )                 IN      NS      server.doma.cz. 1       IN      PTR     server.doma.cz. 2       IN      PTR     vader.doma.cz. 3       IN      PTR     stanice.doma.cz.

Opět popíši pouze druhou část souboru. Na začátku každého řádku všech tří PTR záznamů jsou názvy (čísla) zapsané relativně k aktuální doméně. Aktuální doména je nyní 1.168.192.in-addr.arpa definovaná v konfiguračním souboru /etc/named.conf. Přidáním PTR záznamu např. hostitele stanice.doma.cz získáme 3.1.168.192.in-addr.arpa. A protože jsou v reverzním souboru všechny adresy zapsány opačně (reverzně), skutečná adresa je 192.168.1.3 (doufám, že byl tento výklad aspoň trochu pochopitelný). Správnou syntaxi souborů můžeme otestovat příkazy

named-checkzone doma.cz /var/named/doma.named
named-checkzone 1.168.192.in-addr.arpa /var/named/doma.rev

DNS a bezpečnost

Přestože není naše síť připojená k internetu, může se stát, že někdy bude, a tak není na škodu myslet trochu dopředu a omezit možný průnik na náš server přes démona named tím, že jej budeme spouštět pod jiným uživatelem než je root.

Nejdříve přidáme skupinu named:

groupadd -g 902 named

Potom přidáme uživatele named:

useradd -d /var/named -u 902 -g named -M -s /bin/false named

Změníme vlastníka adresáře named:

chown named.named /var/named

… a také všeho, co je v něm

cd /var/named && chown named.named *

Nakonec změníme vlastníka procesu named:

chown named.named /var/run/named

Odteď budeme DNS server spouštět příkazem:

named -u named

Aby se nám DNS spouštěl pod novým uživatelem pokaždé, přidáme parametr -u named do příslušné části souboru /etc/rc.d/rc.bind. Výsledek bude vypadat takto:

bind_start() {    if [ -x /usr/sbin/named ]; then      echo "Starting BIND:  /usr/sbin/named -u named"              # zde to není až tak důležité      /usr/sbin/named -u named             # zde ano    fi  }

Pokud vše funguje tak, jak má, DNS server by měl nyní běžet a jeho adresa by měla být díky DHCP serveru známá i našim stanicím. Na zkoušku se můžeme zkusit dotázat jiného počítače příkazem ping  hostitel, či zkusit ping z windowsové stanice (Start / spustit / command): ping server. Všechny počítače v sítí by samozřejmě měly dostat odezvu od jakéhokoliv jiného.

Ještě poslední poznámka. Pro Linux existuje program dnsmasq, který v malé síti dělá přesně to, co naše servery DHCP a DNS. Je to další alternativa, jak dosáhnout stejného výsledku, takže je pouze na vás, jaký způsob zvolíte. Pro náš server se Slackwarem 10 najdeme dnsmasq na prvním instalačním CD ve skupině n.

To je pro dnešek vše, příště si nakonfigurujeme Samba server, aby fungoval jako primární doménový radič pro doménu NT.

DNS [BIND]