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 SlaveSul server master, esegui l’utilità del comando hostnamectl di seguito per impostare il fqdn su ‘ ns1.howtoforge.local ‘.
sudo hostnamectl set-hostname ns1.howtoforge.localDi seguito devi anche eseguire il comando hostnamectl sul server Slave per impostare il fqdn su ‘ ns2.howtoforge.local ‘.
sudo hostnamectl set-hostname ns2.howtoforge.localSuccessivamente, apri il file ‘/etc/hosts’ su entrambi i server Master e Slave utilizzando il seguente comando dell’editor nano.
sudo nano /etc/hostsAggiungi la seguente riga al file.
192.168.5.100 ns1.howtoforge.local ns1
192.168.5.120 ns2.howtoforge.local ns2Salva 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 -fDi seguito è riportato l’output dal server Master.

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

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
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/namedAggiungi 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
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 namedRiceverai un output simile al seguente - Il servizio BIND ‘named’ è abilitato e attualmente è in esecuzione.

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 --reloadSe 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-servicesOutput:

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

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.confInfine, esegui l’utilità del comando systemctl di seguito per riavviare il servizio BIND ‘named’ e applicare le modifiche.
sudo systemctl restart namedHai 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.confAggiungi 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.localAggiungi 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 ‘.

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.localAggiungi 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.15Salva 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à.

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.5Aggiungi 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.15Salva 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.

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-checkconfsudo named-checkzone howtoforge.local /var/named/db.howtoforge.local
sudo named-checkzone 5.168.192.in-addr.arpa /var/named/db.192.168.5Se hai configurazioni BIND corrette, riceverai un output simile allo screenshot seguente.

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 namedRiceverai un output simile al seguente - il servizio BIND ‘ named ‘ è in esecuzione e hai completato la configurazione del Master BIND.

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.confCambia 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 ‘.

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

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 namedNon 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 namedOra riceverai un output simile al seguente - il servizio BIND ‘named’ è in esecuzione sul server BIND Slave.

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-utilsInserisci y quando viene richiesto il consenso e premi INVIO per procedere.

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.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 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.localSalva 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.localdig mail.howtoforge.local +short
dig mail.howtoforge.localVerifica il nome di dominio howtoforge.local.

verifica il sottodominio mail.howtoforge.local.

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
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
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.
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.