Tento tutoriál vám ukáže, jak nastavit místní překladač DNS na Ubuntu 20.04 s Unbound . Překladač DNS je znám pod mnoha názvy, z nichž některé jsou uvedeny níže. Všechny odkazují na stejnou věc.
- úplný resolver (na rozdíl od stub resolveru)
- rekurzivní server DNS
- rekurzivní jmenný server
- rekurzivní překladač
- Rekurzor DNS
Příklady DNS resolveru jsou 8.8.8.8
(veřejný server DNS společnosti Google) a 1.1.1.1
(Veřejný DNS server Cloudflare). OS na vašem počítači má také resolver, i když se kvůli jeho omezené schopnosti nazývá stub resolver. Sub resolver 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á ukládání DNS serveru do mezipaměti .
Proč provozovat svůj vlastní DNS Resolver
Váš počítač, směrovač nebo server obvykle používá k dotazování na názvy DNS překladač DNS vašeho ISP, tak proč spouštět místní překladač DNS?
- Může to urychlit vyhledávání DNS, protože místní překladač DNS poslouchá pouze vaše požadavky DNS a neodpovídá na požadavky DNS jiných lidí, takže máte mnohem větší šanci získat odpovědi 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 k blokování spamu používáte černé listiny DNS (DNSBL), měli byste spustit svůj vlastní překladač DNS, protože některé černé listiny DNS, jako je URIBL, odmítají požadavky od veřejných překladačů DNS.
- Pokud provozujete svůj vlastní server VPN na VPS (virtuálním privátním serveru), je také dobrým zvykem nainstalovat na stejné VPS překladač DNS.
- Pokud se vám nelíbí, že se vaše historie procházení internetu ukládá na serveru třetí strany, můžete také chtít spustit svůj vlastní překladač DNS.
Nápověda :Local
neznamená váš domácí počítač. Spíše to znamená, že DNS resolver běží na stejném boxu nebo stejné síti jako DNS klient. Unbound DNS resolver si můžete nainstalovat na svůj domácí počítač. Je to místní na vašem domácím počítači. Unbound DNS resolver můžete také nainstalovat na cloudový server a je lokální na cloudovém serveru.
Nevázaný DNS Resolver
Unbound je open source ověřovací překladač DNS, což znamená, že může provádět ověření DNSSEC, aby se zajistilo, že odpověď DNS je autentická. Nevázané funkce:
- Lehký a extrémně rychlý, protože neposkytuje plnohodnotnou autoritativní funkci serveru DNS. Na jednom z mých serverů využívá Unbound čtvrtinu paměti požadované BIND9.
- Mezipaměť odpovědí DNS
- Předběžné načtení:Načte data, jejichž platnost brzy vyprší, aby klient nezískal špičku v latenci, když je třeba znovu provést vyhledávání, když vyprší platnost TTL u dat.
- DNS přes TLS
- DNS přes HTTPS
- Minimalizace názvu dotazu:Odesílejte minimální množství informací na upstream servery, abyste zvýšili soukromí.
- Agresivní používání mezipaměti ověřené DNSSEC
- Zóny oprávnění pro místní kopii kořenové zóny
- DNS64
- DNSCrypt
- Ověření DNSSEC:Ve výchozím nastavení je na Ubuntu povoleno 🙂
- Podsíť klienta EDNS
- Lze spustit jako DNS forwarder.
- Podporuje místní data a zónu zásad odezvy, která poskytuje vlastní odpověď pro určité názvy domén.
Krok 1:Nainstalujte Unbound DNS Resolver na Ubuntu 20.04
Spusťte následující příkaz a nainstalujte Unbound na Ubuntu 20.04 z výchozího úložiště.
sudo apt update sudo apt install unbound
Zkontrolujte verzi.
unbound -V
Ukázkový výstup:
Ve výchozím nastavení se Unbound automaticky spustí po instalaci. Jeho stav zkontrolujete pomocí:
systemctl status unbound
Pokud neběží, spusťte jej pomocí:
sudo systemctl start unbound
A povolte automatické spouštění při spouštění:
sudo systemctl enable unbound
Poznámka :Pokud na portu UDP 53 naslouchá jiná služba, nemusí být možné spustit nevázání. Před zahájením nevázání musíte tuto službu zastavit. Chcete-li zjistit, která služba již používá port UDP 53, spusťte následující příkaz.
sudo ss -lnptu | grep 53
Pokud jste již dříve nainstalovali resolver BIND9, musíte jej zastavit a deaktivovat spuštěním následujícího příkazu, aby Unbound mohl naslouchat UDP portu 53. Ve výchozím nastavení Unbound naslouchá na 127.0.0.1:53
a [::1]:53
sudo systemctl disable named --now
Krok 2:Nakonfigurujte nevázané
Hlavní konfigurační soubor pro Unbound je /etc/unbound/unbound.conf
. Nevázaný server na Ubuntu poskytuje rekurzivní službu pouze pro localhost. Vnější dotazy budou zamítnuty.
Upravte konfigurační soubor.
sudo nano /etc/unbound/unbound.conf
Ve výchozím nastavení je v tomto souboru pouze jeden konfigurační řádek.
include: "/etc/unbound/unbound.conf.d/*.conf"
Toto má zahrnout konfigurační soubory pod /etc/unbound/unbound.conf.d/
adresář, který obsahuje dva konfigurační soubory.
qname-minimisation.conf
:umožňuje minimalizaci QNAME.root-auto-trust-anchor-file.conf
:Povolí ověření DNSSEC.
Nemusíte se těchto dvou souborů dotýkat. Jen vězte, že prospějí vašemu rozlišení DNS. Nyní musíme přidat naše vlastní konfigurace. Můžete se podívat na ukázkový konfigurační soubor /usr/share/doc/unbound/examples/unbound.conf
se dozvíte, jak nakonfigurovat Unbound. Pro vaše pohodlí jsem pro vás sestavil minimální konfiguraci. Přidejte následující řádky do /etc/unbound/unbound.conf
soubor.
server: # the working directory. directory: "/etc/unbound" # run as the unbound user username: unbound verbosity: 2 # uncomment and increase to get more logging. # listen on all interfaces, answer queries from the local subnet. interface: 0.0.0.0 # comment out the following line if your system doesn't have IPv6. interface: ::0 # perform prefetching of almost expired DNS cache entries. prefetch: yes access-control: 10.0.0.0/8 allow access-control: 127.0.0.1/24 allow access-control: 2001:DB8::/64 allow # hide server info from clients hide-identity: yes hide-version: yes remote-control: # Enable remote control with unbound-control(8) here. control-enable: no # what interfaces are listened to for remote control. # give 0.0.0.0 and ::0 to listen to all interfaces. # set to an absolute path to use a unix local name pipe, certificates # are not used for that, so key and cert files need not be present. control-interface: 127.0.0.1 # control-interface: ::1 # port number for remote control operations. control-port: 8953
Výše uvedené konfigurace jsou samozřejmé. Možná budete muset zvážit dvě věci.
(1) Ve výchozím nastavení Ubuntu spouští systemd-resolved stub resolver, který naslouchá na 127.0.0.53:53
. Musíte to zastavit, aby se unbound mohl vázat na 0.0.0.0:53
.
sudo systemctl disable systemd-resolved --now
(2) Pokud rozsah vaší místní sítě není 10.0.0.0/8
, musíte to změnit, například
access-control: 192.168.0.0/24 allow
takže unbound bude přijímat dotazy DNS ze sítě 192.168.0.0/24.
Uložte a zavřete soubor. Poté restartujte Unbound.
sudo systemctl restart unbound
Zkontrolujte stav. Ujistěte se, že běží.
systemctl status unbound
Pokud máte UFW firewall spuštěný na Unbound serveru, musíte otevřít port 53, aby klienti LAN mohli odesílat dotazy DNS.
sudo ufw allow in from 10.0.0.0/8 to any port 53
Tím se otevře port TCP a UDP 53 do privátní sítě 10.0.0.0/8.
Krok 3:Nastavení výchozího překladače DNS na serveru Ubuntu 20.04
Musíme zajistit, aby server Ubuntu 20.04 používal jako DNS resolver 127.0.0.1, takže unbound bude odpovídat na dotazy DNS. Nevázaný balíček na Ubuntu se dodává se službou systemd unbound-resolvconf.service
to nám má pomoci to splnit. Zjistil jsem však, že to nebude fungovat.
Místo toho můžete vytvořit vlastní unbound-resolvconf.service
soubor.
sudo nano /etc/systemd/system/unbound-resolvconf.service
Přidejte do tohoto souboru následující řádky.
[Unit] Description=local unbound via resolvconf After=unbound.service ConditionFileIsExecutable=/sbin/resolvconf [Service] Type=oneshot RemainAfterExit=yes ExecStart=/bin/sh -c 'echo nameserver 127.0.0.1 | /sbin/resolvconf -a lo.unbound' ExecStop=/sbin/resolvconf -d lo.unbound [Install] WantedBy=unbound.service
Uložte a zavřete tento soubor. Poté znovu načtěte systemd.
sudo systemctl daemon-reload
Ujistěte se, že váš systém má resolvconf
binární.
sudo apt install openresolv
Dále restartujte tuto službu.
sudo systemctl restart unbound-resolvconf.service
Nyní zkontrolujte obsah /etc/resolv.conf
.
cat /etc/resolv.conf
Jak můžete vidět, 127.0.0.1 (Unbound) je výchozím DNS resolverem.
Odstraňování problémů
Pokud v /etc/resolv.conf
vidíte jinou hodnotu soubor, to znamená, že Unbound stále není váš výchozí překladač DNS. Upozorňujeme, že někteří poskytovatelé hostingu, jako je Linode, mohou k automatickému generování souboru /etc/resolv.conf
použít síťového pomocníka. soubor. Chcete-li změnit výchozí překladač DNS, musíte vypnout tohoto síťového pomocníka v ovládacím panelu hostitele.
Pokud tato metoda stále nefunguje, možná je to způsobeno tím, že /etc/resolv.conf
soubor na vašem serveru Ubuntu není symbolický odkaz na /run/resolvconf/resolv.conf
. Musíte smazat /etc/resolv.conf
soubor a vytvořte symbolický odkaz.
sudo rm /etc/resolv.conf sudo ln -s /run/resolvconf/resolv.conf /etc/resolv.conf
Pokud máte klienta WireGuard VPN spuštěného na serveru Ubuntu, musíte použít následující nastavení DNS v konfiguračním souboru klienta WireGuard.
DNS = 127.0.0.1
Poté restartujte klienta WireGuard VPN.
Krok 4:Nastavení výchozího překladače DNS na klientských počítačích
Na ploše Ubuntu můžete podle výše uvedených pokynů nastavit výchozí překladač DNS, ale nezapomeňte nahradit 127.0.0.1 IP adresou nevázaného serveru. Kroky nastavení výchozího překladače DNS v systémech MacOS a Windows lze nalézt na internetu.
Jak deaktivovat IPv6 v Unbound
Pokud váš server nemá konektivitu IPv6, je dobré vypnout IPv6 v Unbound, abyste omezili zbytečné vyhledávání DNS přes IPv6. Chcete-li zakázat IPv6 v Unbound na Ubuntu, jednoduše přidejte následující řádek na server:
klauzule v /etc/unbound/unbound.conf
soubor.
do-ip6: no
Uložte a zavřete soubor. Poté restartujte Unbound.
sudo systemctl restart unbound
Nevázaný DNSSEC
DNSSEC je způsob, jak ověřit, že s odpovědí DNS nebude manipulováno. Ve výchozím nastavení je povoleno, pokud nainstalujete Unbound z výchozího úložiště Ubuntu. Udělejme rychlý DNS dotaz na serveru Ubuntu 20.04.
dig A linuxbabe.com
Můžete vidět ad
příznak v odpovědi DNS. AD znamená autentická data.
Všimněte si, že název domény musí povolit DNSSEC, aby ověření fungovalo. Pokud příznak reklamy nevidíte, může to znamenat, že název domény neaktivoval DNSSEC.
Místní data
Funkci místních dat v Unbound můžete použít k poskytování místních interních názvů hostitelů nebo k přepsání veřejných záznamů DNS.
Pokud například nainstaluji na svůj blogový webový server nevázané, mohu do server:
klauzule v konfiguračních souborech Unbound, takže doména se vždy převede na localhost.
local-data: "linuxbabe.com A 127.0.0.1" local-data: "www.linuxbabe.com A 127.0.0.1" local-data: "linuxbabe.com AAAA ::1" local-data: "www.linuxbabe.com AAAA ::1"
Nebyly dostupné žádné servery
Pokud se při použití dig
zobrazí následující chyba příkaz na klientských počítačích
;; connection timed out; no servers could be reached
Je možné, že vaše pravidlo brány firewall je nesprávné nebo neběží Unbound resolver.
Závěr
Doufám, že vám tento návod pomohl nastavit místní DNS resolver na Ubuntu 20.04 s Unbound. Protože bude použit na localhost/lokální síti, není potřeba žádné šifrování (DNS přes TLS nebo DNS přes HTTPS). Chcete-li nastavit resolver DoT nebo DoH resolver, přečtěte si následující návody.
- Jak snadno nastavit DNS přes TLS Resolver s Nginx na Ubuntu
- Nastavte DNS over HTTPS (DoH) Resolver na Ubuntu pomocí DNSdist
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 🙂