DNS Server · 15 min read · Sep 08, 2025

Come installare un server DNS con BIND su Rocky Linux 9

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 è presente sin dagli anni ‘80, noto per la sua flessibilità, prestazioni e funzionalità. BIND può essere utilizzato sia come DNS autorevole che come DNS di caching e supporta il bilanciamento del carico, l’aggiornamento dinamico, il DNS suddiviso, 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.

Questo tutorial ti mostrerà come configurare un server DNS con BIND su un server Rocky Linux 9. BIND è uno dei software per server DNS più popolari che fornisce varie funzionalità come DNS autorevole, DNS solo cache, bilanciamento del carico DNS di base, DNS suddiviso, DNSSEC, IPv6 e molto altro.

Prerequisiti

Con questo tutorial, configurerai e implementerai un server DNS BIND con architettura Master-Slave. Quindi, avrai bisogno di due server Rocky Linux. Inoltre, avrai bisogno di privilegi di root/amministratore su ciascun server.

Per configurare un server DNS pubblico che possa gestire il tuo dominio (Server DNS autorevole), devi anche avere il nome di dominio registrato e i ‘Glue Records’ configurati.

In questa guida, presumeremo anche che SELinux sia in esecuzione con la modalità ‘permissiva’.

Preparazione del sistema

Per iniziare con questa guida, configurerai il corretto FQDN (Fully Qualified Domain Name) su ciascuno dei tuoi server Rocky Linux. Questo può essere fatto tramite l’utilità del comando ‘ hostnamectl ‘ e il file ‘/etc/hosts ‘.

Di seguito sono riportati i dettagli dei server che verranno utilizzati come esempio per questa guida:

Hostname    IP Address          FQDN                    Used as  
---------------------------------------------------------------  
ns1         192.168.5.100       ns1.howtoforge.local         Master  
ns2         192.168.5.120       ns2.howtoforge.local         Slave

Sul server master, esegui l’utilità del comando hostnamectl di seguito per impostare il fqdn su ‘ ns1.howtoforge.local ‘.

sudo hostnamectl set-hostname ns1.howtoforge.local

Di seguito devi anche eseguire il comando hostnamectl sul server Slave per impostare il fqdn su ‘ ns2.howtoforge.local ‘.

sudo hostnamectl set-hostname ns2.howtoforge.local

Successivamente, apri il file ‘/etc/hosts’ su entrambi i server Master e Slave utilizzando il seguente comando dell’editor nano.

sudo nano /etc/hosts

Aggiungi la seguente riga al file.

192.168.5.100   ns1.howtoforge.local     ns1  
192.168.5.120   ns2.howtoforge.local     ns2

Salva il file ed esci dall’editor quando hai finito.

Infine, esegui il seguente comando ‘hostname’ per verificare il fqdn su ciascun server. Dovresti vedere che il server Master ha il fqdn come ‘ ns1.howtoforge.local ‘, e il server Slave ha il fqdn ‘ ns2.howtoforge.local ‘.

sudo hostname -f

Di seguito è riportato l’output dal server Master.

fqdn master server

E di seguito è riportato l’output dal server Slave.

fqdn slave server

Con il fqdn configurato, sei pronto per installare BIND sui server Rocky Linux.

Installazione dei pacchetti BIND

Per impostazione predefinita, il repository AppStream di Rocky Linux fornisce l’ultima versione stabile del pacchetto BIND. Al momento della scrittura, l’attuale versione stabile di BIND è v9.16.

In questo passaggio, installerai i pacchetti BIND su entrambi i server Master e Slave. Quindi imposterai BIND per funzionare solo su IPv4 e configurerai il firewalld per consentire la porta DNS.

Esegui il comando dnf di seguito per installare i pacchetti BIND su entrambi i server Master e Slave. Quando viene richiesto il consenso, inserisci y per confermare e premi INVIO per procedere.

sudo dnf install bind bind-utils

install bind named

Dopo che i pacchetti BIND sono stati installati, apri la configurazione ‘ /etc/sysconfig/named ‘ utilizzando il seguente comando dell’editor nano.

sudo nano /etc/sysconfig/named

Aggiungi l’opzione predefinita ‘ OPTIONS=.. ‘ con la seguente riga. Questa opzione di comando per ‘bind’ o ‘named’ eseguirà BIND solo su IPv4.

