Aug 212013
 

Recentemente ho pubblicato un articolo su “DynDNS e ddclient: accedere al vostro Linux da qualsiasi luogo“, e alcune persone hanno commentato che i servizi su DynDNS non sono più liberi, quindi questa è una alternativa di Adam Buchanan pubblicata la prima volta sul suo interessante blog

Questo non ha nulla a che fare con il search engine marketing, ma a tutto a che fare con l’automazione. Se avete sempre voluto ospitare un server in una posizione che non dispone di un indirizzo IP statico, allora sapete doloroso può essere.

Spero che nel momento in cui leggerete questo abbiate familiarità con ciò che è un DNS e cosa è un DNS dinamico. In caso contrario, tali collegamenti dovrebbero raggiungere il punto velocemente. Ho provato un paio di differenti fornitori di DNS dinamici, ma in questi ultimi anni ho usato freedns.afraid.org. Io non ci ospito questo sito (ovviamente), ma faccio host FTP e alcuni altri servizi che mi permettono di arrivare alle mie macchine a casa da dovunque io mi trovi.

Sto scrivendo questo post oggi perché mi è capitato di dover aggiornare il mio script che tiene i miei DNS aggiornati quando il mio IP cambia.



Lo script Bash per il DNS dinamico

Questo è lo script di base che uso per tenere aggiornato il DNS per il mio dominio.

#!/bin/bash

# paste in the info url from your account
get_info_url='http://freedns.afraid.org/api/?action=getdyndns&sha=<paste_your_password_hash_here>'

# get the current ip...
# method 1 - they aren't providing it for scripts anymore...
#ip=`curl -s http://whatismyip.org`

# method 2 - google provides this as an error message for bots...I'll take it.
ip=$(curl -s "https://www.google.com/search?q=what+is+my+ip+address" | grep "Client IP address:" | sed 's/.*Client IP address: //g;s/).*//g')
# get the current dns settings...
for each in `curl -s "$get_info_url"`
do
  domain=`echo "$each" | cut -d"|" -f1`
  dns_ip=`echo "$each" | cut -d"|" -f2`
  update_url=`echo "$each" | cut -d"|" -f3`

  if [ "$ip" != "$dns_ip" ]
  then
          echo -e "$domain - "\\c >> log
          curl "$update_url" >> log
  fi
done

Spiegazione dello script

Lo script è davvero semplice, ma la prima cosa che dovete fare è registrare un account su freedns.afraid.org e scegliere il vostro nome di dominio. Una volta fatto questo, si è pronti a farti l’installazione con questo script.

  1. Salvare lo script di cui sopra come dns.sh.
  2. Assicurarsi che lo script sia impostato come eseguibile. È possibile eseguire sudo chmod +x dns.sh per assicurarsi che sia.
  3. A questo punto è necessario per ottenere la vostra chiave per le API. Per fare questo, andare su http://freedns.afraid.org/api/ e qua troverete la spiegazione di che cosa dovete fare. In sostanza, è necessario fare un hash del tuo nome utente e password, ma lo si può farlo in quella pagina se non si vuole fare l’hash da soli.
  4. Nello script, sostituire la stringa <paste_your_password_hash_here> con l’hash reale (non dimenticate di salvare …).
  5. Ora è possibile eseguire lo script, quando aggiornate il vostro indirizzo IP. In alternativa (come faccio io), è possibile impostare lo script come un cron job e far controllare lo script a intervalli regolari per assicurarsi che tutto sia aggiornato.

Configurare lo script come un processo di cron

Aprire un terminale ed eseguire il comando crontab -e. Se non lo avete mai fatto prima, probabilmente vi richiederà di scegliere un editor. Se non sapete come usare qualsiasi editor a riga di comando, allora avrete bisogno di fare un po di googleing aggiuntivo, non ho intenzione di spiegarlo. Anche se, io preferisco nano perché non comprendo vi o vim.

Una volta che avete il vostro crontab aperto, incollate la seguente riga da qualche parte per eseguire lo script ogni 5 minuti.

*/5 * * * * /path/to/script/dns.sh

D’ora in poi le informazioni DNS dovrebbero essere aggiornate. Avrete notato che sto interrogando Google per ottenere l’attuale indirizzo IP reale. Questo è stato il cambiamento che ho fatto allo script di oggi. Prima usavo un altro sito (commentato) ma a quanto pare il focus del sito è cambiato e non mi piace lo script che utilizzano per ottenere l’indirizzo IP corrente. Che peccato.

Comunque, spero che la gente trovi questo metodo come pratico.

Felice Automazione !

Popular Posts:

Flattr this!

  3 Responses to “DNS Dinamico con Bash & Afraid.org”

  1. Hopefully Google doesn’t change their output. If they do, you could also try curl -s http://ifconfig.me

  2. Please, don’t use Google this way! In result they block (temporary) entire subnet.
    Use, for example, “curl ifconfig.me”

  3. Another great site which I use to get my IP address without any fluff is http://icanhazip.com
    It’s FAQ can be read here http://major.io/icanhazip-com-faq/

Leave a Reply to Alan Cancel reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)

*