In passato abbiamo già parlato di come realizzare un server DNS su di una distribuzione Linux. Tramite DNS (Domain Name System) è possibile sfruttare i nomi a dominio al posto dei più complessi indirizzi IP per accedere ai siti Web.
Per proporre un esempio concreto, digitando "html.it" nella barra degli URL del browser la navigazione viene indirizzata automaticamente al sito indicato tramite i DNS. Senza di essi si dovrebbe utilizzare l'IP corrispondente composto da una sequenza di numeri, separati da dei punti, che risulterebbe scomoda da memorizzare.
I DNS sono quindi essenziali per la user experience e sono stati creati per agevolare gli utenti durante l'accesso alla risorse presenti online. Oggi tutti i principali ISP (Internet Service Provider) offrono un sistema di gestione DNS tramite le configurazioni dei router concessi con il servizio. L'utente però può utilizzare il DNS che preferisce e non esistono vincoli per l'implementazione di uno specifico DNS resolver.
Ecco perché sempre più utenti scelgono di realizzare un proprio server DNS, ovvero un sistema dedicato alla gestione delle query DNS. Queste soluzioni consentono ad esempio di implementare agilmente sistemi di
Duck DNS
Oggi vogliamo parlarvi di Duck DNS, un Dynamic DNS provider che consente anche di creare sottodomini gratuiti e di eseguire il reindirizzamento dinamico verso un indirizzo IP.
Si tratta di un servizio che si pone come alternativa alle soluzioni più blasonate, e costose, che sono presenti in rete da anni. I subdomain saranno tutti connessi al dominio principale, "duckdns.org", e presenteranno il formato sottodominiodiesempio.duckdns.org
.
Il principale vantaggio di questo Dynamic DNS provider è appunto quello di poter ottenere un domain name che punta direttamente ad un IP, gratuitamente. È quindi perfetto per i piccoli progetti che necessitano di un sito Web online.
Nella guida ci focalizzeremo sulla configurazione di Duck DNS in un server Linux e ci affideremo a Debian come distribuzione di riferimento. La stessa procedura può essere applicata a qualsiasi altro sistema Linux, purché si abbia accesso ai pacchetti software che andremo ad utilizzare.
Configurazione iniziale di Debian
Per utilizzare Duck DNS non servono configurazioni hardware particolarmente potenti. Basta una normale board ARM o magari un NAS per operare senza problemi di performance. Apriamo quindi il terminale e assicuriamoci che la distribuzione abbia accesso ai pacchetti software più recenti presenti nei repository:
sudo apt update && sudo apt upgrade
Ora andiamo a reperire il download manager curl tramite il gestore di pacchetti della distribuzione APT:
sudo apt install curl
e tramite il comando mkdir
creiamo delle directory che saranno utili a Duck DNS:
sudo mkdir /opt/duckdns/
sudo mkdir /var/log/duckdns/
Per scrivere sulle directory /opt
e /var
bisogna impersonare l'utente root, ecco perché in questo caso abbiamo usato anche sudo
.
Generare il proprio dominio con Duck DNS
Rechiamoci nel portale web di Duck DNS e procediamo con la registrazione di un account. Successivamente generiamo il dominio e aggiungiamolo al nostro account di Duck DNS con il pulsante "Add domain".
Nella stessa pagina Web è reperibile il token dell'account. Segnatevi questo dato perché sarà utile successivamente.
Creare lo script per l'auto-update di Duck DNS
Torniamo ora nella shell di Debian per creare uno script bash dedicato all'aggiornamento automatico dell'IP del server Linux con il servizio di Duck DNS. Apriamo quindi l'editor di testo nano e posizioniamoci nelle directory create poco prima:
sudo nano /opt/duckdns/duck.sh
all'interno di tale file dobbiamo scrivere questo script:
echo url="https://www.duckdns.org/update?domains=<ILVOSTRODOMINIO>&token=<ILVOSTROTOKEN>&ip=" | curl -k -o /var/log/duckdns/duck.log -K -
Salviamo il tutto con la combinazione di tasti CTRL+O e chiudiamo con CTRL+X.
Se lo desideriamo, prima di eseguire lo script, possiamo impostare il tutto in modo tale che possa essere modificato solo dal nostro utente:
sudo chmod 700 /opt/duckdns/duck.sh
Il file infatti contiene non solo il dominio ma anche il token dell'account, quindi se condividete il server Linux con altre persone è meglio assicurarsi che nessun altro possa modificarlo.
Impostare un cron job per l'esecuzione dello script
Il prossimo step prevede l'impostazione di un cron job per eseguire in modo continuativo lo script appena realizzato:
sudo crontab -e
Ci viene quindi offerta una selezione di editor, noi vi consigliamo di utilizzare il classico nano.
Dopo la selezione si apre un file e nella sua parte finale dobbiamo inserire questa stringa:
*/5 * * * * /opt/duckdns/duck.sh >/dev/null 2>&1
Salviamo il tutto, sempre con CTRL+O, e chiudiamo con CTRL+X. Con la configurazione appena applicata abbiamo indicato al sistema di eseguire il nostro script ogni cinque minuti.
A questo punto il tutorial è completo. Per testare il tutto apriamo il nostro browser Web di riferimento e digitiamo l'URL seguente nella barra degli indirizzi:
https://iltuosottodominio.duckdns.org/
Dovrebbe quindi caricarsi il servizio che è al momento in esecuzione sul server Linux, come ad esempio un sito Web.
Le applicazioni in questo caso sono innumerevoli e anche i principianti, magari approdati da poco nel mondo Linux, posso sfruttare una configurazione come questa che risulta semplicissima da utilizzare ed applicare oltre che a costo zero.