Midilibre.fr
Tous les blogs | Alerter le modérateur| Envoyer à un ami | Créer un Blog


26/10/2008

[ntp] - comment ça marche?

serviceconf.pngVous le savez cette nuit à 3h il était 2h, et lorsque vous avez allumé votre ordinateur ce matin, votre gnu/linux à changé automatiquement l'heure... Mais comment cela marche t'il? L'ordinateur gére en  local l'heure avec le paquet tzdata car il contient les informations sur le fuseaux horaires. Mais comment notre Système récupère l'heure ?
En fait notre OS si il y a une connexion internet utilise une connexion à un serveur NTP (Network Time Protocol) ce Protocole date de 1983, et permet de synchroniser les horloges des ordinateurs au travers d'un réseau.

Fonctionnement sur mon Ubuntu: pour comprendre le méchanisme, j'ai osculté mes fichiers. Avec apt j'ai trouvé le client ntp utilisé :

apt-cache search --names-only ntp | grep client

ntpdate - client for setting system time from NTP servers
libnews-nntpclient-perl - News::NNTPClient, Perl support for accessing NNTP servers
msntp - A very simple and portable SNTP client/server

J'ai donc fait un locate ntpdate.

/etc/default/ntpdate
/etc/dhcp3/dhclient-exit-hooks.d/ntpdate
/etc/logcheck/ignore.d.server/ntpdate
/etc/network/if-up.d/ntpdate
/usr/sbin/ntpdate
/usr/sbin/ntpdate-debian
/usr/share/doc/ntpdate
/usr/share/doc/ntpdate/NEWS.Debian.gz
/usr/share/doc/ntpdate/README.Debian
/usr/share/doc/ntpdate/changelog.Debian.gz
/usr/share/doc/ntpdate/copyright
/usr/share/man/man8/ntpdate-debian.8.gz
/usr/share/man/man8/ntpdate.8.gz
/var/lib/dpkg/info/ntpdate.conffiles
/var/lib/dpkg/info/ntpdate.list
/var/lib/dpkg/info/ntpdate.md5sums
/var/lib/dpkg/info/ntpdate.postinst
/var/lib/dpkg/info/ntpdate.postrm

Supprimons les lignes qui concernent la doc (man et doc) ainsi que les lignes sur les informations de paquets (dpkg), il nous reste :

/etc/default/ntpdate
/etc/dhcp3/dhclient-exit-hooks.d/ntpdate
/etc/logcheck/ignore.d.server/ntpdate
/etc/network/if-up.d/ntpdate
/usr/sbin/ntpdate
/usr/sbin/ntpdate-debian

on y voit deja plus clair, tout ce qui est dans /usr/sbin sont les programmes qui permettent la synchronisation des données. Ce qui est intéressant est ce qui se trouve dans /etc/network/if-up.d qui liste les programmes a lancer lorsqu'une connexion est déctecté. Analysons ce qui ce trouve dedans : cat /etc/network/if-up.d/ntpdate

Nous voyons bien aprés une serie de controle que c'est le programme /usr/sbin/ntpdate-debian qui est lancé.

Reste le fichier de configuration, et bien il s'agit de notre premiere ligne du locate : /etc/default/ntpdate Si on fait un cat dessus (cat /etc/default/ntpdate) voici ce que l'on trouve :

# The settings in this file are used by the program ntpdate-debian, but not
# by the upstream program ntpdate.

# Set to "yes" to take the server list from /etc/ntp.conf, from package ntp,
# so you only have to keep it in one place.
NTPDATE_USE_NTP_CONF=yes

# List of NTP servers to use  (Separate multiple servers with spaces.)
# Not used if NTPDATE_USE_NTP_CONF is yes.
NTPSERVERS="ntp.ubuntu.com"

# Additional options to pass to ntpdate
NTPOPTIONS=""

La ligne NTPSERVERS nous indique que nous synchronisons avec le serveur ntp.ubuntu.com. C'est donc dans ce fichier qui gère la connexion NTP.

Petite bizarrerie, j'ai yes sur NTPDATE_USE_NTP_CONF=yes et le commentaire indique que si il est mis sur yes, il vérifie alors une liste de serveur dans /etc/ntp.conf hors je n'ai pas ce fichier. Si quelqu'un a une réponse je suis preneur.

Le NTP récupère donc l'heure et en fonction de votre fuseau horaire, le système modifie l'heure sur le système.

Voila sous couvert de ce changement d'heure vous avez vu qu'il n'est pas difficile de retrouver des informations sur qui fait quoi dans notre système gnu/linux.