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 Slave

Ora 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.local

Imposta il FQDN sul server “ ns2 “.

sudo hostnamectl set-hostname ns2.howtoforge.local

Successivamente, modifica il file “ /etc/hosts “ utilizzando il seguente comando.

sudo nano /etc/hosts

Aggiungi la seguente configurazione a ciascun server.

192.168.5.21 ns1.howtoforge.local ns1  
192.168.5.22 ns2.howtoforge.local ns2

Salva 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 -f

Installazione 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 update

Dopo 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

install bind

Dopo che l’installazione di Bind è terminata, modifica la configurazione “ /etc/default/named “ utilizzando il seguente comando.

sudo nano /etc/default/named

La 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

setup bind

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.options

Aggiungi 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.options

Impostazione 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.local

In 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.local

Cambia 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.120

Salva e chiudi il file quando hai finito.

setup forward zone

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.5

Cambia 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.120

Salva e chiudi il file quando hai finito.

setup reverse zone

Ora esegui il seguente comando per controllare le configurazioni BIND e assicurati di non ricevere alcun messaggio di errore.

sudo named-checkconf

Quindi, 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

check zone files

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 named

Impostazione 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.options

In 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.local

Aggiungi 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

setup secondary dns

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

check named status secondary dns

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.conf

Aggiungi 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.local

Salva 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-utils

Dopo 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

check dns records dig

dig mail.howtoforge.local +short  
dig mail.howtoforge.local

check dns record using dig

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

check mx records

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

check reverse dns

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.

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.