La necessità è quella di raggiungere dall'esterno il server casalingo che abbiamo messo su, magari per farci ssh dall'esterno della lan di casa, un client torrent web al quale aggiungere .torrent dal telefonino mentre siamo in giro o un sito http per provare wordpress o tomcat.
Ci sono una serie di siti che forniscono dns dinamico gratuitamente, tra i quali:
Se siamo abbstanza fortunati sul pannello di configurazione del
modem/router ADSL c'è già la possibilità di settare un indirizzo
dinamico, altrimenti bisogna configurarselo a mano.
Configurare il server casalingo per comunicare il nuovo IP al sito dns dinamico è un vero inferno se usiamo dyndns o inadyn, ma abbastanza semplice se usiamo il comando http che ci fornise il sito dns dinamico; tale comando aggiorna sul sito il nostro nuovo indirizzo IP visibile dall'esterno.
Per il servizio afraid è un comando wget che ho inserito nello script /etc/rc.local, ma il problema è che tale script viene eseguito prima che internet sia raggiungibile; va quindi inserito un test per verificare la connettività.
Tale test lo prendiamo per esempio da qui, ed aggiungiamo un'attesa con retry infinito, il risultato è la seguente sezione di script (ringraziamo sempre il sito tohtml.com per la conversione in HTML):
#!/bin/sh isConnected="0" while [ $isConnected -eq "0" ] do sleep 10 wget -q --spider http://freedns.afraid.org if [ $? -eq 0 ]; then isConnected="1" fi done wget -O /dev/null http://freedns.afraid.org/dynamic/update.php?XXX exit 0
Da notare di questo script:
- se internet non è raggiungibile questo script non esce;
- se si riavvia il modem, cambia l'indirizzo IP assegnato dall'ISP e andrebbe rilanciato questo script.
Il passo successivo è attivare il port forwarding sul router, in modo da indicare che le richieste che arrivano al modem dall'esterno su determinate porte vanno rigirate sul server casalingo.
Configurazione in systemd
Adottato ormai in quasi tutte le distribuzioni, va configurato in modo che lanci all'avvio lo script di update DNS inserito sopra:
- bisogna creare il file /etc/systemd/dynamicDns.service con il seguente contenuto:
[Unit] Description=Aggiorna il server DNS Wants=network-online.target After=network-online.target [Service] Type=oneshot ExecStart=/home/osmc/updateDns.sh [Install] WantedBy=multi-user.target
Dove il file indicato nel campo ExecStart contiene lo script di cui sopra.
Nessun commento:
Posta un commento