DNS (Domain Name System)

- počítače v síti Internet jsou identifikovány číselnými IP adresami (např. 62.168.28.244 v rámci protokolu IP verze 4)

- protože v číselných IP adresách se těžko orientuje, existuje také systém doménových jmen označovaný zkratkou DNS (Domain Name System)

- v rámci tohoto systému jsou jednotlivé počítače seskupeny do určité hierarchie a každý má své jméno

- jednotkou hierarchie jsou domény, každá doména zahrnuje skupinu počítačů, které spolu nějak souvisejí

- domény mohou obsahovat další poddomény ( domény prvního, druhého, třetího, atd. řádu)

- na vrcholu hierarchie je tzv. kořenová doména, označovaná " . "

- FQDN (Fully Qualified Domain Name) = vlastní jméno počítače + jméno domény, např. lab.uzlabina.cz (lab = jméno počítače, uzlabina.cz = jméno domény)

- abychom mohli systém DNS používat, potřebujeme službu, která se bude starat o převod číselných adres na jména a naopak = jmenné servery (name servers)

- jmenné servery provozují DNS služby na vyhrazeném portu 53 (pro TCP i UDP)

- každá doména má alespoň jeden autoritativní server (tj. server, který má v daný okamžik zaručeně platné a aktuální informace o strojích v doméně), který se nazývá primární, ostatní jsou sekundární a synchronizují se s primárním

Postup požadavku na zjištění IP adresy počítače lab.uzlabina.cz:

- pošleme dotaz našemu lokálnímu jmennému serveru, ten požadavek převezme a nejprve se zeptá kořenového jmenného serveru, ten předá jména a IP adresy jmenných serverů pro doménu .cz, pak se zeptá některého z nich na jméno a IP adresu jmenného serveru pro doménu uzlabina.cz a nakonec se dotáže autoritativního jmenného serveru domény uzlabina.cz na IP adresu stroje lab.uzlabina.cz

- abychom se nemuseli pokaždé složitě doptávat na autoritativní jmenné servery jednotlivých domén (to by bylo značně pomalé a neefektivní), mohou si jmenné servery udržovat v paměti (cache) dotazy, které již zpracovaly a tak ušetřit často opakované dotazy

- existují i caching-only jmenné servery, které nejsou autoritativní pro žádnou doménu a slouží pouze k urychlení služby DNS v rámci lokální sítě

Instalace DNS serveru

- v Linuxu se často používá DNS server BIND (Berkeley Name Domain server)

- stáhneme pořebné balíčky (BIND 8.x – 3 balíčky, BIND 9.0.0 – 1 balíček),

uložíme do adresáře (např. /usr/local/src), rozbalíme (podle typu archívu, např. příkazem tar –xvzf BIND-9.0.0.tar.gz), skočíme do adresáře s rozbalenými soubory, zahájíme konfiguraci (./configure), po dokončení konfigurace zadáme příkaz make a nakonec make install

- nainstaluje se (kromě jiného):

/usr/local/sbin/named - samotný jmenný server

/usr/local/bin/host – nástroj na předání jednoduchého dotazu jmennému serveru

/usr/local/bin/dig – nástroj pro nalezení cesty ke jmennému serveru


Spouštění DNS serveru

- pomocí startovacího skriptu v /etc/init.d/named, jestliže v adresáři /etc/rc.d/rc3.d existuje symbolický odkaz na tento skript a jméno tohoto odkazu začíná písmenem S

- BIND je třeba spustit jako první službu hned po nastavení IP adresy

- v případě, že byl BIND instalován z jiného adresáře, je potřeba ve startovacím skriptu přepsat cestu k nainstalovanému binárnímu souboru named

- ruční spuštění jmenného serveru:

/etc/init.d/named start

Klient DNS-resolver

- klient – stroj, který požaduje od služby DNS převod názvu počítače na IP adresu

- nástroj klienta – resolver (je součástí knihovny glibc a ta je standardní součástí linuxových distribucí)

- konfigurace resolveru – soubory /etc/resolv.conf a /etc/nsswitch.conf

/etc/resolv.conf

search spse.edu # název prohledávané domény

nameserver 192.168.0.10 # IP adresa jmenného serveru v doméně

