DNS Resolver je klientská strana DNS. Zahajuje a zpracovává DNS dotazy/odpovědi při překladu jména na IP. DNS Resolvery můžou být rekurzivní (typicky domácí router) nebo iterativní (menší zátěž na DNS servery).
Konfigurace resolveru je v /etc/resolv.conf. Jeho konfigurace může být přepisována síťovým manažerem
        (netcl, NetworkManager,...). Pokud přepisování souboru nechceme musíme nastavit soubor jako neměnný
        (chattr +i /etc/resolv.conf). Když potřebujeme, aby do souboru resolv.conf zapisovalo
        více
        procesů lze použít openresolv, který lze
        nakonfigurovat
        aby spolupracovat s ostatními resolvery.
    
/etc/resolv.conf  na systému s  NetworkManager 
# Generated by NetworkManager
nameserver 10.0.0.138
nameserver 2a00:1028:1:910::1
nameserver 2a00:1028:1:911::1
    
    | A | IPv4 adresa | 
| AAAA | IPv6 adresa | 
| CNAME | Cannonical Name - alias | 
| MX | Mail Exchange | 
| TXT | Text k doméně | 
| PTR | Pointer na doménu. Na rozdíl od CNAME se zde DNS končí | 
| NS | Delegace DNS zóny | 
| SOA | Důležité informace o zóně. Povinné pole | 
| DNSKEY | Klíč k podpisu DNSSEC | 
| RRSIG | Podpis k DNSSEC | 
| DS | Delegation signer | 
Příklad: Chci zjistit IP adresu fi.muni.cz
... dojdeme až na server nsa.ces.net
;; QUESTION SECTION:
;fi.muni.cz.			IN	NS
;; AUTHORITY SECTION:
fi.muni.cz.		7200	IN	NS	ns.muni.cz.
fi.muni.cz.		7200	IN	NS	aisa.fi.muni.cz.
fi.muni.cz.		7200	IN	NS	anxur.fi.muni.cz.
fi.muni.cz.		7200	IN	DS	56292 13 2 2592AB64BED77E9891A874F9DEAA53440C3ED4EA912900BFA955F283 AEDFA3AE
fi.muni.cz.		7200	IN	RRSIG	DS 13 3 7200 20221029053538 20220929044715 5617 muni.cz. sYPFGJWLYIetNI4GTPZTilG8wof8D9t8m57CmYt0QemKA2XOUNaLv6nQ Mlmu83qhWlu5S1LNf+vf+kLTQO4H2w==
    
    Problém: Pro fi.muni.cz autoritativní server je aisa.fi.muni.cz
    a anxur.fi.muni.cz, ale my nevíme ani IP adresu ani aisy či
    anxura. Řešení spočívá v tzv. glue záznamech, které se posílají v doplňkové
    sekci.
    
;; ADDITIONAL SECTION:
ns.muni.cz.		7200	IN	AAAA	2001:718:801:404::33
ns.muni.cz.		7200	IN	RRSIG	AAAA 13 3 7200 20221026150700 20220926143338 5617 muni.cz. ch97L12M8wH9D8B6ZB7qzsXQ9BbgUrv31C6JEJIB2b6xkCTsiRdz6o2D PZcl3UzDvFEeS2/s9UZiZu3dsHF19A==
aisa.fi.muni.cz.	7200	IN	AAAA	2001:718:801:230::1
ns.muni.cz.		7200	IN	A	147.251.4.33
ns.muni.cz.		7200	IN	RRSIG	A 13 3 7200 20221026150700 20220926143338 5617 muni.cz. xfPUM4lbXd3Trv19qEfhZ1b90+E2ZYVfJUV540iwnxjwyRzRgYparx3S wknJiXQ3l/JiTcjswW73PfvqKq/zdg==
aisa.fi.muni.cz.	7200	IN	A	147.251.48.1
anxur.fi.muni.cz.	7200	IN	A	147.251.48.3
    
    Takže situace je následovná: zeptáme se serveru nsa.ces.net na fi.muni.cz a dostaneme odpověď, že se máme obrátit na
    aisa.fi.muni.cz, ale ještě nám řekne "BTW, IP adresa aisy je 147.251.48.1".
    
    Reverzní DNS umožňuje převod IP adresy na doménové jméno.
dig -x 10.58.251.14 ;; QUESTION SECTION: ;10.58.251.147.in-addr.arpa. IN PTR ;; ANSWER SECTION: 10.58.251.147.in-addr.arpa. 1797 IN PTR stratus.fi.muni.cz.Vidíme že pro překlad se IP adresa zapíše obráceně v dekadickém zápisu a naváže se na
in-addr.arpa.
    dig -x 2001:718:801:235::74 ;; QUESTION SECTION: ;4.7.0.0.0.0.0.0.0.0.0.0.0.0.0.0.5.3.2.0.1.0.8.0.8.1.7.0.1.0.0.2.ip6.arpa. IN PTR ;; ANSWER SECTION: 4.7.0.0.0.0.0.0.0.0.0.0.0.0.0.0.5.3.2.0.1.0.8.0.8.1.7.0.1.0.0.2.ip6.arpa. 1800 IN PTR musa01.ip6.fi.muni.cz.Pro IPv6 je situace podobná, jen je zápis delší a doména
