Impostare un DNS al proprio Raspberry

dns

Salve a tutti! Noi di Tux Maniacs, fino ad oggi, vi abbiamo proposto parecchi articoli sul Raspberry, con progetti di varie categorie, dal cloud personale installando OwnCloud, all'installazione e configurazione di un sistema di videosorveglianza, fino ad arrivare ad installare un NAS utilizzando Samba, o semplicemente un server web con Apache. Tutte queste applicazioni funzionano su internet

 

Un altro semplice esempio è il servizio ssh. Se vogliamo collegarci ad un altro computer della nostra rete casalinga, con ssh, basta che dal terminale digitiamo:

ssh -l nome_utente indirizzo_ip_computer

Quindi mettendo l'indirizzo ip di quella macchina, riusciamo ad aprire una connesione con quel computer. Tutto funziona bene fino a quando rimaniamo nella nostra rete, ma le cose iniziano a non andare più così se proviamo a connetterci allo stesso computer, utilizzando lo stesso indirizzo ip ma da un'altra rete!
Come mai? Beh semplicemente perché quell'indirizzo, è sì l'indirizzo della macchina a cui vogliamo connetterci, ma è un'indirizzo locale!
Facendo un'analogia, è come se volessimo inviare una cartolina ad un nostro amico, ma specificando solo la via, ad esempio scrivendo “via Roma”, ma a quale ci riferiamo? Quella di Torino? Quella di Genova? O quella di Cagliari?
Per questo motivo non possiamo mettere l'indirizzo locale della rete in cui si trova il computer, ma dobbiamo mettere l'indirizzo remoto, ossia quello che utilizza la nostra rete per farsi trovare in internet!
Come lo troviamo questo indirizzo ip? Un modo è da terminale con:

curl ipv4.icanhazip.com

Da come potrete notare dall'output, esso è diverso dall'indirizzo ip locale della macchina. Bene ora che abbiamo questo indirizzo ip basta usarlo nel comando ssh, ovviamente abilitando la porta del router per le connessioni ssh (di solito la 22), in modo che sia visibile anche dall'esterno, e non solo dalla nostra rete locale.
Sembrerebbe che tutto funzioni alla grande, fino a quando non otteniamo, ad esempio, un output simile a questo:

ssh: connect to host 233.44.33.11 port 22: Network is unreachable

La prima domanda che ci poniamo è: ma come è possibile, fino a due secondi fa funzionava tutto con questo indirizzo ip! La verità è che l'indirizzo ip remoto, non è statico (ossia fisso che non cambia mai), ma è dinamico. Questo vuol dire che dopo un certo periodo di tempo esso cambia, e siamo punto a capo!
Ora che è cambiato quale diavolo è l'indirizzo ip? L'unica soluzione sembrerebbe attendere, tornare a casa e recuperare il nuovo ip, oppure scrivere un piccolo script che lo faccia per noi, e periodicamente lo invia al nostro indirizzo email. La seconda soluzione sembrerebbe efficace, in quanto basta che leggiamo l'email ed inseriamo il nuovo indirizzo ip.
Però diventa scomodo se utilizziamo servizi come OwnCloud, poiché dobbiamo ogni volta cambiare l'indirizzo ip nel nostro client per far si che continui il suo ciclo di sincronizzazioni.

Allora come facciamo a far in modo di toglierci questo dente, e non preoccuparci più dell'indirizzo ip della nostra macchina? La risposta è utilizzare il protocollo DNS.

 

 

COS'È IL DNS
Nella spiegazione di prima, il problema è che l'indirizzo ip cambia periodicamente, ma cosa accadrebbe se fosse statico, ossia non cambia? Beh, ovviamente sarebbe una pacchia!
Provate ad immaginare una persona, non competente nel settore informatico, che deve collegarsi ad un servizio come Facebook; questo servizio gira su un web server, che sta su una macchina e quindi anche esso ha un indirizzo ip! Questo poveraccio ogni volta dovrebbe mettere l'indirizzo ip di Facebook per andare sul sito e per poi accedervi!
L'essere umano non è “programmato” per ricordarsi l'indirizzo ip di una computer, figuriamoci se poi questa persona usa più servizi web, come ad esempio Gmail, Youtube o Netflix! Tutti indirizzi ip diversi! Il web , e la testolina di questa persona, diventerebbero un bel vaso di Pandora!
La cosa cambia se ad ogni indirizzo ip è associato un nome! Da questa necessità arrivano i DNS, un “semplice” protocollo informatico che ci rende la vita più semplice. Quindi, al posto di mettere l'indirizzo ip di Facebook, scriveremo semplicemente il suo DNS: www.facebook.com.

Il discorso sul protocollo DNS sarebbe lungo ma allo stesso tempo anche molto interessante da fare, quindi in fondo alla pagina vi mettiamo dei link, per saperne di più su questo argomento.

Noi, in questo post, ci limiteremo a rendere il nostro Raspberry, o un qualsiasi computer in generale, visibile nella rete internet.

 

 

CREAZIONE DEL DNS
Da come abbiamo potuto capire, dobbiamo associare un DNS al nostro computer.
Per fare questa operazione, dobbiamo in poche parole associarne uno all'indirizzo ip dinamico che ci fornisce il nostro ISP.

Come prima cosa registriamo un nostro DNS. Per fare ciò andiamo su un sito che ci permette di crearne uno, come ad esempio DynDNS.

Registriamo un nuovo account, e salviamoci username e password.

Ora nel menù in alto, come mostrato in questa immagine:

gestione_host

Clicchiamo su GESTIONE HOST, e ci aprirà una pagina dove ci chiederà di creare un nuovo DNS, o in alternativa, se già ne abbiamo uno, verrà mostrato.Una volta creato, clicchiamo sopra, e ci manderà nella pagina della sua gestione. Dobbiamo inserire il nostro indirizzo ip remoto. Una volta fatto clicchiamo sul tasto in basso “AGGIORNA”.

