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 -yDopo 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-resolvedUna 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.confSuccessivamente, aggiungi il server DNS di Google al file resolv.conf con il seguente comando:
echo "nameserver 8.8.8.8" > /etc/resolv.confUna 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 -yUna volta completata l’installazione, i servizi Dnsmasq verranno avviati automaticamente. Puoi controllare lo stato di Dnsmasq con il seguente comando:
systemctl status dnsmasqDovresti 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.confModifica 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.confAggiungi 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 --testSe tutto è a posto, dovresti ottenere il seguente output:
dnsmasq: syntax check OK.
Infine, riavvia il servizio Dnsmasq per applicare le modifiche:
systemctl restart dnsmasqA questo punto, Dnsmasq è avviato e in ascolto sulla porta 53. Puoi verificarlo con il seguente comando:
ss -alnp | grep -i :53Dovresti 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/hostsAggiungi 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 +shortSe 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 +shortDovresti 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 -yUna volta installato, dovrai modificare il file /etc/resolv.conf e l’entry del tuo server DNS Dnsmasq.
nano /etc/resolv.confAggiungi 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.comDovresti 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.
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.