GNU/Linux >> Znalost Linux >  >> Ubuntu

Nastavte Unbound DNS Resolver na serveru Ubuntu 20.04

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 🙂


Ubuntu
  1. Jak nainstalovat Unbound DNS resolver na Ubuntu 22.04

  2. Jak nastavit TeamSpeak Server na Ubuntu 16.04

  3. Jak nastavit Unbound DNS Resolver na Ubuntu 20.04

  1. Jak nastavit a nainstalovat Squid Proxy Server na Ubuntu 18.04

  2. Jak nastavit DNS Nameserver na Ubuntu 20.04

  3. Jak nastavit WireGuard na Ubuntu 22.04

  1. Jak nastavit server OpenVPN na Ubuntu 18.04

  2. Jak nastavit DNS Nameservery na Ubuntu 18.04

  3. Jak nastavit bloky serveru Nginx na Ubuntu 20.04