Sei sulla pagina 1di 6

Server DNS: come crearlo nella propria rete

locale - IlSoftware.it

Michele Nasi

Creare un server DNS in LAN e usare record personalizzati per risolvere indirizzi
raggiungibili in locale. Come installare e configurare Dnsmasq su Ubuntu Server.

I server DNS permettono la risoluzione dei nomi a dominio ovvero


consentono di stabilire a quale indirizzo IP pubblico corrispondono www.google.it,
www.ilsoftware.it e così via.

Dell'importanza dei server DNS e del funzionamento di nslookup abbiamo parlato


in un altro articolo: l'indirizzo mnemonico consente di ricordare facilmente come si
raggiunge un sito ma ad esso deve corrispondere un indirizzo IP sul quale è in
ascolto il server web.

Come creare un server DNS per la propria rete


locale
Creare un server DNS all'interno della LAN può essere utile per molteplici
finalità.

Se si avesse l'esigenza di creare una corrispondenza tra un indirizzo IP locale e un


indirizzo mnemonico si può modificare la configurazione del server DNS locale.

Si supponga che all'indirizzo 192.168.1.100 risponda un'applicazione web installata


su un server fisico o in una macchina virtuale.

Configurando un server DNS locale è possibile creare ad esempio un'associazione


192.168.1.100 intranet.lan: digitando intranet.lan nella barra degli indirizzi su
qualunque client collegato in rete locale si raggiungerà l'applicazione web.

Per allestire il server DNS in LAN usiamo una macchina Ubuntu Server 20.04 e
installiamo Dnsmasq, un noto software che integra funzionalità di caching DNS,
server DHCP e molto altro.

Prima di installare Dnsmasq è bene aggiornare Ubuntu Server con il seguente


comando:
sudo apt update && sudo apt upgrade -y

Come secondo passo è fondamentale assegnare alla macchina Ubuntu Server un


indirizzo IP statico. In primis si deve digitare quanto segue e verificare che il file
di configurazione contenga network: {config: disabled}:

sudo nano /etc/cloud/cloud.cfg.d/subiquity-disable-cloudinit-networking.cfg

Nel caso in cui network: {config: disabled} non fosse presente si deve modificare il
file di configurazione e aggiungere tale stringa.

Per salvare il file e uscire dall'editor di testo base premere CTRL+O quindi
CTRL+X.
Con il comando ip addr show si leggerà l'indirizzo IP privato correntemente
assegnato al sistema Ubuntu Server.

La presenza dell'indicazione dynamic sta a confermare che l'indirizzo IP privato è


stato assegnato in maniera dinamica dal DHCP, di solito dal router o dall'access
point.

In Ubuntu Server la configurazione di rete è controllata e gestita dall'utilità


netplan. Digitando ls /etc/netplan si accede al nome del file di configurazione di
netplan.

Con il comando seguente di solito si ha la possibilità di modificarlo direttamente:

sudo nano /etc/netplan/00-installer-config.yaml

Nel file di configurazione si può scrivere quanto segue:

network:
ethernets:
enp0s3:
addresses: [192.168.1.151/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.4.4, 8.8.8.8]
version: 2

L'indirizzo 192.168.1.151 va sostituito con l'IP privato da assegnare in modo statico


al server Ubuntu: esso contraddistinguerà anche il server DNS locale. L'IP va scelto
nell'intervallo di indirizzi che non viene automaticamente assegnato dal DHCP.

L'indirizzo del gateway (che di solito coincide con quello del router) va sostituito di
conseguenza.

Gli indirizzi 8.8.4.4 e 8.8.8.8 vanno sostituiti con un DNS pubblico raggiungibile
attraverso la rete Internet: nell'esempio abbiamo usato i server DNS Google.
Per applicare la configurazione e assegnare l'IP statico definito in precedenza si
deve digitare il comando seguente:
sudo netplan apply

Con il comando ip addr show ci si può accertare che la nuova configurazione sia
stata applicata. L'indicazione dynamic risulterà scomparsa.

Dal momento che il servizio di sistema systemd-resolve è in ascolto sulla porta 53,
prima di usare Dnsmasq è necessario disabilitarlo:

sudo systemctl disable systemd-resolved


sudo systemctl stop systemd-resolved
sudo rm /etc/resolv.conf
echo nameserver 8.8.8.8 | sudo tee /etc/resolv.conf

È giunto il momento di installare Dnsmasq con il comando che segue:


sudo apt install dnsmasq -y

Al termine dell'installazione si deve digitare il comando che permette di accedere


alla configurazione di Dnsmasq:
sudo nano /etc/dnsmasq.conf

I simboli del cancelletto posti all'inizio delle seguenti due righe devono essere
rimossi:

#domain-needed
#bogus-priv

In questo modo le denominazioni locali (ad esempio sitoweb) che non hanno alcun
TLD specificato non saranno mai inoltrate al DNS gestito da terze parti (ad
esempio ai DNS Google).
Inoltre, con il secondo parametro di configurazione, gli indirizzi IP privati non
saranno esposti al gestore del server DNS remoto.

Scorrendo il file fino in fondo si deve aggiungere quanto segue:

server=8.8.8.8
server=8.8.4.4
cache-size=1000

In questo modo si configurano i server di Google come DNS di riferimento e si


chiede a Dnsmasq di conservare una cache locale formata da un numero massimo
di 1.000 elementi. In questo modo si velocizzerà la risoluzione dei nomi a dominio
più richiesti dai client collegati in rete locale.

Infine con il comando sudo nano /etc/hosts si possono aggiungere nuove


corrispondenze.

Ad esempio digitando quanto segue tutte le richieste provenienti dai client e


indirizzate a intranet.lan saranno girate al sistema che risponde all'IP privato
192.168.1.100:
192.168.1.100 intranet.lan

Senza modificare i file HOSTS sui singoli sistemi collegati in rete locale è possibile
risolvere correttamente le richieste di risoluzione dei nomi a dominio che non sono
conosciuti ai DNS pubblici.

Come ultimo passo basta digitare quanto segue per riavviare Dnsmasq e
verificarne lo stato:

sudo service dnsmasq restart


sudo service dnsmasq status

Sostituendo l'indirizzo IP pubblico impostato a livello di router o comunque di


server DHCP con l'indirizzo privato del DNS locale, tutti i dispositivi della LAN
useranno Dnsmasq per risolvere i nomi a dominio.
Affinché i client inizino a utilizzare il server DNS locale è necessario riavviare i
dispositivi oppure, nel caso di Windows, digitare i comandi ipconfig /release e
ipconfig /renew dal prompt aperto con i diritti di amministratore.

Con il comando ipconfig /all si può verificare che il client Windows sta usando
come server DNS proprio quello locale.

Digitando nslookup intranet.lan nell'esempio si otterrà la risposta corretta dal DNS


locale.
Come si vede nell'immagine Dnsmasq ha informato il client che l'indirizzo
intranet.lan punta all'IP 192.168.1.100.

Potrebbero piacerti anche