Domain Name System - DNS

Jan Adler, 469190@mail.muni.cz

Obsah

Co je DNS - pojmy

Historie

Struktura domén

                    .
                    |
   ...+-------------+--------+-----------+----...
      |             |        |           |
     ...           cz       org         com
                    |        |           |
                    |       ...         ...
                    |
          ...+------+--------+----+...
                    |        |
                  muni     vutbr
                    |        |
                    |       ...
                    |
         ...+-------+--------+---------+...
                    |        |
                   fi       sci
                    |        |
                   ...      ...

Delegace subdomén

Doména cz. například deleguje správu subdomény muni.cz. na ns.muni.cz. s adresou 147.251.4.33. Pokud dostane server dotaz na jméno z delegované domény, musí kromě jména uvést alespoň jednu adresu delegovaného nameserveru (glue record). Tímto se předchází kruhovým závislostem.

Typy serverů

Autoritativní

Autoritativní servery mají lokálně záznamy k zónám, které spavují. Pokud je server čistě autoritativní, tak odpovídá pouze na dotazy, na které má odpověď. Většinou existují alespoň 2 autoritativní servery pro danou zónu (primární/master a sekundární/slave), kde primární server provádí zone-transfer na sekundární servery.

Rekurzivní (cachovací)

Rekurzivní server při přijetí dotazu, na který nezná odpověď, přepošle dotaz na další server. Tyto dotazy se postupně zanořují do té doby, než dotaz dorazí k autoritativnímu serveru, nebo sereveru, který má požadovaný záznam ve své vyrovnávací paměti. Takovéto servery provozují třeba poskytovatelé internetu.

Záznamy

Záznamy jsou uloženy v zónových souborech.

Příklad možného uložení záznamů:
$ORIGIN fi.muni.cz.
$TTL 300
fi.muni.cz.			IN	SOA	anxur root (
						2020102100	; serial
						3600		; refresh
						900		; retry
						1209600		; expire
						300		; minimum
						)

					NS	anxur
					NS	ns.muni.cz.
					NS	aisa.fi.muni.cz.
aisa				IN	A	147.251.48.1
aisa				IN	AAAA	2001:718:801:230::1
www				IN	CNAME	aisa
@				IN	MX	50 relay.muni.cz.
@				IN	TXT	"Botanicka 68a, 602 00, Brno, Czech republic"

; Reverzní záznamy v jiné zóně
1.48.251.147.in-addr.arpa	IN	PTR	aisa.fi.muni.cz.
1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.3.2.0.1.0.8.0.8.1.7.0.1.0.0.2.ip6.arpa	IN	PTR	aisa.fi.muni.cz

Komunikace

DNS dotazy a odpovědi přicházejí na port 53 přes protokol UDP. Pokud velikost zprávy přesáhne 512 bajtů, musí se přeposlat pomocí protokolu TCP.

Vyhodnocení dotazu

Příklad vyhodnocení dotazu na adresu fi.muni.cz

Takto by vypadala série dotazů, kdyby nameserver neuměl používat cache. Normálně se odpovědi ukládají do lokální vyrovnávací paměti. Tím zvyšují rychlost odpovědi a snižují zátěž autoritativních serverů. Na druhou stranu ale prodlužují dobu propagace změn, protože se musí čekat, než záznamům v paměti vyprší doba platnosti (TTL).

Konfigurace resolveru

Konfigurace je standardně v souboru /etc/resolv.conf. Pokud ale například používáme systemd-resolved, je potřeba editovat soubor /etc/systemd/resolved.conf. Při změnách souboru /etc/resolv.conf je dobré zkontrolovat, jestli to není pouze symbolický odkaz, který je generovaný jiným resolverem a jehož úpravy nemají žádný efekt.

Implementace DNS

Zabezpečení

DNS zpávy jsou v základu nešifrované a nepodepsané. Původ zpráv řeší Security Extensions - DNSSEC, viz rfc4033, rfc4034 a rfc4035

Stručný postup:

K tomu se používají programy dnssec-keygen(8), dnssec-signzone(8), dnssec-keymgr(8) a další. Můžete se inspirovat třeba těmito návody.

Šifrování zpráv je možné řešit použitím DNS over HTTPS, DNS over TLS nebo DNSCrypt.

Užitečné nástroje

Instalace a správa

Instalace na gentoo je popsaná na gentoo wiki, zde je mírně upravený postup:

# emerge -avq net-dns/bind-tools net-dns/bind net-dns/ldns-utils

Po instalaci nastavíme automatické spouštění sužby a spustíme ji.

# rc-update add named default
# rc-service named start

Konfigurace služby probíhá ve složce /etc/bind/. Důležité soubory jsou:

Pro správnou funkčnost rndc je potřeba povolit port, přes který server spravuje (defaultně 953).

Literatura