DNS locale · 12 min read · Sep 08, 2025
Come configurare DNS locale con Dnsmasq su Debian 12

Dnsmasq è un piccolo e leggero servizio di rete per il tuo ambiente locale (LAN). Fornisce servizi di rete come DNS, DHCP e TFTP. Dnsmasq può essere utilizzato come un forwarder DNS, 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 di memoria, adatto per dispositivi a bassa risorsa come router e firewall. Dnsmasq può essere eseguito su Linux, BSD, Android e macOS.
Questo tutorial installerà e configurerà un server DNS locale con Dnsmasq su un server Debian 12. Configureremo un server DNS locale che può essere utilizzato per la tua rete locale, aggiungendo nomi di dominio locali, abilitando la cache DNS e abilitando il server DHCP tramite Dnsmasq. Imparerai anche come configurare e aggiungere una macchina client per utilizzare il server DNS locale. Una volta completato questo tutorial, sarai in grado di accedere a tutte le tue applicazioni tramite il nome di dominio locale e le tue richieste DNS saranno più veloci perché hai abilitato la cache DNS.
Requisiti
Prima di iniziare, devi avere i seguenti requisiti per completare questo tutorial:
- Un server Debian 12 - Questo esempio utilizza un server Debian con il nome host ‘ dnsmasq-server ‘ e l’indirizzo IP 192.168.5.20.
- Un utente non root con privilegi di amministratore sudo/root.
Per la macchina client, puoi utilizzare qualsiasi distribuzione Linux perché la configurazione DNS è simile per ogni distribuzione.
Preparare il sistema
In questo passaggio, preparerai il tuo server Debian che sarà utilizzato come server DNS locale. Aggiornerai l’indice dei pacchetti, fermerai e disabiliterai il servizio ‘ systemd-resolved ‘, quindi creerai una configurazione del risolutore DNS statico tramite il file ‘ /etc/resolv.conf ‘.
Sul sistema Debian, il risolutore DNS è gestito dal servizio ‘systemd-resolved’, che fornisce risoluzione dei nomi di rete tramite l’interfaccia D-BUS. Per impostare il software del server DNS come Dnsmasq, devi disabilitare il servizio ‘ systemd-resolved ‘.
Prima di iniziare, esegui il comando apt qui sotto per aggiornare e aggiornare l’indice dei pacchetti Debian.
sudo apt updateSuccessivamente, esegui il comando qui sotto per fermare e disabilitare il servizio ‘ systemd-resolved ‘. Sul sistema Debian, la configurazione DNS è gestita dal NetworkManager e dal servizio systemd-resolved.
sudo systemctl disable --now systemd-resolved
sudo systemctl stop systemd-resolvedRimuovi il file di collegamento della configurazione del risolutore DNS ‘/etc/resolv.conf’ tramite il seguente comando.
sudo unlink /etc/resolv.confDopo di che, crea un nuovo file di configurazione del risolutore DNS ‘ /etc/resolv.conf ‘ utilizzando il seguente comando dell’editor nano.
sudo nano /etc/resolv.confAggiungi le seguenti righe al file. Questo aggiungerà i DNS pubblici di Cloudflare e Google come risolutore per il tuo server Debian.
nameserver 1.1.1.1
nameserver 8.8.8.8Salva il file ed esci dall’editor quando hai finito. Ora passa ai passaggi successivi per l’installazione e la configurazione di Dnsmasq.

Installazione e configurazione di Dnsmasq
In questo passaggio, installerai e configurerai il server DNS locale utilizzando Dnsmasq. Configurerai Dnsmasq per funzionare sulla porta DNS predefinita 53 e sull’indirizzo IP interno ‘ 192.168.5.20 ‘. Definirai anche il nome di dominio per il servizio Dnsmasq, abiliterai la cache DNS e infine abiliterai il server DHCP tramite Dnsmasq.
Il pacchetto predefinito ‘ dnsmasq ‘ è disponibile nel repository Debian. Esegui il comando apt qui sotto per installare il pacchetto Dnsmasq.
sudo apt install dnsmasqQuando richiesto, inserisci y per confermare e premi INVIO per procedere.

