DNS Setup · 5 min read · Oct 01, 2025

Come configurare un risolutore DNS locale utilizzando Dnsmasq su Ubuntu 20.04

Dnsmasq sta per “abbreviazione di DNS masquerade” ed è un semplice, leggero e facile da usare forwarder DNS utilizzato per una piccola rete. Può essere configurato come cache DNS e server DHCP e supporta sia il protocollo IPv4 che IPv6. Quando riceve richieste DNS, risponderà da cache o inoltrerà a un diverso server DNS.

Dnsmasq è composto da tre sottosistemi:

  • Sottosistema DNS : Viene utilizzato per memorizzare in cache diversi tipi di record tra cui A, AAAA, CNAME e PTR.
  • Sottosistema DHCP : Supporta DHCPv4, DHCPv6, BOOTP e PXE
  • Sottosistema Router Advertisement : Fornisce autoconfigurazione di base per gli host IPv6. Può essere utilizzato autonomamente o in combinazione con DHCPv6.

In questo tutorial, ti mostreremo come impostare un server DNS locale con Dnsmasq su un server Ubuntu 20.04.

Prerequisiti

  • Un server che esegue Ubuntu 20.04.
  • Una password di root configurata sul server.

Iniziare

Per prima cosa, si consiglia di aggiornare i pacchetti di sistema all’ultima versione. Puoi aggiornare tutti i pacchetti eseguendo il seguente comando:

apt-get update -y

Dopo aver aggiornato tutti i pacchetti, sarà necessario disabilitare il servizio Systemd-resolved nel tuo sistema. Il servizio Systemd-resolved viene utilizzato per la risoluzione dei nomi di rete per le applicazioni locali.

Puoi disabilitarlo eseguendo il seguente comando:

systemctl disable --now systemd-resolved

Una volta disabilitato il servizio, sarà necessario rimuovere il file resolv.conf predefinito e crearne uno nuovo con i dettagli del tuo server DNS personalizzato.

Puoi rimuovere il file resolv.conf predefinito con il seguente comando:

rm -rf /etc/resolv.conf

Successivamente, aggiungi il server DNS di Google al file resolv.conf con il seguente comando:

echo "nameserver 8.8.8.8" > /etc/resolv.conf

Una volta terminato, puoi procedere al passaggio successivo.

Installa Dnsmasq

Per impostazione predefinita, Dnsmasq è disponibile nel repository predefinito di Ubuntu 20.04. Puoi installarlo semplicemente eseguendo il seguente comando:

apt-get install dnsmasq dnsutils ldnsutils -y

Una volta completata l’installazione, i servizi Dnsmasq verranno avviati automaticamente. Puoi controllare lo stato di Dnsmasq con il seguente comando:

systemctl status dnsmasq

Dovresti ottenere il seguente output:

