DNS je systém na správu doménových mien počítačov a ich IP adries. Umožňuje preklad
doménového mena na IP adresu (priamy preklad) a opačne (reverzný preklad). Pre fungovanie
Internetu je DNS kľúčovou záležitosťou, ktorú zabezpečujú programy na obsluhu DNS – DNS servery.
DNS servery rozdeľujeme na dva základné druhy:
Primárny DNS server je server, ktorý obsahuje a obsluhuje údaje o doméne a je pre
danú doménu autoritatívny. Odpovede primárneho DNS servera sú považované za
vždy aktuálne a platné. Odkazy na DNS servery domény sú uložené v nadradenom DNS serveri.
Sekundárny DNS server je server, ktorý pomocou pravidelného kopírovania údajov o doménach
z primárneho DNS servera vytvára záložný DNS server pre danú doménu. Úlohou primárneho
DNS servera je tiež upozorniť svoje sekundárne DNS servery pri zmene záznamov v DNS.
Instalacia
Ako prvý si nainštalujeme a nakonfigurujeme primárny server .Veľmi dobrým mechanizmom
zabezpečovania služieb, ktoré počúvajú na sieťových portoch, je vytváranie vyhradených
adresárov a spúšťanie procesov v týchto adresároch. Pre daného démona to znamená,
že po jeho spustení sa uzavrie vo vybranom adresári pomocou systémového volania "chroot()" a
tento adresár nijakým spôsobom nemôže opustiť.
10.0.2.253 ns1 (master)
10.0.2.252 ns2 (slave)
Nainštalujeme si potrebné rpm balíčky.
#yum install bind bind-chroot bind-libs bind-utils caching-nameserver
#chkconfig named on
#service named start
Vytvorime subor rndc.key, ktory umožňuje ovládanie procesu “named” z určených
počítačov s nainštalovaným programom “rndc”. Na ovládanie je potrebný autentifikačný kľúč,
ktorý sa predefinuje práve v tomto konfiguračnom súbore, z ktorého ho bude čítať program “rndc”.
#cd /var/named/chroot/etc
#rndc-confgen > rndc.key
#chown root:named rndc.key
Súbor rndc.key si upravíme tak, aby obsahoval iba tieto riadky.
key "rndckey" {
algorithm hmac-md5;
secret "SGsvd1dF+mv+yU4ywCCkkg==";
};
Konfugrácia named.conf
Tento súbor je najdôležitejší, určuje umiestnenie zónových súborov (s údajmi o vašej doméne a adresách na tejto doméne) a mnoho parametrov pre beh démona.
#less /var/named/chroot/etc/named.conf
// rndckey (copy-paste z rndc.key)
key "rndckey" {
algorithm hmac-md5;
secret "SGsvd1dF+mv+yU4ywCCkkg==";
};
// nas server ma ip adresu 10.0.2.254 a obsluhujeme siet 10.0.2.0/24
inet 127.0.0.1 allow { 127.0.0.1; } keys { "rndckey"; };
inet 10.0.2.254 allow { 10.0.2.0/24; } keys { "rndckey"; };
};
// adresar v ktorom sa nachadzaju konfiguracne subory
// vsetky relativne cesty maju zaklad v tomto adresary
//pid-file je subor s cislom prcesu (sluzi pre ovladanie procesu)
options {
directory "/var/named";
pid-file "/var/run/named/named.pid";
//allow-recursion definuje list ip adries ktore maju povolene dotazovat na
//rekurzivne zaznamy.Ak odpoved na dotaz uz existuje v cache bude vratena
//bez ohladu na nastavenie Ak nie je specifikovana vsetci hostovia maju
//povolene dotazovat na rekurzivna zaznamy
recursion yes;
allow-recursion {
127.0.0.1;
10.0.2.0/24;
};
//ak provider umoznuje pouzit svoje dns servery na obsluhu poziadaviek
//ktore, nevieme obsluzit, samozrejme mozeme pouzit opendnska
forwarders {
8.8.8.8;
8.8.4.4;
};
//ip adresy na ktorych pocuva nas dns server
listen-on {
127.0.0.1;
10.0.2.253;
}
//zabranime hostom vidiet aku verziu bindu pozuivame
version "REFUSED";
//nastavime kto sa moze dopytovat na nas dns server
allow-query {
127.0.0.1;
10.0.2.0.0/24;
};
};
server 10.0.2.253 {
keys { rndckey; };
};
//adresa korenoveho suboru
zone "." IN {
type hint;
file "named.ca";
};
//nastavime nasu prvu zonu, allow-update zabezpecuje autamaticky refresh
//udajov na sekundarny dns server, allow-trasnfer umoznuje transfer udajov.
zone "virtual.net" IN {
type master;
file "namedb/virtual.test";
allow-update { 10.0.2.252; };
allow-transfer { 10.0.2.252; };
};
//reverzny zaznam pre nasu zonu
zone "2.0.10.in-addr.arpa" IN {
type master;
file "namedb/2.0.10.zone";
allow-update { 10.0.2.252; };
allow-transfer { 10.0.2.252; };
};
Konfigurácia zónoveho súboru
#less /var/named/chroot/var/named/namedb/db.virtual.net
$TTL 3600
@ IN SOA ns1.virtual.test. root.ns1.test. (
1999012101 ; Serial
360 ; Refresh
300 ; Retry
3600000 ; Expire
3600 ) ; Minimum
@ IN NS ns1.virtual.test.
; Machine Names
www IN CNAME virtual.test.
virtual.test. IN A 10.0.2.100
lba1.virtual.test IN A 10.0.2.11
lba2.virtual.test IN A 10.0.2.12
$ORIGIN určuje doménu, pre ktorú platia záznamy nasledujúce po tejto direktíve.
Je to vždy doménová adresa ukončená znakom “.”.
$TTL určuje platnosť záznamu v sekundách. Určuje sa rovnaká hodnota,
ako hodnota pre parameter “refresh” v definícii domény “IN SOA”.
Pre záznamy nasledujúce po definícii domény platí: ak nie je meno ukončené znakom “.”,
dopĺňa sa zaň automaticky doména, v ktorej sa nachádza. (Táto doména je určená v SOA
zázname alebo direktívou “$ORIGIN”.) To umožňuje lepší prehľad v konfiguračnom súbore,
pretože neopakujete stále meno domény.
doména: meno domény, ktorú definujete
ttl: TTL pre doménu (nepovinný parameter)
trieda: pre Internet vždy “IN”
nameserver: DNS server, na ktorom je uložený zónový súbor pre túto doménu
admin: adresa správcu DNS. Znak “@” sa nahrádza znakom “.”!!!
serial: sériové číslo. Pri každej zmene zónového súboru musíte zvýšiť toto číslo,
inak sa zmeny neprejavia v sekundárnych DNS serveroch!!! Podľa konvencie sa toto
číslo udáva v tvare “YYYYMMDDxx”, kde YYYY predstavuje rok, MM mesiac, DD
deň poslednej zmeny a xx je číslo zmeny, ak treba uskutočniť viacero zmien počas jedného dňa. Všimnite si, že takto je vždy každé ďalšie číslo automaticky väčšie ako predchádzajúce.
refresh: určuje interval, v akom si má sekundárny DNSserver obnovovať údaje
z primárneho DNS servera (odporúča sa: 3600).
retry: určuje interval, v ktorom sa má sekundárny nameserver pokúšať opätovne
spojiť s primárnym DNS serverom po tom, ako pri spojení nastala chyba (odporúča sa: 600)
expire: určuje platnosť údajov na sekundárnom DNS serveri v prípade, že sa mu nepodarí
aktualizovať údaje z primárneho DNS servera (odporuca sa :3600000)
minimum: minimálna hodnota TTL (odporúča sa: 86400)
Konfiguracia reverzneho zonozveho suboru
#less /var/named/chroot/var/named/namedb/db.2.0.10
$TTL 3600
@ IN SOA ns1.virtual.test. root.ns1.test. (
1999012100 ; Serial
3600 ; Refresh
300 ; Retry
3600000 ; Expire
3600 ) ; Minimum
@ IN NS ns1.virtual.test.
; Machine names
11 IN PTR lba1.virtual.test.
12 IN PTR lba2.virtual.test.
100 IN PTR www.virtual.test.
Konfigurácia sekunádrneho servera
Bind si nainštalujeme do chrootnutého prostredia rovnako ako primárny a upravime
hlavný config bindu.
#less /var/named/chroot/etc/named.conf
options {
directory "/var/named";
pid-file "/var/run/named/named.pid";
recursion yes;
allow-recursion {
127.0.0.1;
10.0.2.0/24;
};
forwarders {
8.8.8.8;
8.8.4.4;
};
listen-on {
127.0.0.1;
10.0.2.252;
};
version "REFUSED";
allow-query {
127.0.0.1;
10.0.2.0/24;
0.0.0.0/0;
};
};
server 10.0.2.252 {
keys { rndckey; };
zone "." IN {
type hint;
file "named.ca";
};
zone "virtual.test" IN {
type slave;
file "namedb/db.virtual.test";
masters {10.0.2.253;};
};
zone "2.0.10.in-addr.arpa" IN {
type slave;
file "namedb/db.2.0.10";
masters {10.0.2.253;};
};
Tak a teraz máme nakonfigurovaný sekundárny dns server, ktorý su bude utomaticky aktualizovať
zónove zaznamy z primarneho servera.Ak pridáme záznam na primárny server nesmieme
zabudnúť zvýšiť serial number a reštartnúť bind, aby sa nahrali nové zónove záznamy.
Na sekundárny server sa budú kopírovať automaticky z primarneho.
Kontrola zónovych súborov
#named-checkzone named-checkzone virtual.test /var/named/chroot/var/named/namedb/db.virtual.test
zone virtual.test/IN: loaded serial 2010041502
OK
#named-checkzone 2.0.10.in-addr.arpa /var/named/chroot/var/named/namedb/db.2.0.10
zone 2.0.10.in-addr.arpa/IN: loaded serial 2010041503
OK