DNS dinamici: come ottenerli e configurarli

Da Guide@Debianizzati.Org.

Debian-swirl.png Versioni Compatibili
Debian 6 "Squeeze"
Debian 7 "Wheezy"
Debian 8 "Jessie"
Verificala con Stretch
Gateway-Router

Sommario

Indice

Introduzione

Sottoscrivere un servizio di DNS dinamico risulta molto utile per coloro i quali desiderano rendere raggiungibile uno o più computer da internet, perché per esempio hanno installato un webserver come apache o perché vogliono monitorare da remoto un programma di file sharing, ecc.

Come noto un servizio DNS permette di associare ad un indirizzo IP un nome o alias o FQDN, ovvero permette di accedere alle varie pagine di un sito web digitandone il nome invece che un numero IP.
Nel caso di IP statici quest'associazione può evidentemente essere fatta un'unica volta, viceversa deve essere ripetuta ad ogni cambio di IP nel caso di assegnazione dinamica dal proprio ISP. Quest'ultimo è il caso tipico di utenti domestici e piccole imprese/uffici, ai quali tra l'altro non viene automaticamente assegnato un FQDN.
Tutto ciò implica che tali utenti non possono sperare di connettersi sempre con successo alla propria macchina usando l'indirizzo IP associatogli in un certo momento, poiché questo è destinato prima poi a cambiare. Associando invece un FQDN ad una macchina o LAN ed installando un apposito applicativo (o possedendo un router adeguato) che tenga traccia delle variazioni di IP è possibile collegarsi alla propria macchina/LAN digitando sempre lo stesso FQDN.
Esistono società che offrono gratuitamente, previa registrazione sempre gratuita, a chiunque la possibilità di dotarsi di un proprio FQDN (in genere la prima parte del dominio è fissa, l'utente può scegliere solo l'ultima parte), come ad esempio dyndns [1].

In genere la soluzione che preveda l'utilizzo di un router per l'aggiornamento dell'IP è sconsigliata, poiché non è garantito che la funzione integrata in un router rimanga compatibile nel tempo col servizio offerto dalle varie società.

ddclient

Uno degli applicativi atti ad ottenere quanto descritto nell'introduzione è ddclient; naturalmente ai fini di questa guida si assume che il lettore abbia sottoscritto un servizio compatibile con questo programma. Una volta che l'utente si è registrato ed ha ottenuto un proprio FQDN può procedere all'installazione del programma, disponibile da repository:

# apt-get install ddclient

Nel caso di LAN evidentemente si sceglierà per l'installazione del programma la macchina che rimane accesa più spesso e/o a lungo. Si noti che detto programma non determina l'accessibilità della macchina o della LAN dall'esterno, aspetto che dipende da una corretta configurazione del proprio router/modem, ma come già scritto garantisce solo che i dati inviati dall'esterno ed indirizzati al proprio FQDN raggiungano effettivamente il nostro modem/router, cui saranno collegati una o più macchine.
Durante l'installazione verranno chiesti i nomi registrati, l'utenza e la password del servizio sottoscritto, tutti parametri necessari al programma per contattare il fornitore di servizi e mantenere aggiornato l'IP associato all'alias.

Info.png Client configurator
Nel caso si sia sottoscritto il servizio offerto da dyndns [1] è possibile generare automaticamente un'apposita configurazione da inserire nel file ddclient.conf a quest'indirizzo [3].

A prescindere dal servizio sottoscritto ddclient risulta già funzionante al termine dell'installazione e già configurato per l'avvio automatico al boot di sistema. Per il suo funzionamento non è necessario aprire alcuna porta aggiuntiva sul proprio modem/router.
È possibile testare il funzionamento di ddclient digitando da terminale:

# ddclient -daemon=0 -debug -verbose -noquiet

Qualora si volesse abilitare la crittografia SSL sulle comunicazioni è sufficiente aggiungere la riga:

ssl=yes

