Domain Name Service (DNS) è un servizio Internet che mappa indirizzi IP e nomi di dominio completi (FQDN) tra loro. In questo modo, DNS allevia la necessità di ricordare gli indirizzi IP. I computer che eseguono DNS sono chiamati name server. Ubuntu viene fornito con BIND (Berkley Internet Naming Daemon), il programma più comune utilizzato per il mantenimento di un name server su Linux.,
Al prompt del terminale, immettere il seguente comando per installare dns:
sudo apt install bind9
Un pacchetto molto utile per testare e risolvere i problemi DNS è il pacchetto dnsutils
. Molto spesso questi strumenti saranno già installati, ma per controllare e/o installare dnsutils
inserisci quanto segue:
sudo apt install dnsutils
Configurazione
Ci sono molti modi per configurare BIND9. Alcune delle configurazioni più comuni sono un nameserver di caching, server primario e server secondario.,
-
Quando configurato come nameserver di caching BIND9 troverà la risposta alle query dei nomi e ricorderà la risposta quando il dominio viene nuovamente interrogato.
-
Come server primario, BIND9 legge i dati per una zona da un file sul suo host ed è autorevole per quella zona.
-
Come server secondario, BIND9 ottiene i dati di zona da un altro nameserver che è autorevole per la zona.
Panoramica
I file di configurazione DNS sono memorizzati nella directory/etc/bind
., Il file di configurazione principale è /etc/bind/named.conf
, che nel layout fornito dal pacchetto include solo questi file.
I server dei nomi root erano descritti nel file/etc/bind/db.root
. Questo è ora fornito invece dal/usr/share/dns/root.hints
file fornito con ildns-root-data
pacchetto, e fa riferimento nelnamed.conf.default-zones
file di configurazione sopra.
È possibile configurare lo stesso server in modo che sia un server dei nomi di cache, primario e secondario: tutto dipende dalle zone che sta servendo., Un server può essere l’inizio dell’autorità (SOA) per una zona, mentre fornisce un servizio secondario per un’altra zona. Per tutto il tempo fornendo servizi di caching per gli host sulla LAN locale.
Caching Nameserver
La configurazione predefinita funge da server di caching. Basta togliere il commento e modifica /etc/bind/named.conf.options
per impostare gli indirizzi IP dei server DNS dell’ISP:
forwarders { 1.2.3.4; 5.6.7.8;};
Nota
Sostituire
1.2.3.4
e5.6.7.8
con gli Indirizzi IP di effettivo nameservers.,
Per abilitare la nuova configurazione, riavviare il server DNS. Da un prompt del terminale:
sudo systemctl restart bind9.service
Vedere dig per informazioni sul test di un server DNS di caching.
Server primario
In questa sezione BIND9 verrà configurato come server Primario per il dominioexample.com
. Basta sostituire example.com
con il tuo FQDN (Fully Qualified Domain Name).,
Avanti File di Zona
Per aggiungere una zona DNS per BIND9, girando BIND9 in un server Primario, la prima modifica /etc/bind/named.conf.local
:
zone "example.com" { type master; file "/etc/bind/db.example.com";};
Nota
Se si legano sarà ricevere aggiornamenti automatici per il file come con DDNS, quindi utilizzare
/var/lib/bind/db.example.com
anziché/etc/bind/db.example.com
sia qui che nel comando di copia di seguito.,
Ora uso un file di zona esistente come modello per creare il /etc/bind/db.example.com
file:
sudo cp /etc/bind/db.local /etc/bind/db.example.com
Modificare il nuovo file di zona /etc/bind/db.example.com
e modificare localhost.
per il nome di dominio completo del server, lasciando aggiuntive .
alla fine., Cambia 127.0.0.1
per il nameserver Indirizzo IP e il root.localhost
per un indirizzo email valido, ma con un .
invece del solito @
simbolo, lasciando nuovamente il .
alla fine. Modificare il commento per indicare il dominio a cui si riferisce questo file.
Crea un record A per il dominio di base, example.com
. Inoltre, creare un record A perns.example.com
, il server dei nomi in questo esempio:
È necessario incrementare il numero di serie ogni volta che si apportano modifiche al file di zona., Se si apportano più modifiche prima di riavviare BIND9, è sufficiente incrementare il seriale una volta.
Ora, è possibile aggiungere record DNS nella parte inferiore del file di zona. Vedere Tipi di record comuni per i dettagli.,
Nota
Molti amministratori come utilizzare l’ultima data di modifica come il seriale di una zona, come 2020012100 che è yyyymmddss (dove ss è il Numero di Serie)
una Volta che hai fatto le modifiche al file di zona BIND9 deve essere riavviato per rendere effettive le modifiche:
sudo systemctl restart bind9.service
Zona Inversa File
Ora che la zona di installazione e la risoluzione dei nomi in Indirizzi IP, una zona Inversa deve essere aggiunto permette di DNS per la risoluzione di un indirizzo a un nome.,
Modifica /etc/bind/named.conf.local
e aggiungere la seguente:
zone "1.168.192.in-addr.arpa" { type master; file "/etc/bind/db.192";};
Nota
Sostituire
1.168.192
con i primi tre ottetti di qualsiasi rete che si sta utilizzando. Inoltre, assegnare un nome appropriato al file di zona/etc/bind/db.192
. Dovrebbe corrispondere al primo ottetto della tua rete.,
creare /etc/bind/db.192
file:
sudo cp /etc/bind/db.127 /etc/bind/db.192
la Prossima modifica /etc/bind/db.192
modifica opzioni /etc/bind/db.example.com
:
Il Numero di Serie nella zona Inversa deve essere incrementata ad ogni cambiamento. Per ogni record configurato in /etc/bind/db.example.com
, cioè per un indirizzo diverso, è necessario creare un record PTR in /etc/bind/db.192
.,
Dopo aver creato il file di zona inversa riavviare BIND9:
sudo systemctl restart bind9.service
Server secondario
Una volta configurato un Server primario, un Server secondario è altamente raccomandato per mantenere la disponibilità del dominio nel caso in cui il Primario non fosse disponibile.
In primo luogo, sul server primario, il trasferimento di zona deve essere consentito., Aggiungere l’opzione allow-transfer
all’esempio di definizioni di zona in avanti e indietro in /etc/bind/named.conf.local
:
Nota
Sostituire
192.168.1.11
con l’indirizzo IP del server dei nomi.
Riavvia BIND9 sul server primario:
sudo systemctl restart bind9.service
Successivamente, sul server secondario, installa il pacchetto bind9 allo stesso modo del Primario., Quindi modificare /etc/bind/named.conf.local
e aggiungere le seguenti dichiarazioni per le zone Forward e Reverse:
Nota
Sostituire
192.168.1.10
con l’indirizzo IP del server dei nomi primario.,
Riavviare BIND9 sul server Secondario:
sudo systemctl restart bind9.service
/var/log/syslog
si dovrebbe vedere qualcosa di simile al seguente (alcune linee sono state divise per misura il formato del documento):
Nota
Nota: Una zona è trasferita solo se il Numero di Serie sul Primario è maggiore di quello Secondario., Se si desidera avere il DNS Primario di comunicare ad altri Server DNS Secondario modifiche alla zona, è possibile aggiungere
also-notify { ipaddress; };
/etc/bind/named.conf.local
come mostrato nell’esempio qui sotto:
Nota
La directory di default per non autorevole file di zona è
/var/cache/bind/
. Questa directory è anche configurata in AppArmor per consentire al demone con nome di scrivere su di essa. Per ulteriori informazioni su AppArmor vedere Sicurezza-AppArmor.,
Risoluzione dei problemi
Questa sezione copre la diagnosi dei problemi con le configurazioni DNS e BIND9.
Test
resolv.conf
Il primo passo nel test di BIND9 consiste nell’aggiungere l’indirizzo IP del nameserver a un resolver hosts. Il nameserver primario dovrebbe essere configurato così come un altro host per ricontrollare le cose. Fare riferimento a Configurazione client DNS per i dettagli sull’aggiunta di indirizzi nameserver ai client di rete., Alla fine il tuonameserver
linea in/etc/resolv.conf
dovrebbe puntare a127.0.0.53
e dovresti avere unsearch
parametro per il tuo dominio. Qualcosa di simile a questo:
nameserver 127.0.0.53search example.com
verificare che il DNS server locale resolver è in uso, eseguire:
systemd-resolve --status
Nota
Si dovrebbe anche aggiungere l’Indirizzo IP del server Secondario per la configurazione del client nel caso in cui il Primario non è disponibile.,
dig
Se hai installato il pacchetto dnsutils puoi testare la tua configurazione usando l’utility di ricerca DNS dig:
-
Dopo aver installato BIND9 usa dig contro l’interfaccia di loopback per assicurarti che sia in ascolto sulla porta 53.,i>
Se hai configurato BIND9 come una Cache nameserver “scavare” un dominio esterno per controllare il tempo di query:
dig ubuntu.com
si noti il tempo di query verso la fine dell’output del comando:
;; Query time: 49 msec
Dopo un secondo scavare ci dovrebbe essere un miglioramento:
;; Query time: 1 msec
ping
e ‘ Ora di dimostrare come applicazioni fanno uso di DNS per risolvere il nome host, utilizzare l’utilità ping invia un pacchetto ICMP echo request:
ping example.com
Questo test se il nameserver grado di risolvere il nome ns.example.com
per un Indirizzo IP., L’output del comando dovrebbe assomigliare a:
named-checkzone
Un ottimo modo per testare i file di zona è usare l’utilitynamed-checkzone
installata con il pacchettobind9
. Questa utility consente di assicurarsi che la configurazione sia corretta prima di riavviare BIND9 e apportare le modifiche dal vivo.,
-
Per testare il nostro esempio Inoltro della zona di file, immettere il seguente dal prompt dei comandi:
named-checkzone example.com /etc/bind/db.example.com
Se tutto è configurato correttamente, si dovrebbe vedere un output simile a:
zone example.com/IN: loaded serial 6OK
-
allo stesso modo, per testare la zona Inversa file inserire il seguente:
named-checkzone 1.168.192.in-addr.arpa /etc/bind/db.192
L’output dovrebbe essere simile a:
zone 1.168.192.in-addr.arpa/IN: loaded serial 3OK
Nota
Il Numero di Serie del tuo file di zona sarà probabilmente diverso.,
Quick temporary query logging
Con il rndc
strumento, è possibile attivare e disattivare rapidamente query logging, senza riavviare il servizio o modificare il file di configurazione.
Per attivare la registrazione delle query, eseguire:
sudo rndc querylog on
allo stesso modo, per spegnerlo, eseguire:
sudo rndc querylog off
I log verranno inviati al syslog e la mostra di /var/log/syslog
per impostazione predefinita:
Nota
La quantità di log generati da abilitare
querylog
potrebbe essere enorme!,
Logging
BIND9 ha una vasta gamma di opzioni di configurazione di registrazione disponibili, ma le due principali sono channel e category, che configurano dove vanno i log e quali informazioni vengono registrate, rispettivamente.
Se non sono configurate opzioni di registrazione, la configurazione predefinita è:
logging { category default { default_syslog; default_debug; }; category unmatched { null; };};
Configuriamo invece BIND9 per inviare messaggi di debug relativi alle query DNS a un file separato.
Dobbiamo configurare un canale per specificare a quale file inviare i messaggi e una categoria., In questo esempio, la categoria registrerà tutte le query. Modificare /etc/bind/named.conf.local
e aggiungere quanto segue:
logging { channel query.log { file "/var/log/named/query.log"; severity debug 3; }; category queries { query.log; };};
Nota
L’opzione di debug può essere impostata da 1 a 3. Se un livello non è specificato, il livello 1 è quello predefinito.,
-
Dal momento che il demone named viene eseguito come utente di binding
/var/log/named
cartella deve essere creata e la proprietà è cambiata:sudo mkdir /var/log/namedsudo chown bind:bind /var/log/named
-
riavviare BIND9 per rendere effettive le modifiche:
sudo systemctl restart bind9.service
Si dovrebbe vedere il file /var/log/named/query.log
riempire con le informazioni della query. Questo è un semplice esempio delle opzioni di registrazione BIND9. Per la copertura delle opzioni avanzate vedere ulteriori informazioni.,
Tipi di record comuni
Questa sezione copre alcuni dei tipi di record DNS più comuni.
-
A
record: Questo record associa un indirizzo IP a un nome host.www IN A 192.168.1.12
-
CNAME
record: utilizzato per creare un alias per un record A esistente. Non è possibile creare un recordCNAME
che punta a un altro recordCNAME
.web IN CNAME www
-
MX
record: utilizzato per definire dove inviare le email., Deve puntare a un recordA
, non aCNAME
.@ IN MX 1 mail.example.com.mail IN A 192.168.1.13
-
NS
record: utilizzato per definire quali server servono copie di una zona. Deve puntare a un recordA
, non aCNAME
. È qui che vengono definiti i server primari e secondari.@ IN NS ns.example.com.@ IN NS ns2.example.com.ns IN A 192.168.1.10ns2 IN A 192.168.1.11
Ulteriori informazioni
-
Documentazione Upstream BIND9
-
Bind9.net ha collegamenti a una vasta collezione di risorse DNS e BIND9.,
-
DNS e BIND è un libro popolare ora nella sua quinta edizione. Ora c’è anche un DNS e BIND sul libro IPv6.
-
Un ottimo posto per chiedere assistenza a BIND9 e partecipare alla comunità di Ubuntu Server, è il canale IRC #ubuntu-server su freenode.
Ultimo aggiornamento 10 mesi fa. Contribuire a migliorare questo documento nel forum.