DNS - 3. část

Napsal Dalibor Baník (») 29. 9. 2006 v kategorii Operační systémy, přečteno: 4568×

implementace a nastavení jmenného serveru

Implementace jmenného serveru (NS)

Programem named je v Unixu realizován jmenný server. Při startu si přečte databáze DNS na disku a uloží je do paměti. Při startu čte rovněž konfigurační soubor named.boot (implicitně v /etc). Jiné umístění je možno specifikovat parametrem na příkazovém řádku při spouštění programu named.

Obsah named.boot:

  • directory specifikuje adresář, ve kterém jsou uloženy databáze DNS na disku. V dalších příkazech se pak uvádějí jména souborů bez cesty
    Např.: directory /etc/named
  • primary určuje, že jmenný server bude primárním jmenným serverem pro doménu uvedenou jako první parametr příkazu a příslušná databáze je v textovém souboru uvedeném jako druhý parametr.
    Např.: primary banan.cz banan.cz (soubor)

    Každý jmenný server musí být primárním jmenným serverem alespoň pro doménu 0.0.127.in-addr.arpa. Tedy ani v případě caheování pouze jmenného serveru nesmí v jeho konfiguračním souboru chybět např. příkaz:
    primary 0.0.127.in-addr.arpa db.0.0.127
  • secondary> určuje, že jmenný server bude sekundárním jmenným serverem pro doménu určenou prvním parametrem. Další parametry (musí být uvedeny jako IP adresy) jsou pak IP adresy serverů, odkud se budou programem named-xfer přenášet data. Je-li uveden poslední parametr (nesmí být ve formě IP adresy), pak se chápe jako jméno souboru, kam se mají data po přenesení na počítači uložit.
    Např.: secondary banan.cz 82.208.39.115 62.240.190.35 banan.cz.tmp

    autoritativní data o doméně banan.cz se mají kopírovat ze serveru 82.208.39.115 a uložit do souboru banan.cz.tmp. Když tento server není dostupný, pak se kopírují ze serveru 62.240.190.35. Není-li uvedeno jméno souboru, přenesená data se neukládají na disk.
  • cache určuje z jakého souboru se mají zkopírovat do paměti informace o kořenových jmenných serverech
    Např.: cache cache.db

    říká, že do paměti se mají uložit ze souboru cache.db informace o kořenových jmenných serverech. Soubor obsahuje autoritativní data, tj. na počátku neobsahuje záznam SOA, takže každý záznam musí obsahovat explicitně uvedené všechny údaje - zejména pole TTL. Kořenový jmenný server bude mít v konfiguračním souboru příkaz primary db.root, kde soubor db.root bude obsahovat obdobná data jako soubor cache.db, avšak bude obsahovat na počátku záznam typu SOA a jednotlivé záznamy souboru nemusí obsahovat pole TTL - převezme se jeho hodnota ze záznamu typu SOA
  • forwarders určuje, že jmenný server je forwarding server. Jako další parametry se uvádějí IP adresy jmenných serverů dostupných v Internetu (forwarderů)
    Např.: forwarders 193.85.240.40 193.85.240.40

    přidáním shodné IP adresy zvětšíme časový interval, po který forwarding server čeká na odpověď, než začne sám kontaktovat kořenové jmenné servery.
  • slave následuje v případě podřízeného serveru (slave serveru) za příkazem forwarders a určuje, že jmenný server nemá kontaktovat v žádném případě kořenové jmenné servery
    Např.:
    forwarders 193.85.240.40 193.85.240.40;
    slave;

Příklad konfiguračního souboru pro primární jmenný server domény banan.cz:

directory /etc/named/master
primary banan.cz banan.cz
primary 17.172.in-addr.arpa db.172.17
primary 0.0.127.in-addr.arpa db.127.0.0
cache db.cache

Databáze

START -> named.boot -> jednotlivé databáze DNS -> paměť

