GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Configura il server DNS autorevole BIND su Ubuntu 18.04, 16.04

Questo tutorial ti mostrerà come configurare ed eseguire il tuo server dei nomi autorevole su Ubuntu 18.04/16.04 con il software BIND 9 ampiamente utilizzato.

Nota :questo tutorial mostra il metodo della riga di comando. Se desideri modificare i record DNS da una GUI web, ti consiglio di configurare server DNS autorevoli con Webmin, che è un pannello di controllo del server gratuito e open source.

Cos'è un server DNS autorevole?

Se possiedi un nome di dominio e desideri che il tuo server DNS gestisca la risoluzione dei nomi per il tuo nome di dominio invece di utilizzare il server DNS del registrar di domini, dovrai configurare un server DNS autorevole.

Un server DNS autorevole viene utilizzato dai proprietari di nomi di dominio per archiviare i record DNS. Fornisce risposte autorevoli ai resolver DNS (come 8.8.8.8 o 1.1.1.1), che interrogano i record DNS per conto degli utenti finali su PC, smartphone o tablet.

Informazioni su BIND

BIND (Berkeley Internet Name Domain) è un software DNS open source, flessibile e completo, ampiamente utilizzato su Unix/Linux grazie alla sua stabilità e alta qualità. È stato originariamente sviluppato da UC Berkeley e successivamente, nel 1994, il suo sviluppo è stato spostato a Internet Systems Consortium, Inc (ISC).

BIND può fungere contemporaneamente da server DNS autorevole per una zona e da un resolver DNS. Un risolutore DNS può anche essere chiamato server dei nomi ricorsivo perché esegue ricerche ricorsive per i client locali. Tuttavia, assumere due ruoli contemporaneamente non è vantaggioso. È buona norma separare i due ruoli su due macchine diverse.

In un articolo precedente, ho spiegato i passaggi per configurare un resolver DNS locale su Ubuntu 18.04/16.04. Questo tutorial ti mostrerà come configurare BIND9 su Ubuntu 18.04/16.04 come server DNS solo autorevole con ricorsione disabilitata.

Prerequisiti

Per seguire questo tutorial, dovresti aver già acquistato un nome di dominio. Ho registrato il mio nome di dominio su NameCheap perché il prezzo è basso e offrono protezione della privacy a Whois gratuita per tutta la vita.

Hai anche bisogno di due server. Un server è per il server DNS master e l'altro è per il server DNS slave. Idealmente i due server dovrebbero trovarsi in posizioni fisiche diverse. Se un server DNS è offline, l'altro server DNS può comunque rispondere alle query DNS per il tuo nome di dominio.

Ogni server ha bisogno di soli 512 MB di RAM e qui ci sono i provider di hosting che consiglio. Li ho usati tutti.

  • Vultr:a partire da $ 2,5 al mese. Carta di credito richiesta. Puoi creare un account su Vultr tramite il mio link di riferimento per ottenere $ 50 di credito gratuito.
  • DigitalOcean:a partire da $ 5 al mese. Non è richiesta alcuna carta di credito. Puoi usare Paypal. Puoi creare un account su DigitalOcean tramite il mio link di riferimento per ottenere $ 50 di credito gratuito.

Dopo aver acquistato due server, installa Ubuntu su di essi e segui le istruzioni seguenti.

Configura un server DNS autorevole su Ubuntu 18.04/16.04 con BIND9

Devi eseguire i comandi in questa sezione su entrambi i server.

Accedi ai due server tramite SSH ed esegui i seguenti comandi per installare BIND 9 su Ubuntu 18.04/16.04 dal repository predefinito. BIND 9 è la versione attuale e BIND 10 è un progetto morto.

sudo apt update
sudo apt install bind9 bind9utils bind9-doc

Controlla il numero di versione.

named -v

Esempio di output:

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

Per controllare il numero di versione e le opzioni di build, esegui

named -V

Per impostazione predefinita, BIND si avvia automaticamente dopo l'installazione. Puoi verificarne lo stato con:

systemctl status bind9

Se non è in esecuzione, avvialo con:

sudo systemctl start bind9

E abilita l'avvio automatico all'avvio:

sudo systemctl enable bind9

Il server BIND verrà eseguito come bind utente, che viene creato durante l'installazione, ed è in ascolto sulla porta TCP e UDP 53, come si può vedere eseguendo il seguente comando:

sudo netstat -lnptu | grep named

Il demone BIND si chiama named . (Un demone è un pezzo di software che viene eseguito in background.) Il named binary è installato da bind9 pacchetto e c'è un altro importante binario:rndc , il controller del demone del nome remoto, installato da bind9utils pacchetto. Il rndc binary viene utilizzato per ricaricare/arrestare e controllare altri aspetti del demone BIND. La comunicazione avviene tramite la porta TCP 953.

Ad esempio, possiamo controllare lo stato del server dei nomi BIND.

sudo rndc status

Il file di configurazione BIND principale /etc/bind/named.conf origina le impostazioni da altri 3 file.

  • /etc/bind/named.conf.options
  • /etc/bind/named.conf.local
  • /etc/bind/named.conf.default-zones

Di default, il server BIND9 su Ubuntu fornisce un servizio ricorsivo per localhost e client di rete locale. Poiché stiamo configurando un server DNS autorevole, dobbiamo disabilitare la ricorsione. Modifica il /etc/bind/named.conf.options file.

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

Aggiungi le seguenti righe nelle options {...}; clausola.

 // 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; };

Tecnicamente parlando, devi solo aggiungere recursion no; per disabilitare la ricorsione, ma è buona norma aggiungere le altre 3 direttive. Salva e chiudi il file. Quindi riavvia BIND.

sudo systemctl restart bind9

Configurazione del server DNS principale

Scegli uno dei due server come server DNS principale. Lo chiameremo ns1.example.com .

Il server DNS principale conserva la copia principale del file di zona. Le modifiche ai record DNS vengono effettuate su questo server. Un dominio può avere una o più zone DNS. Ogni zona DNS ha un file di zona che contiene tutti i record DNS in quella zona. Per semplicità, questo articolo presuppone che tu voglia utilizzare una singola zona DNS per gestire tutti i record DNS per il tuo nome di dominio.

Il /etc/bind/named.conf.default-zones file definisce la zona principale e la zona localhost. Per aggiungere una zona per il tuo nome di dominio, modifica /etc/bind/named.conf.local file.

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

Aggiungi le seguenti righe a questo file. Sostituisci example.com con il tuo nome di dominio. Sostituisci 12.34.56.78 con l'indirizzo IP del server DNS slave.

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

Nella configurazione precedente, abbiamo creato una nuova zona con la zone clausola e abbiamo specificato che questa è la zona master. Il file di zona è /etc/bind/db.example.com , dove aggiungeremo i record DNS. Il trasferimento di zona sarà consentito solo per il server DNS slave. Salva e chiudi il file.

Invece di creare un file di zona da zero, possiamo utilizzare un file modello di zona. Copia il contenuto di db.empty in un nuovo file.

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

Un file di zona può contenere 3 tipi di voci:

  • Commenti :inizia con un punto e virgola (;)
  • Direttive :inizia con il simbolo del dollaro ($)
  • Record di risorse :noto anche come record DNS

Un file di zona è in genere costituito dai seguenti tipi di record DNS.

  • Il record SOA (Start of Authority) :definisce le caratteristiche chiave di una zona. È il primo record DNS nel file di zona ed è obbligatorio.
  • Registro NS (server dei nomi) :specifica quali server vengono utilizzati per archiviare i record DNS e rispondere alle query DNS per un nome di dominio. Devono esserci almeno due record NS in un file di zona.
  • Registro MX (Mail Exchanger) :specifica quali host sono responsabili della consegna delle e-mail per un nome di dominio.
  • Un record (Indirizzo) :converte i nomi DNS in indirizzi IPv4.
  • Record AAAA (Quad A) :converte i nomi DNS in indirizzi IPv6.
  • Registro CNAME (Nome canonico) :Viene utilizzato per creare alias per un nome DNS.
  • Registro TXT :SPF, DKIM, DMARC, ecc.

