DNS Setup · 13 min read · Sep 08, 2025
Come installare un risolutore DNS locale con Dnsmasq su Rocky Linux

Dnsmasq è un piccolo e leggero server DNS per il tuo ambiente locale. Può essere utilizzato per fornire un server DNS, un server DHCP e un server TFTP. Per quanto riguarda il server DNS, Dnsmasq può essere utilizzato come forwarder, server DNS ricorsivo e sistema di caching DNS. Carica anche i contenuti DNS dal file /etc/hosts, il che ti consente di impostare nomi di dominio per nomi host locali.
Dnsmasq è progettato per essere leggero con una piccola impronta, adatto per dispositivi a bassa risorsa come router e firewall. Dnsmasq ha requisiti di sistema ridotti e consuma poche risorse. Può essere eseguito su Linux, BSD, Android e macOS.
Questo tutorial tratterà l’installazione e la configurazione di un server DNS locale con Dnsmasq su un server Rocky Linux 9. Installerai Dnsmasq e configurerai il server DNS locale con alcune funzionalità aggiuntive, come l’abilitazione di nomi di dominio locali, la configurazione di sottodomini tramite il file /etc/hosts e l’abilitazione della cache DNS per un accesso più veloce. Infine, abiliterai il server DHCP tramite Dnsmasq.
Imparerai anche come configurare le macchine client per utilizzare il server DNS locale come risolutore DNS principale.
Prerequisiti
Ci sono diversi prerequisiti che devi avere prima di iniziare. Di seguito sono elencati i prerequisiti:
- Un server Rocky Linux 9 - Questo esempio utilizza Rocky Linux con hostname ‘ dnsmasq-rocky ‘ e l’indirizzo IP ‘ 192.168.5.50 ‘.
- Un utente non root con privilegi di amministratore sudo/root.
- SELinux è in esecuzione in modalità ‘ permissive ‘.
Per le macchine client, puoi utilizzare qualsiasi distribuzione Linux. Puoi utilizzare distribuzioni basate su Debian o basate su RHEL come macchine client.
Preparare il sistema
Sui sistemi operativi basati su RHEL, il risolutore DNS predefinito ‘/etc/resolv.conf’ è generato dal servizio NetworkManager. Prima di installare Dnsmasq, configurerai un risolutore DNS statico tramite il file /etc/resolv.conf e disabiliterai il risolutore DNS dal servizio NetworkManager.
Per iniziare, apri il file di configurazione di NetworkManager /etc/NetworkManager/NetworkManager.conf utilizzando il comando dell’editor nano qui sotto.
sudo nano /etc/NetworkManager/NetworkManager.confAggiungi la riga ‘ dns=none ‘ all’interno della sezione ‘ [section] ‘.
[main]
dns=noneSalva il file ed esci dall’editor quando hai finito.
Successivamente, apri il file di configurazione del risolutore DNS ‘/etc/resolv.conf’ utilizzando il comando dell’editor nano qui sotto.
sudo nano /etc/resolv.confElimina tutte le righe disponibili e sostituiscile con le seguenti righe. Con questo, utilizzerai i DNS pubblici di Cloudflare e Google come server DNS principale.
nameserver 1.1.1.1
nameserver 8.8.8.8Salva il file ed esci quando hai finito.
Infine, esegui il comando systemctl qui sotto per riavviare il NetworkManager e applicare le modifiche.
sudo systemctl restart NetworkManager
Con queste impostazioni terminate, il tuo risolutore DNS non sarà modificato dal servizio NetworkManager e potrai aggiungere o modificare il risolutore DNS in qualsiasi momento.
Nei passaggi successivi, inizierai l’installazione e la configurazione di Dnsmasq su Rocky Linux.
Installare Dnsmasq su Rocky Linux
In questo passaggio, installerai il pacchetto Dnsmasq su un server Rocky Linux. Quindi, avvierai e abiliterai il servizio Dnsmasq per l’esecuzione all’avvio del sistema.
Per impostazione predefinita, il pacchetto ‘ dnsmasq ‘ è disponibile nel repository AppStream di Rocky Linux. Esegui il comando dnf qui sotto per ottenere informazioni sul pacchetto ‘ dnsmasq ‘.
sudo dnf info dnsmasqLa versione Dnsmasq v2.85 è disponibile su Rocky Linux 9 al momento della scrittura.

