Server DNS · 14 min read · Sep 08, 2025
Come impostare un server DNS con BIND su Ubuntu 22.04

BIND o Berkeley Internet Name Domain è un software per server DNS gratuito e open-source. È uno dei software per server DNS più popolari utilizzati da oltre il 70% dei DNS su Internet. BIND esiste dagli anni ‘80, ed è ben noto per la sua flessibilità, prestazioni e funzionalità. BIND può essere utilizzato sia come DNS autorevole che come DNS di caching, supporta il bilanciamento del carico, l’aggiornamento dinamico, il DNS diviso, DNSSEC, IPv6 e molto altro.
Il software DNS BIND è uno dei server DNS più affidabili per sistemi operativi simili a Unix. È disponibile sulla maggior parte delle distribuzioni Linux e fornisce strumenti aggiuntivi per la diagnostica e il test del server DNS.
Questa guida ti insegnerà come installare un server DNS con BIND su un server Ubuntu 22.04. Questo tutorial ti mostrerà come impostare l’installazione del server DNS BIND Master-Slave utilizzando due server Ubuntu.
Requisiti
Prima di iniziare con questa guida, dovresti avere i seguenti requisiti:
- Due server Ubuntu 22.04.
- Un utente non root con privilegi di root/amministratore.
Impostazione del FQDN (Nome di Dominio Completo)
Prima di iniziare a installare i pacchetti BIND, devi assicurarti che il nome host e il FQDN dei tuoi server siano corretti. In questa dimostrazione, avremo due server Ubuntu con i seguenti dettagli:
Hostname IP Address FQDN Used As
---------------------------------------------------------
ns1 192.168.5.21 ns1.howtoforge.local BIND Master
ns2 192.168.5.22 ns2.howtoforge.local BIND SlaveOra accedi a ciascun server ed esegui il seguente comando per impostare il FQDN (Nome di Dominio Completo).
Imposta il FQDN sul server “ ns1 “.
sudo hostnamectl set-hostname ns1.howtoforge.localImposta il FQDN sul server “ ns2 “.
sudo hostnamectl set-hostname ns2.howtoforge.localSuccessivamente, modifica il file “ /etc/hosts “ utilizzando il seguente comando.
sudo nano /etc/hostsAggiungi la seguente configurazione a ciascun server.
192.168.5.21 ns1.howtoforge.local ns1
192.168.5.22 ns2.howtoforge.local ns2Salva e chiudi il file quando hai finito.
Infine, controlla e verifica il FQDN su ciascun server utilizzando il seguente comando. Sul server “ ns1 “, otterrai il FQDN come “ ns1.howtoforge.local “, e sul server “ ns2 “, otterrai l’output “ ns2.howtoforge.local “.
sudo hostname -fInstallazione dei pacchetti BIND
I pacchetti Bind sono disponibili per impostazione predefinita nel repository del server Ubuntu. Ora puoi facilmente installare Bind utilizzando il comando apt su entrambi i server “ns1” e “ns2”.
Esegui il comando apt qui sotto per aggiornare e rinfrescare i repository di Ubuntu.
sudo apt updateDopo di che, installa i pacchetti Bind utilizzando il seguente comando. inserisci Y per confermare l’installazione e premi ENTER per continuare. E l’installazione inizierà.
sudo apt install bind9 bind9utils bind9-doc dnsutils
Dopo che l’installazione di Bind è terminata, modifica la configurazione “ /etc/default/named “ utilizzando il seguente comando.
sudo nano /etc/default/namedLa riga “ OPTIONS= “ ti consente di impostare opzioni specifiche quando il servizio BIND è in esecuzione. In questa demo, eseguirai Bind solo con IPv4, quindi dovrai modificare la riga “ OPTIONS “ come di seguito.
OPTIONS="-u bind -4"Salva e chiudi il file quando hai finito.
Ora esegui il comando qui sotto per riavviare il servizio Bind “ named “. Quindi, controlla e verifica lo stato del servizio BIND. Dovresti vedere che il servizio Bind “ named “ è in esecuzione su entrambi i server.
sudo systemctl restart named
sudo systemctl status named
Impostazione di BIND Master
Dopo aver installato i pacchetti BIND su entrambi i server “ns1” e “ns2”, imposterai il server DNS BIND. imposterai il server “ns1” come Master del server DNS BIND. Puoi eseguire BIND su un singolo server, ma è consigliabile utilizzare più server per impostare il server DNS ad alta disponibilità.
Torna alla sessione del terminale del server “ ns1 “.
Esegui il comando qui sotto per modificare il file di configurazione “ /etc/bind/named.conf.options “.
sudo nano /etc/bind/named.conf.optionsAggiungi la seguente configurazione al file in cima alla riga, prima della riga “ options {….}; “.
Con questa configurazione, creerai un ACL (Access Control List) con il nome “ trusted “, che include tutti gli indirizzi IP e le reti fidate nel tuo ambiente. Assicurati anche di aggiungere l’indirizzo IP del server locale “ ns1 “ e l’indirizzo IP del server DNS secondario “ ns2 “.
acl "trusted" {
192.168.5.21; # ns1 - o puoi usare localhost per ns1
192.168.5.22; # ns2
192.168.5.0/24; # reti fidate
};Ora apporta modifiche alla sezione “ options {..}; “ come di seguito.
Nell’esempio seguente, stiamo disabilitando il supporto per IPv6 commentando l’opzione “ listen-on-v6 “, abilitando e consentendo la ricorsione dall’ACL “ trusted “, e eseguendo il servizio BIND su un indirizzo IP specifico “ ns1 “ “ 192.168.5.21 “. Inoltre, stiamo disabilitando il trasferimento di zona predefinito e definendo i forwarders specifici per il server DNS BIND a Google Public DNS “ 8.8.8.8 “ e “ 8.8.4.4 “.
options {
directory "/var/cache/bind";
//listen-on-v6 { any; }; # disabilita bind su IPv6
recursion yes; # abilita query ricorsive
allow-recursion { trusted; }; # consente query ricorsive da "trusted" - riferito all'ACL
listen-on { 192.168.5.21; }; # indirizzo IP ns1
allow-transfer { none; }; # disabilita i trasferimenti di zona per impostazione predefinita
forwarders {
8.8.8.8;
1.1.1.1;
};
};Salva e chiudi il file quando hai finito.
Infine, esegui il seguente comando per controllare e verificare il file di configurazione “ /etc/bind/named.conf.options “. Se non c’è alcun messaggio di output, allora la tua configurazione è corretta.
sudo named-checkconf /etc/bind/named.conf.optionsImpostazione delle Zone
Dopo aver impostato la configurazione di base del master BIND, ora imposterai le zone per il tuo nome di dominio. Nell’esempio seguente, utilizzeremo il nome di dominio “ howtoforge.local “ con il server dei nomi “ ns1.howtoforge.local “ e “ ns2.howtoforge.local “.
Modifica il file di configurazione “ /etc/bind/named.local “ utilizzando il seguente comando.
sudo nano /etc/bind/named.conf.localIn questa configurazione, definirai due file di zona, zona diretta e zona inversa per il tuo nome di dominio. La zona diretta conterrà la configurazione di dove i tuoi nomi di dominio verranno risolti nell’indirizzo IP, mentre la zona inversa tradurrà l’indirizzo IP nel quale nome di dominio.
Nell’esempio seguente, definiremo la zona diretta “ /etc/bind/zones/db.howtoforge.local “ per il dominio “ howtoforge.local “ e la zona inversa “/etc/bind/zones/db.192.168.5“.
zone "howtoforge.local" {
type master;
file "/etc/bind/zones/db.howtoforge.local"; # percorso del file di zona
allow-transfer { 192.168.5.22; }; # indirizzo IP ns2 - DNS secondario
};
zone "5.168.192.in-addr.arpa" {
type master;
file "/etc/bind/zones/db.192.168.5"; # subnet 192.168.5.0/24
allow-transfer { 192.168.5.22; }; # indirizzo IP privato ns2 - DNS secondario
};Salva e chiudi il file quando hai finito.
Successivamente, esegui il seguente comando per creare una nuova directory “ /etc/bind/zones “ che verrà utilizzata per memorizzare i file di configurazione delle zone.
sudo mkdir -p /etc/bind/zones/Dopo di che, copia la configurazione della zona diretta predefinita “/etc/bind/zones/db.howtoforge.local” e modifica il file utilizzando il seguente comando.
sudo cp /etc/bind/db.local /etc/bind/zones/db.howtoforge.local
sudo nano /etc/bind/zones/db.howtoforge.localCambia il record SOA predefinito con il tuo nome di dominio. Inoltre, dovrai cambiare il numero “ Serial “ all’interno dei record SOA ogni volta che apporti modifiche al file, e questo deve essere lo stesso numero “Serial” con il server DNS secondario/salve.
Quindi, puoi definire i record NS e i record A per il tuo server DNS. In questo esempio, il server dei nomi sarà “ ns1.howtoforge.local “ con l’indirizzo IP del record A “ 192.168.5.21 “ e “ ns2.howtoforge.local “ con il record A dell’indirizzo IP del server DNS secondario “ 192.168.5.22 “.
Infine, puoi definire altri nomi di dominio. In questo esempio, definiremo un record MX (gestore della posta) per il dominio “ howtoforge.local “ che sarà gestito dal server di posta “ mail.howtoforge.local “. Inoltre, definiremo il nome di dominio “ howtoforge.local “ che verrà risolto nel server con l’indirizzo IP “ 192.168.5.100 “ e il sottodominio per il server di posta “ mail.howtoforge.local “ all’indirizzo IP del server “ 192.168.5.120 “.
;
; file di dati BIND per l'interfaccia di loopback locale
;
$TTL 604800
@ IN SOA ns1.howtoforge.local. admin.howtoforge.local. (
3 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
; record NS per i server dei nomi
IN NS ns1.howtoforge.local.
IN NS ns2.howtoforge.local.
; record A per i server dei nomi
ns1.howtoforge.local. IN A 192.168.5.21
ns2.howtoforge.local. IN A 192.168.5.22
; gestore della posta o record MX per il dominio howtoforge.local
howtoforge.local. IN MX 10 mail.howtoforge.local.
; record A per i nomi di dominio
howtoforge.local. IN A 192.168.5.100
mail.howtoforge.local. IN A 192.168.5.120Salva e chiudi il file quando hai finito.

Successivamente, copia il file di configurazione della zona inversa predefinito in “ /etc/bind/zones/db.192.168.5 “ e modifica il nuovo file utilizzando il seguente comando.
sudo cp /etc/bind/db.127 /etc/bind/zones/db.192.168.5
sudo nano /etc/bind/zones/db.192.168.5Cambia il record SOA predefinito utilizzando il tuo nome di dominio. Inoltre, non dimenticare di cambiare il numero “ Serial “ all’interno del record SOA.
Definisci i record NS per i tuoi server DNS. Questi sono gli stessi server dei nomi che hai utilizzato nella zona diretta.
Infine, definisci i record PTR per i tuoi nomi di dominio. Il numero sui record PTR è l’ultimo numero dell’indirizzo IP. In questo esempio, il server dei nomi “ ns1.howtoforge.local “ è risolto nell’indirizzo IP “ 192.168.5.21 “, quindi ora il record PTR sarà “ 21 “ e così via per gli altri nomi di dominio.
;
; file di dati BIND inverso per l'interfaccia di loopback locale
;
$TTL 604800
@ IN SOA ns1.howtoforge.local. admin.howtoforge.local. (
3 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
; server dei nomi - record NS
IN NS ns1.howtoforge.local.
IN NS ns2.howtoforge.local.
; record PTR
21 IN PTR ns1.howtoforge.local. ; 192.168.5.21
22 IN PTR ns2.howtoforge.local. ; 192.168.5.22
100 IN PTR howtoforge.local. ; 192.168.5.100
120 IN PTR mail.howtoforge.local. ; 192.168.5.120Salva e chiudi il file quando hai finito.

Ora esegui il seguente comando per controllare le configurazioni BIND e assicurati di non ricevere alcun messaggio di errore.
sudo named-checkconfQuindi, esegui il seguente comando per controllare e verificare ciascun file di zona che hai appena creato, il file di configurazione della zona diretta e della zona inversa. Se i tuoi file di zona non hanno errori, dovresti vedere il messaggio di output come “ OK “. Se non ci sono errori, il comando ti mostrerà quale riga del file ha causato un errore.
sudo named-checkzone howtoforge.local /etc/bind/zones/db.howtoforge.local
sudo named-checkzone 5.168.192.in-addr.arpa /etc/bind/zones/db.192.168.5
Per completare la configurazione del Master BIND, esegui il comando qui sotto per riavviare il servizio BIND e applicare le nuove modifiche alle configurazioni che hai effettuato.
sudo systemctl restart namedImpostazione di BIND Slave
Ora hai terminato la configurazione del server DNS Master BIND. È tempo di impostare il server “ns2” come secondario o slave del server DNS BIND.
Il server Master memorizza i file di zona che contengono la configurazione DNS del tuo dominio e gestisce le query ricorsive o iterative. Il server DNS secondario/slave memorizza i record DNS per un periodo di tempo temporaneamente, e questi record DNS vengono trasferiti automaticamente dal server Master BIND.
Ora spostati nella sessione del terminale “ ns2 “ e inizia a configurare il server “ ns2 “ come Secondario/Slave del server DNS BIND.
Esegui il seguente comando per modificare il file di configurazione “ /etc/bind/named.conf.options “
sudo nano /etc/bind/named.conf.optionsIn cima alla riga, aggiungi la seguente configurazione. Questo creerà lo stesso ACL (Access Control List) come sul server Master.
acl "trusted" {
192.168.5.21; # ns1
192.168.5.22; # ns2 - o puoi usare localhost per ns2
192.168.5.0/24; # reti fidate
};All’interno della riga “ options {…}; “, puoi cambiare la configurazione come di seguito. Questa configurazione è ancora la stessa del server DNS BIND Master, e l’unica differenza qui è l’opzione “listen-on “ che è specificata per l’indirizzo IP del server “ ns2 “.
options {
directory "/var/cache/bind";
//listen-on-v6 { any; }; # disabilita bind su IPv6
recursion yes; # abilita query ricorsive
allow-recursion { trusted; }; # consente query ricorsive da "trusted" - riferito all'ACL
listen-on { 192.168.5.22; }; # indirizzo IP ns2
allow-transfer { none; }; # disabilita i trasferimenti di zona per impostazione predefinita
forwarders {
8.8.8.8;
1.1.1.1;
};
};Salva e chiudi il file quando hai finito.
Successivamente, modifica il file di configurazione “ /etc/bind/named.conf.local “ utilizzando il seguente comando per impostare il server “ ns2 “ come server DNS secondario/slave.
sudo nano /etc/bind/named.conf.localAggiungi la seguente configurazione al file. Come puoi vedere, stiamo definendo le zone dirette e inverse, ma con il “ type slave “ e definiamo il server DNS Master “ 192.168.5.21 “. Non è necessario creare il file di zona perché i record e i dati DNS verranno trasferiti automaticamente dal server Master DNS e verranno memorizzati temporaneamente per un periodo di tempo sul server DNS secondario/slave.
zone "howtoforge.local" {
type slave;
file "/etc/bind/zones/db.howtoforge.local";
masters { 192.168.5.21; }; # indirizzo IP ns1 - DNS master
};
zone "5.168.192.in-addr.arpa" {
type slave;
file "/etc/bind/zones/db.192.168.5";
masters { 192.168.5.21; }; # indirizzo IP ns1 - DNS master
};Salva e chiudi il file quando hai finito.
Ora esegui il seguente comando per controllare e verificare la configurazione BIND e assicurati che tutte le configurazioni siano corrette. Quindi, puoi riavviare il servizio BIND “named” sul server “ ns2 “ per applicare le nuove modifiche. E hai ora terminato la configurazione sul server “ ns2 “ come secondario/slave del server DNS BIND.
sudo named-checkconf
sudo systemctl restart named
Infine, esegui il seguente comando per controllare e verificare il servizio BIND “ named “ sul server “ ns2 “. E assicurati che il servizio “ named “ sia in esecuzione.
sudo systemctl status named
Verifica del server DNS dalla macchina client
Sulla macchina client, ci sono più modi per impostare il risolutore DNS. Puoi impostare il risolutore DNS dal NetworkManager o dalla configurazione netplan. Ma, il modo più semplice è impostare manualmente il risolutore DNS tramite il file “/etc/resolv.conf”. Questo ti consente di impostare un risolutore DNS statico per le macchine client.
Esegui il seguente comando per rimuovere il file di collegamento predefinito “ /etc/resolv.conf “ e creare un nuovo file utilizzando l’editor nano.
sudo unlink /etc/resolv.conf
sudo nano /etc/resolv.confAggiungi la seguente configurazione al file. Nella seguente configurazione stiamo definendo tre diversi risolutori, il Master DNS BIND, il server DNS BIND secondario e il risolutore DNS pubblico di Google. Quando la macchina client richiede informazioni sul nome di dominio, le informazioni verranno prelevate dal risolutore DNS, dall’alto verso il basso.
nameserver 192.168.5.21
nameserver 192.168.5.22
nameserver 8.8.8.8
search howtoforge.localSalva e chiudi il file quando hai finito.
Successivamente, esegui il comando qui sotto per installare alcune utility DNS sulla tua macchina client. In questo esempio, la macchina client è un sistema Ubuntu, quindi stiamo installando l’utility DNS utilizzando il comando apt come di seguito.
sudo apt install dnsutils bind9-utilsDopo aver installato l’utility DNS sul tuo sistema, puoi iniziare a controllare tutti i record DNS dalla macchina client.
Esegui il comando dig qui sotto per controllare il nome di dominio “ howtoforge.local “ e “ mail.howtoforge.local “. E dovresti vedere che “ howtoforge.local “ è risolto nell’indirizzo IP del server “ 192.168.5.100 “, mentre il sottodominio “ mail.howtoforge.local “ è gestito dall’indirizzo IP del server “ 192.168.5.120 “.
dig howtoforge.local +short
dig howtoforge.local
dig mail.howtoforge.local +short
dig mail.howtoforge.local
Successivamente, esegui il comando dig come di seguito per controllare il gestore della posta per il nome di dominio “howtoforge.local”. E dovresti ottenere l’output che “ mail.howtoforge.local “ gestisce la posta per il dominio principale “ howtoforge.local “.
dig howtoforge.local MX +short
dig howtoforge.local MX
Ora puoi anche verificare la configurazione della zona inversa per il tuo nome di dominio utilizzando il comando nslookup.
Esegui il comando nslookup qui sotto per controllare e verificare il DNS inverso per alcuni indirizzi IP.
Ora dovresti vedere che l’indirizzo IP “ 192.168.5.21 “ è invertito nel server dei nomi “ ns1.howtoforge.local “, l’indirizzo IP “ 192.168.5.22 “ è invertito nel server dei nomi “ ns2.howtoforge.local “, e l’indirizzo IP “ 192.168.5.100 “ è invertito nel nome di dominio principale “ howtoforge.local “, e infine l’indirizzo IP “ 192.168.5.120 “ è invertito nel sottodominio “ mail.howtoforge.local.
slookup 192.168.5.21
slookup 192.168.5.22
slookup 192.168.5.100
slookup 192.168.5.120
Conclusione
Congratulazioni! attraverso questo tutorial hai appreso l’installazione e la configurazione del server DNS BIND sui server Ubuntu 22.04. Hai configurato con successo il server DNS BIND Master-Slave utilizzando due diversi server Ubuntu. Inoltre, hai appreso i comandi di base di Dig e Nslookup per controllare e verificare i record e la configurazione DNS.
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.