Dopo che Dnsmasq è stato installato, esegui il comando utility systemctl qui sotto per verificare il servizio ‘dnsmasq’ e assicurarti che il servizio sia abilitato e in esecuzione.
sudo systemctl is-enabled dnsmasq
sudo systemctl status dnsmasqRiceverai un output simile a questo - Il servizio dnsmasq è abilitato e verrà eseguito automaticamente all’avvio. E lo stato attuale del servizio dnsmasq è in esecuzione.

Con Dnsmasq in esecuzione sul tuo sistema Debian, inizierai la configurazione di Dnsmasq tramite il file ‘/etc/dnsmasq.conf ‘.
Per iniziare, esegui il comando qui sotto per eseguire il backup del file di configurazione predefinito di Dnsmasq.
sudo cp /etc/dnsmasq.conf{,.orig}Ora apri il file di configurazione di Dnsmasq ‘ /etc/dnsmasq.conf ‘ utilizzando il seguente comando dell’editor nano.
sudo nano /etc/dnsmasq.confAggiungi le seguenti righe al file.
# dnsmasq esegue sulla porta UDP 53
# con indirizzo IP localhost e 192.168.5.20
# e interfaccia di rete eth1
port=53
listen-address=127.0.0.1,192.168.5.20
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 nomi di dominio non locali
# utilizzando Cloudflare e google DNS pubblici
server=1.1.1.1
server=8.8.8.8
# definire il dominio per dnsmasq
domain=howtoforge.local
address=/howtoforge.local/192.168.5.20
# abilitare la cache DNS e regolare la dimensione della cache
cache-size=1000
# abilitare DHCP tramite dnsmasq
# definire il file del database di lease
# rendere il server dhcp come autorevole
dhcp-range=192.168.5.80,192.168.5.150,12h
dhcp-leasefile=/var/lib/misc/dnsmasq.leases
dhcp-authoritativeSalva il file e chiudi l’editor quando hai finito.
Opzioni dettagliate che utilizzerai per 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 verrà collegata e in esecuzione.
- domain-needed: disabilita l’inoltro di nomi senza l’indirizzo del dominio principale. Puoi accedere come ‘ mysql1 ‘ host 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: definire il server DNS upstream che utilizzerai per indirizzi o domini non locali. Questo esempio utilizza il server DNS pubblico di Cloudflare e Google.
- domain: definire il nome di dominio per il server Dnsmasq. In questo esempio, il server Dnsmasq otterrà il dominio locale howtoforge.local.
- address: definire quale indirizzo IP per il nome di dominio su Dnsmasq. In questo esempio, il dominio howtoforge.local verrà risolto all’indirizzo IP 192.168.5.20.
- cache-size: abilitare la cache DNS su Dnsmasq. Assicurati di regolare la dimensione, il che aumenta le prestazioni e la velocità.
- dhcp-range: abilitare il server DHCP tramite Dnsmasq. Regola il pool di indirizzi IP per la tua rete e il tempo di lease.
- dhcp-leasefile: definire il file che sarà utilizzato per memorizzare il lease DHCP.
- dhcp-authoritative: rendere il server DHCP autorevole.

Successivamente, apri il file di configurazione ‘/etc/hosts’ utilizzando il seguente comando dell’editor nano. Puoi definire il sottodominio per le tue applicazioni interne e sarà automaticamente configurato con il nome di dominio Dnsmasq ‘ howtoforge.local ‘.
sudo nano /etc/hostsAggiungi le seguenti righe al file. In questo esempio, definirai i sottodomini app1, db1 e files. Il dominio principale per questi sottodomini è il server Dnsmasq stesso ‘ howtoforge.local ‘.
Con le seguenti righe, ‘ app1.howtoforge.local ‘ verrà risolto all’indirizzo IP ‘ 192.168.5.10 ‘, il sottodominio ‘ db1.howtoforge.local ‘ verrà puntato all’indirizzo IP del server ‘ 192.168.5.25 ‘, e il sottodominio ‘files.howtoforge.local ‘ verrà puntato all’indirizzo IP ‘192.168.5.50 ‘.
192.168.5.10 app1
192.168.5.25 db1
192.168.5.50 files Salva il file ed esci dall’editor quando hai finito.
Successivamente, apri il file ‘ /etc/resolv.conf ‘ con il seguente comando dell’editor nano e aggiungi l’indirizzo IP del server Dnsmasq come ‘ nameserver ‘.
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.20Salva il file ed esci dall’editor quando hai finito.
Ora esegui il comando ‘dnsmasq’ qui sotto per verificare la configurazione di Dnsmasq e assicurarti di avere il formato di configurazione corretto. Dovresti ricevere un output come ‘ dnsmasq - syntax check OK ‘.
sudo dnsmasq --testInfine, esegui il comando utility systemctl qui sotto per riavviare il servizio ‘ dnsmasq’ e applicare le modifiche.
sudo systemctl restart dnsmasq
A questo punto, hai completato la configurazione del server DNS locale tramite Dnsmasq sul sistema Debian. Hai anche configurato il nome di dominio locale e i sottodomini, abilitato la cache DNS e abilitato il server DHCP tramite Dnsmasq.
Nei passaggi successivi, verificherai l’installazione e la configurazione del tuo server Dnsmasq.
Verifica dell’installazione di Dnsmasq
In questo passaggio, verificherai l’installazione di Dnsmasq controllando il servizio Dnsmasq e la porta LISTEN sul tuo sistema. Quindi, verificherai il nome di dominio locale e i sottodomini che hai configurato tramite il file ‘/etc/hosts’.
Esegui il comando qui sotto per assicurarti che il servizio Dnsmasq sia in esecuzione sulla porta 53. Quindi, verifica lo stato del servizio Dnsmasq tramite il comando utility systemctl.
ss -tulpn | grep 53
sudo systemctl status dnsmasqRiceverai un output simile a questo - Il servizio Dnsmasq è in esecuzione sulla porta predefinita 53 ed è abilitato e verrà eseguito automaticamente all’avvio.

