DNS

Jaromír Dobiáš, jaromir.dobias(na)mail.muni.cz

Obsah

Historie služby DNS

Za prvotní příčinu vzniku služby DNS možno považovat expanzi armádní sítě ARPANET a potřeba adresovat konkrétní uzly při výměně e-mailových zpráv mezi jednotlivými uživateli této sítě. S narůstajícím počtem zařízení rostlo také množství IP adres, které bylo potřeba si pro komunikaci pamatovat. To vedlo k myšlence vytvoření adresového systému, který by umožnil počítače identifikovat pro člověka lépe zapamatovatelným způsobem.

Prvotním krokem směřujícím k současné podobě služby DNS bylo zavedení souboru HOSTS.TXT na dílčích strojích ARPANETu. Soubor HOSTS.TXT obsahoval jednoduchý seznam, který provazoval IP adresy jednotlivých strojů s jejich přidělenými jmény (hostname). Tento systém se však ujal pouze na krátkou dobu zejména z důvodů neefektivnosti a nekonzistentnosti při správě kopií seznamu.

Další práce mající za cíl konzistentní řešení problému uživatelsky přívětivé adresace v prostředí sítě ARPANET vedla k vytvoření centralizovaného návrhu pod označením Host Names On-line, jenž byl publikován v prosinci roku 1973 jako RFC 606. Tento návrh byl dále propracován (RFC 608) a přetaven do pokročilejší centralizované podoby (RFC 623), přičemž bylo rozhodnuto, že seznam uživatelských jmen strojů provázaných s jejími IP adresami bude umístěn v Síťovém Informačním Středisku (Network Information Center) Stanfordského Výzkumného Institutu (Stanford Research Institute).

Centralizovaný systém jmenné adresace vydržel v této formě celou dekádu (1973-1983) avšak z důvodu významného nárostu datových přenosů a značné velikosti jmenného seznamu začala být navržená koncepce nedostačující. Pro zaslání e-mailu bylo zapotřebí, aby odesílající uživatel specifikoval cestu mezilehlých uzlů k příjemci, která začala netriviálně narůstat z důvodu expandující sítě.

Příklad adresy trasy e-mailu, kde jména mezilehlých uzlů jsou odděleny znakem "!":

utzoo!decvax!harpo!eagle!mhtsa!ihnss!ihuxp!grg

Aby se předešlo nutnosti pamatovat si jména mezilehlých uzlů byl vytvořen nový koncept tzv. doménových jmen, který díky hierarchické strukturalizaci umožňuje použít relativní adresu namísto absolutně specifikované cesty. Základní principy, které stojí za mechanizmem doménových jmen byly specifikovány v RFC 805, kde se také objevuje pojem top level domén (jakožto startovací místo překladu na IP adresu) a unikátních second level domén. Tento koncept také umožňuje distribuovat správu a přidělování dílčích doménových jmen mezi administrátory top level domén. Další úpravou byl následně přetaven do podoby, která je používána ve svém návrhu (Distributed System for Internet Name Service - RFC 830) prakticky dodnes. Architektura tohoto návrhu je založena na distribuovaném systému jmenných serverů, přičemž každý z nich obsluhuje svou lokální doménu.

Princip služby DNS

Primární úkol služby DNS:

Jak je této funkcionality dosaženo:

Stručný popis funkcionality z pohledu aplikace:

Pro překlad doménového jména na IP adresu aplikační program volá knihovní proceduru tzv. resolver, přičemž této proceduře předává doménové jméno požadovaného serveru jako parametr. Procedura resolver následně zasílá UDP paket lokálnímu DNS serveru, který podle předaného jména vrátí odpovídající IP adresu v odpovědi resolveru, a ten jí vrátí volané aplikaci. Následně je aplikace schopna s vědomostí IP adresy cílového serveru navázat s ním spojení pomocí TCP (či UDP).