Ora esegui il comando qui sotto per installare Dnsmasq. Inserisci y quando richiesto per la conferma, quindi premi INVIO per procedere.
sudo dnf install dnsmasq dnsmasq-utilsL’installazione di Dnsmasq dovrebbe ora essere avviata.
Dopo aver installato Dnsmasq, esegui il comando systemctl qui sotto per avviare e abilitare il servizio ‘ dnsmasq ‘. Con il comando qui sotto eseguito, il servizio ‘ dnsmasq ‘ dovrebbe ora essere in esecuzione e abilitato, il che farà sì che si avvii automaticamente all’avvio.
sudo systemctl start dnsmasq
sudo systemctl enable dnsmasqVerifica il servizio ‘ dnsmasq ‘ tramite l’utilità di comando systemctl qui sotto.
sudo systemctl status dnsmasqRiceverai un output simile a questo - Il servizio ‘ dnsmasq ‘ è attualmente in esecuzione, abilitato e verrà eseguito automaticamente all’avvio.

Con Dnsmasq installato e in esecuzione, inizierai ora la configurazione di Dnsmasq per funzionare come server DNS locale.
Configurare Dnsmasq
In questo passaggio, configurerai Dnsmasq come server DNS locale con alcune funzionalità abilitate come la cache DNS e il server DHCP, e configurerai il nome di dominio e i sottodomini per le applicazioni locali. Questo consente alla tua applicazione di essere accessibile tramite nomi di dominio/sottodomini locali come ‘ db1.howtoforge.local ‘, ‘ app.howtoforge.local ‘ e molti altri.
Per iniziare, esegui il comando qui sotto per copiare il file di configurazione predefinito di Dnsmasq in ‘/etc/dnsmasq.conf.orig’, quindi apri il file di configurazione originale di Dnsmasq ‘/etc/dnsmasq.conf’ utilizzando il comando dell’editor nano qui sotto.
sudo cp /etc/dnsmasq.conf{,.orig}
sudo nano /etc/dnsmasq.confAggiungi le seguenti righe al file.
# dnsmasq esegue sulla porta UDP 53
# con indirizzo IP localhost e 192.168.5.50
# e interfaccia di rete eth1
port=53
listen-address=127.0.0.1,192.168.5.50
interface=eth1
# disabilita l'inoltro di indirizzi non instradati
# disabilita l'inoltro di nomi senza il dominio principale.com
# aggiungi automaticamente la parte del dominio ai nomi semplici
# disabilita dnsmasq per leggere il file /etc/resolv.conf
domain-needed
bogus-priv
expand-hosts
no-resolv
# server DNS upstream per domini non locali
# utilizzando Cloudflare e google public DNS
server=1.1.1.1
server=8.8.8.8
# definire il dominio per dnsmasq
domain=howtoforge.local
address=/howtoforge.local/192.168.5.50
# abilitare la cache DNS e regolare la dimensione della cache
cache-size=10000
# abilitare dhcp tramite dnsmasq
# definire il file del database di leasing
# rendere il server dhcp come autorevole
dhcp-range=192.168.5.100,192.168.5.150,12h
dhcp-leasefile=/var/lib/dnsmasq/dnsmasq.leases
dhcp-authoritativeSalva il file ed esci dall’editor quando hai finito.
Di seguito sono riportate le opzioni dettagliate che utilizzerai per la tua installazione di Dnsmasq:
- port: quale porta utilizzerai per eseguire Dnsmasq.
- listen-address: quale indirizzo IP utilizzerai per eseguire Dnsmasq. Puoi utilizzare più indirizzi IP.
- interface: quale interfaccia Dnsmasq sarà legata e in esecuzione.
- domain-needed: disabilita l’inoltro di nomi senza l’indirizzo del dominio principale. Puoi accedere come host ‘mysql1’ a meno che tu non dia il nome completo con il dominio locale come ‘mysql1.howtoforge.local’.
- bogus-priv: disabilita l’inoltro per indirizzi non instradati.
- expand-hosts: aggiungi automaticamente la parte del dominio locale ai nomi semplici.
- no-resolv: ignora il file ‘/etc/resolv.conf’ sul server.
- server: definisci il server DNS upstream che utilizzerai per indirizzi o domini non locali. Questo esempio utilizza il server DNS pubblico di Cloudflare e Google.
- domain: definisci il nome di dominio per il server Dnsmasq. In questo esempio, il server Dnsmasq otterrà il dominio locale howtoforge.local.
- address: definisci quale indirizzo IP per il nome di dominio su Dnsmasq. In questo esempio, il dominio howtoforge.local sarà risolto all’indirizzo IP 192.168.5.50.
- cache-size: abilita la cache DNS su Dnsmasq. Assicurati di regolare la dimensione, il che aumenta le prestazioni e la velocità.
- dhcp-range: abilita il server DHCP tramite Dnsmasq. Regola il pool di indirizzi IP per la tua rete e il tempo di leasing.
- dhcp-leasefile: definisci il file che sarà utilizzato per memorizzare il leasing DHCP.
- dhcp-authoritative: rendi il server DHCP autorevole.