(nameserver 127.0.0.1 # toto je na počítači se jmenným serverem)

/etc/nsswitch.conf

hosts: dns files

- odtud se systém dozví, kde hledat konfigurační údaje pro danou službu a v jakém pořadí je bude prohledávat

- v tomto případě pro jmennou službu (hosts) začne prohledávat záznamy DNS a když neuspěje, prohledá soubor /etc/hosts

Konfigurační soubor named.conf

- hlavní konfigurační soubor jmenného serveru BIND

- je umístěn různě, ale je vhodné překopírovat ho do adresáře /etc

- v tomto souboru jednotlivé domény a poddomény tvoří samostatnou zónu, jejíž definice se nachází v příslušném zónovém souboru

- zónové soubory, na které se odkazuje konfigurace, jsou umístěny v adresáři /var/named/

- zónové soubory named.ca a named.local se vygenerují při instalaci, soubor named.ca je vhodné stáhnout z internetu v nejnovější verzi

- po úpravách konfigurace je nutno DNS server restartovat příkazem

/etc/rc.d/init.d/named restart (nebo postupně stop a start)

- v případě, že DNS server nenastartuje správně, bude potřeba změnit v tomto souboru v sekci start nastavení tak, aby se služba named spouštěla pod uživatelem root a ne pod uživatelem named

- po změně opět restartovat službu named

- správnou funkci DNS serveru zkontrolujeme v logovacím souboru /var/log/messages



- pro počítače ve vnitřní síti je dobré zřídit interní doménu, ve které budou vyjmenována jejich jména, abychom nemuseli používat IP adresy

- může to být stejná doména, kterou používáme, protože pomocí direktivy listen-on můžeme dosáhnout stavu, kdy na venkovní dotazy DNS server odpoví jinak, než na vnitřní (není správné zveřejňovat privátní IP adresy našich vnitřních počítačů, protože jednak nejsou z Internetu skrz maškarádu dosažitelné a také to odporuje RFC)

- následující vzorová konfigurace platí pro jeden primární a cache jmenný server pro lokální doménu spse.edu, umístěný na stroji se jménem ucitel a IP adresou 192.168.0.10 na vnitřní síťové kartě, s neveřejnou adresou vnitřní sítě 192.168.0.0/24 a 6-ti stanicemi

/etc/named.conf

options {
  directory "/var/named"; # umístění dalších konfiguračních souborů služby named
  listen-on { # definice rozhraní, na kterých má named naslouchat
  192.168.0.10;
  127.0.0.1;
  };

forwarders { # IP adresy DNS serverů od providera, zrychlí to odezvu

10.10.3.1;

};

};
//
// a caching only nameserver config
//
zone "." IN { # tyto dvě zóny jsou nezbytné pro cache funkci jmenného serveru
  type hint; # hint určuje, že jde o cache zónu
  file "named.ca"; # v tomto souboru bude primární cache se seznamem kořenových
}; # DNS serverů – soubor je součástí instalačního balíku BINDu

zone "0.0.127.in-addr.arpa" { # tato zóna se stará o zpětný překlad IP adres
  type master; # na názvy
  file "named.local";
};


// informace o našem primárním jmenném serveru

zone "spse.edu" {

  type master;
  file "spse.edu.zone";
};

zone "0.168.192.in-addr.arpa" IN { # zóna pro zpětný překlad
  type master;
  file "spse.edu.rev";
};

Jednotlivé zónové soubory


named.local

@ IN SOA localhost. root.localhost. (

2004030800   ;serial

8H ;refresh

2H ;retry

3W ;expiration

1D ) ;minimum

IN NS localhost.

1 IN PTR localhost.


spse.edu.zone


@   IN   SOA  ucitel.spse.edu.   root.spse.edu. (
                2004030800    ; serial

                8H       ; refresh
                2h       ; retry
                3W       ; expiry
                1D )       ; minimum

       IN   NS   ucitel.spse.edu.
ucitel       IN   A   192.168.0.10
b01      IN   A   192.168.0.1
b02        IN   A   192.168.0.2
b03         IN   A   192.168.0.3
b04       IN   A   192.168.0.4
b05      IN   A   192.168.0.5
b06        IN   A   192.168.0.6
www        IN   CNAME   ucitel
mail       IN   CNAME   ucitel

spse.edu.rev


@    IN SOA   ucitel.spse.edu.   root.spse.edu.(
               2004030800    ; serial
               8H       ; refresh
               2h       ; retry
               3W       ; expire
               1D )       ; minimum

    IN   NS   ucitel.spse.edu.
1    IN   PTR   b01.spse.edu.
2    IN   PTR   b02.spse.edu.
3    IN   PTR   b03.spse.edu.
4
    IN   PTR   b04.spse.edu.
5    IN   PTR   b04.spse.edu.

6    IN   PTR   b06.spse.edu.
10    IN   PTR   ucitel.spse.edu.












named.ca

; This file holds the information on root name servers needed to

; initialize cache of Internet domain name servers

; (e.g. reference this file in the "cache . <file>"

; configuration file of BIND domain name servers).

;

; This file is made available by InterNIC

; under anonymous FTP as

; file /domain/named.root

; on server FTP.INTERNIC.NET

; -OR- RS.INTERNIC.NET

;

; last update: Jan 29, 2004

; related version of root zone: 2004012900

;

;

; formerly NS.INTERNIC.NET

;

. 3600000 IN NS A.ROOT-SERVERS.NET.

A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4

;

; formerly NS1.ISI.EDU

;

. 3600000 NS B.ROOT-SERVERS.NET.

B.ROOT-SERVERS.NET. 3600000 A 192.228.79.201

;

; formerly C.PSI.NET

;

. 3600000 NS C.ROOT-SERVERS.NET.

C.ROOT-SERVERS.NET. 3600000 A 192.33.4.12

;

; formerly TERP.UMD.EDU

;

. 3600000 NS D.ROOT-SERVERS.NET.

D.ROOT-SERVERS.NET. 3600000 A 128.8.10.90

;

; formerly NS.NASA.GOV

;

. 3600000 NS E.ROOT-SERVERS.NET.

E.ROOT-SERVERS.NET. 3600000 A 192.203.230.10

;

; formerly NS.ISC.ORG

;

. 3600000 NS F.ROOT-SERVERS.NET.

F.ROOT-SERVERS.NET. 3600000 A 192.5.5.241

;

; formerly NS.NIC.DDN.MIL

;

. 3600000 NS G.ROOT-SERVERS.NET.

G.ROOT-SERVERS.NET. 3600000 A 192.112.36.4

;

; formerly AOS.ARL.ARMY.MIL

;

. 3600000 NS H.ROOT-SERVERS.NET.

H.ROOT-SERVERS.NET. 3600000 A 128.63.2.53

;

; formerly NIC.NORDU.NET

;

. 3600000 NS I.ROOT-SERVERS.NET.

I.ROOT-SERVERS.NET. 3600000 A 192.36.148.17

;

; operated by VeriSign, Inc.

;

. 3600000 NS J.ROOT-SERVERS.NET.

J.ROOT-SERVERS.NET. 3600000 A 192.58.128.30

;

; operated by RIPE NCC

;

. 3600000 NS K.ROOT-SERVERS.NET.

K.ROOT-SERVERS.NET. 3600000 A 193.0.14.129

;

; operated by ICANN

;

. 3600000 NS L.ROOT-SERVERS.NET.

L.ROOT-SERVERS.NET. 3600000 A 198.32.64.12

;

; operated by WIDE

;

. 3600000 NS M.ROOT-SERVERS.NET.

M.ROOT-SERVERS.NET. 3600000 A 202.12.27.33

; End of File


Popis jednotlivých typů záznamů

SOA

Start of Authority, zde se uvádí primární DNS, kontakt na správce, verze záznamu a časové závisosti

A

Address,slouží k převodu názvu stroje na IP adresu

NS

Name-server(y) pro danou doménu.

CNAME

Přezdívka. A-záznam je povolen pouze jeden pro jednu IP-adresu. Další jména se musí řešit položkou CNAME.

PTR

Pointer (ukazatel), slouží k zpětnému překladu z IP adresy na název. Používá se v reverzních záznamech

MX

Mail Exchange, dává informace o mail serveru v dané zóně

HINFO

údaje o hardware / software  pro danou IP-adresu. Nepovinné, údajně by se toto mělo zobrazovat v dotazu programem nslookup 


Nástroje pro správu DNS

- po změně konfiguračních souborů můžeme poslat procesu named signál HUP, aby znovu načetl konfigurační soubory

- nejprve zjistíme PID procesu named, např. příkazem ps –C named a pak zašleme procesu named s nejnižším PIDem signál:

# kill –HUP 1253

host

- používá se pro zjištění IP adresy z názvu stroje a naopak, např:

# host lab.uzlabina.cz

nebo

# host 213.151.91.187

nslookup

- pracuje buď jednorázově anebo v interaktivním režimu, do kterého vstoupíme zadáním příkazu nslookup bez dalších parametrů, objeví se výzva ve tvaru >, za kterou zadáváme příkazy, např. jméno stroje

- interaktivní režim ukončíme příkazem exit

- použití jako u nástroje host

dig

- flexibilní nástroj pro zjišťování údajů o DNS serverech:

# dig lab.uzlabina.cz

- formát příkazu pro použití jiného než výchozího jmenného serveru:

# dig @server doména typ_dotazu

kde @server – DNS server, kterému chceme dotaz zaslat

doména – název domény, která nás zajímá

typ_dotazu – spacifikuje typ záznamu, který chceme získat (A, SOA,..)

whois

- slouží k určení vlastníka domény

# whois uzlabina.cz

- podrobnosti o dalším použití všech nástrojů jsou v manuálu