OPTIONS="-4"

Salva il file ed esci dall’editor quando hai finito.

Successivamente, esegui l’utilità del comando systemctl di seguito per avviare e abilitare il servizio BIND ‘ named ‘. Il servizio ‘named’ dovrebbe ora essere in esecuzione e abilitato, il che farà sì che si avvii automaticamente all’avvio.

sudo systemctl start named  
sudo systemctl enable named

start enable named

Ora verifica il servizio ‘named’ per assicurarti che il servizio sia in esecuzione e abilitato tramite il seguente comando.

sudo systemctl is-enabled named  
sudo systemctl status named

Riceverai un output simile al seguente - Il servizio BIND ‘named’ è abilitato e attualmente è in esecuzione.

verify named

Con il servizio BIND ‘named’ in esecuzione, dovrai aggiungere la porta DNS al firewalld, che è abilitato e in esecuzione per impostazione predefinita su Rocky Linux.

Esegui l’utilità del comando firewall-cmd di seguito per aggiungere il servizio DNS al firewalld. Quindi ricarica il firewalld per applicare le modifiche.

sudo firewall-cmd --add-service=dns --permanent  
sudo firewall-cmd --reload

Se verifichi l’elenco dei servizi abilitati su firewalld, dovresti vedere che il servizio DNS è abilitato. Esegui il comando firewall-cmd di seguito per controllare l’elenco dei servizi.

sudo firewall-cmd --list-services

Output:

setup firewalld

A questo punto, hai completato la configurazione del fqdn, installato i pacchetti BIND e anche configurato il firewalld. Tenendo presente questo, puoi ora iniziare a configurare il Master BIND sul server Master.

Configurazione del server DNS Master BIND

In questo passaggio, configurerai il server Master BIND utilizzando il Rocky Linux ‘ ns1.howtoforge.local ‘ e l’indirizzo IP del server è ‘ 192.168.5.100 ‘. Assicurati di eseguire i seguenti comandi sul server Master.

Configurerai il server Master BIND con i seguenti passaggi:

  • La configurazione di base includerà la configurazione delle ACL (Access Control Lists), impostando quale indirizzo IP eseguire il servizio BIND, impostando i forwarders e molto altro.
  • Configurazione delle zone - Qui creerai configurazioni per il tuo dominio. Questo include la configurazione del dominio principale e la configurazione del DNS inverso.

Configurazione di base

La configurazione predefinita di BIND su distribuzioni basate su RHEL è disponibile in ‘/etc/named.conf’.

Ora apri il file ‘ /etc/named.conf ‘ utilizzando il seguente comando dell’editor nano.

sudo nano /etc/named.conf

Cambia la configurazione predefinita con le seguenti righe.

acl "trusted" {  
        192.168.5.100;    # ns1 - oppure puoi usare localhost per ns1  
        192.168.5.120;    # ns2  
        192.168.5.0/24;  # reti fidate  
};  
  
