Ricerca nel sito web

Come configurare il resolver DNS locale utilizzando Dnsmasq su Ubuntu 20.04


Su questa pagina

  1. Prerequisiti
  2. Per iniziare
  3. Installa Dnsmasq
  4. Configura Dnsmasq
  5. Aggiungi record DNS al server Dnsmasq
  6. Verifica la risoluzione del server Dnsmasq
  7. Configura il client remoto per utilizzare il server DNS Dnsmasq
  8. Conclusione

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

Dnsmasq è composto da tre sottosistemi:

  • Sottosistema DNS: viene utilizzato per memorizzare nella cache diversi tipi di record tra cui A, AAAA, CNAME e PTR.
  • Sottosistema DHCP: supporta DHCPv4, DHCPv6, BOOTP e PXE
  • Sottosistema router: fornisce l'autoconfigurazione di base per gli host IPv6. Può essere utilizzato da solo o insieme a DHCPv6.

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

Prerequisiti

  • Un server che esegue Ubuntu 20.04.
  • Il server è configurato con una password di root.

Iniziare

Innanzitutto, 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, dovrai disabilitare il servizio risolto da Systemd nel tuo sistema. Il servizio risolto da Systemd viene utilizzato per la risoluzione dei nomi di rete nelle applicazioni locali.

Puoi disabilitarlo eseguendo il seguente comando:

systemctl disable --now systemd-resolved

Una volta disabilitato il servizio, dovrai 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 terminata 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 - A lightweight DHCP and caching DNS server
     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 ubunt4 systemd[1]: Starting dnsmasq - A lightweight DHCP and caching DNS server...
Nov 02 11:02:12 ubunt4 dnsmasq[17705]: dnsmasq: syntax check OK.
Nov 02 11:02:12 ubunt4 dnsmasq[17726]: started, version 2.80 cachesize 150
Nov 02 11:02:12 ubunt4 dnsmasq[17726]: DNS service limited to local subnets
Nov 02 11:02:12 ubunt4 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 ubunt4 dnsmasq[17726]: reading /etc/resolv.conf
Nov 02 11:02:12 ubunt4 dnsmasq[17726]: using nameserver 8.8.8.8#53
Nov 02 11:02:12 ubunt4 dnsmasq[17726]: read /etc/hosts - 7 addresses
Nov 02 11:02:12 ubunt4 systemd[1]: Started dnsmasq - A lightweight DHCP and caching DNS server.

Al termine, puoi procedere al passaggio successivo.

Configura Dnsmasq

Successivamente, dovrai 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 server dei nomi 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 qualsiasi errore di configurazione con il seguente comando:

dnsmasq --test

Se tutto va bene, 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, dovrai modificare il tuo file /etc/hosts e aggiungere la voce 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. No, è il momento di verificare la risoluzione DNS.

È possibile utilizzare il comando dig per verificare la risoluzione DNS come mostrato di seguito:

dig host1.dns-example.com +short

Se tutto va bene, 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 linux-console.net +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, dovrai configurare un client remoto per utilizzare il tuo server DNS Dnsmasq come server DNS predefinito.

Innanzitutto, installa gli strumenti DNS con il seguente comando:

apt-get install dnsutils ldnsutils -y

Una volta installato, sarà necessario modificare il file /etc/resolv.conf e la voce del server DNS Dnsmasq.

nano /etc/resolv.conf

Aggiungere 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, dovrai verificare il tuo server DNS per la memorizzazione nella cache. Puoi verificarlo utilizzando l'utilità di perforazione.

Innanzitutto, esegui il seguente comando:

drill google.com | grep "Query time"

Dovresti vedere il seguente output:

;; Query time: 290 msec

Successivamente, esegui nuovamente il comando per verificare se la memorizzazione nella cache funziona o meno:

drill google.com | grep "Query time"

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

;; Query time: 4 msec

Conclusione

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