Serveurs à l’heure : synchronisons le temps...

vendredi 27 mars 2009, par Minimalteck

Synchroniser le temps des machines… Hum… est-ce vraiment nécessaire ?
Bien souvent, non, pour des machines de travail ou de de non-travail… mais sur un serveur, c’est tout le contraire ! Cela dépend évidemment des applications qui y sont installées… Mais si vous faites ne serait-ce que des sauvegardes automatisées via le réseau, ou avez mis en place un serveur de messagerie…
Il n’en demeure pas moins que "les ordinateurs utilisent des horloges au quartz et elles ont la fâcheuse tendance à dériver au bout d’un certains temps, pour certaines de plusieurs secondes par jour et cela de façon totalement aléatoire" [1]

 Pré-en-bulle

Le (Network Time Protocol) - NTP [2] pour les intimes - est un protocole Internet qui permet de synchroniser une machine sur des serveurs de temps via le réseau. Il se base sur les protocoles UDP et IP, donc sur l’adressage IP, en mode non connecté sur le port 123.

Il existe sous Linux différents paquets pour installer un client et/ou un serveur NTP : "ntpdate" et "ntpd" peuvent nous permettre de synchroniser notre précieux temps… et arriver à nos fins…

 L’option "ntpdate"

- Késako ?
"ntpdate" est un client NTP qui synchronise ponctuellement l’horloge système hôte. "ntpdate" est utilisable quelle que soit la différence d’horaire avec le serveur de référence, à la différence du daemon "ntpd" qui refusera de se synchroniser lors d’un décalage trop important. "ntpdate" peut s’avérer utile pour les machines non connectées en permanence à Internet.

0 0 * * *  ntpdate  -s -u 0.fr.pool.ntp.org
  • L’option -s redirige le résultat dans le log system (i.e. syslog)
  • L’option -u permettant de sortir avec un port source autre que 123 (les ports inférieurs à 1024 nécessitants les droits root)

- Configuration générale de "ntpdate"
Sous Ubuntu 8.04 LTS par exemple la configuration par défaut se trouve - logiquement - dans /etc/default/ntpdate.
Au démarrage de la machine, "ntpdate" se lancera et synchronisera la machine via cette configuration.

root@machine:~# more /etc/default/ntpdate
# 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=""

Il suffit de spécifier le(s) serveur(s) désiré(s) au paramètre NTPSERVERS [3].

 L’option démon "ntpd"

- Le démon "ntpd" synchronise la machine progressivement, sans perturber le système, il accélère ou ralentit l’horloge système, donc non immédiate. Pour rappel, si le décalage est trop important, le démon "ntpd" refusera de synchroniser l’horloge système, il sera alors nécessaire d’utiliser le client "ntpdate".

apt-get install ntp

- Configuration du démon "ntpd"
Le fichier de configuration /etc/ntp.conf va nous permettre - entre autres - de choisir les serveurs de référence, en ajoutant par exemple :

server 0.fr.pool.ntp.org
server 1.fr.pool.ntp.org
server 2.fr.pool.ntp.org
server 3.fr.pool.ntp.org

puis redémarrer le démon /etc/init.d/ntp restart

 NTP et Iptables

Le protocole NTP utilise pour la synchronisation le port UDP/123.
La règle suivante pour permet au serveur NTP interne de se synchroniser à un serveur NTP de référence extérieur "NTP_SERVEUR_REFERENCE"

iptables -A FORWARD -i $INTERNAL_INTERFACE -o $EXTERNAL_INTERFACE
          -p udp
          -s $SERVEUR_NTP_INTERNE --sport 123
          -d $NTP_SERVEUR_REFERENCE --dport 123
          -m state --state NEW -j ACCEPT

Notes

[1] Source : Wikipédia

[2] Si vous voulez creuser un peu la question, je vous recommande chaudement l’excellent article sur le sujet du site FrameIP

[3] Comment trouver un serveur de temps ?
Consultez le pool de serveurs NTP français et les serveurs français secondaires

SPIP | squelette | | Plan du site | Suivre la vie du site RSS 2.0