dnsmasq.service - dnsmasq - Un server DHCP e DNS in cache leggero
     Loaded: loaded (/lib/systemd/system/dnsmasq.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2020-11-02 11:02:01 UTC; 15s ago
   Main PID: 17726 (dnsmasq)
      Tasks: 1 (limit: 2282)
     Memory: 868.0K
     CGroup: /system.slice/dnsmasq.service
             ??17726 /usr/sbin/dnsmasq -x /run/dnsmasq/dnsmasq.pid -u dnsmasq -7 /etc/dnsmasq.d,.dpkg-dist,.dpkg-old,.dpkg-new --local-service --trust-anchor=.,20326,8,2,e>

Nov 02 11:02:12 ubuntu2004 systemd[1]: Starting dnsmasq - Un server DHCP e DNS in cache leggero...
Nov 02 11:02:12 ubuntu2004 dnsmasq[17705]: dnsmasq: syntax check OK.
Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: started, version 2.80 cachesize 150
Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: DNS service limited to local subnets
Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: compile time options: IPv6 GNU-getopt DBus i18n IDN DHCP DHCPv6 no-Lua TFTP conntrack ipset auth DNSSEC loop-detect inotify dumpfi>
Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: reading /etc/resolv.conf
Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: using nameserver 8.8.8.8#53
Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: read /etc/hosts - 7 addresses
Nov 02 11:02:12 ubuntu2004 systemd[1]: Started dnsmasq - Un server DHCP e DNS in cache leggero.

Una volta terminato, puoi procedere al passaggio successivo.

Configura Dnsmasq

Successivamente, sarà necessario configurare Dnsmasq come server DNS locale. Puoi farlo modificando il file di configurazione principale di Dnsmasq:

nano /etc/dnsmasq.conf

Modifica le seguenti righe:

port=53
domain-needed
bogus-priv
listen-address=127.0.0.1,your-server-ip
expand-hosts
domain=dns-example.com
cache-size=1000

Salva e chiudi il file quando hai finito.

Successivamente, dovrai aggiungere l’indirizzo IP del tuo server come nameserver primario nel tuo file resolv.conf. Puoi aggiungerlo con il seguente comando:

nano /etc/resolv.conf

Aggiungi la seguente riga sopra la riga “nameserver 8.8.8.8”:

nameserver your-server-ip

Salva e chiudi il file quando hai finito. Successivamente, verifica il server per eventuali errori di configurazione con il seguente comando:

dnsmasq --test

Se tutto è a posto, dovresti ottenere il seguente output:

dnsmasq: syntax check OK.

Infine, riavvia il servizio Dnsmasq per applicare le modifiche:

systemctl restart dnsmasq

A questo punto, Dnsmasq è avviato e in ascolto sulla porta 53. Puoi verificarlo con il seguente comando:

ss -alnp | grep -i :53

Dovresti ottenere il seguente output:

udp     UNCONN   0        0                                             0.0.0.0:53                                                0.0.0.0:*                      users:(("dnsmasq",pid=41051,fd=4))                                              
udp     UNCONN   0        0                                                [::]:53                                                   [::]:*                      users:(("dnsmasq",pid=41051,fd=6))                                              
tcp     LISTEN   0        32                                            0.0.0.0:53                                                0.0.0.0:*                      users:(("dnsmasq",pid=41051,fd=5))                                              
tcp     LISTEN   0        32                                               [::]:53                                                   [::]:*                      users:(("dnsmasq",pid=41051,fd=7))                                              

Aggiungi record DNS al server Dnsmasq

Successivamente, sarà necessario modificare il file /etc/hosts e aggiungere l’entry del server DNS locale.

nano /etc/hosts

Aggiungi la seguente riga:

your-server-ip host1.dns-example.com

Salva e chiudi il file quando hai finito.

Verifica la risoluzione del server Dnsmasq

A questo punto, Dnsmasq è installato e configurato. Ora è il momento di verificare la risoluzione DNS.

Puoi utilizzare il comando dig per controllare la risoluzione DNS come mostrato di seguito:

dig host1.dns-example.com +short

Se tutto è a posto, dovresti vedere l’IP del tuo server nel seguente output:

your-server-ip

Puoi anche verificare la risoluzione DNS esterna con il seguente comando:

dig howtoforge.com +short

Dovresti ottenere il seguente output:

172.67.68.93
104.26.3.165
104.26.2.165

Configura il client remoto per utilizzare il server DNS Dnsmasq

Successivamente, sarà necessario configurare un client remoto per utilizzare il tuo server DNS Dnsmasq come server DNS predefinito.

Per prima cosa, installa gli strumenti DNS con il seguente comando:

apt-get install dnsutils ldnsutils -y

Una volta installato, dovrai modificare il file /etc/resolv.conf e l’entry del tuo server DNS Dnsmasq.

nano /etc/resolv.conf

Aggiungi la seguente riga all’inizio del file:

nameserver your-server-ip

Salva e chiudi il file quando hai finito.

Successivamente, verifica la risoluzione DNS locale con il seguente comando:

dig host1.dns-example.com

Dovresti vedere il seguente output:

; DiG 9.9.5-3ubuntu0.4-Ubuntu host1.dns-example.com
;; global options: +cmd
;; Got answer:
;; HEADER opcode: QUERY, status: NOERROR, id: 26401
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;host1.dns-example.com.    IN  A

;; ANSWER SECTION:
host1.dns-example.com.    0   IN  A   45.58.32.165

;; Query time: 301 msec
;; SERVER: 45.58.32.165#53(45.58.32.165)
;; WHEN: Mon Nov 02 16:49:37 IST 2020
;; MSG SIZE  rcvd: 66

Successivamente, sarà necessario verificare il tuo server DNS per la memorizzazione nella cache. Puoi controllarlo utilizzando l’utilità drill.

Per prima cosa, esegui il seguente comando:

drill google.com | grep "Query time"

Dovresti vedere il seguente output:

;; Query time: 290 msec

Successivamente, esegui di nuovo il comando per controllare se la memorizzazione nella cache funziona o meno:

drill google.com | grep "Query time"

Dovresti vedere che il tempo di query ora diminuisce a 4 msec:

;; Query time: 4 msec

Conclusione

Congratulazioni! hai installato e configurato con successo Dnsmasq come server DNS locale su Ubuntu 20.04. Spero che ora tu possa implementarlo facilmente nella tua rete locale per la risoluzione dei nomi.

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.