GNU/Linux >> Znalost Linux >  >> Debian

Nastavte autoritativní server DNS BIND na Debian 10 Buster

Tento tutoriál vám ukáže, jak nastavit a spustit svůj vlastní autoritativní jmenný server na Debian 10 Buster s široce používaným softwarem BIND 9.

Poznámka :Tento tutoriál ukazuje metodu příkazového řádku. Pokud chcete upravovat záznamy DNS z webového grafického rozhraní, doporučuji nastavit autoritativní servery DNS pomocí Webmin, což je bezplatný ovládací panel serveru s otevřeným zdrojovým kódem.

Co je to autoritativní server DNS?

Pokud vlastníte název domény 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.

Autoritativní server DNS používají vlastníci názvů domén k ukládání záznamů DNS. Poskytuje autoritativní odpovědi na DNS resolvery (jako 8.8.8.8 nebo 1.1.1.1), které zjišťují DNS záznamy jménem koncových uživatelů na PC, smartphonu nebo tabletu.

O BIND

BIND (Berkeley Internet Name Domain) je open-source, flexibilní a plně vybavený DNS software š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).

BIND může fungovat jako autoritativní DNS server pro zónu a DNS resolver současně. Překladač DNS může být také nazýván rekurzivním jmenným serverem, protože provádí rekurzivní vyhledávání DNS pro koncové uživatele. Zastávat dvě role současně však není výhodné. Je dobrým zvykem oddělit dvě role na dvou různých počítačích.

V předchozím článku jsem vysvětlil kroky nastavení místního DNS resolveru na Debian 10 Buster. Tento tutoriál vám ukáže, jak nastavit BIND9 na Debian 10 Buster jako autoritativní server DNS se zakázanou rekurzí.

Předpoklady

Abyste mohli postupovat podle tohoto návodu, měli byste mít již zakoupené doménové jméno. Zaregistroval jsem své doménové jméno na NameCheap, protože cena je nízká a poskytují ochranu soukromí whois doživotně zdarma.

Potřebujete také dva servery. Jeden server je pro hlavní server DNS a druhý je pro podřízený server DNS. V ideálním případě by dva servery měly být na různých fyzických místech. Pokud je jeden server DNS offline, druhý server DNS může stále odpovídat na dotazy DNS na název vaší domény.

Každý server potřebuje pouze 512 MB RAM a zde jsou poskytovatelé hostingu, které doporučuji. Použil jsem je všechny.

  • Vultr:Začněte na 2,5 $ měsíčně. Je vyžadována kreditní karta. Můžete si vytvořit účet na Vultr přes můj odkaz na doporučení a získat kredit 50 $ zdarma.
  • DigitalOcean:Začíná na 5 $ měsíčně. Není vyžadována žádná kreditní karta. Můžete použít Paypal. Můžete si vytvořit účet na DigitalOcean přes můj odkaz na doporučení a získat kredit 50 $ zdarma.

Jakmile si zakoupíte dva servery, nainstalujte na ně Debian 10 a postupujte podle pokynů níže.

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.

Nastavte autoritativní server DNS na Debian 10 Buster s BIND9

Příkazy v této sekci musíte spouštět na obou serverech.

Přihlaste se na dva servery přes SSH a spusťte následující příkazy pro instalaci BIND 9 na server Debian 10 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

Zkontrolujte číslo verze.

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

named -V

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

systemctl status bind9

Výstup:

● bind9.service - BIND Domain Name Server
   Loaded: loaded (/lib/systemd/system/bind9.service; enabled; vendor preset: en
   Active: active (running) since Sun 2019-07-14 10:27:56 UTC; 4min 6s ago
     Docs: man:named(8)
 Main PID: 1481 (named)
    Tasks: 4 (limit: 1149)
   Memory: 13.7M
   CGroup: /system.slice/bind9.service
           └─1481 /usr/sbin/named -u bind

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

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

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

Server BIND9 na Debianu poskytuje rekurzivní službu pro localhost a klienty lokální sítě. Protože nastavujeme autoritativní server DNS, musíme deaktivovat rekurzi. Upravte /etc/bind/named.conf.options soubor.

sudo nano /etc/bind/named.conf.options

Přidejte následující řádky do klauzule options {…}.

 // hide version number from clients for security reasons.
 version "not currently available";

 // disable recursion on authoritative DNS server.
 recursion no;

 // enable the query log
 querylog yes;

 // disallow zone transfer
 allow-transfer { none; };

Technicky vzato, stačí přidat recursion no; zakázat rekurzi, ale je dobrým zvykem přidat další 3 direktivy. Uložte a zavřete soubor. Poté restartujte BIND.

sudo systemctl restart bind9

Konfigurace hlavního serveru DNS

Vyberte jeden ze dvou serverů jako hlavní server DNS. Pojmenujeme jej ns1.example.com .

Hlavní server DNS obsahuje hlavní kopii souboru zóny. Na tomto serveru se provádějí změny DNS záznamů. Doména může mít jednu nebo více zón DNS. Každá zóna DNS má soubor zóny, který obsahuje každý záznam DNS v této zóně. Pro jednoduchost tento článek předpokládá, že ke správě všech DNS záznamů pro název vaší domény chcete používat jedinou zónu DNS.

/etc/bind/named.conf.default-zones definuje kořenovou zónu a zónu localhost. Chcete-li přidat zónu pro název své domény, upravte /etc/bind/named.conf.local soubor.

sudo nano /etc/bind/named.conf.local

Přidejte do tohoto souboru následující řádky. Nahraďte example.com svým vlastním názvem domény. Nahraďte 12.34.56.78 IP adresou podřízeného DNS serveru.

zone "example.com" {
      type master;
      file "/etc/bind/db.example.com";
      allow-query { any; };
      allow-transfer { 12.34.56.78; };
};

Ve výše uvedené konfiguraci jsme vytvořili novou zónu s zone klauzule a uvedli jsme, že se jedná o hlavní zónu. Soubor zóny je /etc/bind/db.example.com , kam přidáme DNS záznamy. Zónový přenos bude povolen pouze pro podřízený DNS server.

Místo vytvoření souboru zóny od začátku můžeme použít soubor šablony zóny. Zkopírujte obsah db.empty do nového souboru.

sudo cp /etc/bind/db.empty /etc/bind/db.example.com

Soubor zóny může obsahovat 3 typy záznamů:

  • Komentáře :začíná středníkem (;)
  • Směrnice :začíná znakem dolaru ($)
  • Záznamy zdrojů :aka DNS záznamy

Soubor zóny se obvykle skládá z následujících typů záznamů DNS.

  • Záznam SOA (Start of Authority) :definuje klíčové charakteristiky zóny. Je to první záznam DNS v souboru zóny a je povinný.
  • Záznam NS (Name Server) :určuje, které servery se používají k ukládání záznamů DNS a odpovídání na dotazy DNS na název domény. V souboru zóny musí být alespoň dva záznamy NS.
  • Záznam MX (Mail Exchanger) :určuje, kteří hostitelé jsou zodpovědní za doručování e-mailů pro název domény.
  • Záznam (adresy) :Převádí názvy DNS na adresy IPv4.
  • AAAA (Quad A) záznam :Převádí názvy DNS na adresy IPv6.
  • Záznam CNAME (kanonický název) :Používá se k vytvoření aliasu pro název DNS.
  • Záznam TXT :SPF, DKIM, DMARC atd.

Nyní upravíme soubor zóny.

sudo nano /etc/bind/db.example.com

Ve výchozím nastavení to vypadá takto:

Místo toho to můžete změnit na toto.

Kde

  • $TTL direktiva definuje výchozí Time to Live hodnota pro zónu, což je doba, po kterou může být záznam DNS uložen do mezipaměti v překladači DNS. Tato směrnice je povinná. Čas je uveden v sekundách.
  • $ORIGIN směrnice definuje základní doménu.
  • Názvy domén musí končit tečkou (.), což je kořenová doména. Když název domény končí tečkou, jedná se o plně kvalifikovaný název domény (FQDN).
  • Symbol @ odkazuje na základní doménu.
  • IN je třída DNS. Zkratka znamená Internet. Jiné třídy DNS existují, ale používají se zřídka.

První záznam v souboru zóny je záznam SOA (Start of Authority). Tento záznam obsahuje následující informace:

  • Hlavní server DNS .
  • E-mailová adresa správce zóny . RFC 2142 doporučuje e-mailovou adresu [e-mail chráněný] . V souboru zóny má tato e-mailová adresa tento tvar:hostitel.example.com protože symbol @ má v souboru zóny zvláštní význam.
  • Sériové číslo zóny . Sériové číslo je způsob sledování změn v zóně podřízeným serverem DNS. Podle konvence má sériové číslo formát data:yyyymmddss , kde yyyy je čtyřmístné číslo roku, mm je měsíc, dd je den a ss je pořadové číslo dne. Při provádění změn v souboru zóny musíte aktualizovat sériové číslo.
  • Hodnota obnovení . Po dosažení obnovovací hodnoty se podřízený server DNS pokusí přečíst záznam SOA z hlavního serveru DNS. Pokud se sériové číslo zvýší, zahájí se přenos zóny.
  • Hodnota opakování . Definuje interval opakování v sekundách, pokud se podřízenému serveru DNS nepodaří připojit k hlavnímu serveru DNS.
  • Vypršení platnosti :Pokud se podřízenému serveru DNS po tuto dobu nedaří navázat kontakt s hlavním serverem DNS, podřízený server přestane odpovídat na dotazy DNS pro tuto zónu.
  • Záporné TTL mezipaměti :Definuje hodnotu doby do aktivace odpovědí DNS pro neexistující názvy DNS (NXDOMAIN).

Záznamy TXT jsou obvykle uzavřeny do dvojitých uvozovek. Pokud přidáte záznam DKIM, musíte hodnotu také uzavřít do závorek.

Uložte a zavřete soubor. Poté spusťte následující příkaz a zkontrolujte, zda v hlavním konfiguračním souboru nejsou syntaktické chyby. Tichý výstup znamená, že nebyly nalezeny žádné chyby.

sudo named-checkconf

Poté zkontrolujte syntaxi souborů zóny.

sudo named-checkzone example.com /etc/bind/db.example.com

Pokud jsou v souboru zóny syntaktické chyby, musíte je opravit, jinak se zóna nenačte. Následující zpráva označuje, že neexistují žádné syntaktické chyby.

zone example.com/IN: loaded serial 2019011503
OK

Poté restartujte BIND9.

sudo systemctl restart bind9

Pokud používáte nekomplikovaný firewall (UFW), otevřete TCP a UDP port 53.

sudo ufw allow 53/tcp

sudo ufw allow 53/udp

Pokud používáte přímo firewall iptables, spusťte následující příkaz.

sudo iptables -A INPUT -p tcp --dport 53 -j ACCEPT

sudo iptables -A INPUT -p udp --dport 53 -j ACCEPT

Konfigurace podřízeného serveru DNS

Nyní použijeme druhý server jako podřízený DNS server, který se bude jmenovat ns2.example.com .

Nejprve upravte named.conf.local soubor.

sudo nano /etc/bind/named.conf.local

Přidejte zónu jako níže. Nahraďte 12.34.56.78 IP adresou hlavního serveru DNS.

zone "example.com" {
        type slave;
        file "db.example.com";
        allow-query { any; };
        masters { 12.34.56.78; };
};

Ve výše uvedené konfiguraci jsme uvedli, že se jedná o podřízený server DNS pro example.com zóny a bude přijímat zónové přenosy pouze z hlavního serveru DNS.

Uložte a zavřete soubor. Poté spusťte následující příkaz a zkontrolujte, zda v hlavním konfiguračním souboru nejsou syntaktické chyby.

sudo named-checkconf

Pokud nejsou nalezeny žádné chyby, restartujte BIND9.

sudo systemctl restart bind9

Soubor zóny na podřízeném serveru DNS se načte z přenosu zóny, který se používá k synchronizaci změn záznamů DNS z hlavního serveru DNS na podřízený server DNS. Po restartu BIND9 se okamžitě spustí přenos zóny. Zkontrolujte protokol BIND9 pomocí následujícího příkazu.

sudo journalctl -eu bind9

Můžete vidět zprávy jako níže, které indikují, že přenos zóny byl úspěšný.

named[31518]: transfer of 'example.com/IN' from 12.34.56.78#53: Transfer completed: 1 messages, 16 records, 886 bytes, 0.004 secs (221500 bytes/sec)

Soubor zóny bude uložen jako /var/cache/bind/db.example.com na podřízeném serveru DNS.

Pokud používáte nekomplikovaný firewall (UFW), otevřete TCP a UDP port 53.

sudo ufw allow 53/tcp

sudo ufw allow 53/udp

Pokud používáte přímo firewall iptables, spusťte následující příkaz.

sudo iptables -A INPUT -p tcp --dport 53 -j ACCEPT

sudo iptables -A INPUT -p udp --dprot 53 -j ACCEPT

Další informace o Zone Transfer

Podřízený DNS server se znovu spojí s hlavním serverem, když je dosaženo doby aktualizace v záznamu SOA, a pokud je sériové číslo na hlavním serveru větší než na podřízeném, bude zahájen přenos zóny. Existují dva typy zónových přenosů:

  • Přenos plné zóny (AXFR):Přenese se úplná kopie souboru zóny.
  • Přírůstkový přenos zóny (IXFR):Přenášejí se pouze změněné záznamy DNS.

Oba typy přenosu zóny používají port TCP 53. Ve výchozím nastavení bude BIND na podřízeném serveru DNS požadovat přírůstkový přenos zóny a BIND na hlavním serveru DNS povolí přírůstkový přenos zóny pouze v případě, že je zóna dynamická.

Interval přenosu zóny je hlavním faktorem rychlosti šíření změn DNS záznamů. Místo čekání, až podřízený DNS server naváže kontakt, BIND master oznámí podřízenému, když jsou v zóně provedeny změny. To může výrazně zkrátit dobu šíření změn zón do Internetu.

Reverzní zóna

Reverzní zóna obsahuje záznam PTR, který mapuje IP adresu na název DNS. Je to protějšek DNS A záznamu. Záznam PTR je často nezbytný pro to, aby poštovní servery prošly spamovými filtry. Tento záznam nepatří do domény. Musíte vytvořit záznam PTR na ovládacím panelu poskytovatele hostingu nebo se zeptat svého ISP, takže se nebudu zabývat vytvářením reverzních zón v BIND.

Změnit záznam NS a vytvořit záznam lepidla

Nyní musíte přejít na web svého registrátora domény a změnit záznam NS pro vaši doménu, aby internet věděl, že nyní používáte svůj vlastní server DNS. Normálně používáte názvy hostitelů v záznamu NS jako ns1.example.com a ns2.example.com .

name server 1:     ns1.example.com
name server 2:     ns2.example.com

Pokud máte název domény example.com a používáte subdoménu pro autoritativní servery DNS (ns1.example.com a ns2.example.com ), pak musíte také vytvořit spojovací záznam u svého registrátora domény, aby internet mohl znát IP adresu vašeho DNS serveru. Spojovací záznam je záznam A pro ns1.example.com a ns2.example.com .

ns1.example.com        IP-address-of-master-server
ns2.example.com        IP-address-of-slave-server

Výše uvedené informace budou odeslány provozovateli registru, který provozuje servery DNS TLD prostřednictvím protokolu EPP (Extensible Provisioning Protocol), aby servery DNS TLD znaly název a IP adresy autoritativních serverů DNS pro název vaší domény. V závislosti na používaném registrátorovi domény může být váš záznam NS šířen okamžitě nebo může jeho šíření trvat až 24 hodin. Můžete přejít na https://dnsmap.io a zkontrolovat, zda je váš nový záznam NS aktivní.

Ukážu vám, jak to udělat na NameCheap .

Pokud jste si zakoupili název domény u NameCheap, přihlaste se ke svému účtu NameCheap. Vyberte Domain list na levém postranním panelu a poté klikněte na Spravovat tlačítko zcela vpravo.

Vyberte Advanced DNS .

Přejděte na konec stránky, kde najdete osobní server DNS sekce. Klikněte na Přidat NameServer tlačítko pro přidání vlastních jmenných serverů:ns1.example.com a ns2.example.com . Musíte zadat IP adresy vašich jmenných serverů.

Po přidání vašich dvou jmenných serverů klikněte na tlačítko Hledat a zkontrolujte, zda byly úspěšně přidány. Pokud ano, lepené záznamy se objeví ve spodní části této stránky.

Nyní klikněte na Domain a použijte svůj vlastní server DNS.

V závislosti na používaném registrátorovi domény může být váš záznam NS šířen okamžitě nebo může jeho šíření trvat až 24 hodin. Můžete přejít na https://dnsmap.io a zkontrolovat, zda je váš nový záznam NS aktivní.

Poté, co se spojovací záznam a záznam NS rozšíří na Internet, budou vaše servery DNS odpovídat na dotazy DNS na název vaší domény. Záznam dotazu můžete zkontrolovat pomocí:

sudo journalctl -eu bind9

Můžete také použít dig nástroj ke kontrole NS záznamu názvu vaší domény.

dig NS example.com

Pokud byly NS záznam a spojovací záznam šířeny na internetu, měli byste vidět své jmenné servery v sekci odpovědí. Pokud vidíte SERVFAIL chyba, je to pravděpodobně proto, že jste na svých jmenných serverech neotevřeli port UDP 53.

Co byste měli vědět

  • Termín master DNS server pouze znamená, že tento server ukládá hlavní kopii souboru zóny. Nemá vyšší prioritu, pokud jde o překlad DNS.
  • Při provádění změn v souboru zóny vždy aktualizujte sériové číslo SOA.

Povolení nástroje Resolver

BIND může fungovat jako autoritativní server DNS pro zónu a překladač DNS ve stejnou dobu. Je dobrým zvykem oddělit dvě role na dvou různých počítačích a v tomto článku jsme deaktivovali resolver v BIND. Pokud chcete překladač opravdu povolit, postupujte podle pokynů níže.

Upravte konfigurační soubor BIND.

sudo nano /etc/bind/named.conf.options

Najděte následující řádky.

 // disable recursion on authoritative DNS server.
 recursion no;

Změňte je na následující, aby rekurzivní dotazy do vašeho DNS resolveru mohla odesílat pouze důvěryhodná IP adresa a váš server nebude otevřeným resolverem.

 // allow recursion for trusted clients only.
 recursion yes;
 allow-query { localhost; 12.34.56.78; };

Nahraďte 12.34.56.78 svou vlastní IP adresou. Uložte a zavřete soubor. Ujistěte se, že definice zóny v /etc/bind/named.conf.local soubor má následující možnost, takže internet může dotazovat záznamy DNS ve vaší zóně.

allow-query { any; };

Poté restartujte BIND.

sudo systemctl restart bind9

Přejděte na https://openresolver.com/ a otestujte, zda je váš server BIND otevřeným resolverem.


Debian
  1. Jak nastavit SFTP server na Debian 11 Server

  2. Jak nainstalovat MySQL Server na Debian 10 Buster

  3. Jak nastavit server OpenVPN na Debianu 10

  1. Jak nastavit statickou IP adresu na Debian 10 Buster

  2. Jak nastavit server Samba na Debian 10 Buster

  3. Jak nastavit server LAMP na Debian 10 Buster

  1. Jak nastavit server NFS na Debian 10 Buster

  2. Jak nastavit LEMP server na Debian 10 Buster

  3. Jak nastavit RVM na Debian 10 Buster