Successivamente, verificherai il nome di dominio e i sottodomini che hai configurato su Dnsmasq tramite il file ‘ /etc/hosts ‘. Ma prima di ciò, esegui il comando apt qui sotto per installare il pacchetto ‘ dnsutils ‘ sul tuo sistema. Il pacchetto ‘dnsutils’ fornisce strumenti da riga di comando per testare la configurazione del server DNS.
sudo apt install dnsutilsInserisci y quando richiesto e premi INVIO per procedere con l’installazione.
Dopo che il ‘ dnsutils ‘ è stato installato, esegui il seguente comando dig per verificare il nome di dominio e i sottodomini che hai configurato.
Verifica il dominio principale Dnsmasq ‘ howtoforge.local ‘, che è puntato all’indirizzo IP del server Dnsmasq ‘192.168.5.20’.
dig howtoforge.local
Verifica i sottodomini che hai definito tramite il file ‘/etc/hosts’ tramite il comando dig qui sotto.
dig app1.howtoforge.local +short
dig db1.howtoforge.local +short
dig files.howtoforge.local +shortIl sottodominio ‘ app1.howtoforge.local ‘ è puntato all’indirizzo IP ‘ 192.168.5.10 ‘, il sottodominio ‘ db1.howtoforge.local ‘ è puntato all’indirizzo IP ‘ 192.168.5.25 ‘, e infine ‘ files.howtoforge.local ‘ è puntato all’indirizzo IP ‘ 192.168.5.50 ‘.
Di seguito è riportato l’output simile che riceverai.

Ora, hai configurato e testato l’installazione di Dnsmasq come server DNS locale su un server Debian. Nei passaggi successivi, configurerai e proteggerai Dnsmasq utilizzando il firewall UFW.
Configurazione del firewall UFW
Ora configurerai il firewall sul tuo server DNS locale. Sicurezza dell’installazione di Dnsmasq limitando l’accesso al server DNS tramite il firewall UFW.
Esegui il comando apt qui sotto per installare il firewall UFW sul tuo sistema Debian.
sudo apt install ufw -y
Dopo aver installato UFW, esegui il comando qui sotto per aggiungere il servizio OpenSSH e la porta DNS 53 al firewall UFW. In questo esempio, specificherai la sorgente della rete che è autorizzata ad accedere al server Dnsmasq, che è la rete locale con indirizzi IP 192.168.5.0/24 ‘.
Assicurati di cambiare gli indirizzi IP della rete locale con il tuo sottorete interna.
sudo ufw allow OpenSSH
sudo ufw allow from 192.168.5.0/24 to any port 53 proto udpSuccessivamente, esegui il comando qui sotto per avviare e abilitare il firewall UFW.
sudo ufw enableQuando richiesto per la configurazione, inserisci y per confermare e premi INVIO per procedere. E il firewall UFW dovrebbe ora essere in esecuzione e abilitato e si avvierà automaticamente all’avvio.