Successivamente, apri il file ‘ /etc/hosts ‘ utilizzando il comando dell’editor nano qui sotto. Ora definirai alcuni sottodomini per le applicazioni nel tuo ambiente locale.
sudo nano /etc/hostsAggiungi le seguenti righe al file. In questo esempio, creerai tre sottodomini wiki, mysql e files. Ogni sottodominio seguirà il dominio principale del server Dnsmasq ‘howtoforge.local’ e punterà a un indirizzo IP specifico.
Il sottodominio wiki.howtoforge.local punterà all’indirizzo IP ‘ 192.168.5.10 ‘, il sottodominio ‘ mysql.howtoforge.local ‘ è puntato all’indirizzo IP ‘ 192.168.5.25 ‘, e il ‘ files.howtoforge.local ‘ sarà puntato all’indirizzo IP ‘ 192.168.5.30 ‘.
192.168.5.10 wiki
192.168.5.25 mysql
192.168.5.30 files Salva il file ed esci dall’editor quando hai finito.
Ora apri il file di configurazione del risolutore DNS ‘ /etc/resolv.conf ‘ utilizzando il comando dell’editor nano qui sotto.
sudo nano /etc/resolv.confAggiungi le seguenti righe in cima al file. Assicurati di cambiare l’indirizzo IP con l’indirizzo IP del server Dnsmasq.
nameserver 127.0.0.1
nameserver 192.168.5.50Salva il file ed esci dall’editor quando hai finito.
Ora esegui il comando qui sotto per verificare la configurazione di Dnsmasq e assicurarti di avere la configurazione corretta. Riceverai un output come ‘ dnsmasq: syntax check OK ‘.
sudo dnsmasq --testInfine, esegui il comando systemctl qui sotto per riavviare il servizio ‘dnsmasq’ e applicare le modifiche.
sudo systemctl restart dnsmasq
A questo punto, hai terminato la configurazione di Dnsmasq come server DNS locale sul sistema Rocky Linux. Hai anche configurato il nome di dominio per il server Dnsmasq e alcuni sottodomini tramite il file ‘/etc/hosts’. Infine, hai abilitato la cache DNS e il server DHCP tramite Dnsmasq.
Nei passaggi successivi, verificherai l’installazione e la configurazione del server Dnsmasq.
Verificare l’installazione di Dnsmasq
Con la configurazione di Dnsmasq completata, ora verificherai il servizio Dnsmasq stesso. Verificherai Dnsmasq per assicurarti che sia in esecuzione sulla porta predefinita 50 e che il servizio sia in esecuzione. Quindi, verificherai il nome di dominio locale e i sottodomini che hai creato tramite il pacchetto ‘ dns-utils ‘.
Esegui il comando qui sotto per verificare la porta aperta sul tuo sistema. Quindi verifica il servizio ‘ dnsmasq ‘ tramite l’utilità di comando systemctl.
ss -tulpn | grep 53
sudo systemctl status dnsmasqRiceverai un output simile a questo - Dnsmasq è in esecuzione sulla porta predefinita 53 e lo stato del servizio è attualmente in esecuzione. Inoltre, è abilitato, il che farà sì che si avvii automaticamente all’avvio.