V konceptu je Internet rozdělen do přibližně 200 top level domén, kdy každá pokrývá mnoho stanic. Každá doména je rozdělena na subdomény a tyto mohou být opět dále rozděleny. Všechny domény mohou být reprezentovány stromovým grafem, přičemž listy jsou doménami, které nemají subdomény (ale pokrývají přímo jednotlivé stanice). Listem může být jak jedna samotná stanice, tak společnost obsluhující tisíce stanic.

Struktura doménového jména:

Jméno je uváděno v tečkové notaci. Jméno je obecně zapsáno ve tvaru:

řetězec.řetězec.řetězec....řetězec.

kde první řetězec je jméno počítače, další jméno nejnižší vnořené domény, další vyšší domény atd. Pro jednoznačnost je vhodné na konec přidat také tečku, vyjadřující root doménu.

Typy top level domén:

  1. obecné
  2. krajina
  3. přidané v roce 2000
  4. doplněné speciální
  5. Rezervované domény a pseudodomény

Name Server a jeho typy:

Name server udržuje informace pro překlad jmen počítačů na IP adresy (případně naopak). Name server obhospodařuje část prostoru jmen počítačů. Name server je program, který provádí na žádost resolveru překlad. V UNIXu je name server realizován programem named.
Primární name server
Udržuje data o počítačích, které jsou pod jeho správou

Sekundární name server
Kopíruje databáze v pravidelných časových intervalech z primárního name serveru. Tyto databáze nemá smysl na sekundárním name serveru editovat, protože budou při dalším kopírování přepsány.

Caching only server
Není pro žádnou doménu ani primárním, ani sekundárním name serverem, ale data která jím prochází, ukládá ve své paměti.

Root name server
Obsluhuje root doménu. Každý root name server je primárním serverem, což jej odlišuje od ostatních name serverů.

Zdrojový záznam (Resource Record) - datová struktura, kterou obdrží resolver od lokálního DNS serveru. DNS server uchovává databázi těchto záznamů
Formát zdrojového záznamu:

[Domain_name] [Time_to_live] Class Type Value

Domain_name - nepovinné
Udává jméno domény, které patří daný záznam.

Time_to_live - nepovinné
Pole TTL udává, jak stabilní je daný záznam. Záznam, který je velmi stabilní má přidělenou vysokou hodnotu, zatímco nestabilní záznam má hodnotu nízkou udávanou v sekundách.

Class
Třetí pole každého RR je třída. Pro internetové záznamy je má toto pole vždy hodnotu "IN". Pro jiné záznamy mohou být použity i jiné hodnoty, avšak takové případy jsou obecně zřídkavé.

Type
Pole říká, o jaký typ záznamu se jedná. Mezi nejpoužívanější typy patří:

Value
Pole obsahuje data závislá na typu záznamu. Pokud se zde použije doménové jméno, pak nesmíme za ním zapomenout napsat tečku, protože v opačném případě by se za jméno automaticky dodalo jméno domény. Naopak pokud je zde IP adresa, tak za čtvrtou číslicí v IP adrese tečka být nesmí.

DNS a Linux

Klientské nástroje pro práci se službou DNS:

host
Utilita, která se obvykle používá pro zjištění IP adresy (resp. IP adres) vázaných k danímu doménovému jménu.
host google.com
google.com has address 209.85.171.99
google.com has address 64.233.187.99
google.com has address 72.14.207.99

nslookup
Utilita, která se obvykle používá pro zjištění doménového jména z IP adresy (reverzní záznam). Údaj se získává pomocí specifické pseudodomény in-addr.arpa.
nslookup 147.251.50.9
Server:         192.168.29.1
Address:        192.168.29.1#53

Non-authoritative answer:
9.50.251.147.in-addr.arpa       name = erigona.fi.muni.cz.

