. | ...+-------------+--------+-----------+----... | | | | ... cz org com | | | | ... ... | ...+------+--------+----+... | | muni vutbr | | | ... | ...+-------+--------+---------+... | | fi sci | | ... ...
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.
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í 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 jsou uloženy v zónových souborech.
$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
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.
Příklad vyhodnocení dotazu na adresu fi.muni.cz
fi.muni.cz
nastavenému nameserverufi.muni.cz
některému z root serverůfi.muni.cz
, pošle seznam autoritativních nameserverů domény cz
fi.muni.cz
autoritativnímu nameserveru domény cz
cz
nezná adresu, pošle seznam autoritativních nameserverů domény muni.cz
fi.muni.cz
autoritativnímu nameserveru domény muni.cz
muni.cz
zná adresu fi.muni.cz
fi.muni.cz
a pošle ji resolveruTakto 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 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.
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:
Šifrování zpráv je možné řešit použitím DNS over HTTPS, DNS over TLS nebo DNSCrypt.
nslookup(1), dig(1), host(1) - bind-tools
drill(1) - ldns-utils
rndc(8), dnssec-keymgr(8) - bind (+python)
dnssec-keygen(8), dnssec-signzone(8),... - bind-tools
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:
named.conf
- konfigurace serveru a zónpri -> ../../var/bind/pri
- symlinky k zónovým souborůmrndc.key
- klíče pro správu přes program rndc(8)
rndc
je potřeba povolit port, přes který server spravuje (defaultně 953).