Dynamic DNS update
Par Thus0, lundi 2 octobre 2006 à 19:23 :: GNU/Linux ::#142
Tutorial, How-To, HowTo
Si on récupère une adresse IP dynamique par DHCP (notamment quand on utilise un portable en situation de mobilité), comment connaître sa nouvelle adresse IP ? La solution est d’utiliser un système de DNS dynamique (une adresse DNS fixe pointant vers l’adresse IP dynamique récupérée par DHCP).
Plusieurs systèmes sont possibles :
- sur Internet : utiliser un service tel que DynDNS et le client ddclient qui mettra à jour votre adresse DNS chaque fois que votre adresse IP change
- sur Internet : monter son propre service de DNS dynamique avec gnudip http://gnudip2.sourceforge.net
- sur Intranet : utiliser son propre serveur DNS bind9 http://www.isc.org/sw/bind et le client nsupdate pour mettre à jour directement son entrée dans le serveur DNS
Tutorial : Internet & service DynDNS
Installer par exemple (sous linux) le logiciel ddclient et modifier le fichier /etc/ddclient.conf
syslog=yes
pid=/var/run/ddclient.pid
use=web
protocol=dyndns2
server=members.dyndns.org
login=monnom
password=monmotdepasse
foobar.homedns.orgTutorial : Internet & gnudip
... en cours de rédaction...
- Installer les packages suivants :
# apt-get install gnudip
# mkdir /var/cache/gnudip- Configurer la base de données MySQL
Dans le fichier /usr/share/doc/gnudip/gnudip2.db, remplacer les lignes "DEFAULT ’0’ NOT NULL auto_increment" par "NOT NULL auto_increment"
# echo "create database gnudip2;" | mysql -u root -p
# echo "grant all on gnudip2.* to gnudip@'localhost' identified by 'motdepasse_gnudip'; flush privileges;" | mysql -u root -p
# cat /usr/share/doc/gnudip/gnudip2.db | mysql -u root -p gnudip2- Modifier le fichier de configuration /etc/gnudip.conf
gnudipuser = gnudip
[...]
gnudippassword = motdepasse_gnudip
[...]
gnudipserver = localhost
[...]- Ouvrir l’interface web d’administration
Ouvrir l’URL suivante : http://localhost/cgi-bin/gnudip2.cgi
et se logger avec le compte : admin/GnuDIP
- Cliquer sur "Administrative Settings" pour changer le nom de domaine
- Cliquer sur "Change Settings" pour changer le mot de passe admin
[...]
Tutorial : Intranet & serveur BIND & nsupdate
Description de l’architecture :
- serveur DHCP : 192.168.0.1
- serveur DNS : 192.168.0.10 gérant le réseau dyn.foobar.com
- réseau local : 192.168.0.1/255.255.255.0
- PC client : @IP dynamique, toto.dyn.foobar.com
Comme les ordinateurs sont sur l’intranet, je n’utiliserai pas de chiffrement pour mettre à jour les entrées sur le serveur DNS.
Installation du serveur DNS : Bind9
- Installer les packages suivants :
# apt-get install bind9- Créer le fichier de zone : /etc/bind/db.dyn.foobar.com
$TTL 3D
@ IN SOA ns.dyn.foobar.com. host.dyn.foobar.com. (
2006091901 ; serial
8H ; refresh, seconds
2H ; retry, seconds
4W ; expire, seconds
1D) ; minimum, seconds
;
IN NS ns.dyn.foobar.com.
;
ns A 192.168.0.10- Modifier le fichier /etc/bind/named.conf.options
/// ACL
acl dyn-clients {
127.0.0.1;
192.168.0.1/24;
};
acl ns-clients {
127.0.0.1;
};
options {
directory "/var/cache/bind";
listen-on port 53 { 127.0.0.1; 192.168.0.10; };
listen-on-v6 { none; };
allow-query { dyn-clients; };
allow-transfer { ns-clients; };
// Put your ISP DNS server
forwarders {
80.118.192.100; 80.118.196.36;
};
auth-nxdomain no; # conform to RFC1035
};
logging {
channel log-file {file "/var/log/named.log"; severity debug; print-time yes;};
category default {log-file;};
category panic {log-file;};
category packet {log-file;};
category eventlib {log-file;};
};- Modifier le fichier /etc/bind/named.conf.local
zone "dyn.foobar.com" {
type master;
file "/etc/bind/db.dyn.foobar.com";
notify yes;
allow-update { "dyn-clients"; };
allow-query { "dyn-clients"; };
};
Configuration des PCs clients
- Installer les packages suivants :
# apt-get install dhcp3-client dnsutils resolvconf - Créer le fichier /etc/dhcp3/dhclient-exit-hooks.d/dyn.foobar.com (vous pouvez utiliser un autre nom de fichier)
TTL=86400
HOSTNAME=toto.dyn.foobar.com
NS=192.168.0.10
ZONE=dyn.foobar.com
nsupdate -v > /dev/null << EOF
server $NS
zone $ZONE
update delete $HOSTNAME A
update add $HOSTNAME $TTL A $new_ip_address
send
EOF- Modifier le fichier resolv.conf
Solution 1 : utiliser resolvconf
Modifier /etc/resolvconf/resolv.conf.d/head
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 192.168.0.10Solution 2 : modifier /etc/network/interfaces (uniquement sous Debian)
iface eth0 inet dhcp
dns-nameservers 192.168.0.10
#dns-search dyn.foobar.com- Redémarrer le service réseau pour tester
# /etc/init.d/networking restart
# ping toto.dyn.foobar.comVous pouvez également tester un transfert de zone (dans le tutorial, celui-ci ne peut être que fait en local sur le serveur DNS cf. la liste de contrôle d’accès ns-clients)
# host -l dyn.foobar.comou
# dig AXFR dyn.foobar.comTutorial : Internet & serveur BIND & nsupdate
Description de l’architecture :
- serveur DNS : W.X.Y.Z. gérant le réseau dyn.foobar.com
- PC client : @IP dynamique, toto.dyn.foobar.com
Comme les ordinateurs sont sur internet, j’utiliserai des clés de chiffrement pour mettre à jour les entrées sur le serveur DNS.
... en cours de rédaction...
Documentation
- http://dag.wieers.com/howto/bits/bi...
- http://lists.debian.org/debian-user...
- http://caunter.ca/nsupdate.txt
- http://linox.be/index.php/2006/03/0...
- http://www.swisslinux.org/forums/pt...
Commentaires
Bonjour, Ce serait sympa si tu pouvais faire le tuto pour GNUDip car j’ai essayé (sous windows avec easyphp), mais je n’y ai rien compris. J’ai quelques notion appache, php, mysql mais là c’est du Perl et je ne vois pas du tout comment faire... Cordialement.