Databáze DNS jsou uloženy na primárním jmenném serveru v souborech. Při startu jmenného serveru se jejich obsah nahraje do paměti.

Databáze DNS se skládá z jednolivých souborů, které jsou specifikovány vždy jako poslední parametry jednolivých příkazů konfiguračního souboru named.boot. Databáze na disku může obsahovat následující typy dat:

  • autoritativní data k obhospodařované zóně - musí začínat záznamem typu SOA. Mohou být udržována pouze na primárním jmenném serveru. Sekundární jmenný server je obdrží pomocí dotazu zónového přenosu z primárního nebo jiného sekundárního jmenného serveru
  • data umožňující přístup ke kořenovým jmenným serverům -nezačínají záznamem SOA. Explicitně se v nich uvádí pole TTL. Jsou to neautoritativní data pro místní jmenný server. Musí být na každém jmenném serveru s výjimkou podřízeného serveru
  • data pomocí nichž deleguje jmenný server autoritu k subdoménám na jiné jmenné servery - k delegování autority se používají věty typu NS. V případě, kdy delegujeme autoritu na jmenný server, jehož doménové jméno je součástí delegované subdomény, musíme přidat záznam typu A specifikující IP adresu tohoto jmenného serveru

Obecná syntaxe jednolivých řádků databáze (RR)

[name]   [ttl]   třída   typ   Data_závislá_na_typu_věty

Pole v [] jsou nepovinná a jejich hodnoty se přejímají z předchozího záznamu, popřípadě ze záznamu SOA. Komentáře jsou uvozeny středníky.

Význam jednotlivých polí:

name obsahuje doménové jméno. Může nastat několik situací:
  • pole není vyplněné - jeho hodnota se bere z pole name předchozího záznamu
  • pole má hodnotu @ - do pole name se má dosadit jméno domény uvedené v příslušném příkazu souboru named.boot
  • doménové jméno v poli name bez tečky na konci- za toto jméno je automaticky dáno jméno domény uvedené ve větě SOA. V případě, kdy před větou (bez tečky na konci) je uveden příkaz $ORIGIN, pak se dodává jméno domény uvedené v příkazu $ORIGIN
  • doménové jméno je v poli name s tečkou na konci - jedná se o tzv. absolutní jméno, které se bere tak, jak je napsáno
ttl obsahuje dobu života záznamu v paměti (ve vteřinách). Jmenný server tuto hodnotu automaticky snižuje. Dosháhne-li hodnota nuly, pak se záznam prohlásí za neplatný. Implicitně má pole hodnotu nula. Avšak pokud předchází záznamu záznam typu SOA, pak se implicitní hodnota bere z pole TTL záznamu typu SOA. Záznam typu SOA je uveden vždy na počátku souboru, tj. nemusí náš záznam předcházet zcela bezprostředně.

třída
  • IN (internet)
  • HS (hesoid)
  • CH (chaos) ... dále použit jen typ IN
typ můžme použít některý z výše uvedených typů (A, NS, CNAME, SOA, PTR, HINFO, MX, TXT, AAAA). Poslední pole obsahuje data závislá na typu zázamu. Použijeme-li doménové jméno, musíme dát na konec tečku (v opačném případě by bylo na konci přidáno jméno domény). Pokud zadáme IP adresu, na konci tečku uvádět nesmíme.

Formát záznamu

Jména v databázi musí začínat na první pozici. Je-li prvním znakem na řádku mezera, použije se jméno z předchozího řádku. Soubor se skládá s typů záznamů (RR) uvedených výše.

SOA (start of authority) určuje jmenný server, který je autoritativním zdorojem informací pro danou doménu. Věta SOA je vždy právě jedna a to na začátku souboru

Např.: @ IN SOA ns.banan.cz. domainmaster.banan.cz. (
       1 ;Serial
       86400 ;Refresh after 24 hours
       600 ;Retry after 5 min.
       120960 ;Expire after 2 weeks
       86400) ;Minimum TTL of 1 day

