Dnsmasq sta per "abbreviazione di DNS masquerade" è un inoltro DNS 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 qualsiasi query DNS, risponderà dalla sua cache o inoltrerà al server DNS diverso.
Dnsmasq è composto da tre sottosistemi:
- Sottosistema DNS: Viene utilizzato per memorizzare nella cache diversi tipi di record inclusi A, AAAA, CNAME e PTR.
- Sottosistema DHCP: Supporta DHCPv4, DHCPv6, BOOTP e PXE
- Sottosistema pubblicità router : Fornisce l'autoconfigurazione di base per gli host IPv6. Può essere utilizzato da solo o in combinazione con 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.
- Una password di root è configurata sul server.
Per iniziare
Innanzitutto, si consiglia di aggiornare i pacchetti di sistema all'ultima versione. Puoi aggiornare tutti i pacchetti eseguendo il comando seguente:
apt-get update -y
Dopo aver aggiornato tutti i pacchetti, dovrai disabilitare il servizio risolto da Systemd nel tuo sistema. Il servizio con risoluzione di sistema 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
Al termine dell'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 ubuntu2004 systemd[1]: Starting dnsmasq - A lightweight DHCP and caching DNS server... 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 - A lightweight DHCP and caching DNS server.
Una volta terminato, 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 principale 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. Quindi, verifica il server per eventuali errori 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 viene avviato e resta 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 DNS
A questo punto, Dnsmasq è installato e configurato. No, è ora 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 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 howtoforge.com +short
Dovresti ottenere il seguente output:
172.67.68.93 104.26.3.165 104.26.2.165
Configura client remoto per utilizzare il server DNS DNS
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, dovrai modificare il file /etc/resolv.conf e la voce 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, 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
Quindi, esegui di nuovo 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.