Ora modifichiamo il file di zona.

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

Per impostazione predefinita, si presenta così:

Puoi invece cambiarlo in questo.

Dove

  • Il $TTL La direttiva definisce il Time to Live predefinito valore per la zona, che è il tempo in cui un record DNS può essere memorizzato nella cache su un risolutore DNS. Questa direttiva è obbligatoria. Il tempo è specificato in secondi.
  • Il $ORIGIN definisce il dominio di base.
  • I nomi di dominio devono terminare con un punto (.), che è il dominio principale. Quando un nome di dominio termina con un punto, è un nome di dominio completo (FQDN).
  • Il simbolo @ fa riferimento al dominio di base.
  • IN è la classe DNS. Sta per Internet. Esistono altre classi DNS ma vengono utilizzate raramente.

Il primo record in un file di zona è il record SOA (Start of Authority). Questo record contiene le seguenti informazioni:

  • Il server DNS principale .
  • Indirizzo email dell'amministratore di zona . RFC 2142 consiglia l'indirizzo email [email protected] . Nel file di zona, questo indirizzo email assume la forma:hostmaster.example.com perché il simbolo @ ha un significato speciale nel file di zona.
  • Numero di serie della zona . Il numero di serie è un modo per tenere traccia dei cambiamenti nella zona da parte del server DNS slave. Per convenzione, il numero di serie ha un formato di data:yyyymmddss , dove aaaa è il numero di quattro cifre dell'anno, mm è il mese, gg è il giorno e ss è il numero di sequenza del giorno. È necessario aggiornare il numero di serie quando vengono apportate modifiche al file di zona.
  • Aggiorna valore . Quando viene raggiunto il valore di aggiornamento, il server DNS slave tenterà di leggere il record SOA dal server DNS master. Se il numero di serie aumenta, viene avviato un trasferimento di zona.
  • Riprova valore . Definisce l'intervallo di tentativi in ​​secondi se il server DNS slave non riesce a connettersi al server DNS master.
  • Scadenza :se il server DNS slave non riesce a contattare il server DNS master per questo periodo di tempo, lo slave smetterà di rispondere alle query DNS per questa zona.
  • TTL cache negativo :Definisce il valore del tempo residuo delle risposte DNS per nomi DNS inesistenti (NXDOMAIN).

I record TXT sono generalmente racchiusi tra virgolette. Se aggiungi il record DKIM, devi anche racchiudere il valore tra parentesi.

Salva e chiudi il file. Quindi eseguire il comando seguente per verificare se sono presenti errori di sintassi nel file di configurazione principale. Un output silenzioso indica che non sono stati trovati errori.

sudo named-checkconf

Quindi controlla la sintassi dei file di zona.

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

Se sono presenti errori di sintassi nel file di zona, è necessario correggerlo o questa zona non verrà caricata. Il messaggio seguente indica che non ci sono errori di sintassi.

zone example.com/IN: loaded serial 2019011503
OK

Quindi riavvia BIND9.

sudo systemctl restart bind9

Se stai utilizzando il firewall semplice (UFW), apri la porta TCP e UDP 53.

sudo ufw allow 53/tcp

sudo ufw allow 53/udp

Se stai utilizzando direttamente il firewall iptables, esegui il comando seguente.

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

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

Configurazione del server DNS slave

Ora utilizziamo l'altro server come server DNS slave, che si chiamerà ns2.example.com .

Per prima cosa, modifica il named.conf.local file.

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

Aggiungi una zona come di seguito. Sostituisci 12.34.56.78 con l'indirizzo IP del server DNS principale.

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

Nella configurazione precedente, abbiamo specificato che si tratta di un server DNS slave per example.com zona e accetterà i trasferimenti di zona solo da un indirizzo IP affidabile.