Successivamente, esegui il comando dnf qui sotto per installare il pacchetto ‘bind-utils’ sul tuo server Rocky Linux. Questo pacchetto fornisce diversi strumenti da riga di comando per testare e risolvere problemi del server DNS.
sudo dnf install bind-utilsInserisci y quando richiesto e premi INVIO per procedere.

Ora esegui il comando dig qui sotto per verificare il nome di dominio per il server Dnsmasq ‘ howtoforge.local ‘. Dovresti vedere che ‘ howtoforge.local ‘ è puntato all’indirizzo IP del server ‘ 192.168.5.50 ‘.
dig howtoforge.local
Infine, esegui il comando qui sotto per verificare i sottodomini che hai definito tramite il file ‘ /etc/hosts ‘.
dig wiki.howtoforge.local +short
dig mysql.howtoforge.local +short
dig files.howtoforge.local +shortRiceverai un output simile a questo - Il sottodominio wiki.howtoforge.local è puntato all’indirizzo IP 192.168.5.10, il sottodominio mysql.howtoforge.local è puntato all’indirizzo IP 192.168.5.25, e infine il sottodominio files.howtoforge.local è puntato all’indirizzo IP del server 192.168.5.30.

Con questi risultati, hai terminato la configurazione di Dnsmasq come server DNS locale. Nei passaggi successivi, configurerai la porta DNS tramite Firewalld.
Configurare Firewalld
In questo passaggio, configurerai il firewalld per aprire la porta del servizio DNS e aggiungere gli indirizzi IP delle reti interne al firewalld come principale sorgente autorizzata ad accedere alla porta del servizio DNS.
Esegui il comando firewall-cmd qui sotto per aggiungere il servizio DNS al firewalld. Quindi, aggiungi gli indirizzi IP della rete interna come sorgente.
sudo firewall-cmd --add-service=dns
sudo firewall-cmd --add-source=192.168.5.0/24Successivamente, esegui il comando qui sotto per salvare le regole temporanee che hai creato e ricaricare il firewalld per applicare le modifiche.
sudo firewall-cmd --runtime-to-permanent
sudo firewall-cmd --reload
Verifica il firewalld tramite il seguente comando. Dovresti vedere che il servizio DNS è stato aggiunto al firewalld e che l’indirizzo IP sorgente della rete è stato aggiunto al firewalld.
sudo firewall-cmd --list-allOutput:

Configurare il client (distribuzioni basate su Debian o RHEL)
In questo passaggio, imparerai come configurare sia le distribuzioni basate su Debian che quelle basate su RHEL per utilizzare il server DNS locale che hai creato tramite Dnsmasq.
Per distribuzioni basate su RHEL
Aggiungi un nuovo file di configurazione per NetworkManager ‘ /etc/NetworkManager/conf.d/dns-servers.conf ‘ utilizzando il comando dell’editor nano qui sotto.
sudo nano /etc/NetworkManager/conf.d/dns-servers.confAggiungi le seguenti righe al file e assicurati di cambiare l’indirizzo IP con l’indirizzo IP del servizio Dnsmasq. Con questa configurazione, imposterai il risolutore DNS predefinito per il client utilizzando l’indirizzo IP del server Dnsmasq. Questo scriverà automaticamente la configurazione del risolutore DNS ‘ /etc/resolv.conf ‘.
[global-dns-domain-*]
servers=192.168.5.50Salva il file ed esci dall’editor quando hai finito.
Successivamente, esegui il comando systemctl qui sotto per riavviare il servizio NetworkManager e applicare le modifiche.
sudo systemctl restart NetworkManagerPuoi mostrare il file ‘/etc/resolv.conf’ per verificare le impostazioni. Dovresti vedere che il server dei nomi predefinito è l’indirizzo IP del server Dnsmasq locale 192.168.5.50.
cat /etc/resolv.conf
Successivamente, esegui il comando dnf qui sotto per installare il pacchetto ‘bind-utils’ sul tuo sistema.
sudo dnf install bind-utils
Per distribuzioni basate su Debian
Se stai utilizzando un sistema operativo basato su Debian, puoi configurare manualmente il risolutore DNS e disabilitare il servizio ‘systemd-resolved’ sul tuo sistema - specialmente per il sistema Ubuntu.
Esegui il comando qui sotto per fermare e disabilitare il servizio systemd-resolved.
sudo systemctl disable --now systemd-resolvedOra esegui il comando qui sotto per rimuovere il file di collegamento del file di configurazione del risolutore DNS ‘/etc/resolv.conf’. Quindi, crea un nuovo file di configurazione del risolutore ‘ /etc/resolv.conf ‘ tramite il comando dell’editor nano qui sotto.
unlink /etc/resolv.conf
sudo nano /etc/resolv.confAggiungi la seguente riga al file e cambia l’indirizzo IP con l’indirizzo IP del tuo server Dnsmasq.
nameserver 192.168.5.50Salva il file ed esci dall’editor quando hai finito.
Successivamente, esegui il comando apt qui sotto per installare il pacchetto ‘ dnsutils ‘ sul tuo sistema.
sudo apt install dnsutilsUna volta installato ‘bind-utils’ o ‘dns-utils’, puoi verificare la configurazione di Dnsmasq tramite il comando dig.
Verifica il nome di dominio del server Dnsmasq ‘ howtoforge.local ‘ tramite il comando dig qui sotto. Dovresti vedere che il dominio ‘ howtoforge.local ‘ è puntato all’indirizzo IP del server Dnsmasq 192.168.5.50.
dig howtoforge.local
Successivamente, verifica i sottodomini che hai configurato tramite il file ‘/etc/hosts’ utilizzando il comando qui sotto. Dovresti vedere che ogni sottodominio è puntato all’indirizzo IP specifico che hai configurato nel file ‘/etc/hosts’.
dig wiki.howtoforge.local +short
dig mysql.howtoforge.local +short
dig files.howtoforge.local +shortRiceverai un output simile a questo - Il sottodominio wiki.howtoforge.local è puntato all’indirizzo IP 192.168.5.10, il sottodominio mysql.howtoforge.local è puntato all’indirizzo IP 192.168.5.25, e infine il sottodominio files.howtoforge.local è puntato all’indirizzo IP del server 192.168.5.30.

Con questo, il nome di dominio locale e i sottodomini sono stati configurati con successo. Ora, come riguardo ai nomi di dominio pubblici come Github.com, ecc?
Esegui il comando qui sotto per verificare i nomi di dominio di internet dalla tua macchina client. Questo garantirà che tu possa connetterti a internet, anche con il risolutore DNS locale sul server Dnsmasq.
dig github.comRiceverai un output simile a questo - La query dig a github.com è connessa tramite il server DNS locale che gira sull’indirizzo IP 192.168.5.50 con la porta predefinita 53.

Infine, verifica le impostazioni della cache DNS tramite il comando dig qui sotto. Questo ti mostrerà le statistiche delle query eseguite, incluso il ‘ Tempo di query ‘ per il nome di dominio target.
dig +noall +stats duckduckgo.com
dig +noall +stats duckduckgo.comRiceverai quindi un output simile a questo - La prima query che ottieni è il ‘ Tempo di query ‘ in 63ms. Ma per la seconda e la terza query, il Tempo di Query è 2ms, il che significa che le tue query allo stesso nome di dominio sono memorizzate nella cache tramite il server DNS locale Dnsmasq.

Conclusione
In questo tutorial, hai creato il tuo server DNS locale con Dnsmasq. Hai impostato il tuo server DNS per il tuo ambiente locale con Dnmasq su un server Rocky Linux 9. Inoltre, questo ha incluso la configurazione di Dnsmasq con nomi di dominio locali e sottodomini, abilitato la cache DNS per ottenere velocità più elevate e abilitato anche il server DHCP tramite Dnsmasq.
Infine, hai anche aggiunto e configurato macchine client (distribuzioni basate su Debian e RHEL) per utilizzare il server DNS locale che hai creato. All’interno di questo, hai anche imparato come risolvere i problemi del server DNS con il comando dig e come configurare un risolutore DNS su un sistema Linux.
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.