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

Aggiungi la riga ‘ dns=none ‘ all’interno della sezione ‘ [section] ‘.

[main]  
dns=none

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

Elimina 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.8

Salva 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

preparare il sistema

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 dnsmasq

La versione Dnsmasq v2.85 è disponibile su Rocky Linux 9 al momento della scrittura.

info dnsmasq

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

L’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 dnsmasq

Verifica il servizio ‘ dnsmasq ‘ tramite l’utilità di comando systemctl qui sotto.

sudo systemctl status dnsmasq

Riceverai un output simile a questo - Il servizio ‘ dnsmasq ‘ è attualmente in esecuzione, abilitato e verrà eseguito automaticamente all’avvio.

verifica dnsmasq

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

Aggiungi 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-authoritative

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

configurazione dnsmasq

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/hosts

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

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

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

Infine, esegui il comando systemctl qui sotto per riavviare il servizio ‘dnsmasq’ e applicare le modifiche.

sudo systemctl restart dnsmasq

configurare 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 dnsmasq

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

verifica dnsmasq

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

Inserisci y quando richiesto e premi INVIO per procedere.

installare bind-utils

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

verifica nome di dominio

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 +short

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

verifica sottodominio

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/24

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

configurare firewalld

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-all

Output:

verifica firewalld

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

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

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

Puoi 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

configurare macchina client

Successivamente, esegui il comando dnf qui sotto per installare il pacchetto ‘bind-utils’ sul tuo sistema.

sudo dnf install bind-utils

installare 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-resolved

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

Aggiungi la seguente riga al file e cambia l’indirizzo IP con l’indirizzo IP del tuo server Dnsmasq.

nameserver 192.168.5.50

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

Una 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

verifica dal client

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 +short

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

verifica sottodomini

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

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

verifica dns internet

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

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

verifica cache dns

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.

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.