Salva e chiudi il file. Quindi esegui il comando seguente per verificare se ci sono errori di sintassi nel file di configurazione principale.

sudo named-checkconf

Se non vengono rilevati errori, riavvia BIND9.

sudo systemctl restart bind9

I file di zona sul server DNS slave vengono caricati da un trasferimento di zona, utilizzato per sincronizzare le modifiche ai record DNS dal server DNS master al server DNS slave. Dopo il riavvio di BIND9, il trasferimento di zona inizierà immediatamente. Controlla il log di BIND9 con il seguente comando.

sudo journalctl -eu bind9

Puoi vedere messaggi come di seguito, che indicano che il trasferimento della zona è riuscito.

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)

Il file di zona verrà salvato come /var/cache/bind/db.example.com .

Se stai utilizzando il firewall semplice (UFW), apri la porta TCP e UDP 53.

sudo ufw allow 53/tcp

sudo ufw allow 53/udp

Se stai utilizzando direttamente il firewall iptables, esegui il comando seguente.

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

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

Ulteriori informazioni sul trasferimento di zona

Il server DNS slave contatterà nuovamente il master quando viene raggiunto il tempo di aggiornamento nel record SOA e se il numero di serie sul master è maggiore di quello sullo slave, verrà avviato un trasferimento di zona. Esistono due tipi di trasferimenti di zona:

  • Trasferimento di zona completa (AXFR):viene trasferita la copia completa del file di zona.
  • Trasferimento di zona incrementale (IXFR):vengono trasferiti solo i record DNS modificati.

Entrambi i tipi di trasferimento di zona utilizzano la porta TCP 53. Per impostazione predefinita, BIND sul server DNS slave richiederà un trasferimento di zona incrementale e BIND sul server DNS master consentirà il trasferimento di zona incrementale solo quando la zona è dinamica.

L'intervallo di trasferimento della zona è un fattore importante della velocità di propagazione delle modifiche ai record DNS. Invece di attendere il contatto del server DNS slave, il master BIND avviserà lo slave quando vengono apportate modifiche alla zona. Ciò può ridurre considerevolmente il tempo di propagazione delle modifiche alle zone su Internet.

Zona inversa

Una zona inversa contiene record PTR che associano un indirizzo IP a un nome DNS. È la controparte del record DNS A. Il record PTR è spesso necessario affinché i server di posta superino i filtri antispam. Questo record non appartiene a un dominio. Devi creare un record PTR nel pannello di controllo del tuo provider di hosting o chiedere al tuo ISP, quindi non tratterò la creazione di zone inverse in BIND.

Modifica il record NS e crea il record di colla

Ora devi andare al sito Web del registrar di domini per modificare il record NS per il tuo dominio, in modo che Internet sappia che stai utilizzando il tuo server DNS. Normalmente utilizzi nomi host nel record NS come ns1.example.com e ns2.example.com .

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

Se hai un nome di dominio example.com e utilizzi un sottodominio per i server DNS autorevoli (ns1.example.com e ns2.example.com ), quindi devi anche creare un record di colla presso il tuo registrar di domini, in modo che Internet possa conoscere l'indirizzo IP del tuo server DNS. Il record di colla è un record A per ns1.example.com e ns2.example.com .

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

Le informazioni di cui sopra verranno inviate a un operatore del registro che esegue server DNS TLD tramite l'Extensible Provisioning Protocol (EPP), in modo che i server DNS TLD conoscano i nomi host e gli indirizzi IP dei server DNS autorevoli per il tuo nome di dominio. A seconda del registrar di domini che utilizzi, il tuo record NS potrebbe essere propagato istantaneamente o potrebbero essere necessarie fino a 24 ore per propagarsi. Puoi andare su https://dnsmap.io per verificare se il tuo nuovo record NS è attivo.

Ti mostrerò come farlo su NameCheap .

Se hai acquistato un nome di dominio su NameCheap, accedi al tuo account NameCheap. Seleziona l'Domain list menu sulla barra laterale sinistra, quindi fai clic su Gestisci pulsante all'estrema destra.