Jméno domena.tld musí začínat od první pozice na řádku a musí končit tečkou. Označuje název zóny. Zpravidla se zde napíše @, který říká, aby se název domény vzal z druhého parametru (tj. jména domény) příkazu named.boot. IN označuje typ adresy - Internet. První jméno za SOA ns.banan.cz je jméno počítače, na kterém jsou data uložena (jméno primárního jmenného serveru) a druhé jméno domainmaster.banan.cz. definuje poštovní adresu osoby zodpovědné za data. Jelikož znak @ má v záznamu SOA zvláštvní význam, je nahrazen v poštovní adrese tečkou. Závorky umožní pokračovat na dalších řádcích.
Serial sériové číslo verze databázového souboru. Při změně souboru musíme toto číslo zvýšit. Doporučený tvar čísla rrrrmmddčč (čč = číslo aktualizace v rámci dne). Sekundární jemnný server se dotazuje primárního pouze na záznam typu SOA. Porovná hodnotu pole Serial a pokud je vyšší provede přenos zóny (z pr. na sek.).

Pokud se změna neprovede, je potřeba na sekundárním NS zrušit soubor pro příslušnou zónu, program named zastavit a znovu spustit /etc/init.d/named stop / start / restart / reload.
Refresh uvádí jak často mají sekundární NS ověřovat svá data. Zjistí-li při ověřování nižší Serial, provedou TCP protokolem transfer zóny.
Retry jesliže sekudární NS nemůže kontaktovat primární po uplynutí intervalu refresh, bude to dále zkoušet každých Retry sekund
Expire jestliže se sekundárnímu NS nepodaří kontaktovat primární NS do Expire> sekund, přestane poskytovat informace (data jsou příliš stará).
Musí platit: Expire > Refresh
TTL hodnota se vztahuje ke všem záznamům v db souboru (jako výchozí hodnota) a je poskytována NS v každé jeho odpovědi. Říká, jak dlouho mohou ostatní servery (tj. neautoritativní servery) udržovat daný záznam ve své paměti cache (nula znemožňuje ukládání vět do cache).

Doporučené hodnoty pro TLD:

86400 ; Refresh 24 hours
7200 ; Retry 2 hours
2592000 ; Expire 30 days
345600 ; Minimum TTL 4 days

A záznamy přiřazují doménovým názvům IP adresy. Na konci nesmí být tečka.

Např.:
ns.banan.cz. IN SOA ...
...
www IN A 82.208.39.119
www.neco IN A 82.208.39.119
neco.nic.domena.cz. IN A 82.208.39.119
tvuj IN A 82.208.39.119
...


V případě prvního záznamu typu A přirazuji IP adresy počítačům: www.domena.tld, www.neco.nic.domena.tld, neco.nic.domena.tld a tvuj.domena.tld
CNAME vytváříme synonyma k doménovým jménům (aliasy ke jménům počítačů).

Např.:
firma.cz IN SOA ...
...
mail IN A 82.208.39.115
www IN CNAME mail.firma.cz.
...


V tomto případě má firma jeden počítač (mail.firma.cz), který chce používat jako www server. Na pravé straně příkazu CNAME musí být doménové jméno, kterému je přiřazena IP adresa záznamem typu A. Na pravé straně nesmí být synonymum, tj. CNAME nesmí ukazovat na CNAME. Na pravé straně se snažíme zapisovat úplné doménové jméno (s tečkou na konci), v opačném případě se za název přidá také název domény.
HINFO jsou pouze informativní záznamy. Záznam HINFO má ve své datové části dva údaje. Prvním je informace o HW a druhým o SW.
TXT obashuje ve své datové části obecný textový řetězec