options {  
        listen-on port 53 { 192.168.5.100; };  
  
        // listen-on-v6 port 53 { ::1; };  
          
        directory       "/var/named";  
        dump-file       "/var/named/data/cache_dump.db";  
        statistics-file "/var/named/data/named_stats.txt";  
        memstatistics-file "/var/named/data/named_mem_stats.txt";  
        secroots-file   "/var/named/data/named.secroots";  
        recursing-file  "/var/named/data/named.recursing";  
          
        allow-query     { localhost; trusted; };  
  
        recursion yes;  
        allow-recursion { trusted; };  
        allow-transfer { localhost; 192.168.5.120; };  
  
        forwarders {  
                8.8.8.8;  
                1.1.1.1;  
        };

Salva il file ed esci dall’editor quando hai finito.

named.conf file

Con questa configurazione, imposterai BIND con le seguenti configurazioni:

  • Imposta un ACL ‘ trusted ‘ che consente qualsiasi query dalle reti locali.
  • Esegui il servizio BIND su ‘ 192.168.5.100 ‘ con la porta predefinita ‘ 53 ‘.
  • Abilita la ricorsione e consenti la ricorsione dalle reti ACL ‘ trusted ‘.
  • Consenti il trasferimento delle zone al server Slave con indirizzo IP ‘ 192.168.5.120 ‘.
  • Imposta i forwarders con il server DNS pubblico 1.1.1.1 di Cloudflare e 8.8.8.8 di Google.

Successivamente, esegui il comando di seguito per verificare la configurazione di BIND ‘ /etc/named.conf ‘.

sudo named-checkconf /etc/named.conf

Infine, esegui l’utilità del comando systemctl di seguito per riavviare il servizio BIND ‘named’ e applicare le modifiche.

sudo systemctl restart named

Hai ora completato la configurazione di base del server DNS BIND.

Configurazione delle zone

Ora imposterai le zone con il server DNS BIND. Creerai un nuovo server DNS con l’indirizzo ‘ns1.howtoforge.local’ e ‘ns2.howtoforge.local’.

Per iniziare, apri la configurazione BIND ‘/etc/named.conf ‘ tramite il comando dell’editor nano di seguito.

sudo nano /etc/named.conf

Aggiungi la seguente configurazione in fondo alla riga.

include "/etc/named/zones.conf.local";

Salva il file ed esci dall’editor quando hai finito.

Successivamente, crea una nuova configurazione ‘ /etc/named/zones.conf.local’ utilizzando il seguente editor nano.

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

Aggiungi le seguenti righe al file.

zone "howtoforge.local" {  
    type master;  
    file "db.howtoforge.local";        # percorso del file di zona  
    allow-transfer { 192.168.5.120; };           # indirizzo IP ns2 - DNS secondario  
};  
  
zone "5.168.192.in-addr.arpa" {  
    type master;  
    file "db.192.168.5";  # subnet 192.168.5.0/24  
    allow-transfer { 192.168.5.120; };  # indirizzo IP privato ns2 - DNS secondario  
};

Salva e chiudi il file quando hai finito.

Con questa configurazione, definirai le seguenti configurazioni:

  • Crea due zone per il dominio ‘ howtoforge.local ‘ e il DNS inverso ‘ 5.168.192.in-addr.arpa ‘.
  • Entrambe le zone sono di tipo ‘ master ‘.
  • Consenti il trasferimento della zona al server DNS Slave che verrà eseguito sull’indirizzo IP del server ‘ 192.168.5.120 ‘.

zones list

Successivamente, crea una nuova configurazione della zona DNS, ‘/var/named/db.howtoforge.local’, utilizzando il seguente comando dell’editor nano.

sudo nano /var/named/db.howtoforge.local

Aggiungi le seguenti righe al file.

;  
; 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.100  
ns2.howtoforge.local.          IN      A       192.168.5.120  
  
; 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.50  
mail.howtoforge.local.       IN      A      192.168.5.15

Salva e chiudi il file quando hai finito.

In questo esempio, imposterai le zone con le seguenti configurazioni:

  • Definisci i record del server dei nomi ‘ ns1.howtoforge.local ‘ con l’indirizzo IP ‘ 192.168.5.100 ‘ e il ‘ ns2.howtoforge.local ‘ con l’indirizzo IP ‘ 192.168.5.120 ‘.
  • Definisci due domini aggiuntivi, ‘ howtoforge.local ‘, che verranno risolti all’indirizzo IP del server ‘ 192.168.5.50 ‘ e il dominio ‘ mail.howtoforge.local ‘ all’indirizzo IP ‘ 192.168.5.15 ‘.
  • Creerai anche un record MX per il dominio ‘ howtoforge.local ‘ che il server di posta ‘ mail.howtoforge.local gestirà.

zones nameserver

Successivamente, inizierai a configurare il DNS inverso per il dominio howtoforge.local.

Crea una nuova configurazione DNS inverso ‘/var/named/db.192.168.5 ‘ utilizzando il seguente comando dell’editor nano.

sudo nano /var/named/db.192.168.5

Aggiungi le seguenti righe al file.

;  
; 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  
100   IN      PTR     ns1.howtoforge.local.    ; 192.168.5.100  
120   IN      PTR     ns2.howtoforge.local.    ; 192.168.5.120  
50    IN      PTR     howtoforge.local.        ; 192.168.5.50  
15    IN      PTR     mail.howtoforge.local.   ; 192.168.5.15

Salva e chiudi il file quando hai finito.

Con questa configurazione, imposterai il DNS inverso o i record PTR come segue.

  • Nella configurazione DNS inverso, definirai anche il server dei nomi ns1.howtoforge.local e ns2.howtoforge.local.
  • Ogni configurazione DNS inverso utilizza l’ultimo numero dell’indirizzo IP che viene risolto in ciascun dominio. In questo esempio, il server dei nomi ns1.howtoforge.local con indirizzo IP ‘192.168.5.100’, e il record PTR dovrebbe essere ‘ 100 ‘.
  • Gli altri record PTR sono gli stessi descritti sopra.

zones reverse dns

A questo punto, hai creato due configurazioni di zone per il dominio ‘ howtoforge.local ‘ e creato un server dei nomi ‘ ns1.howtoforge.local ‘ e ‘ ns2.howtoforge.local ‘.

Ora esegui il comando chmod di seguito per cambiare la proprietà di entrambe le configurazioni delle zone.

sudo chown -R named: /var/named/{db.howtoforge.local,db.192.168.5}

Quindi verifica i file di configurazione delle zone tramite l’utilità del comando ‘ named-checkconf ‘ di seguito.

sudo named-checkconf
sudo named-checkzone howtoforge.local /var/named/db.howtoforge.local  
sudo named-checkzone 5.168.192.in-addr.arpa /var/named/db.192.168.5

Se hai configurazioni BIND corrette, riceverai un output simile allo screenshot seguente.

setup master bind dns server

Infine, esegui il comando systemctl di seguito per riavviare il servizio BIND ‘named’ e applicare le modifiche. Quindi, verifica lo stato del servizio BIND per assicurarti che il servizio sia in esecuzione.

sudo systemctl restart named  
sudo systemctl status named

Riceverai un output simile al seguente - il servizio BIND ‘ named ‘ è in esecuzione e hai completato la configurazione del Master BIND.

restart verify master

Nel passaggio successivo, configurerai il server BIND Slave.

Configurazione del server DNS Slave BIND

Dopo aver configurato il server DNS Master, inizierai a configurare il server BIND Slave sul server ‘ns2.howtoforge.local’ con l’indirizzo IP ‘192.168.5.120’.

La configurazione di base per ‘named.conf’ è simile a quella del Master BIND, e per i file di zona, puoi definire il nome del file senza creare un file reale sul server BIND Slave.

Prima di iniziare, assicurati di eseguire i seguenti comandi sul server BIND Slave.

Ora apri la configurazione BIND ‘ /etc/named.conf ‘ sul server Slave tramite il comando dell’editor nano di seguito.

sudo nano /etc/named.conf

Cambia la configurazione predefinita con le seguenti righe.

acl "trusted" {  
        192.168.5.100;    # ns1 - oppure puoi usare localhost per ns1  
        192.168.5.120;    # ns2  
        192.168.5.0/24;  # reti fidate  
};  
  
options {  
        listen-on port 53 { 192.168.5.120; };  
  
        //listen-on-v6 port 53 { ::1; };  
          
        directory       "/var/named";  
        dump-file       "/var/named/data/cache_dump.db";  
        statistics-file "/var/named/data/named_stats.txt";  
        memstatistics-file "/var/named/data/named_mem_stats.txt";  
        secroots-file   "/var/named/data/named.secroots";  
        recursing-file  "/var/named/data/named.recursing";  
  
        allow-query     { any; };  
  
        recursion yes;  
        allow-recursion { trusted; };  
        allow-transfer { none; };  
  
        forwarders {  
                8.8.8.8;  
                1.1.1.1;  
        };  
  
};

Le impostazioni sono simili a quelle del server Master BIND, e di seguito ci sono alcune differenze nelle configurazioni.

  • Il servizio BIND verrà eseguito sull’indirizzo IP ‘ 192.168.5.120 ‘ sul server Slave.
  • La ricorsione è abilitata, ma l’ ‘allow-transfer’ è configurato su ‘ none ‘.

named.conf slave dns bind

Ora aggiungi la seguente riga in fondo al file ‘named.conf’ per definire le zone.

include "/etc/named/zones.conf.local";

Salva il file ed esci dall’editor quando hai finito.

Successivamente, crea una nuova configurazione ‘/etc/named/zones.conf.local’ utilizzando il seguente comando dell’editor nano.

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

Aggiungi le seguenti righe al file.

zone "howtoforge.local" {  
    type slave;  
    file "slaves/db.howtoforge.local";  
    masters { 192.168.5.100; };           # indirizzo IP ns1 - DNS master  
};  
  
zone "5.168.192.in-addr.arpa" {  
    type slave;  
    file "slaves/db.192.168.5";  
    masters { 192.168.5.100; };  # indirizzo IP ns1 - DNS master  
};

Salva e chiudi il file quando hai finito.

Con questo, definirai alcune configurazioni di seguito sul server BIND Slave:

  • Definisci due zone per il dominio ‘ howtoforge.local ‘ e il suo DNS inverso.
  • Entrambe le zone sono di tipo ‘ slave ‘.
  • Il file di zona per ciascuna sarà prelevato dalla directory ‘/var/named/slaves ‘, che viene trasferita dal server Master BIND.

zones settings

Successivamente, esegui il comando ‘named-checkconf’ di seguito per verificare le configurazioni BIND. Quindi, riavvia il servizio BIND ‘named’ sul server Slave tramite il comando systemctl di seguito.

sudo named-checkconf  
sudo systemctl restart named

Non avrai messaggi di errore se hai una configurazione BIND corretta.

Infine, esegui il seguente comando systemctl per verificare il servizio BIND ‘ named ‘ sul server Slave per assicurarti che il servizio sia in esecuzione.

sudo systemctl status named

Ora riceverai un output simile al seguente - il servizio BIND ‘named’ è in esecuzione sul server BIND Slave.

check named

A questo punto, hai completato l’installazione di BIND DNS con l’architettura Master-Slave. Sei ora pronto per iniziare a testare dalla macchina client.

Test dalla macchina client

Questo esempio utilizza un sistema Debian come macchina client, quindi installa alcuni pacchetti di seguito tramite APT prima di iniziare.

sudo apt install dnsutils bind9-utils

Inserisci y quando viene richiesto il consenso e premi INVIO per procedere.

install dnsutils

Successivamente, 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 Cloudflare. 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.100  
nameserver 192.168.5.120  
nameserver 1.1.1.1  
search howtoforge.local

Salva e chiudi il file quando hai finito.

Ora sei pronto per verificare il tuo server DNS dalla macchina client.

Esegui il comando dig di seguito per controllare il nome di dominio “howtoforge.local” e “mail.howtoforge.local”. E dovresti vedere che “ howtoforge.local “ è risolto all’indirizzo IP del server “ 192.168.5.50 “, mentre il sottodominio “ mail.howtoforge.local “ è gestito dall’indirizzo IP del server “ 192.168.5.15 “.

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

Verifica il nome di dominio howtoforge.local.

verify domain

verifica il sottodominio mail.howtoforge.local.

verify domain name

Successivamente, esegui il comando dig 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

verify mx records

Puoi verificare la configurazione della zona inversa per il tuo nome di dominio utilizzando il comando nslookup.

Esegui il comando nslookup di seguito per controllare e verificare il DNS inverso per alcuni indirizzi IP.

Ora dovresti vedere che l’indirizzo IP “ 192.168.5.100 “ è invertito nel server dei nomi “ ns1.howtoforge.local “, l’indirizzo IP “ 192.168.5.120 “ è invertito nel server dei nomi “ ns2.howtoforge.local “, e l’indirizzo IP “ 192.168.5.50 “ è invertito nel nome di dominio principale “ howtoforge.local “, e infine l’indirizzo IP “ 192.168.5.15 “ è invertito nel sottodominio “ mail.howtoforge.local “.

slookup 192.168.5.100  
slookup 192.168.5.120  
slookup 192.168.5.50  
slookup 192.168.5.15

verify nslookup

A questo punto, hai completato l’installazione del server DNS BIND con architettura Master-Slave su Rocky Linux. Hai anche imparato come testare il server DNS tramite vari strumenti da riga di comando come dig e nslookup.

Conclusione

Congratulazioni! Durante questo tutorial, hai appreso l’installazione e la configurazione del server DNS BIND sui server Rocky Linux 9. Hai configurato con successo il server DNS BIND Master-Slave utilizzando due diversi server Rocky Linux. 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.