Seleziona DNS avanzato .

Scorri fino in fondo alla pagina, troverai il server DNS personale sezione. Fai clic su Aggiungi server dei nomi pulsante per aggiungere i tuoi server dei nomi:ns1.example.com e ns2.example.com . Devi inserire gli indirizzi IP dei tuoi name server.

Dopo aver aggiunto i tuoi due name server, fai clic sul pulsante di ricerca per verificare se sono stati aggiunti correttamente. In tal caso, i record di colla appariranno in fondo a questa pagina.

Ora fai clic su Domain scheda e utilizza il tuo server DNS personalizzato.

A seconda del registrar di domini che utilizzi, il tuo record NS potrebbe essere propagato istantaneamente o potrebbero essere necessarie fino a 24 ore per propagarsi. Puoi andare su https://dnsmap.io per verificare se il tuo nuovo record NS è attivo.

Dopo che il record NS e il record di colla sono stati propagati a Internet, i tuoi server DNS risponderanno alle query DNS per il tuo nome di dominio. Puoi controllare il registro delle query con:

sudo journalctl -eu bind9

Puoi anche usare dig utility per controllare il record NS del tuo nome di dominio.

dig NS example.com

Se il record NS e il record di colla sono stati propagati a Internet, dovresti vedere i tuoi server dei nomi nella sezione delle risposte. Se vedi il SERVFAIL errore, probabilmente è perché non hai aperto la porta UDP 53 sui tuoi server dei nomi.

Cose da sapere

  • Il termine master DNS server implica solo che questo server memorizzi la copia principale del file di zona. Non ha una priorità più alta quando si tratta di risoluzione DNS.
  • Aggiorna sempre il numero di serie SOA quando apporti modifiche a un file di zona.

Utilizzo di caratteri jolly nel file della zona BIND

Se vuoi puntare tutti i sottodomini allo stesso indirizzo IP, puoi utilizzare il carattere jolly per ottenerlo. Ad esempio, la riga seguente farà in modo che tutti i tuoi sottodomini puntino all'indirizzo IP 1.2.3.4.

*.your-domain.com  IN   A   1.2.3.4

Abilitazione del Risolutore

BIND può fungere da server DNS autorevole per una zona e un Resolver DNS allo stesso tempo. È buona norma separare i due ruoli su due host diversi e in questo articolo abbiamo disabilitato il resolver in BIND. Se vuoi davvero abilitare il resolver, segui le istruzioni seguenti.

Modifica il file di configurazione BIND.

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

Trova le seguenti righe.

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

Modificali come segue, in modo che solo un indirizzo IP affidabile possa inviare query ricorsive al tuo risolutore DNS e il tuo server non sarà un risolutore aperto.

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

Sostituisci 12.34.56.78 con il tuo indirizzo IP. Salva e chiudi il file. Assicurati che la definizione della tua zona sia in /etc/bind/named.conf.local file ha la seguente opzione, quindi Internet può interrogare i record DNS nella tua zona.

allow-query { any; };

Quindi riavvia BIND.

sudo systemctl restart bind9

Vai su https://openresolver.com/ per verificare se il tuo server BIND è un risolutore aperto.


Ubuntu
  1. Come configurare e installare il server proxy Squid su Ubuntu 18.04

  2. Come impostare il server dei nomi DNS su Ubuntu 20.04

  3. Come configurare un server LAMP Ubuntu/Debian

  4. Come configurare WireGuard su Ubuntu 22.04

  5. Come configurare un server TeamSpeak su Ubuntu 16.04

Come configurare Quad 9 DNS su Ubuntu 16.04 e Ubuntu 17.10 Desktop

Imposta un risolutore DNS non legato sul server Ubuntu 20.04

BIND Server DNS

Come installare il server DNS su Ubuntu 20.04 LTS

Configura il server Ubuntu con EHCP (LAMP, DNS, FTP, Mail)

Procedura:server DNS BIND9 autorevole su CentOS 7:installazione e configurazione