Tento tutoriál vám ukáže, jak nastavit místní DNS resolver na Debian 10 Buster pomocí široce používaného softwaru BIND9 DNS. Existuje mnoho synonym pro DNS resolver, z nichž některá jsou uvedena níže. Všechny odkazují na stejnou věc.
- úplný resolver (na rozdíl od stub resolveru)
- Rekurzor DNS
- rekurzivní server DNS
- rekurzivní překladač
Uvědomte si také, že DNS server může také nazývat jmenný server. Příklady DNS resolveru jsou 8.8.8.8 (veřejný DNS server Google) a 1.1.1.1 (veřejný DNS server Cloudflare). OS na vašem PC má také resolver, i když se kvůli jeho omezené schopnosti nazývá stub resolver. Překladač stub je malý klient DNS v počítači koncového uživatele, který přijímá požadavky DNS z aplikací, jako je Firefox, a předává požadavky rekurzivnímu překladači. Téměř každý překladač dokáže ukládat odpovědi DNS do mezipaměti pro zlepšení výkonu, proto se jim také říká caching DNS server.
Proč provozovat svůj vlastní DNS Resolver
Normálně váš počítač nebo router používá DNS resolver vašeho ISP k dotazování na názvy domén, aby získal IP adresu. Spuštění vlastního místního překladače DNS může urychlit vyhledávání DNS, protože
- Místní překladač DNS pouze naslouchá vašim požadavkům DNS a neodpovídá na požadavky DNS jiných lidí, takže máte mnohem vyšší šanci, že získáte odpověď DNS přímo z mezipaměti překladače.
- Síťová latence mezi vaším počítačem a překladačem DNS je eliminována (téměř nulová), takže dotazy DNS lze odesílat na kořenové servery DNS rychleji.
Pokud provozujete poštovní server a používáte DNS blacklisty (DNSBL) k blokování spamu, doporučujeme vám spustit místní DNS resolver pro urychlení vyhledávání DNS. Pokud provozujete svůj vlastní VPN server na VPS (Virtual Private Server), je také dobrým zvykem nainstalovat DNS resolver na stejné VPS.
Pokud se vám nelíbí, že se vaše historie procházení internetu ukládá na server třetí strany, můžete také chtít spustit svůj vlastní překladač DNS.
Pokud vlastníte web a chcete, aby váš vlastní server DNS řešil překlad názvu vaší domény namísto použití serveru DNS vašeho registrátora domény, budete muset nastavit autoritativní server DNS, který se liší od překladače DNS. BIND může fungovat jako autoritativní DNS server a DNS resolver současně, ale je dobrým zvykem oddělit dvě role v různých boxech . Tento tutoriál ukazuje, jak nastavit místní překladač DNS, a protože bude použit na místním hostiteli/místní síti, není potřeba žádné šifrování (DNS přes TLS nebo DNS přes HTTPS). Nastavení serveru DoT nebo DoH bude probráno v budoucím článku.
Při instalaci softwaru do Debianu musíte mít oprávnění root. Můžete přidat sudo na začátek příkazu nebo použijte su -
příkaz pro přepnutí na uživatele root.
Nainstalujte BIND9 na Debian 10 Buster
BIND (Berkeley Internet Name Domain) je open-source serverový software DNS široce používaný na Unix/Linux díky své stabilitě a vysoké kvalitě. Původně jej vyvinula UC Berkeley a později v roce 1994 byl jeho vývoj převeden na Internet Systems Consortium, Inc (ISC).
Spusťte následující příkaz a nainstalujte BIND 9 na Debian 10 Buster z výchozího úložiště. BIND 9 je aktuální verze a BIND 10 je mrtvý projekt.
sudo apt update sudo apt install bind9 bind9utils bind9-doc bind9-host dnsutils
Zkontrolujte informace o verzi.
sudo named -v
Ukázkový výstup:
BIND 9.11.5-P4-5.1-Debian (Extended Support Version) <id:998753c>
Chcete-li zkontrolovat číslo verze a možnosti sestavení, spusťte
sudo named -V
Ve výchozím nastavení se BIND automaticky spustí po instalaci. Jeho stav můžete zkontrolovat pomocí:
systemctl status bind9
Tip:Pokud se výše uvedený příkaz okamžitě neukončí, stiskněte Q.
Pokud neběží, spusťte jej pomocí:
sudo systemctl start bind9
A povolit automatické spuštění při spouštění:
sudo systemctl enable bind9
Server BIND poběží jako bind
user, který je vytvořen během instalace a naslouchá na TCP a UDP portu 53, jak můžete vidět spuštěním následujícího příkazu:
sudo netstat -lnptu | grep named
DNS dotazy se obvykle odesílají na UDP port 53. TCP port 53 je pro odpovědi o velikosti větší než 512 bajtů.
Démon BIND se nazývá named . (Démon je část softwaru, která běží na pozadí.) named
binární se instaluje pomocí bind9
balíček a je tu další důležitá binární hodnota:rndc
, vzdálený řadič démona, který je nainstalován pomocí bind9utils
balík. rndc
binární se používá k opětovnému načtení/zastavení a ovládání dalších aspektů démona BIND. Komunikace probíhá přes TCP port 953.
Můžeme například zkontrolovat stav jmenného serveru BIND.
sudo rndc status
Konfigurace pro místní překladač DNS
/etc/bind/
je adresář, který obsahuje konfigurace pro BIND.
- named.conf :primární konfigurační soubor, který obsahuje konfigurace tří dalších souborů.
- db.127 :localhost soubor zóny reverzního mapování IPv4.
- db.local :localhost forwarding IPv4 and IPv6 maping zone file.
- db.empty :prázdný soubor zóny
Balíček bind9 na Debianu 10 se nedodává s db.root
nyní používá kořenový soubor hints na /usr/share/dns/root.hints
. Kořenové rady soubor je používán překladači DNS k dotazování kořenových serverů DNS. Existuje 13 skupin kořenových serverů DNS z a.root-servers.net
na m.root-servers.net
.
Server BIND9 na Debianu poskytuje rekurzivní službu pouze pro localhost a klienty lokální sítě. Vnější dotazy budou zamítnuty. Nemusíte tedy upravovat konfigurační soubory. Abyste se seznámili s konfiguracemi BIND 9, ukážu vám, jak službu rekurze přesto povolit.
Hlavní konfigurační soubor BIND /etc/bind/named.conf
získává nastavení ze 3 dalších souborů.
- /etc/bind/named.conf.options
- /etc/bind/named.conf.local
- /etc/bind/named.conf.default-zones
Chcete-li povolit službu rekurze, upravte první soubor.
sudo nano /etc/bind/named.conf.options
V options
doložku, přidejte následující řádky. Nahraďte IP adresy v allow-recursion
výpis s vašimi vlastními adresami místní sítě.
// hide version number from clients for security reasons. version "not currently available"; // optional - BIND default behavior is recursion recursion yes; // provide recursion service to trusted clients only allow-recursion { 127.0.0.1; 192.168.0.0/24; 10.10.10.0/24; }; // enable the query log querylog yes;
Uložte a zavřete soubor. Poté otestujte syntaxi konfiguračního souboru.
sudo named-checkconf
Pokud je test úspěšný (indikováno tichým výstupem), restartujte BIND9.
sudo systemctl restart bind9
Pokud máte na serveru BIND spuštěnou bránu firewall, musíte otevřít port 53, aby klienti sítě LAN mohli odesílat dotazy DNS. Pokud používáte firewall UFW, můžete spustit následující příkaz.
sudo ufw allow in from 192.168.0.0/24 to any port 53
Tím se otevře port TCP a UDP 53 do privátní sítě 192.168.0.0/24. Potom z jiného počítače ve stejné síti LAN můžeme spustit následující příkaz k dotazu na záznam A google.com. Nahraďte 192.168.0.102 IP adresou vašeho BIND resolveru.
dig A google.com @192.168.0.102
Nyní na překladači BIND zkontrolujte protokol dotazů pomocí následujícího příkazu.
sudo journalctl -eu bind9
Zobrazí se nejnovější zpráva protokolu servisní jednotky bind9. V protokolu jsem našel následující řádek, který označuje, že dotaz DNS na záznam A google.com byl přijat z portu 57806 adresy IP 192.168.0.103.
named[1162]: client @0x7f4d2406f0f0 192.168.0.103#57806 (google.com): query: google.com IN A +E(0)K (192.168.0.102)
Nastavení výchozího DNS Resolveru na Debian 10 Buster Server
Na serveru BIND musíme nastavit 127.0.0.1 jako výchozí DNS resolver. Aktuální překladač DNS na Debianu 10 můžete zkontrolovat pomocí následujícího příkazu.
cat /etc/resolv.conf
Ukázkový výstup:
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8) # DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN nameserver 2001:19f0:300:1704::6 nameserver 108.61.10.10
Balíček bind9 na Debianu 10 se dodává se servisní jednotkou Systemd bind9-resolvconf.service
, což nám pomůže nastavit BIND jako výchozí DNS resolver na serveru Debian. Ve výchozím nastavení je tato služba zakázána, musíme ji spustit a povolit automatické spouštění při spouštění.
sudo systemctl start bind9-resolvconf sudo systemctl enable bind9-resolvconf
Nyní můžete zkontrolovat obsah /etc/resolv.conf
znovu. Jak můžete vidět, 127.0.0.1 (BIND) je nyní výchozím DNS resolverem na Debian 10 Buster.
Pokud váš DNS resolver není 127.0.0.1, je možné, že váš systém nemá resolvconf
binární, což způsobí bind9-resolvconf
služba selhat. Musíte nainstalovat resolvconf
balíček a restartujte službu.
sudo apt install resolvconf sudo systemctl restart bind9-resolvconf
Nastavení výchozího překladače DNS na klientských počítačích
Nyní můžete nakonfigurovat další výpočty v síti LAN tak, aby používaly server BIND jako překladač DNS. U počítačů se systémem Windows a MacOS můžete vyhledávat na Googlu a zjistit, jak nastavit výchozí překladače DNS. Zde vám ukážu, jak nastavit DNS resolver na stolních počítačích se systémem Linux. Následující metoda funguje na jakékoli distribuci Linuxu, která používá NetworkManager.
Klikněte na ikonu Network Manager na ploše Linuxu a vyhledejte Edit connections
. (U některých distribucí Linuxu musíte kliknout pravým tlačítkem myši na Network Manager.)
Poté vyberte aktuální připojení a kliknutím na ikonu ozubeného kolečka toto připojení upravte.
Vyberte kartu Nastavení IPv4, změňte metodu z Automatic(DHCP)
na Automatic(DHCP) addresses only
, což zabrání vašemu systému Ubuntu získat adresu serveru DNS z vašeho routeru. Poté zadejte server DNS. Zde zadám IP adresu BIND serveru v mé LAN.
Uložte změny. Poté restartujte NetworkManager, aby se změny projevily.
sudo systemctl restart NetworkManager
Jakmile budete znovu připojeni, klikněte znovu na ikonu Network Manager a vyberte connection information
. Můžete vidět, že váš stolní počítač se systémem Linux nyní používá váš server DNS BIND.
Jak deaktivovat IPv6 v BIND
Pokud ve své síti nepoužíváte IPv6, pak je dobré vypnout IPv6 v BIND, jinak bude v protokolu BIND spousta chyb o IPv6, jak je uvedeno níže.
network unreachable resolving 'mirrors.fedoraproject.org/A/IN': 2001:4178:2:1269:dead:beef:cafe:fed5#53 network unreachable resolving 'mirrors.fedoraproject.org/AAAA/IN': 2001:4178:2:1269:dead:beef:cafe:fed5#53 network unreachable resolving 'mirrors.fedoraproject.org/A/IN': 2610:28:3090:3001:dead:beef:cafe:fed5#53 network unreachable resolving 'mirrors.fedoraproject.org/AAAA/IN': 2610:28:3090:3001:dead:beef:cafe:fed5#53
Chcete-li zakázat IPv6 v BIND na Ubuntu, jednoduše otevřete /etc/default/bind9 soubor
sudo nano /etc/default/bind9
Přidejte -4
na MOŽNOSTI.
OPTIONS="-u bind -4"
Uložte a zavřete soubor. Poté restartujte BIND a máte hotovo.
sudo systemctl restart bind9
BIND SERVFAIL
Pokud váš překladač BIND nemůže odpovídat na dotazy DNS (SERVFAIL) a v protokolu BIND vidíte následující řádek.
dnssec: warning: managed-keys-zone: Unable to fetch DNSKEY set '.': timed out
Je to pravděpodobně proto, že váš server nemá funkční připojení IPv6. Stalo se to jednomu z mých serverů. Myslel jsem, že konektivita IPv6 funguje jako obvykle, ale náhle se přerušila z důvodů, které jsem nevěděl. Jakmile jsem zakázal IPv6 v BIND, překlad DNS opět funguje.
Automatický restart BIND
Pokud je z jakéhokoli důvodu váš proces Bind zabit, musíte jej restartovat spuštěním následujícího příkazu.
sudo systemctl restart bind9
Místo ručního psaní tohoto příkazu můžeme provést automatické restartování vazby úpravou named.service
systémovou servisní jednotku. Abychom přepsali výchozí konfiguraci služby systemd, vytvoříme samostatný adresář.
sudo mkdir -p /etc/systemd/system/bind9.service.d/
Poté vytvořte soubor v tomto adresáři.
sudo nano /etc/systemd/system/bind9.service.d/restart.conf
Přidejte do souboru následující řádky, což způsobí, že se Bind automaticky restartuje 5 sekund po zjištění selhání.
[Service] Restart=always RestartSec=5s
Uložte a zavřete soubor. Poté znovu načtěte systemd.
sudo systemctl daemon-reload
Chcete-li zkontrolovat, zda by to fungovalo, zabijte Bind pomocí:
sudo pkill named
Poté zkontrolujte stav vazby. Zjistíte, že Bind se automaticky restartuje.
systemctl status bind9
BIND max-cache-size
BIND může ukládat výsledky DNS do mezipaměti na serveru, aby urychlil vyhledávání DNS pro klienty. BIND předpokládá, že používáte vyhrazený překladač DNS, tj. na stejném hostiteli neběží žádné jiné webové služby, takže výchozí velikost mezipaměti (definovaná pomocí max-cache-size
) je nastaveno na 90 % celkové paměti RAM pro dosažení nejlepšího výkonu. V protokolu BIND můžete vidět řádek jako níže (sudo journalctl -eu bind9
), když se spustí BIND.
none:100: 'max-cache-size 90%' - setting to 7165MB (out of 7961MB)
Pamatujte, že BIND nevyužije 90 % vaší RAM okamžitě. Pokud existuje pouze několik požadavků DNS, BIND používá pouze malé množství paměti RAM, protože není mnoho výsledků DNS k ukládání do mezipaměti. Pokud existuje mnoho požadavků DNS, použije se k uložení mezipaměti DNS mnoho paměti RAM.
Pokud je vaše RAM omezená, možná nebudete chtít, aby BIND používal 90 % vaší RAM pro mezipaměť. Upravte konfigurační soubor BIND /etc/bind/named.conf.options
.
sudo nano /etc/bind/named.conf.options
Přidejte následující direktivu do options
doložka. Změňte 50 % na preferovanou hodnotu.
max-cache-size 50%;
Restartujte BIND, aby se změna projevila.
sudo systemctl restart bind9
Závěr
Doufám, že vám tento návod pomohl nastavit místní DNS resolver na Debian 10 Buster s BIND9. Jako vždy, pokud vám tento příspěvek přišel užitečný, přihlaste se k odběru našeho bezplatného zpravodaje, kde získáte další tipy a triky. Opatruj se 🙂