Molto spesso, nei server, è meglio disporre di un nameserver locale per risolvere più velocemente le query dns.
Quando il server è un mailserver, che utilizza in modo intensivo query dns ai server dns blacklist, è obbligatorio disporre di un “proprio” server dns (spesso i servizi DNSBL non accettano richieste dai dns pubblici).
Da ultimo, una installazione standard di Ubuntu Server 20.04 utilizza una configurazione systemd-resolved che “si appropria” del file di definizione del dns locale /etc/resolvd e che spesso non è molto affidabile nella risoluzione dns (es. le query vanno in timeout senza una ragione specifica).
Normalmente viene installato il classico BIND (9), a nostro avviso poco adatto allo scopo (ha molte funzioni non usate in questi casi indicati).
In sua vece, consigliamo l’installazione di un caching-resolver, che velocizza sensibilmente le query dns del server e – volendo – di altri device in rete locale: Unbound.
Specialmente da quando CentOS ha perso il suo appeal, preferiamo adottare Ubuntu Server come OS base per le varie installazioni e VM; ci sono vari how-to su come installare Unbound in Ubuntu Server, ma sinora non abbiamo trovato una guida semplice e funzionante; per questo abbiamo deciso di proporla.
Dapprima occorre installare il pacchetto unbound
e il pacchetto funzionale openresolv
, che automatizza la gestione del famoso file di configurazione /etc/resolvd
.
sudo apt install unbound openresolv
Successivamente verificare la corretta installazione di unbound ed il suo corretto avvio come servizio:
unbound -V
systemctl status unbound
Successivamente occorre disabilitare systemd-resolved
per evitare conflitti e spreco di risorse di calcolo:
sudo systemctl disable systemd-resolved --now
Infine avviare il servizio (daemon) unbound:
sudo systemctl start unbound
e configurarlo per l’avvio automatico:
sudo systemctl enable unbound
Verificare che il file di configurazione del dns server locale sia correttamente creato da daemon ausiliario di unbound unbound-resolvconf.service
con:
cat /etc/resolv.conf
Deve essere presente questa configurazione:
#Generated by resolvconf
nameserver 127.0.0.1
Riavviare quindi il sistema e la configurazione standard è pronta e funzionante, da verificare con i vari comandi di query dns, come nslookup
o dig
.
Tramite il comando dig
potrete verificare come il tempo impiegato per la prima query ai dnsserver autoritativi si azzeri dalla seconda in poi, evidenziandosi come il valore venga recuperato in cache.
Unbound dispone di moltissime funzionalità avanzate, che potranno essere configurate tramite file di configurazione:
sudo nano /etc/unbound/unbound.conf
quali DNS-over-TLS e DNS-over-HTTPS che consentono connessioni cifrate; sono inoltre disponibili funzioni avanzate – privacy oriented – che limitano il volume di dati scambiati con i vari server dns autoritativi, quali Query Name Minimisation (attiva di default), Aggressive Use of DNSSEC-Validated Cache ed il supporto alla copia in locale di intere zone (authority zones).