Např.:
firma.cz. IN SOA ...
...
mail IN A 82.208.39.115
IN HINFO BananServer Debian
IN TXT Bananovy server
...
NS záznam definuje autoritativní NS pro doménu. Na pravé straně musí být doménové jméno, kterému je přiřazena IP adresa větou A. Na pravé straně nesmí být synonymum, tj. záznam typu NS nesmí ukazovat na záznam typu CNAME.

Shodné záznamy NS jsou vždy ve dvou databázích:
  • V databázi domény vyšší úrovně. Těmito záznamy typu NS je delegována pravomoc an NS nižší úrovně. Pokud jméno NS nižší úrovně samo leží v doméně nižší úrovně, musí být za záznam typu NS přidán také záznam A s IP adresou NS. Důvodem je, že NS vyšší úrovně musí IP adresu NS nižší úrovně uvádět v dodatečných informacích (v DNS odpovědi) - tj. aby bylo možné se na NS nižší úrovně vůbec dostat.
  • Na autoritativním NS pro doménu (tj. podle terminologie předchozího bodu na NS nižší úrovně).
MX specifikuje poštovní server domény. Nechceme mít mailovou adresu adresu tvaru: uzivatel@pocitac.firma.cz, ale pouze uzivatel@pocitac.cz (skrýt poštovní server). Záznam ukazuje, na jaký počítač má být pro doménu dopravena pošta. Navíc však v typu MX je číselná priorita, pomocí které lze určit několik počítačů, na něž může být pošta pro doménu posílána. Nejprve se pokouší doručit na počítač s nejvyšší prioritou (nejnižším číslem). Pokud se nezdaří doručení, pokusí se doručit na další hodnotu v pořadí.

Např.:
firma.cz IN SOA ...
IN MX 30 mail2.provider.cz.
IN MX 20 mail1.provider.cz.
IN MX 10 mail.firma.cz.
mail IN A 11.1.1.1
...
PTR slouží k překladu IP adresy na doménové jméno, tj. k překladu prvků domény in-addr.arpa na jméno počítače.

Např.:
1.200.47.195.in-addr.arpa. IN PTR ns.firma.cz.
201.200.47.195.in-addr.arpa. IN PTR www.firma.cz.


Záznamy pro počítač ns.firma.cz (IP 195.47.200.1) a pro počítač www.firma.cz (IP 195.47.200.201). Na pravé straně zde mohou být uvedeny také záznamy typu CNAME.
$ORIGIN paramteru Name se uvádí doménové jméno absolutně (s tečkou na konci), nebo relativně. Za relativní doménové jméno se automaticky přidává implicitní doména. Příkaz $ORIGIN slouží pro změnu implicitní domény.

Např.: $ORIGIN implicitni_domena

Není-li tento parametr uveden, doplňuje se neúplné jméno přidáním domény definované v záznamu typu SOA nebo parametrem příkazu $ORIGIN, který předchází databázový záznam. Je-li v příkazu SOA místo domény znak @, bere se první parametr příkazu primary resp secondary ze souboru /etc/named.boot.
$INCLUDE do zdrojového souboru na disku je možno vložit další soubor příkazem: $INCLUDE soubor

Soubor se vloží na místo příkazu, je možno uvést také: $INCLUDE soubor implicitni_domena, tím se nejen vloží soubor, ale změní se i implicitní doména (změna implicitní domény je platná jen pro řádky vloženého souboru)

Kontrola správnosti záznamu

  • nastavení programu uvedné v named.conf -> named-checkconf
  • záznam pro jednotlivé domény -> named-checkzone domena.tld /etc/bind/master/domena.tld
Štítky: DNS
Facebook Twitter Topčlánky.cz Linkuj.cz

Komentáře

Zobrazit: standardní | od aktivních | poslední příspěvky | všechno
Článek ještě nebyl okomentován.


Nový komentář

Téma:
Jméno:
Notif. e-mail *:
Komentář:
  [b] [obr]
Odpovězte prosím číslicemi: Součet čísel osm a šest