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 update

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

Rimuovi il file di collegamento della configurazione del risolutore DNS ‘/etc/resolv.conf’ tramite il seguente comando.

sudo unlink /etc/resolv.conf

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

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

Salva il file ed esci dall’editor quando hai finito. Ora passa ai passaggi successivi per l’installazione e la configurazione di Dnsmasq.

preparare il sistema

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 dnsmasq

Quando richiesto, inserisci y per confermare e premi INVIO per procedere.

installare dnsmasq

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 dnsmasq

Riceverai un output simile a questo - Il servizio dnsmasq è abilitato e verrà eseguito automaticamente all’avvio. E lo stato attuale del servizio dnsmasq è in esecuzione.

verifica dnsmasq

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

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

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

configurazione dnsmasq

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

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

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

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

sudo systemctl restart dnsmasq

verifica dnsmasq e configurarlo

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 dnsmasq

Riceverai un output simile a questo - Il servizio Dnsmasq è in esecuzione sulla porta predefinita 53 ed è abilitato e verrà eseguito automaticamente all’avvio.

verifica servizio dnsmasq

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 dnsutils

Inserisci 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

test con comando dig

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

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

verifica sottodomini

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

installare firewall ufw

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 udp

Successivamente, esegui il comando qui sotto per avviare e abilitare il firewall UFW.

sudo ufw enable

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

configurazione abilitare ufw

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

verifica ufw

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

Inserisci la seguente riga nel file. Assicurati di cambiare l’indirizzo IP con l’indirizzo IP del tuo server Dnsmasq.

nameserver 192.168.5.20

Salva 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

configurazione client

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

Di seguito è riportato l’output che riceverai.

verifica dominio dal client

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

Di seguito è riportato l’output simile che riceverai sulla macchina client.

verifica sottodomini

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

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

assicurati che dns funzioni

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

installare ldns

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.

verifica cache dns

Puoi anche verificare la cache DNS tramite il comando dig con l’opzione ‘ +stats ‘.

dig +noall +stats duckduckgo.com  
dig +noall +stats duckduckgo.com

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

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.