DNS Dinamico

Da Linux User Group Scandiano.

Questa pagina ha lo scopo di aiutare chi volesse utilizzare un servizio di DNS Dinamico sul proprio PC di casa con GNU/Linux. Questo servizio permette di assegnare un host al proprio IP anche se questo cambia.

Per ottenere un host esistono diversi servizi in rete, alcuni gratuiti. In questo esempio viene utilizzato www.dtdns.com: basta registrarsi e si hanno a disposizione 5 host. Si può scegliere lo hostname a piacere e il dominio a scelta tra quelli proposti.

Questo script[1] è utile per mantenere aggiornata l'assegnazione dell'IP. Funziona in questo modo: controlla sul servizio icanhazip.com l'IP attuale e lo confronta con un DNS (quindi l'ultima registrazione valida), se gli indirizzi non coincidono richiede l'aggiornamento e scrive un log in /var/log/messages. Attenzione: i vari servizi sono soggetti a modifiche, quindi è necessario controllare che tutto continui a funzionare. Nell'esempio utilizziamo come indirizzo fittizio hostname.dominio.com.

#!/bin/bash

IPADDR=$(curl icanhazip.com)
LASTIP=$(nslookup hostname.dominio.com ns1.darktech.org | grep -A1 hostname | grep Address | awk '{print $2 }')

TAG="NEW-IP"

echo -n "`date` - "

if [ "$IPADDR" != "$LASTIP" ]; then
  echo -e "GET /api/autodns.cfm?id=HOSTNAME&pw=PASSWORD&client=BSD HTTP/1.1\nHost: www.dtdns.com\nUser-Agent: bash\n\n" | \
         nc www.dtdns.com 80 > /dev/null 2>&1
  echo "Posted IP change from $LASTIP to $IPADDR"
  logger IP cambiato "$IPADDR" -t $TAG ;
else
  echo "IP invariato: $IPADDR"
fi

Sostituiamo l'hostname, l'indirizzo e la password con quelli personali. Possiamo salvare lo script nella cartella /usr/local/bin e poi lo rendiamo eseguibile (in questo caso è stato nominato "ddns"):

chmod 755 /usr/local/bin/ddns

Automatizziamo il tutto mettendo una riga all'interno di /etc/crontab:

*/10 * * * *   user      ddns >/dev/null 2>&1

In questo modo ogni 10 minuti il sistema controllerà l'indirizzo (sostituiamo user con l'account dell'utente che usiamo sul PC).

Script bash più raffinati

Se stai cercando uno script bash più raffinato per gestire la modifica dell'account dtdns, puoi utilizzare dtdns-updater.

Note

  1. Tratto dallo script di Pubblico Dominio di R. Anthony Kolstee [1]