« Actualiser une adresse DNS dynamique » : différence entre les versions

De Lea Linux
Aller à la navigation Aller à la recherche
(balises code)
(4 versions intermédiaires par 2 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
{{En_construction}}
[[Category:Serveur de nom]]
 
== Introduction ==
== Introduction ==
Par [[Utilisateur:Jeannedarc|Jeannedarc]] complété par [mailto:jice@lea-linux.org Jice].


Une adresse sous forme de nom de domaine (ou adresse DNS) est associée à une adresse IP (quatre nombres entre 0 et 255 séparés par des points, par exemple 12.144.0.254) : il suffit de taper <code>$ ping google.fr</code> et de copier l'adresse IP correspondante dans la barre d'adresse du navigateur pour s'en convaincre.).
Une adresse sous forme de nom de domaine (ou adresse DNS) est associée à une adresse IP (quatre nombres entre 0 et 255 séparés par des points, par exemple 12.144.0.254) : il suffit de taper <div class="code">$ ping google.fr</div> et de copier l'adresse IP correspondante dans la barre d'adresse du navigateur pour s'en convaincre.).


Les serveurs DNS (''Domain Name Server'' ou Serveur de noms de domaine) présents sur internet effectuent la correspondance entre les noms de domaines et les adresses IP.
Les serveurs DNS (''Domain Name Server'' ou Serveur de noms de domaine) présents sur internet effectuent la correspondance entre les noms de domaines et les adresses IP.
Ligne 47 : Ligne 49 :


<u>Note</u> : sur debian, ddclient est présent dans les dépôts de logiciels. Préférez donc la commande suivante pour l'installer (à moins que vous ne vouliez la toute dernière version) :  
<u>Note</u> : sur debian, ddclient est présent dans les dépôts de logiciels. Préférez donc la commande suivante pour l'installer (à moins que vous ne vouliez la toute dernière version) :  
<code multi># apt-get install ddclient</code>
<div class="code"># apt-get install ddclient</div>


Sur Mandriva, ddclient est également présent dans les dépôts de logiciels. Préférez donc la commande suivante pour l'installer :  
Sur Mandriva, ddclient est également présent dans les dépôts de logiciels. Préférez donc la commande suivante pour l'installer :  
<code multi># urpmi ddclient</code>
<div class="code"># urpmi ddclient</div>


===Installation===
===Installation===


Une fois que vous avez récupéré l'archive de ddclient, allez dans son dossier et tapez :
Une fois que vous avez récupéré l'archive de ddclient, allez dans son dossier et tapez :
<code multi>
<div class="code">
$ tar zxf ddclient-3.7.3.tar.gz
$ tar zxf ddclient-3.7.3.tar.gz
$ cd ddclient-3.7.3
$ cd ddclient-3.7.3
</code>
</div>
En listant le contenu du répertoire, on constate que le programme n'a pas besoin d'être compilé: en effet, ddclient est un fichier perl prêt à l'emploi ! Il ne vous reste plus qu'à le déplacer :
En listant le contenu du répertoire, on constate que le programme n'a pas besoin d'être compilé: en effet, ddclient est un fichier perl prêt à l'emploi ! Il ne vous reste plus qu'à le déplacer :
<code> mv ddclient /usr/local/bin/</code>
<div class="code"> mv ddclient /usr/local/bin/</div>
Si vous tentez d'exécuter ddclient directement :
Si vous tentez d'exécuter ddclient directement :
<code multi>
<div class="code">
# /usr/local/bin/ddclient
# /usr/local/bin/ddclient
"WARNING:  file /etc/ddclient/ddclient.conf: Cannot open file '/etc/ddclient/ddclient.conf'. (No such file or directory)".
"WARNING:  file /etc/ddclient/ddclient.conf: Cannot open file '/etc/ddclient/ddclient.conf'. (No such file or directory)".
</code>
</div>
ddclient vous répond qu'il cherche le fichier de configuration, qui n'existe pas encore.
ddclient vous répond qu'il cherche le fichier de configuration, qui n'existe pas encore.


Ligne 71 : Ligne 73 :


Commençons par créer le fichier de configuration :
Commençons par créer le fichier de configuration :
<code multi>
<div class="code">
# mkdir /etc/ddclient
# mkdir /etc/ddclient
# touch /etc/ddclient/ddclient.conf
# touch /etc/ddclient/ddclient.conf
</code>
</div>


Editez ce fichier avec votre éditeur de texte préféré. Remplissez-le comme ceci :
Editez ce fichier avec votre éditeur de texte préféré. Remplissez-le comme ceci :


<code multi>
<div class="code">
daemon=200  # Vérifie l'adresse toutes les 200 secondes
daemon=200  # Vérifie l'adresse toutes les 200 secondes
syslog=yes  # Enregistre le log dans syslog
syslog=yes  # Enregistre le log dans syslog
ssl=yes    # Utilise SSL pour crypter les échanges (nécessite le paquet IO::Socket::SSL de Perl)
ssl=yes    # Utilise SSL pour crypter les échanges (nécessite le paquet IO::Socket::SSL de Perl)
cache=/tmp/ddclient.cache  # Emplacement du cache du processus
cache=/tmp/ddclient.cache  # Emplacement du cache du processus
pid=/var/run/ddclient.pid  # Emplacement du PID du processus
pid=/var/run/ddclient.pid  # Emplacement du PID du processus
use=web, web=checkip.dyndns.org/, web-skip='IP Address'  # Voir détails plus bas
use=web, web=checkip.dyndns.org/, web-skip='IP Address'  # Voir détails plus bas
</code>
</div>
Remarque : il est conseillé de désactiver SSL lors des premiers essais.
Remarque : il est conseillé de désactiver SSL lors des premiers essais.


Ddclient peut récupêrer l'IP de votre connexion de 3 manières différentes:
Ddclient peut récupêrer l'IP de votre connexion de 3 manières différentes:
*<code>use=web, web=checkip.dyndns.org/, web-skip='IP Address' </code> : Ddclient utilisera une connexion par le port 80 pour récuperer votre adresse IP. En se connectant sur checkip.dyndns.org, il pourra retrouver votre IP.
*<tt>use=web, web=checkip.dyndns.org/, web-skip='IP Address' </tt> : Ddclient utilisera une connexion par le port 80 pour récuperer votre adresse IP. En se connectant sur checkip.dyndns.org, il pourra retrouver votre IP.
:Remarque:Si vous êtes derrière un proxy, ajoutez cette ligne <code>proxy=adresse_de_mon_proxy:port</code>
:Remarque:Si vous êtes derrière un proxy, ajoutez cette ligne <tt>proxy=adresse_de_mon_proxy:port</tt>
*<code>use=if, if=eth0</code> si vous n'êtes pas derrière un routeur ou autre livebox, vous pouvez interroger directement votre modem, en remplacant <code>eth0</code> par votre interface modem.
*<tt>use=if, if=eth0</tt> si vous n'êtes pas derrière un routeur ou autre livebox, vous pouvez interroger directement votre modem, en remplacant <tt>eth0</tt> par votre interface modem.
*<code>use=fw</code> permet d'interroger son routeur ou modem ethernet. Cette méthode est déconseillée, car il faut un matériel compatible (voir [http://ddclient.wiki.sourceforge.net/Routers la liste])
*<tt>use=fw</tt> permet d'interroger son routeur ou modem ethernet. Cette méthode est déconseillée, car il faut un matériel compatible (voir [http://ddclient.wiki.sourceforge.net/Routers la liste])


Personnellement, je recommande la méthode <code>use=web</code>, car c'est la plus rapide à mettre en place.
Personnellement, je recommande la méthode <tt>use=web</tt>, car c'est la plus rapide à mettre en place.
La partie qui suit diffère selon le service d'IP dynamique utilisé :
La partie qui suit diffère selon le service d'IP dynamique utilisé :
<code multi>
<div class="code">
login=jekek  # Nom d'utilisateur du compte utilisateur
login=jekek  # Nom d'utilisateur du compte utilisateur
password=monmotdepasse  # Mot de passe
password=monmotdepasse  # Mot de passe
protocol=protocole_service  # Protocole utilisé par le service
protocol=protocole_service  # Protocole utilisé par le service
server=serveur_service  # Serveur du service DDNS
server=serveur_service  # Serveur du service DDNS
wildcard=NO  # Voir plus bas
wildcard=NO  # Voir plus bas
nom_de_domaine.exemple.com  # Adresse à synchroniser avec votre IP
nom_de_domaine.exemple.com  # Adresse à synchroniser avec votre IP
</code>
</div>


Remarque : Wildcard: Le wildcard permet de rediriger toutes les adresses finissant par le même nom de domaine (xxxxx.mon_nom_de_domaine.com) vers la même adresse IP.  
Remarque : Wildcard: Le wildcard permet de rediriger toutes les adresses finissant par le même nom de domaine (xxxxx.mon_nom_de_domaine.com) vers la même adresse IP.  
Ligne 109 : Ligne 111 :
Voici les configurations pour les services les plus connus:
Voici les configurations pour les services les plus connus:
*Pour DynDNS:
*Pour DynDNS:
<code multi>login=login_dyndns
<div class="code">login=login_dyndns
password=mot_de_passe_dyndns
password=mot_de_passe_dyndns
protocol=dyndns2
protocol=dyndns2
server=members.dyndns.com
server=members.dyndns.com
wildcard=YES
wildcard=YES
nom_de_domaine.exemple.com
nom_de_domaine.exemple.com
</code>
</div>
*Pour DNSPark  
*Pour DNSPark  
<code multi>
<div class="code">
login=DNS Park DDNS username
login=DNS Park DDNS username
password=DNS Park DDNS username
password=DNS Park DDNS username
protocol=dnspark
protocol=dnspark
server=www.dnspark.com
server=www.dnspark.com
wildcard=NO
wildcard=NO
mon_nom_de_domaine.exemple.com
mon_nom_de_domaine.exemple.com
</code>
</div>
*Pour EasyDNS
*Pour EasyDNS
<code multi>
<div class="code">
login=EasyDNS username
login=EasyDNS username
password=EasyDNS password
password=EasyDNS password
protocol=easydns
protocol=easydns
server=ns1.easydns.com
server=ns1.easydns.com
wildcard=NO
wildcard=NO
mon_nom_de_domaine.exemple.com
mon_nom_de_domaine.exemple.com
</code>
</div>
*Pour Namecheap
*Pour Namecheap
<code multi>
<div class="code">
login=Namecheap username
login=Namecheap username
password=Namecheap password
password=Namecheap password
protocol=namecheap
protocol=namecheap
server=ns1.easydns.com
server=ns1.easydns.com
wildcard=NO
wildcard=NO
mon_nom_de_domaine.exemple.com
mon_nom_de_domaine.exemple.com
</code>
</div>


== Autres clients DNS dynamique ==
== Autres clients DNS dynamique ==
Ligne 159 : Ligne 161 :
Cependant ez-ipupdate étant incapable d'aller chercher votre adresse IP lorsque le PC a une adresse de réseau local (s'il est derrière un routeur par exemple), cette solution nécessite soit d'être connecté en direct à internet (modem ou box en mode transparent), soit de modifier le script de démarrage afin d'informer ez-ipupdate de l'adresse IP publique.
Cependant ez-ipupdate étant incapable d'aller chercher votre adresse IP lorsque le PC a une adresse de réseau local (s'il est derrière un routeur par exemple), cette solution nécessite soit d'être connecté en direct à internet (modem ou box en mode transparent), soit de modifier le script de démarrage afin d'informer ez-ipupdate de l'adresse IP publique.