Ora non ci resta che associare questo DNS al nostro router, in modo che quando cambi indirizzo ip, questo lo comunicherà al DNS, che automaticamente lo aggiornerà.

Quindi andiamo nella pagina delle impostazioni del modem, da browser, scrivendo nella URL: 192.168.1.1 o per Fastweb: 192.168.1.254, o in alternativa mettete l'indirizzo del vostro router se differisce da questi due. Una volta all'interno dovete cercare l'opzione “DNS dinamico” o eventualmente qualcosa di simile. Ad esempio in certi router di Alice, di fianco a destra, avete una serie di tasti come questi:

dns_dinamico_alice

Dovrete cliccare su “DNS Dinamico”, e vi mostrerà una schermata simile:

add_dns

Inserite le credenziali della vostra registrazione, il fornitore del DNS, e ovviamente, il vostro DNS.

Bene ora abbiamo terminato, e la nostra macchina è accessibile dall'esterno attraverso un semplice link!
Questa procedura può ovviamente variare da router a router, ma in sintesi si tratta di fare sempre gli stessi passaggi, bisogna in ogni caso aggiungere il DNS, e le credenziali di autenticazione.

Se avete problemi con un particolare ISP, in DynDNS, nella schermata di configurazione del DNS, troverete una schermata simile a destra:

Configurazioni

 

SCRIPT DI AGGIORNAMENTO (SOLO SE NON FUNZIONA IL PRECEDENTE)

Nel caso in cui non dovesse funzionare il DNS, o semplicemente abbiamo bisogno dell'indirizzo ip, possiamo affidarci a uno script che venga eseguito periodicamente sulla nostra macchina.
Cosa fa lo script? Semplicemente ogni 5 minuti verifica se l'indirizzo ip della macchina è cambiato oppure no. Se è cambiato, allora ce lo notifica tramite email.

Lo script si compone di 4 file, e va inserito in una cartella a nostra scelta. Il nostro consiglio è di metterlo all'interno della vostra home. Iniziamo!
Apriamo il terminale e creiamo la nuova cartella con:

mkdir mail-ip

Successivamente ci spostiamo e creiamo i 4 file con:

cd mail-ip
touch log.txt mail-alert.txt mail-ip.txt my-ip.txt

A questo punto apriamo il file mail-ip.sh, e inseriamo il seguente codice:

#!/bin/bash
logfile="/home/alan/mail-ip/mail-ip.log"
file="/home/alan/mail-ip/my-ip.txt"
mailAlert="/home/alan/mail-ip/mail-alert.txt"

old_ip=`cat $file`
my_ip=`curl ifconfig.co`
if [ "$old_ip" != "$my_ip" ]; then
 echo $my_ip > $file #Aggirono il file my-ip
 curl -s http://sync.afraid.org/u/uak7xHcpZgN5QhCQiY74oLRI/ 2>/dev/null
 echo ""
 echo "[`date`]" >> $logfile
 echo "Il nuovo ip di Alan e' " >> $logfile
 echo $my_ip >> $logfile
 echo "Invio la mail." >> $logfile
 echo "-------------" >> $logfile
 #invio la mail di allerta
 alertfile="/home/alan/mail-ip/alert.txt"
 cp $mailAlert $alertfile
 echo $my_ip >> $alertfile
 ssmtp emanuele.lovera@gmail.com < $alertfile
 #mioip
 rm $alertfile
fi

e al posto di DESTINATARIO@PROVIDER.com inseriamo l'indirizzo email a cui vogliamo inviare la notifica.

Apriamo il file my-ip.txt e inseriamo questo indirizzo:

1.2.34.567

Ovviamente è fasullo. In questo modo la prima volta che lanceremo questo script ci verrà inviata la notifica.

A questo punto editiamo il file mail'alert.txt, inserendo:

   To:destinatario@provider.com.com
   From:mittente@provider.com
   Subject: Cambio IP Raspberry
   Il nuovo ip e'

e ovviamente in corrispondenza di To e From inseriamo i corretti indirizzi.

Ora dobbiamo impostare il sistema operativo all'invio delle email in automatico. Per farlo seguiamo questa guida sulla configurazione di ssmtp.

Ora apriamo il terminale e diamo:

sudo nano /etc/crontab

E inseriamo:

*/5 * * * * <utente> /<path>/mail-ip.sh

 

 

CONCLUSIONI
Bene, ora possiamo espandere i nostri progettini con il Raspberry anche nella vasta rete internet! Ma è bene ricordarvi una cosa importante, ossia internet è piena di persone a cui piace “divertirsi” cercando di violare i pc delle altre persone. Mettendo un servizio del vostro Raspberry su internet, i rischi si moltiplicano!
Ancora una cosa! Noi di Tux Maniacs, vi consigliamo di andare a leggere qualche nostro post sulla sicurezza, per mettere più al sicuro il vostro lampone!

 

FONTI

Dottore in Informatica. Appassionato di computer fin dal primo PC Olivetti con Windows 95 e la bellezza di 8 MB di RAM.
Utilizzatore Linux da 5 anni, credo profondamente nella filosofia open source.
Dopo tante distro provate sul mio fidato Toshiba, uso Fedora per lo studio e il divertimento.

2 risposte

  1. Vorrei cambiare il dns del mio rasp come fare.
    Se sono in rete solo il raspberry andra su dsn cambiato o no

    ti ringrazio
    A

    • Emanuele Lovera - Blogger

      Ciao, non ho capito la domanda! Riformula e sarai più fortunato! 😉

      Emanuele

Lascia un commento