Ddclient
ddclient è un client scritto in perl per l'update automatico dei record DNS abbastanza diffuso. Supporta varie interfacce e dalla versione 3.7 supporta anche le connessioni SSL, e quindi è sicuro. Dato che è fatto benino e magari è già nel nostro sistema di pacchetti, lo useremo per gestire uno o più domini con ip dinamico su smdns.
Installare
Come dicevamo, ddclient è molto diffuso.
Su Debian e derivati, è nei repository ufficiali. Installato con apt-get, aptitude, Synaptic o qualunque cosa usiate.
# apt-get install ddclient
La versione 3.7 (quella che supporta ssl) è presente per adesso in testing e unstable ma non in stable.
ddclient è anche tra i pacchetti di Gentoo:
# emerge ddclient
Anche qui la versione stabile è la 3.6, mentre quella mascherata è la 3.7.
Per tutti gli altri c'è sourceforge: http://ddclient.sourceforge.net . Non c'è da fare make install ma solamente da copiare il file ddclient in una directory sensata (ad esempio, /usr/local/sbin).
Configurare smdns
Inanzittutto ddclient non può creare nuovi campi ma solo modificarne di già esistenti: quindi dobbiamo creare noi (con l'interfaccia web) tutti i campi che vogliamo fargli gestire. Oltre agli hostname ddclient può modificare campi MX. Possiamo lasciare il campo ip a 127.0.0.1, tanto verrà modificato la prima volta che lanceremo ddclient.
Per informare smdns che vogliamo che certi campi vengano modificati da ddclient, dobbiamo impostare il campo label a dynsmdns. La possibilità di modificare il campo label ci viene data solo nell'interfaccia completa. Ci si accede cliccando sull'omonimo link in alto nell'interfaccia web.
Configurare ddclient
Modifichiamo il file di configurazione di ddclient, che di default si trova in /etc/ddclient.conf (se non c'è, lo creiamo :), come segue:
daemon=15m syslog=yes pid=/var/run/ddclient.pid use=web, web=smdns.indivia.net/nic/checkip, web-skip='Current IP Address:' server=smdns.indivia.net protocol=dyndns2 login=USER password=PASSWORD miohost.indivia.net
Ovviamente dovete sostituire USER e PASSWORD con la vostra username e password, e miohost.indivia.net col nome host che volete controllare. Mi raccomando, settate i permessi per questo file a 600
# chmod 600 /etc/ddclient.conf
altrimenti i vostri utenti potranno leggervi la password!
Se avete installato la versione 3.7 o successive, e volete abilitare SSL (fatelo!), aggiungete questa riga al file
ssl=yes
La riga che inizia con use=web fondamentalmente dice a ddclient di scoprire l'ip che deve assegnare ai nomi host attraverso una richiesta ad una pagina apposta, che semplicemente vi restituisce l'ip col quale siete visti su Internet (e quindi quello del vostro Firewall o Router se siete dietro NAT). ddclient supporta molti altri modi per capire quale dev'essere l'ip da assegnare: lo si può fissare a mano (ma così è poco utile :p), lo si può prendere da una pagina di status del nostro router o modem (se è uno dei modelli supportati), oppure lo si può prendere da un'interfaccia. Per tutti questi metodi vi rimando alla documentazione di ddclient che è distribuita col programma, trattiamo solo il caso probabilmente più utile, quello di prendere l'ip da un'interfaccia (supponiamo la ppp0, ma basta sostituire il nome e funziona con tutte). Sostituite la riga che inizia per "use=web" con la seguente:
use=if, if=ppp0
La documentazione completa contiene tutte le informazioni su come gestire i record MX e host multipli, ma anche più account su server diversi, e tante cose carine.
Esecuzione
ora, lanciando
# ddclient
dovremmo ottenere qualcosa tipo
SUCCESS: updating miohost.indivia.net: good: IP address set to VOSTRO_IP
ATTENZIONE: questo vuol dire solo che ddclient è riuscito a fare il login, non che le modifiche siano state fatte! Un errore frequente è dimenticarsi di mettere il label dynsmdns ai record che volete modificare. Se non lo fate, avrete lo stesso questo output, ma l'ip non verrà aggiornato.
Ora passiamo all'esecuzione automatica. Insieme al programma è distribuito anche uno script per init.d, che probabilmente viene già installato dal vostro gestore dei pacchetti se ne avete usato uno. ddclient può girare come demone, verificando di tanto in tanto (nella nostra configurazione 15 minuti) se l'ip è cambiato e aggiornandolo solo se necessario. Quindi basta verificare che il servizio sia fatto partire all'avvio e siamo ok! Altrimenti potete dirgli di non diventare un demone impostando daemon a 0 (zero) e lanciarlo voi con cron.
N.B. su Debian c'è un /etc/default/ddclient in cui si può impostare una variabile "daemon_interval", che dovrebbe essere ogni quanti secondi ddclient deve verificare se l'ip è cambiato. Che si, è la stessa impostazione controllata dalla variabile "daemon" in /etc/ddclient.conf. Non sapendo quale delle due viene rispettate, io le ho impostate uguali :) non si sa mai!