Authoritative answers can be found from:
50.251.147.in-addr.arpa nameserver = ns.muni.cz.
50.251.147.in-addr.arpa nameserver = aisa.fi.muni.cz.
50.251.147.in-addr.arpa nameserver = anxur.fi.muni.cz.
ns.muni.cz      internet address = 147.251.4.33
aisa.fi.muni.cz internet address = 147.251.48.1
anxur.fi.muni.cz        internet address = 147.251.48.3

dig
Utilita slouží k získávání širokého spektra typů DNS záznamů
dig @147.251.4.33 seznam.cz mx

; <<>> DiG 9.4.2-P1 <<>> @147.251.4.33 seznam.cz mx
; (1 server found)
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 8413
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 4

;; QUESTION SECTION:
;seznam.cz.                     IN      MX

;; ANSWER SECTION:
seznam.cz.              26      IN      MX      60 mx60.seznam.cz.
seznam.cz.              26      IN      MX      50 mx50.seznam.cz.

;; AUTHORITY SECTION:
seznam.cz.              2164    IN      NS      ms.seznam.cz.
seznam.cz.              2164    IN      NS      ns.seznam.cz.

;; ADDITIONAL SECTION:
mx50.seznam.cz.         15      IN      A       77.75.73.47
mx60.seznam.cz.         26      IN      A       77.75.73.48
ms.seznam.cz.           58      IN      A       77.75.77.77
ns.seznam.cz.           58      IN      A       77.75.73.77

;; Query time: 3 msec
;; SERVER: 147.251.4.33#53(147.251.4.33)
;; WHEN: Thu Oct 16 08:55:24 2008
;; MSG SIZE  rcvd: 167

Konfigurace Linuxové stanice jako klienta služby DNS:

Pro konfiguraci DNS resolveru se používá konfigurační soubor /etc/resolv.conf. V případě, že je konfigurace IP adresy prováděná pomocí DHCP serveru je tento soubor automaticky nakonfigurován. V případě manuální konfigurace je vhodné, aby soubor měl následující strukturu.
# cat /etc/resolv.conf
nameserver 192.168.1.254
search slackware.com
Klíčovým je zde zejména řádek uvozen řetězcem "nameserver", který specifikuje DNS server na nejž budou kladeny DNS požadavky k překladu. Na řádku uvozeném klíčovým slovem "search" je možné specifikovat, které domény je možné zadávat ve zkráceném tvaru. Pokud by kupříkladu byla doména slackware.com nastavena tímto způsobem, bylo by jméno po zadání řetězce http://store do adresového řádku prohlížeče automaticky převedeno na http://store.slackware.com.

Možnost explicitního nastavení pevných DNS záznamů:

Konfigurací souboru /etc/hosts je možné napevno nastavit mapování domenových jmen a IP adres, které mají pro takto nastavený systém větší prioritu, než informace získané od DNS serveru.
# cat /etc/hosts
127.0.0.1        localhost locahost.localdomain
192.168.1.101    redtail
172.14.66.32     foobar.slackware.com

Konfigurace Linuxové stanice jako DNS serveru BIND:

options {
        directory ?/etc/master?;
} ;
logging {
  channel protokol {
       file ?log/protokol.txt? versions 5
       severity debug;
  } ;
  channel vyst {
       file ?log/vy?;
  } ;
  category default {
      protokol;
  } ;
  category ncache {
    vyst;
  } ;
  category db {
326
    vyst;
  } ;
} ;
zone ?0.0.127.in-addr.arpa? in {
      type master;
      file ?127.0.0?;
} ;
zone ?.? in {
      type hint;
      file ?named.cache?;
} ;
zone ?abcde.cz? in {
      type master;
      notify yes;
      file ?abcde.cz.zone?;
} ;
zone ?pvtnet.cz? in {
      type slave;
      masters { 194.149.105.18;} ;
      file ?pvtnet.cz.zone?;
} ;
zone ?pvt.net? in {
      type stub;
      masters { 194.149.105.18;} ;
      file ?pvt.net.zone?;
} ;

Literatura