Dans le script de démarrage (<code>/etc/init.d/ez-ipupdate</code>), on va donc indiquer à ez-ipupdate l'adresse IP (récupérée sur le routeur grâce à lynx, ou sur http://checkip.dyndns.com), en le modifiant de la manière suivante :
Dans le script de démarrage (<tt>/etc/init.d/ez-ipupdate</tt>), on va donc indiquer à ez-ipupdate l'adresse IP (récupérée sur le routeur grâce à lynx, ou sur http://checkip.dyndns.com), en le modifiant de la manière suivante :


;récupération de l'IP sur une Fonera
;récupération de l'IP sur une Fonera
<code multi>IPADDR=`lynx -auth "user:password" -dump http://192.168.10.1/cgi-bin/status.sh | perl -ne 'm/Adresse IP: ([\d.]+)/ && print $1.","' | cut -f1 -d ","`</code>
<div class="code">IPADDR=`lynx -auth "user:password" -dump http://192.168.10.1/cgi-bin/status.sh | perl -ne 'm/Adresse IP: ([\d.]+)/ && print $1.","' | cut -f1 -d ","`</div>
(Remplacez user et password par le nom d'utilisateur de la Fonera, et son mot de passe).
:(Remplacez user et password par le nom d'utilisateur de la Fonera, et son mot de passe).


;récupération de l'IP sur http://checkip.dyndns.com (cas général)
;récupération de l'IP sur http://checkip.dyndns.com (cas général)
<code multi>IPADDR=`lynx -dump http://checkip.dyndns.org|perl -ne 'm/IP Address:\s*([\d.]+)/ && print $1'`</code>
<div class="code">IPADDR=`lynx -dump http://checkip.dyndns.org|perl -ne 'm/IP Address:\s*([\d.]+)/ && print $1'`</div>
(c'est quand même plus simple ;-)
:(c'est quand même plus simple ;-)


;récupération de l'IP sur un autre routeur
;récupération de l'IP sur un autre routeur
:En général il suffit d'adapter la ligne ci-dessus, en changeant l'adresse http://checkip.dyndns.org par celle de la page de statut de votre routeur (qui contient l'adresse IP externe), et "IP Address:" par la chaîne de caractères qui précede l'adresse IP. La récupération sur la Fonera est plus compliquée, car il y a 2 adresses IP (l'externe et la locale de la Fonera) sur la page de statut, toutes les 2 précédées par la même chaîne de caractères.
:En général il suffit d'adapter la ligne ci-dessus, en changeant l'adresse http://checkip.dyndns.org par celle de la page de statut de votre routeur (qui contient l'adresse IP externe), et "IP Address:" par la chaîne de caractères qui précede l'adresse IP. La récupération sur la Fonera est plus compliquée, car il y a 2 adresses IP (l'externe et la locale de la Fonera) sur la page de statut, toutes les 2 précédées par la même chaîne de caractères.


Et au moment de lancer ez-ipupdate, on passe l'adresse avec l'option <code>-a</code>, par exemple :
Et au moment de lancer ez-ipupdate, on passe l'adresse avec l'option <tt>-a</tt>, par exemple :
<code multi>daemon --user=nobody $servicename $processname -a $IPADDR -c $ez_config</code>
<div class="code">daemon --user=nobody $servicename $processname -a $IPADDR -c $ez_config</div>


Ce qui sur une Mandriva donne le script <code>/etc/init.d/ez-ipupdate</code> suivant :
Ce qui sur une Mandriva donne le script <tt>/etc/init.d/ez-ipupdate</tt> suivant :
<code>#!/bin/bash
<div class="code">
#
#!/bin/bash
# Laurent Culioli <laurent@mandrakesoft.com>
#
# some idea stollen from the ez-ipudate website (  mdepot@mediaone.net )
# Laurent Culioli <laurent@mandrakesoft.com>
# Startup script for ez-ipudate  $Revision: 1.0 $
# some idea stollen from the ez-ipudate website (  mdepot@mediaone.net )
#
# Startup script for ez-ipudate  $Revision: 1.0 $
# chkconfig: 345 55 45
#
#   
# chkconfig: 345 55 45
# processname: ez-ipupdate
#   
# description: check and update your IP to dynamic DNS Server
# processname: ez-ipupdate
# pidfile: /var/run/ez-ipudpate.pid
# description: check and update your IP to dynamic DNS Server
# config: /etc/ez-ipupdate.conf
# pidfile: /var/run/ez-ipudpate.pid
### BEGIN INIT INFO
# config: /etc/ez-ipupdate.conf
# Provides: ez-ipupdate
### BEGIN INIT INFO
# Required-Start: $network
# Provides: ez-ipupdate
# Required-Stop: $network
# Required-Start: $network
# Default-Start: 3 4 5
# Required-Stop: $network
# Short-Description: check and update your IP to dynamic DNS Server
# Default-Start: 3 4 5
# Description: ez-ipupdate is a program for updating your IP address with the
# Short-Description: check and update your IP to dynamic DNS Server
#              dynamic DNS server
# Description: ez-ipupdate is a program for updating your IP address with the
### END INIT INFO
#              dynamic DNS server
### END INIT INFO


# Make sure relevant files exist
# Make sure relevant files exist
[ -x /usr/bin/ez-ipupdate ] || exit 0
[ -x /usr/bin/ez-ipupdate ] || exit 0
[ -f /etc/ez-ipupdate.conf ] || exit 0
[ -f /etc/ez-ipupdate.conf ] || exit 0


# Source function library.
# Source function library.
. /etc/rc.d/init.d/functions
. /etc/rc.d/init.d/functions


# Source networking configuration.
# Source networking configuration.
. /etc/sysconfig/network
. /etc/sysconfig/network


# Check that networking is up.
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
[ ${NETWORKING} = "no" ] && exit 0


processname="ez-ipupdate"
processname="ez-ipupdate"
servicename="ez-ipupdate"
servicename="ez-ipupdate"
ez_config=/etc/ez-ipupdate.conf
ez_config=/etc/ez-ipupdate.conf
ez_cache=`grep -E '^[[:space:]]*cache-file' $ez_config |  cut -d "=" -f2 `
ez_cache=`grep -E '^[[:space:]]*cache-file' $ez_config |  cut -d "=" -f2 `
ez_subsys="/var/lock/subsys/ez-ipupdate"
ez_subsys="/var/lock/subsys/ez-ipupdate"


#JCC 2/7/2008 added:
#JCC 2/7/2008 added:
IPADDR=`lynx -auth "user:password" -dump http://192.168.10.1/cgi-bin/status.sh | perl -ne 'm/Adresse IP: ([\d.]+)/ && print $1.","' | cut -f1 -d ","`
IPADDR=`lynx -auth "user:password" -dump http://192.168.10.1/cgi-bin/status.sh | perl -ne 'm/Adresse IP: ([\d.]+)/ && print $1.","' | cut -f1 -d ","`
echo "Adresse IP: $IPADDR"
echo "Adresse IP: $IPADDR"


RETVAL=0
RETVAL=0


function ez_start() {
function ez_start() {
gprintf "Starting %s daemon: " "$servicename"
gprintf "Starting %s daemon: " "$servicename"
#JCC 2/7/2008 added "-a $IPADDR"
#JCC 2/7/2008 added "-a $IPADDR"
Ligne 231 : Ligne 234 :
echo
echo
[ $RETVAL -eq 0 ] && touch $ez_subsys && echo `/sbin/pidof $processname` > /var/run/$servicename.pid
[ $RETVAL -eq 0 ] && touch $ez_subsys && echo `/sbin/pidof $processname` > /var/run/$servicename.pid
}
}


function ez_stop() {
function ez_stop() {
         gprintf "Stopping %s daemon: " "$servicename"
         gprintf "Stopping %s daemon: " "$servicename"


Ligne 243 : Ligne 246 :
rm -f /var/run/noip.pid
rm -f /var/run/noip.pid
fi
fi
}
}


function ez_status() {
function ez_status() {
status $processname
status $processname
LAST_IP=`cat $ez_cache | cut -d "," -f2`
LAST_IP=`cat $ez_cache | cut -d "," -f2`
gprintf "last IP update : %s\n" "$LAST_IP"
gprintf "last IP update : %s\n" "$LAST_IP"
RETVAL=$?
RETVAL=$?
}
}


# See how we were called.
# See how we were called.
case "$1" in
case "$1" in
     start)
     start)
ez_start
ez_start
Ligne 279 : Ligne 282 :
exit 1
exit 1
;;
;;
esac
esac
 
exit 0</div>
 
Enfin, dans le fichier de configuration <tt>/etc/ez-ipupdate.conf</tt>, il faut supprimer l'option <tt>daemon</tt>, sinon l'option -a sera ignorée, et bien sûr ne pas spécifier d'adresse IP (ce que vous feriez si vous aviez une adresse IP fixe). Par exemple :


exit 0</code>
<div class="code">
#!/usr/bin/ez-ipupdate -c
#
# example config file for ez-ipupdate
#
# this file is actually executable!
#


Enfin, dans le fichier de configuration <code>/etc/ez-ipupdate.conf</code>, il faut supprimer l'option <code>daemon</code>, sinon l'option -a sera ignorée, et bien sûr ne pas spécifier d'adresse IP (ce que vous feriez si vous aviez une adresse IP fixe). Par exemple :
service-type=dyndns
#service-type=dyndns-static
user=user_dyndns:password
host=lea.is-a-geek.org
#address=12.144.0.255 # ne pas mettre cette option car on a une IP dynamique
interface=eth0
max-interval=2073600


<code>#!/usr/bin/ez-ipupdate -c
# please create this file and ensure that the user that ez-ipupdate is running
#
# as has write permissions to it then uncomment this line, if you don't your
# example config file for ez-ipupdate
# dyndns account will probably get banned. if you run ez-ipupdate as root (bad
#
# idea, use "run-as-user") then you can just uncomment this line.
# this file is actually executable!
#cache-file=/etc/ez-ipupdate.cache.eth1
#


service-type=dyndns
# for the mean time we'll just use a cache file in the temp directory
#service-type=dyndns-static
cache-file=/tmp/ez-ipupdate.cache
user=user_dyndns:password
host=lea.is-a-geek.org
#address=12.144.0.255 # ne pas mettre cette option car on a une IP dynamique
interface=eth0
max-interval=2073600


# please create this file and ensure that the user that ez-ipupdate is running
# uncomment this once you have everything working how you want and you are
# as has write permissions to it then uncomment this line, if you don't your
# ready to have ez-ipupdate running in the background all the time. to stop it
# dyndns account will probably get banned. if you run ez-ipupdate as root (bad
# you can use "killall -QUIT ez-ipupdate" under linux.
# idea, use "run-as-user") then you can just uncomment this line.
#daemon
#cache-file=/etc/ez-ipupdate.cache.eth1
#JCC 4/7/2007: daemon mode removed else it does not take into account
# the -a argument from the /etc/init.d/ez-ipupdate script
#(removed also -d from this script)
</div>


# for the mean time we'll just use a cache file in the temp directory
<br/>
cache-file=/tmp/ez-ipupdate.cache
<br/>
'''<b>[[Reseau-index|@ Retour à la rubrique Réseau et sécurité]]</b>'''
<br/>


# uncomment this once you have everything working how you want and you are
{{Copy|2007, 2008|[[Utilisateur:Jeannedarc|Jeannedarc]], Jean-Christophe Cardot|CC-BY-SA}}
# ready to have ez-ipupdate running in the background all the time. to stop it
# you can use "killall -QUIT ez-ipupdate" under linux.
#daemon
#JCC 4/7/2007: daemon mode removed else it does not take into account
# the -a argument from the /etc/init.d/ez-ipupdate script
#(removed also -d from this script)
</code>

Version du 20 mai 2012 à 15:19


Introduction

Par Jeannedarc complété par Jice.

Une adresse sous forme de nom de domaine (ou adresse DNS) est associée à une adresse IP (quatre nombres entre 0 et 255 séparés par des points, par exemple 12.144.0.254) : il suffit de taper

$ ping google.fr

et de copier l'adresse IP correspondante dans la barre d'adresse du navigateur pour s'en convaincre.).

Les serveurs DNS (Domain Name Server ou Serveur de noms de domaine) présents sur internet effectuent la correspondance entre les noms de domaines et les adresses IP.

Il existe 2 types d'adresses IP attribuées par les fournisseurs d'accès Internet :

  • Les adresses IP statiques -> L'adresse IP reste la même à chaque connexion internet
  • Les adresses IP dynamiques -> L'adresse IP peut changer à chaque connexion à internet

Remarque : Si vous voulez savoir si votre adresse IP est statique ou dynamique, allez sur cette page, relevez votre adresse IP, puis coupez et relancez votre connexion internet : si l'adresse IP a changé, c'est que votre adresse est dynamique, sinon elle est statique.

Quel est l'intérêt d'associer un nom de domaine à son adresse IP ?

Attribuer un nom de domaine à l'adresse IP de sa connexion Internet est surtout utile si l'on crée un serveur, quel qu'il soit (serveur Web, FTP, ssh...).

Prenons un exemple : vous avez créé un serveur FTP sur votre ordinateur, et vous souhaiter qu'il soit accessible de l'extérieur ; si votre adresse IP est dynamique, il faudrait alors connaître systématiquement son adresse IP alors qu'elle change souvent (par exemple toutes les 24 heures, ou à chaque reconnexion) ! En associant un nom de domaine à votre adresse IP, l'adresse sous forme de nom sera non seulement facile à retenir, mais elle ne changera pas.

Création d'un compte de DNS dynamique

Il suffit d'aller sur un des sites suivants, y créer un compte avec un mot de passe, un ordinateur (host) et choisir un nom pour votre machine.

La plupart de ces sites vous proposeront soit d'utiliser un nom de domaine que vous possédez (comme lea-linux.org), ou un sous-domaine d'un domaine qu'ils possèdent (lea.is-a-geek.org pour Dyndns par exemple).

Quel-est le fonctionnement d'un client DNS ?

Un client DNS est un petit programme s'installant sur l'ordinateur auquel on veut attribuer une adresse nommée fixe.

Une fois lancé (la plupart du temps au démarrage de l'ordinateur), il va détecter votre adresse IP. Il va ensuite se connecter au compte DNS que vous aurez créé auparavant, et communiquer votre adresse IP au serveur de noms. Votre adresse DNS sera alors associée à votre adresse IP. Si votre adresse IP change, le client DNS le détectera, et associera alors cette nouvelle adresse IP à votre adresse DNS.

Ainsi votre serveur restera-t-il accessible de l'extérieur en utilisant son nom, sans jamais avoir à se soucier de son adresse IP.

Mise en place d'un client DNS : ddclient

Téléchargement

Les sources de ddclient sont téléchargeables ici (la v3.7.3 à l'heure où j'écris). Préférez l'archive tar.gz.

Note : sur debian, ddclient est présent dans les dépôts de logiciels. Préférez donc la commande suivante pour l'installer (à moins que vous ne vouliez la toute dernière version) :

# apt-get install ddclient

Sur Mandriva, ddclient est également présent dans les dépôts de logiciels. Préférez donc la commande suivante pour l'installer :

# urpmi ddclient

Installation

Une fois que vous avez récupéré l'archive de ddclient, allez dans son dossier et tapez :

$ tar zxf ddclient-3.7.3.tar.gz $ cd ddclient-3.7.3

En listant le contenu du répertoire, on constate que le programme n'a pas besoin d'être compilé: en effet, ddclient est un fichier perl prêt à l'emploi ! Il ne vous reste plus qu'à le déplacer :

mv ddclient /usr/local/bin/

Si vous tentez d'exécuter ddclient directement :

# /usr/local/bin/ddclient
"WARNING:  file /etc/ddclient/ddclient.conf: Cannot open file '/etc/ddclient/ddclient.conf'. (No such file or directory)".

ddclient vous répond qu'il cherche le fichier de configuration, qui n'existe pas encore.

Fichier de configuration ddclient.conf

Commençons par créer le fichier de configuration :

  1. mkdir /etc/ddclient
  2. touch /etc/ddclient/ddclient.conf

Editez ce fichier avec votre éditeur de texte préféré. Remplissez-le comme ceci :

daemon=200  # Vérifie l'adresse toutes les 200 secondes
syslog=yes  # Enregistre le log dans syslog
ssl=yes     # Utilise SSL pour crypter les échanges (nécessite le paquet IO::Socket::SSL de Perl)
cache=/tmp/ddclient.cache  # Emplacement du cache du processus
pid=/var/run/ddclient.pid  # Emplacement du PID du processus
use=web, web=checkip.dyndns.org/, web-skip='IP Address'  # Voir détails plus bas

Remarque : il est conseillé de désactiver SSL lors des premiers essais.

Ddclient peut récupêrer l'IP de votre connexion de 3 manières différentes:

  • use=web, web=checkip.dyndns.org/, web-skip='IP Address'  : Ddclient utilisera une connexion par le port 80 pour récuperer votre adresse IP. En se connectant sur checkip.dyndns.org, il pourra retrouver votre IP.
Remarque:Si vous êtes derrière un proxy, ajoutez cette ligne proxy=adresse_de_mon_proxy:port
  • use=if, if=eth0 si vous n'êtes pas derrière un routeur ou autre livebox, vous pouvez interroger directement votre modem, en remplacant eth0 par votre interface modem.
  • use=fw permet d'interroger son routeur ou modem ethernet. Cette méthode est déconseillée, car il faut un matériel compatible (voir la liste)

Personnellement, je recommande la méthode use=web, car c'est la plus rapide à mettre en place. La partie qui suit diffère selon le service d'IP dynamique utilisé :

login=jekek  # Nom d'utilisateur du compte utilisateur
password=monmotdepasse  # Mot de passe
protocol=protocole_service  # Protocole utilisé par le service
server=serveur_service  # Serveur du service DDNS
wildcard=NO  # Voir plus bas
nom_de_domaine.exemple.com  # Adresse à synchroniser avec votre IP

Remarque : Wildcard: Le wildcard permet de rediriger toutes les adresses finissant par le même nom de domaine (xxxxx.mon_nom_de_domaine.com) vers la même adresse IP.

Voici les configurations pour les services les plus connus:

  • Pour DynDNS:
login=login_dyndns
password=mot_de_passe_dyndns
protocol=dyndns2
server=members.dyndns.com
wildcard=YES
nom_de_domaine.exemple.com
  • Pour DNSPark
login=DNS Park DDNS username
password=DNS Park DDNS username
protocol=dnspark
server=www.dnspark.com
wildcard=NO
mon_nom_de_domaine.exemple.com
  • Pour EasyDNS
login=EasyDNS username
password=EasyDNS password
protocol=easydns
server=ns1.easydns.com
wildcard=NO
mon_nom_de_domaine.exemple.com
  • Pour Namecheap
login=Namecheap username
password=Namecheap password
protocol=namecheap
server=ns1.easydns.com
wildcard=NO
mon_nom_de_domaine.exemple.com

Autres clients DNS dynamique

D'autres logiciels existent qui ont la même fonctionnalité que ddclient, par exemple :

ez-ipupdate

ez-ipupdate

Un package existe peut-être pour votre distribution - c'est le cas par exemple pour Mandriva.

Cependant ez-ipupdate étant incapable d'aller chercher votre adresse IP lorsque le PC a une adresse de réseau local (s'il est derrière un routeur par exemple), cette solution nécessite soit d'être connecté en direct à internet (modem ou box en mode transparent), soit de modifier le script de démarrage afin d'informer ez-ipupdate de l'adresse IP publique.

Dans le script de démarrage (/etc/init.d/ez-ipupdate), on va donc indiquer à ez-ipupdate l'adresse IP (récupérée sur le routeur grâce à lynx, ou sur http://checkip.dyndns.com), en le modifiant de la manière suivante :

récupération de l'IP sur une Fonera
IPADDR=`lynx -auth "user:password" -dump http://192.168.10.1/cgi-bin/status.sh | perl -ne 'm/Adresse IP: ([\d.]+)/ && print $1.","' | cut -f1 -d ","`
(Remplacez user et password par le nom d'utilisateur de la Fonera, et son mot de passe).
récupération de l'IP sur http://checkip.dyndns.com (cas général)
IPADDR=`lynx -dump http://checkip.dyndns.org%7Cperl -ne 'm/IP Address:\s*([\d.]+)/ && print $1'`
(c'est quand même plus simple ;-)
récupération de l'IP sur un autre routeur
En général il suffit d'adapter la ligne ci-dessus, en changeant l'adresse http://checkip.dyndns.org par celle de la page de statut de votre routeur (qui contient l'adresse IP externe), et "IP Address:" par la chaîne de caractères qui précede l'adresse IP. La récupération sur la Fonera est plus compliquée, car il y a 2 adresses IP (l'externe et la locale de la Fonera) sur la page de statut, toutes les 2 précédées par la même chaîne de caractères.

Et au moment de lancer ez-ipupdate, on passe l'adresse avec l'option -a, par exemple :

daemon --user=nobody $servicename $processname -a $IPADDR -c $ez_config

Ce qui sur une Mandriva donne le script /etc/init.d/ez-ipupdate suivant :

#!/bin/bash
#
# Laurent Culioli <laurent@mandrakesoft.com>
# some idea stollen from the ez-ipudate website (  mdepot@mediaone.net )
# Startup script for ez-ipudate  $Revision: 1.0 $
#
# chkconfig: 345 55 45
#  
# processname: ez-ipupdate
# description: check and update your IP to dynamic DNS Server
# pidfile: /var/run/ez-ipudpate.pid
# config: /etc/ez-ipupdate.conf
### BEGIN INIT INFO
# Provides: ez-ipupdate
# Required-Start: $network
# Required-Stop: $network
# Default-Start: 3 4 5
# Short-Description: check and update your IP to dynamic DNS Server
# Description: ez-ipupdate is a program for updating your IP address with the
#              dynamic DNS server
### END INIT INFO
# Make sure relevant files exist
[ -x /usr/bin/ez-ipupdate ] || exit 0
[ -f /etc/ez-ipupdate.conf ] || exit 0
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
processname="ez-ipupdate"
servicename="ez-ipupdate"
ez_config=/etc/ez-ipupdate.conf
ez_cache=`grep -E '^space:*cache-file' $ez_config |  cut -d "=" -f2 `
ez_subsys="/var/lock/subsys/ez-ipupdate"
#JCC 2/7/2008 added:
IPADDR=`lynx -auth "user:password" -dump http://192.168.10.1/cgi-bin/status.sh | perl -ne 'm/Adresse IP: ([\d.]+)/ && print $1.","' | cut -f1 -d ","`
echo "Adresse IP: $IPADDR"
RETVAL=0
function ez_start() {

gprintf "Starting %s daemon: " "$servicename" #JCC 2/7/2008 added "-a $IPADDR" #daemon --user=nobody $servicename $processname -d -a $IPADDR -c $ez_config daemon --user=nobody $servicename $processname -a $IPADDR -c $ez_config RETVAL=$? echo [ $RETVAL -eq 0 ] && touch $ez_subsys && echo `/sbin/pidof $processname` > /var/run/$servicename.pid

}
function ez_stop() {
       gprintf "Stopping %s daemon: " "$servicename"

killproc $servicename RETVAL=$? echo if [ $RETVAL -eq 0 ]; then rm -f $ez_subsys rm -f /var/run/noip.pid fi

}
function ez_status() {

status $processname LAST_IP=`cat $ez_cache | cut -d "," -f2` gprintf "last IP update : %s\n" "$LAST_IP" RETVAL=$?

}
# See how we were called.
case "$1" in
   start)

ez_start ;;

   stop)

ez_stop ;;

   restart|reload)

ez_stop sleep 1 ez_start ;;

   condrestart)

