Quando hai bisogno di un DNS (Domain Name Service) nella tua LAN da far utilizzare ai tuoi client, la soluzione più semplice è dnsmasq.
Sia che si tratti della LAN di laboratorio, dove si fa sperimentazione e sviluppo, sia che si tratti della LAN dell’ufficio, è sempre consigliabile disporre di un Caching DNS locale.
Il Caching DNS è un tool molto utile per limitare le richieste al DNS esterno (quindi, limitando l’utilizzo della banda internet) e quindi anche le performance (le richieste DNS sono tutte locali). Ma può rivelarsi utile anche per filtrare le richieste in modo che il traffico DNS possa essere controllato dall’amministratore di rete con una maggiore granularità .
Nell’ambito della sezione How-To di questo sito, vedremo come installare e configurare il DNS Caching/Forwarder dnsmansq.
Che cosa è dnsmasq ?
Dnsmasq è un insieme di servizi espressamente pensati per offrire supporti di base per le LAN (Local Area Network).
Riporto la definizione di dnsmasq dalla pagina del manuale (man page):
dnsmasq is a lightweight DNS, TFTP, PXE, router advertisement and DHCP server. It is intended to provide coupled DNS and DHCP service to a LAN.
Il tool dnsmasq è un server DNS, TFTP, PXE, router advertisement e DHCP leggero. È destinato a fornire un servizio DNS e DHCP accoppiato a una LAN
Quindi è ben più che un semplice DNS statico locale. Ad esempio; è in grado di risolvere nomi host assegnati staticamente all’interno della LAN, così come pure effettuare richieste DNS ricorsive a DNS autoritativi per risolvere nomi esterni (Es. diprimio.com
). Ma può essere impiegato anche come DHCP Server e pertanto, risolvere nomi assegnati ai client con indirizzo determinato dinamicamente.
Ma quanto appena detto è estremamente riduttivo: dnsmasq
può fare un sacco di di altre cose utili, che per altro non saranno discusse in questo post. Qui voglio occuparmi esclusivamente di come fare il primo setup di dnsmasq
ed abilitare un servizio DNS privato all’interno della mia LAN
Setup di dnsmansq in pochi passaggi
Per linee generali, fare il setup di dnsmasq in un server Linux implica necessariamente quanto segue:
- Installazione del pacchetto dnsmasq;
- Configurazione di dnsmasq;
- Abilitazione del servizio;
- Aggiungere host per la risoluzione dei nomi
Passo 1 – Installazione del pacchetto dnsmasq
In un sistema Linux, l’installazione di dnsmasq è semplice come l’installazione di qualsiasi altro pacchetto:
In un sistema Red Hat Linux, o derivata (Es. Fedora, CentOS, Rocky Linux, ecc.)
$ sudo dnf install dnsmasq
In un sistema Debian o dedivata (Es. Ubuntu, Mint, ecc)
$ sudo apt update
$ sudo apt install dnsmasq
Il comando di installazione, provvederà ad installare tutti gli eseguibili, i file accessori ed il file di configurazione di default, che dovremo in seguito modificare.
Pacchetto installato. posso andare al passo successivo.
Passo 2 – Configurazione di dnsmasq
Ora che il pacchetto è installato, per farlo funzionare nel modo desiderato, è indispensabile modificare il file di configurazione /etc/dnsmasq.conf
utilizzando l’editor di testi preferito (vim o nano).
Essendo in presenza di un file di configurazione di default, normalmente faccio un backup del file originale in modo da averlo sempre a disposizione come segue:
$ sudo cp -ip /etc/dnsmasq.conf /etc/dnsmasq.conf.ORG
Quindi riprendo il file di configurazione effettivo e faccio in modo che il contenuto sia simile a quello riportato qui di seguito:
# File: /etc/dnsmasq.conf created by dpm on 2024-07-01 as per 1st
# dnsmasq configuration
# Never forward plain names (without a dot or domain part)
domain-needed
# Never forward addresses in the non-routed address spaces.
bogus-priv
# Routed (external) DNS Servers
server=8.8.8.8
server=8.8.4.4
server=208.67.220.220
# send any host to 'openinfra.lan' to the specified server
address=/openinfra.lan/192.168.137.158
# Interfaces where dnsmasq must listen
listen-address=127.0.0.1
listen-address=192.168.137.158
# bind all interfaces
bind-interfaces
# end-of-file
Nota Importante:
Notare che per chiarezza e sintesi di rappresentazione il contenuto originale del file dnsmasq.conf
è stato interamente rimosso e sostituito con quello riportato nell’esempio. Il contenuto completo del file di configurazione originale è ancora nel backup che è stato fatto poco sopra (i.e. /etc/dnsmasq.conf.ORG
).
Salvo il file e chiudo l’editor per procedere con il passo successivo.
Passo 3 – Abilitazione del servizio
Tutto è pronto per l’effettivo avvio del servizio e della impostazione per l’avvio automatico ad ogni boot del sistema.
Qui, avvio il servizio (o lo riavvio in caso fosse già in esecuzione dopo l’installazione):
$ sudo systemctl restart dnsmasq
Qui, impongo che il servizio venga avviato automaticamente ad ogni boot del server:
$ sudo systemctl enable dnsmasq.service
Se tutto è andato come auspicato, il servizio dovrebbe essere ora “active (running)”, quando si va a chiedere lo stato:
$ sudo systemctl status dnsmasq.service
È possibile passare al passo successivo.
Passo 4 – Aggiungere host per la risoluzione dei nomi
Aggiungere nomi arbitrari per la risoluzione di dnsmasq è alquanto semplice, anche se l’operazione va fatta con un minimo di cautela, in quanto i nomi degli host arbitrari che si desidera definire, vanno aggiunti al file di sistema /etc/hosts
.
Di seguito è riportato, a titolo di esempio, la parte che è stata aggiunta al file /etc/hosts
del sistema Linux.
# Following entries are for dnsmasq
192.168.165.30 www.diprimio.lan # Internal web server
192.168.165.31 ntp.diprimio.lan # Internal NTP server
192.168.192.158 nagios.diprimio.lan # Monitoring system on other LAN
Vale la pena di ricordare che dnsmasq, prima di fare il rilancio della richiesta DNS ai server esterni, controlla nel suo database interno se il nome per il quale è richiesta la risoluzione è presente.
Il file di sistema utilizzato come database dei nomi da dnsmasq è il file di sistema /etc/hosts
, come ben documentato nelle man page.
Note per l’utilizzo
Per utilizzare effettivamente il server e far sì che i computer della LAN riconoscano i domini personalizzati, bisognerà impostare i computer per utilizzare l’indirizzo IP del server DNS su cui è installato dnsmasq. Nel caso degli esempi sopra, l’indirizzo IP del DNS è: 192.168.137.158
(ovvero l’indirizzo IP Statico assegnato al server).
Notare che in alcuni casi potrebbe essere necessario eseguire una pulizia (cleanup) della cache DNS del client, prima che le nuove risoluzioni dei nomi siano visibili dal client stesso.
Conclusioni
Dnsmasq è un server DHCP e DNS forwarder leggero, facile da configurare e manutenere. È progettato per fornire il servizio DNS e, facoltativamente, DHCP, a una piccola rete LAN, all’interno della quale può servire i nomi delle macchine locali che non sono disponibili nel server DNS globale.
Il server DHCP si integra con il server DNS e consente alle macchine con indirizzi allocati tramite DHCP di apparire nel DNS con propri nomi già opportunamente configurati in ogni host o in un file di configurazione centrale.
C’è da dire che dnsmasq supporta inoltre i lease DHCP statici e dinamici e BOOTP/TFTP/PXE per l’avvio di rete di macchine senza disco (diskless).
Insomma: Ho veramente bisogno di dnsmasq nella mia LAN? Direi proprio di si, anche considerando quanto sia semplice installare e configurare un dnsmasq personalizzato.
CondividiDisclaimer
Questa pagina potrebbe contenere link di affiliazione. Gli acquisti o gli ordini che effettuerai tramite tali link possono generare commissioni che ci aiutano a sostenere questo sito web.