ip6.arpa.
    
    Nejrozšířenější je server bind, ale existují i jiné jako je např. knot-dns vyvíjen organizací cz.nic nebo Unboud.
DNS server může být buď primární, sekundární nebo cache-only. Změny děláme na primárním DNS serveru a sekundární servery si stahují z primárního data. Cache-only server si jen ukládá již zpracované dotazy.
Standardně DNS využívá port 53 (UDP & TCP).
        Balíček pro debian bind9 (dokumentace v bind9-doc),
        pro arch bind.
        Konfigurace na Archu je v /etc/named.conf pro debian je vše pod /etc/bind.
        Pro provozování máme k dispozici systemd službu named.
        Dále se popisuje jen Debian.
    
Globální nastavení se dělá ve sekci options.
options {
    directory "/etc/bind";
    forwarders {
      147.251.48.3; 147.251.4.33;
      3ffe:ffff::1;
    };
    forward only;
    // recursion no;
};
  
    
        Vždy DNS server musí být schopen přeložit localhost na sebe + reverzní záznamy. V Debianu tyto
        soubory vytvoří při instalaci bind. Jedná se o db.local (viz níže),
        db.0,  db.127,  db.255,  db.empty.
    
;
; BIND data file for local loopback interface
;
$TTL    604800
@       IN      SOA     localhost. root.localhost. (
                              2         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      localhost.
@       IN      A       127.0.0.1
@       IN      AAAA    ::1
  
    O nastavení zóny se v tomhle případě stará named.conf.default-zones, viz úryvek níže.
    
zone "localhost" {
        type master;
        file "/etc/bind/db.local";
};
  
    V named.conf.local provádíme nastavení dalších zón.
    
zone "k11m1.eu" {
    type master;
    also-notify { 192.100.0.0 };
    file "/etc/bind/zones/k11m1.eu";
};
zone ”muni.cz” {
  type slave;
  file ”slave/muni.cz”;
  masters { 147.251.4.33; };
  allow-transfer { any; };
};
  
    
        Stejné jako předtím: název zóny ______.in-addr.arpa. Pro konfiguraci reverzních záznamů
        používáme typ PTR. Nezapomeneme, že doména musí končit tečkou!
    
zone "127.in-addr.arpa" {
        type master;
        file "/etc/bind/db.127";
};
    
; Soubor db.127
; BIND reverse data file for local loopback interface
;
$TTL    604800
@       IN      SOA     localhost. root.localhost. (
                              1         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      localhost.
1.0.0   IN      PTR     localhost.
  
    
    
$TTL    60
@       IN      SOA     alfa.k11m1.eu. klimes.fi.muni.cz. (
                              4         ; Serial
                             3H         ; Refresh
                            15M         ; Retry
                             2W         ; Expire
                            30M )       ; Negative Cache TTL
;
        IN      NS      alfa
alfa    IN      A       192.0.0.1
        IN      MX      50 mx.k11m1.eu
        IN      TXT     "Nejaky text"
mx      IN      A       192.0.0.10
    Pro experimentování se hodí používat nízké TTL. Soubor musí začínat SOA záznam.
    
    
        Užitečný nástroj může být také named-checkconf, který
        zkontroluje named konfigurace nebo named-checkzone, který umí
        zkontrolovat danou zónu. (named-checkzone domain /etc/bind/zona). Za zmínku stojí také
        dig nebo host, či nslookup.
    
Za zmínku také stojí nastavení v sekci logging, které umožňuje logovat do souborů různé
        nastavení. Další info lze nalézt zde.
    
Podvržení DNS odpovědi -> útočník může změnit IP adresu. Chránit se před tímto útokem lze pomocí DNSSEC.
DNSSEC je zapnutý již ve výchozí konfiguraci jak na Debianu tak třeba archu.
        Pokud DNS nastavujeme a nechceme se ještě zabývat zabezpečením, můžeme jej vypnout v
        nastavení volbou dnssec-validation no; v sekci options.
    
Používají se 2 klíče ZSK - Zone Signing Key a KSK - Key Singing Key.
Velmi dobře popsaný postup jak zavést DNSSEC k podpisu spravované zóny lze najít na ArchLinux wiki; malý výtažek:
$ dnssec-keygen -a NSEC3RSASHA1 -b 2048 -n ZONE example.com
$ dnssec-keygen -f KSK -a NSEC3RSASHA1 -b 4096 -n ZONE example.com
    
        auto-dnssec maintain; inline-signing yes;
        Pro Bind 9 lze využít "Fully Automated (Key and Signing Policy)", které by mělo nastavit DNSSEC samo a
        nastavit sane
        defaults.
        Pro použití nastavíme v definici zóny dnssec-policy default; a
        inline-signing yes;. Poté je ještě potřeba nastavit Delegaci pomocí DS v nadřazené zóně.
    
        Místo příkazu dig lze využít i nástroj z ldnsutils (debian), ldns (Arch).
    
drill -DT sigfail.verteiltesysteme.net drill -DT sigok.verteiltesysteme.net
Jako další mechanizmus pro zabezpečení DNS dotazů může sloužit DNS over HTTPS (DoH), nebo alternativně DNS over TLS (DoL). Problém s DNS je vcelku jednoduchý: všechny dotazy jsou v plain textu a tedy pokud někdo poslouchá na síti, tak vidí i domény, které chceme navštívit. Použitím DoT máme komunikaci šifrovanou.