PV090: DNS

Filip Kovářík <>

DNS (Domain Name System) je

Jak funguje DNS?

Jsem DNS nameserver:

Příklad DNS dotazu

Formát DNS zpráv

Sekce Popis Obsah
Header Záměr zprávy, schopnosti serveru, stavový kód QR, AA, RD/A, RCODE, *COUNT …
Question Dotaz na záznamy záznam z typu QTYPE (max 1)
Answer Záznamy odpovídající dotazu záznam z typu TYPE
Authority Odkaz na autoritativní NS SOA
Additional Pomocné záznamy, např. adresa NS podzóny A, AAAA

Delegace a kořenové servery

Strom subdomén zavádí hierarchii mezi doménami:

Nejvýš je ., pak cz., muni.cz., fi.muni.cz., pv090.fi.muni.cz. apod.

Subdomény patří do stejné zóny, pokud je obsluhuje stejná sada autoriativích nameserverů.

Zóny můžou a nemusí odpovídat subdoménám. Tam, kde delegujeme subdoménu, autoritu přebírá server uvedený v záznamu NS a vzniká nová zóna.

Nejvyšší zónu (.) v Internetu spravují servery a.root-servers.netm.root-servers.net.

Typy DNS záznamů

Základní typy záznamů:

Klienstký resolver (Stub resolver)

Klientský resolver je služba*, který zpřístupňuje DNS uživatelským aplikacím.

Úkolem klientského resolveru je získat DNS záznamy od cizích nameserverů. Buď spoléhá na rekurzivní resolver, nebo se po řadě táže iterativních resolverů.

Resolver může mít podobu jednoduché proxy na cizí resolver, ale taky může používat LLMDR, mDNS, DNSSEC.

Reminder: Name Service Switch

Soubor /etc/nsswitch.conf řádkem hosts určuje pořadí služeb pro překlad jmen (viz man 5 nsswitch.conf). Např.: hosts: files dns

Zde

Tímto pořadím se řídí funkce gethostbyname*(3), getaddrinfo*(3) ze standardní knihovny jazyka C.

Statická konfigurace jmen

Soubor /etc/hosts obsahuje tabulku statických jmen v následujícím formátu (viz man 5 hosts):

<IP adresa> <hostname> [<alias>...]

Např.:

127.0.0.1 localhost localhost4
192.168.0.1 router.local

Historicky tento soubor sdílel celý Internet.

Konfigurace klientského resolveru

Možnosti v souboru /etc/resolv.conf (viz man 5 resolv.conf):

Soubor /etc/resolv.conf používají funkce gethostbyname*(3), getaddrinfo*(3) prostřednictvím zdroje dns v nastavení /etc/nsswitch.conf.

Konfigurace systemd-resolved

V systému se systemd-resolved zpravidla needitujeme /etc/resolv.conf (generovaný automaticky), ale soubor resolved.conf (viz man 5 resolved.conf).

Základní možnosti v resolved.conf (sekce [Resolve]):

Reverzní DNS

Reverzní DNS (rDNS) provádí překlad IP adres zpět na doménová jména.

Pro použití reverzní DNS mapujeme IPv4, resp. IPv6 adresy pod .in-addr.arpa, resp. pod .ip6.arpa.

K takové adrese pak přiřadíme PTR záznam na doménové jméno.

Kořen rDNS obsluhují nameservery z in-addr-servers.arpa / ip6-servers.arpa a delegují rDNS nameserverům podle přiřazení IP adres.

Reverzní DNS — Odvození doménového jména

Pro odvození rDNS adresy skládáme IPv4 oktety v opačném pořadí. IPv6 napřed expandujeme, pak pozpátku skládáme hexadecimální číslice.

Např.: 1.48.251.147.in-addr.arpa PTR fi.muni.cz.

BIND (named)

BIND (Berkeley Internet Name Domain) je balíček s nameserver démonem named. Nameserver konfigurujeme přes named.conf (závisí na distribuci).

V systemd jej spouští služba named.service s dodatečnými možnostmi v /etc/sysconfig/named.

Autorem BIND je ISC (Internet Systems Consortium). Dokumentace BIND9 je dostupná na:

https://bind9.readthedocs.io/

named.conf

Konfigurace BIND se dělí do bloků (vše končí středníkem ;, viz dokumentace):

Formát DNS záznamů

Zónové záznamy (RR) píšeme ve formě:

<domain> [<class>] <record type> <data>

Třída záznamu (pole <class>) je zpravidla třída internet (IN).

Závorky ( a ) je třeba použít tehdy, když záznam přesahuje na více řádků.

Komentáře začínají středníkem ;, hvězdička * zastupuje cokoli a zavináč @ značí poslední doménu (na začátku je to název zóny).

Záznam SOA

Záznam SOA určuje zónu (oblast autority) pro všechny následující záznamy.

Např.:

fi.muni.cz. IN SOA anxur.fi.muni.cz. root.fi.muni.cz. (
  2025101131 ; serial
  3600       ; refresh
  90         ; retry
  1209600    ; expire
  300 )      ; minimum

Záznam SOA — Položky

Pozn.: tečka na konci vychází z definice doménových jmen; kořenová zóna má prázdné jméno a je oddělena tečkou od TLD. Tzn. specifikuje FQDN na rozdíl od relativního jména.

Záznam SOA — Položky II

Všechny časové položky se zadávají v sekundách, nebo zkratkovitě (1W). Délka časových intervalů se zpravidla odvíjí od úrovně DNS serveru (čím vyšší doména, tím pomalejší).

Rozšíření — DNSSEC, DoT, DoH

Zdroje