al file ddclient.conf ed assicurarsi di avere installato ssh e libio-socket-ssl-perl.

/etc/default/ddclient

Se si desidera far girare il servizio come demone è necessario editare il file /etc/default/ddclient cambiando due variabili come indicato qui di seguito:

run_ipup="false"
run_daemon="true"

Esempio /etc/ddclient.conf

daemon=300                                                   # Controlla ogni 300 secondi (o 5 minuti).
syslog=yes                                                   # Scrivi log in syslog.
mail=root                                                    # Invia tutti i messaggi a root
mail-failure=root
pid=/var/run/ddclient.pid                                    # Registra PID in un file.
ssl=yes                                                      # Usa ssl-support, richiede ssl-library.
# Usa direttamente l'IP associato all'interfaccia che comunica col provider internet, per esempio ppp0
#use=if, if=ppp0
# oppure contatta un server esterno (cambiare "indirizzo_web" con quello fornito dal proprio DNS provider)
use=web, web=indirizzo_web/, web-skip='IP Address'           # Indirizzo del server da cui prendere il proprio IP pubblico
# oppure ancora usa uno script dedicato che restituisce un IP formattato correttamente (es.: 104.15.7.189)
#use=cmd, cmd=/percorso/script/nome_script.sh
# IP del server che aggiorna i DNS (cambiare "indirizzo_server" con quello fornito dal proprio DNS provider)
server=indirizzo_server
protocol=dyndns2
login=nome_utente                                            # Nome utente
password=password_servizio                                   # Password in chiaro o password "in formato" MD5
# Elencare i FQDN da aggiornare (cioè che puntano alla macchina dove è in esecusione ddclient), uno per riga
dominio1
dominio2
...

Esempi di script per estrarre l'IP pubblico dal router

Fritz!Box

Quello che segue è un esempio di script per interrogare il proprio router e ottenere l'IP pubblico associato alla sua WAN.

#!/bin/bash
# 
# Script to fetch external IP from Fritz!Box router, it can be used in the 
# configuration of ddclient by adding
#
#    use=cmd, cmd=/path/to/script/nome_script.sh
#
# Since you need to declare both a username and password in this script, 
# restrict file permissions to "600".
# Do not forget to:
# *	make this script executable;
# *	make sure that both "TR-064" and "UPnP" protocols are enabled in the router;
#	"Network --> Network settings --> Access Settings in the Home Network".
# * create a dedicated user on the fritzbox router
#	"System --> Fritz!Box users".
# You can substitute your actual router LAN IP to "http://fritz.box" if necessary.
#
curl --anyauth --user nome_utente:password_utente http://fritz.box:49000/upnp/control/wanpppconn1 -H "Content-Type: text/xml; charset="utf-8"" -H "SoapAction:urn:dslforum-org:service:WANPPPConnection:1#GetExternalIPAddress" -d "<?xml version='1.0' encoding='utf-8'?> <s:Envelope s:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' xmlns:s='http://schemas.xmlsoap.org/soap/envelope/'> <s:Body> <u:GetExternalIPAddress xmlns:u='urn:dslforum-org:service:WANPPPConnection:1'></u:GetExternalIPAddress> </s:Body> </s:Envelope>" | sed -n -e 's#^.*<NewExternalIPAddress>\(.*\)</NewExternalIPAddress>.*$#\1#p'

NOTE

Approfondimenti

Collegamenti esterni

[1] dyndns home
[2] dyndns.it, guida rapida in italiano sul sito ufficiale
[3] ddclient, guida sul sito ufficiale con collegamento al client configurator
[4] DynamicDNS su Ubuntu




Guida scritta da: Wtf 22:39, 11 ago 2011 (CEST)

Swirl-auth20.png Debianized 20%

Estesa da:
Verificata da:

Verificare ed estendere la guida | Cos'è una guida Debianized

Strumenti personali
Namespace
Varianti
Azioni
Navigazione
Risorse
Strumenti