Infine, esegui il comando qui sotto per verificare lo stato del firewall UFW. Dovresti vedere che il firewall UFW è ‘attivo’ e il servizio OpenSSH e la porta DNS 53 sono stati aggiunti al firewall.
sudo ufw status
Con il firewall UFW configurato, ora puoi aggiungere client per connetterti al tuo server DNS locale.
Configurazione del client
In questo passaggio, configurerai la macchina client con distribuzione basata su Debian e il nome host ‘ client ‘. Aggiungerai il server DNS locale Dnsmasq alla macchina client.
Esegui il comando qui sotto per rimuovere il collegamento del file di configurazione del risolutore DNS ‘/etc/resolv.conf’. Quindi, crea una nuova configurazione del risolutore ‘ /etc/resolv.conf ‘ utilizzando il comando dell’editor nano qui sotto.
sudo unlink /etc/resolv.conf
sudo nano /etc/resolv.confInserisci la seguente riga nel file. Assicurati di cambiare l’indirizzo IP con l’indirizzo IP del tuo server Dnsmasq.
nameserver 192.168.5.20Salva il file ed esci dall’editor quando hai finito.
Successivamente, esegui il comando qui sotto per installare il pacchetto ‘dnsutils’ sulla macchina client.
sudo apt install dnsutils
Ora esegui il comando dig qui sotto per verificare il nome di dominio ‘ howtoforge.local ‘, che sarà puntato all’indirizzo IP del server Dnsmasq.
dig howtoforge.localDi seguito è riportato l’output che riceverai.

Per i sottodomini, esegui il comando dig qui sotto. Ogni sottodominio sarà puntato all’indirizzo IP definito nel file ‘ /etc/hosts ‘ sul server Dnsmasq.
dig app1.howtoforge.local +short
dig db1.howtoforge.local +short
dig files.howtoforge.local +shortDi seguito è riportato l’output simile che riceverai sulla macchina client.

Successivamente, dovrai anche assicurarti di poter accedere al nome di dominio pubblico tramite il server DNS locale Dnsmasq. Puoi verificarlo controllando il nome di dominio pubblico come ‘ github.com ‘.
dig github.comRiceverai un output simile a questo screenshot - In fondo all’output, dovresti vedere che la tua richiesta è stata risposta dal server DNS locale Dnsmasq che gira su ‘ 192.168.5.20’ con la porta predefinita ‘ 53 ‘. Con questo in mente, ti sei connesso con successo al nome di dominio pubblico tramite il server DNS locale Dnsmasq.

Infine, verificherai la cache DNS tramite i comandi ‘drill’ e ‘dig’. Il comando ‘ drill ‘ fa parte del pacchetto ‘ ldnsutils ‘, quindi esegui il comando apt qui sotto per installarlo.
sudo apt install ldnsutils
Dopo aver installato ldnsutils, esegui il comando drill qui sotto per verificare la cache DNS che hai configurato sul server Dnsmasq.
drill duckduckgo.com | grep "Query time"
drill duckduckgo.com | grep "Query time"Riceverai un output simile allo screenshot seguente - alla prima richiesta, il ‘ Query time ‘ è 60ms. Ma la seconda volta che richiedi lo stesso dominio, il tempo di query è ridotto a 1 ms, il che significa che la richiesta DNS è memorizzata nella cache sul server DNS locale Dnsmasq.

Puoi anche verificare la cache DNS tramite il comando dig con l’opzione ‘ +stats ‘.
dig +noall +stats duckduckgo.com
dig +noall +stats duckduckgo.comHai ora completato la configurazione della macchina client e verificato che il server DNS locale Dnsmasq funzioni completamente, dal nome di dominio locale e dai sottodomini che hai definito tramite il file ‘/etc/hosts’, alla cache DNS che hai abilitato su Dnsmasq.
Conclusione
In questo tutorial, hai creato il tuo server DNS locale con Dnsmasq. Hai configurato il tuo server DNS locale per il tuo ambiente locale con Dnmasq su un server Debian 12. Inoltre, questo ha incluso la configurazione di Dnsmasq con nomi di dominio locali e sottodomini, abilitato la cache DNS per ottenere risposte DNS più veloci e abilitato il server DHCP tramite Dnsmasq.
Infine, hai anche aggiunto e configurato la macchina client per utilizzare il server DNS locale che hai creato. In 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.