GNU/Linux >> Znalost Linux >  >> Ubuntu

Nastavte místní překladač DNS na Ubuntu 18.04, 16.04 s BIND9

Tento tutoriál vám ukáže, jak nastavit místní překladač DNS na Ubuntu 18.04, 16.04 pomocí široce používaného softwaru DNS BIND9. 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)
  • Rekurzor DNS
  • rekurzivní server DNS
  • rekurzivní překladač

Uvědomte si také, že DNS server může být také nazýván jmenným serverem. Příklady DNS resolverů 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 na počítači koncového uživatele, který přijímá požadavky DNS z aplikací, jako je Firefox, a přeposílá 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í lokální DNS Resolver

Normálně váš počítač nebo router používá DNS resolver vašeho ISP k dotazování na DNS jména, tak proč spouštět svůj vlastní DNS resolver?

  • 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. Rovněž je eliminována síťová latence mezi vaším počítačem a překladačem DNS (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.

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 návod ukazuje, jak nastavit lokální DNS resolver, a protože bude použit na localhost/místní síti, není potřeba žádné šifrování (DNS přes TLS nebo DNS přes HTTPS). Nastavení překladače DoT nebo serveru DoH bude probráno v budoucím článku.

Nápověda :Local neznamená váš domácí počítač. Spíše to znamená, že DNS resolver běží na stejném boxu jako DNS klient. BIND 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. Překladač DNS BIND můžete nainstalovat na cloudový server a je lokální na cloudovém serveru.

Nastavte místní překladač DNS na Ubuntu 18.04, 16.04 s BIND9

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 Ubuntu 18.04, 16.04 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 verzi.

named -v

Ukázkový výstup:

BIND 9.11.3-1ubuntu1.3-Ubuntu (Extended Support Version) <id:a375815>

Chcete-li zkontrolovat číslo verze a možnosti sestavení, spusťte

named -V

Ve výchozím nastavení se BIND automaticky spustí po instalaci. Jeho stav zkontrolujete pomocí:

systemctl status bind9

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 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.root :kořenové rady soubor používaný 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 .
  • 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

Server BIND9 na Ubuntu poskytuje rekurzivní službu pouze pro localhost a klienty místní 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.

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 z 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 překladače DNS na serveru Ubuntu 18.04

Systemd-resolved poskytuje stub resolver na Ubuntu 18.04. Jak bylo zmíněno na začátku tohoto článku, stub 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 resolveru.

Pomocí tohoto příkazu lze zobrazit výchozí rekurzivní překladač.

systemd-resolve --status

Jak můžete vidět, BIND není výchozí. Pokud na serveru BIND spustíte následující příkaz,

dig A facebook.com

Tento DNS dotaz nelze najít v protokolu BIND. Místo toho musíte explicitně říci dig, aby použil BIND.

dig A facebook.com @127.0.0.1

Chcete-li nastavit BIND jako výchozí překladač, otevřete konfigurační soubor systemd-resolved.

sudo nano /etc/systemd/resolved.conf

V [Resolve] oddílu, přidejte následující řádek. Tím nastavíte globální server DNS pro váš server.

DNS=127.0.0.1

Uložte a zavřete soubor. Poté restartujte službu systemd-resolved.

sudo systemctl restart systemd-resolved

Nyní spusťte následující příkaz a zkontrolujte výchozí překladač DNS.

systemd-resolve --status

Nyní proveďte DNS dotaz bez zadání 127.0.0.1 .

dig A facebook.com

Dotaz DNS uvidíte v protokolu BIND, což znamená, že BIND je nyní výchozí rekurzivní překladač. Pokud v protokolu BIND nevidíte žádné dotazy, možná budete muset nakonfigurovat server DNS pro jednotlivé odkazy.

Konfigurace serveru DNS Per-Link na Ubuntu 18.04

Můžete také nakonfigurovat server DNS pro jednotlivé odkazy, který přepíše globální server DNS. Existují dva způsoby konfigurace serverů DNS pro jednotlivé odkazy:

  • přes systemd-resolved
  • přes netplan

vyřešeno systemd

Seznam souborů pod /etc/systemd/network/ adresář.

ls /etc/systemd/network/

Ukázkový výstup:

05-eth0.network  99-default.link

Jak vidíte, mám dva konfigurační soubory odkazu. 05-eth0.network soubor je pro mé hlavní síťové rozhraní, takže tento soubor upravuji.

sudo nano /etc/systemd/network/05-eth0.network

Váš název souboru se může lišit. Pokud v tomto adresáři nejsou žádné soubory, pak vaše konfigurace DNS pro jednotlivé odkazy není řízena systemd-resolved .

Zakomentujte výchozí záznam DNS a domény a přidejte svůj vlastní záznam DNS.

DNS=127.0.0.1

Uložte a zavřete soubor. Poté restartujte systemd-resolved a systemd-networkd služba.

sudo systemctl restart systemd-resolved systemd-networkd

netplan

Některé servery Ubuntu mohou používat netplan ke konfiguraci sítě pro jednotlivé odkazy. V tomto případě musíte nakonfigurovat DNS server v .yaml soubor pod /etc/netplan/ adresář. Seznam souborů v tomto adresáři.

ls /etc/netplan/

Ukázkový výstup:

01-netcfg.yaml

Upravuji tedy tento soubor.

sudo nano /etc/netplan/01-netcfg.yaml

Nastavte adresu DNS serveru v nameservers sekce.

      nameservers:
        search: [ invalid ]
        addresses:
                - 127.0.0.1

Uložte a zavřete soubor. Poté aplikujte změnu.

sudo netplan apply

Poznámka: Pokud se zobrazí následující chybová zpráva, netplan nemůže zpracovat konfigurační soubor.

Invalid YAML at /etc/netplan/01-netcfg.yaml  inconsistent indentation

Měli byste opravit nekonzistentní odsazení a spustit sudo netplan apply příkaz znovu.

Nastavení výchozího překladače DNS na serveru Ubuntu 16.04

Ubuntu 16.04 používá resolvconf program pro správu překladače DNS v /etc/resolv.conf soubor. Nainstalujte resolvconf balíček.

sudo apt install resolvconf

Chcete-li nastavit BIND jako výchozí překladač na serveru Ubuntu 16.04, musíte upravit /etc/resolvconf/resolv.conf.d/head a přidejte „nameserver 127.0.0.1 ” do tohoto souboru, což lze provést spuštěním následujícího příkazu:

echo "nameserver 127.0.0.1" | sudo tee -a /etc/resolvconf/resolv.conf.d/head

Překladač definovaný v tomto souboru bude vždy prvním překladačem DNS bez ohledu na to, co se děje. Nyní restartujte resolvconf služba.

sudo systemctl restart resolvconf

Nyní můžete zkontrolovat obsah /etc/resolv.conf .

cat /etc/resolv.conf

Jak můžete vidět, 127.0.0.1 je 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.

Aktualizovat :Později jsem si všiml, že balíček BIND na Ubuntu 16.04 přichází se servisní jednotkou Systemd bind9-resolvconf.service , což nám pomůže nastavit výchozí překladač DNS na serveru Ubuntu, takže to nemusíte dělat ručně, jak je uvedeno výše. 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

Ujistěte se, že resolvconf balíček je nainstalován. Stačí dva řádky příkazů a BIND bude nastaven jako výchozí DNS resolver na vašem serveru Ubuntu 16.04.

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 serveru BIND. Kroky nastavení výchozího překladače DNS v systémech MacOS a Windows lze nalézt na internetu.

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“ do OPTIONS.

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.

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 Ubuntu 18.04, 16.04 s BIND9. Jako vždy, pokud pro vás byl tento příspěvek 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 nastavit Local DNS Resolver pomocí Dnsmasq na Ubuntu 20.04

  2. Jak nastavit bránu firewall s UFW na Ubuntu 16.04

  3. Jak nastavit Unbound DNS Resolver na Ubuntu 20.04

  1. Jak nastavit bránu firewall s UFW na Ubuntu 18.04

  2. Jak nastavit DNS Nameserver na Ubuntu 20.04

  3. Prohledejte místní síť pomocí arp-scan na ubuntu

  1. Jak nastavit DNS Nameservery na Ubuntu 18.04

  2. Jak nastavit bránu firewall s UFW na Ubuntu 20.04

  3. Jak nakonfigurovat server DNS na Ubuntu 18.04 / Ubuntu 16.04