if [ -f $ez_subsys ]; then ez_stop sleep 1 ez_start fi ;;

   status)

ez_status ;;

   *)

gprintf "Usage: %s:\n" "$(basename $0) {start|stop|restart|status|condrestart}}" exit 1 ;;

esac
exit 0

Enfin, dans le fichier de configuration /etc/ez-ipupdate.conf, il faut supprimer l'option daemon, sinon l'option -a sera ignorée, et bien sûr ne pas spécifier d'adresse IP (ce que vous feriez si vous aviez une adresse IP fixe). Par exemple :

#!/usr/bin/ez-ipupdate -c
#
# example config file for ez-ipupdate
#
# this file is actually executable!
#
service-type=dyndns
#service-type=dyndns-static
user=user_dyndns:password
host=lea.is-a-geek.org
#address=12.144.0.255 # ne pas mettre cette option car on a une IP dynamique
interface=eth0
max-interval=2073600
# please create this file and ensure that the user that ez-ipupdate is running
# as has write permissions to it then uncomment this line, if you don't your
# dyndns account will probably get banned. if you run ez-ipupdate as root (bad
# idea, use "run-as-user") then you can just uncomment this line.
#cache-file=/etc/ez-ipupdate.cache.eth1
# for the mean time we'll just use a cache file in the temp directory
cache-file=/tmp/ez-ipupdate.cache
# uncomment this once you have everything working how you want and you are
# ready to have ez-ipupdate running in the background all the time. to stop it
# you can use "killall -QUIT ez-ipupdate" under linux.
#daemon
#JCC 4/7/2007: daemon mode removed else it does not take into account
# the -a argument from the /etc/init.d/ez-ipupdate script
#(removed also -d from this script)



@ Retour à la rubrique Réseau et sécurité

Copyright

© 2007, 2008 Jeannedarc, Jean-Christophe Cardot

Creative Commons License
Creative Commons Attribution iconCreative Commons Share Alike icon
Ce document est publié sous licence Creative Commons
Attribution, Partage à l'identique 4.0 :
https://creativecommons.org/licenses/by-sa/4.0/