Ddclient

From ortiche
Jump to navigation Jump to search

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!

Categoria:HowTo