Il server DNS consente di convertire la stringa dell’URL cercato sul browser, nell’indirizzo IP del server remoto.
Di norma ogni ISP ha i propri server DNS autoritativi (che vengono interpellati per ogni richiesta dal router), molte volte tuttavia si opta per l’uso di quelli di Google o degli OpenDNS, andando a modificare manualmente il proprio Sistema Operativo o il router stesso.
E’ infatti risaputo che i server DNS di Google siano molto più veloci nelle risposte, e abbiano molti più indirizzi in cache rispetto a quelli degli ISP sparsi per il mondo.
Un server DNS locale può servire a due utilizzi:
- velocizzare la navigazione, tenendo in cache gli indirizzi che vengono maggiormente richiesti dalla rete casalinga (o aziendale), e inoltrando la richiesta verso un server DNS esterno solo in caso di necessità (esempio un indirizzo non i cache)
- consentire la traduzione di DOMINI locali in IP locali, funzione interessantissima in ambito aziendale ma anche casalingo
Consideriamo per esempio l’uso di un NAS locale, sull’indirizzo 192.168.1.8:
ogni volta che ci dovremmo connettere, avremmo da inserire tale (scomodo) IP.
Avendo un server DNS autoritativo locale:
potremmo invece decidere di assegnare un NOME A DOMINIO a tale IP, come ad esempio nas.myhome, e fare si che venga risolto sull’indirizzo IP del NAS stesso.
In questo modo nel browser (quando siamo in rete locale, ma anche tramite VPN) non ci resterà che digitare nas.myhome, come se fosse un normalissimo sito web pubblico.
In aggiunta, usando questo metodo, sarà possibile anche incrementare la sicurezza, andando ad impostare una blacklist globale sui nomi a dominio che non vogliamo vengano risolti.
Ovviamente perché tutto funzioni dobbiamo fare in modo che TUTTE le richieste DNS locali vengano risolte dal nostro server DNS autoritativo locale, e che questo non vada mai offline, per evitare impossibilità di risolvere indirizzi.
Una comoda soluzione a basso costo può essere l’uso di un RaspberryPi, vediamo come configurarlo.
Mini guida per il setup di RaspberryPi
Preparare il Raspberry con una distro Debian come Raspbian, e connettersi tramite SSH (o aprire il terminale se connessi con tastiera e schermo).
Per connettersi tramite SSH usare Putty (su Windows) o il comando (da Linux):
ssh pi@192.168.x.x
dove al posto di x dovrete inserire il vero ip del raspberry; la password di default di raspbian per l’utente ‘pi’ è ‘raspberry’.
Una volta connessi, eseguite un update dei packages con
sudo apt-get update
Adesso assegnate un IP statico al raspberry:
sudo nano /etc/network/interfaces
il file deve sembrare così
auto lo iface lo inet loopback allow-hotplug wlan0 iface wlan0 inet manual wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf auto wlan0 iface wlan0 inet static address 192.168.1.190 gateway 192.168.1.1 netmask 255.255.255.0 auto eth0 iface eth0 inet static address 192.168.1.190 gateway 192.168.1.1 netmask 255.255.255.0
(ovviamente al posto di .1.190 e .1.1 inserite gli indirizzi che vi competono)
salvare con Ctrl+X, e premendo Y, confermando con Invio,
poi riavviare con
sudo reboot
e controllare che l’indirizzo sia corretto con il comando
ifconfig
Configurare il server DNS Locale
Installare DNSMASQ:
sudo apt-get install -y dnsmasq
adesso il servizio DNS sarà già attivo, andiamo ad interromperlo per poterne modificare la configurazione
sudo service dnsmasq stop
configuriamo adesso il server DNS con il comando
sudo nano /etc/dnsmasq.conf
si aprirà l’editor di testo sul terminale,
il file di configurazione mostrato sarà tutto commentato (con ‘#‘ all’inizio di ogni frase),
potete anche lasciare tutto intatto per consultazioni future, l’importante è inserire all’inizio le stringhe di configurazione che seguono:
# DOMAIN CONFIG domain=raspberry.myhome resolv-file=/etc/resolv.dnsmasq min-port=4096 # FORWARDING DNS SERVERS server=8.8.8.8 server=8.8.4.4 server=208.67.222.222 server=208.67.220.220 # LOCAL CACHE SIZE cache-size=10000 # LOCAL ADDRESSLIST address=/nas.myhome/192.168.1.8 # BLACKLIST address=/double-click.net/127.0.0.1 # poi qui di seguito tutto il file originale..
NOTE
- i 4 server di forwarding sono rispettivamente 2 Google e 2 OpenDns
- il dominio .myhome può essere cambiato a piacere, ma NON deve essere un dominio usato pubblicamente (esempio .net), evitare anche il famoso .local
- potete inserire nella Local-AddressList, tutti gli indirizzi locali che volete risolvere in IP (locali o anche pubblici)
-ovviamente è anche possibile eseguire override di indirizzi comuni (DNS Spoofing)
-nel mio caso ho inserito la risoluzione dell’IP del mio NAS su un dominio personalizzato (.myhome)
-potete aggiungere una nuova riga per ogni altra mappatura - tutti i domini inseriti nella blacklist non risulteranno più raggiungibili dalla rete locale (perchè mappati sul loopback)
salvare con Ctrl+X, e premendo Y, confermando con Invio.
Riavviare il servizio dnsmasq
service dnsmasq start
NOTA: DnsMasq è in grado di fungere anche da server DHCP, ma nel nostro caso lo useremo solamente come server DNS.
Adesso il nostro server DNS locale è pronto per poter essere usato
Per poter usare il nostro server DNS locale, andiamo sul PC o sul router nella sezione di configurazione DNS, ed inseriamo come server DNS primario l’indirizzo IP statico precedentemente assegnato al nostro Raspberry.
E’ buona norma inserire anche un server DNS secondario, usato in caso di malfunzionamento o irraggiungibilità del nostro server DNS locale, possiamo ad esempio inserire quello di Google (secondario: 8.8.4.4).
Facciamo un test da un computer in LAN con i comandi:
nslookup google.it nslookup nas.myhome
la risposta sarà corretta se proveniente dal server DNS locale, ovvero del tipo:
Server: 192.168.1.190 Non-authoritative answer: Name: google.it Address: 216.58.205.67
oppure
Server: 192.168.1.190 Non-authoritative answer: Name: nas.myhome Address: 192.168.1.8
in ogni caso avendo impostato un DNS secondario, in caso di disconnessione del raspberry, sarà comunque possibile navigare tranquillamente.