Mettre à l’heure un serveur est simple.
Quand ce serveur accueille des serveurs virtuels, cela reste toujours simple.
Lire l’heure
L’heure d’un serveur sous Debian (comme sur d’autres distributions Linux) est gérée par la commande date.
Sans paramètre, elle retourne la date et l’heure du système :
# date
jeudi 15 janvier 2009, 01:28:42 (UTC+0100)On remarque au passage que le résultat est formaté selon les paramètres de localisation du système (ici en français pour l’heure locale de Paris).
Pour obtenir l’heure UTC, c’est-à-dire l’heure universelle ou heure de Greenwich, on ajoute le paramètre -u :
# date -u
jeudi 15 janvier 2009, 00:30:16 (UTC+0000)On obtient bien un décalage d’1 heure par rapport à l’heure de Paris (2 heures en heure d’été).
Modifier l’heure
Pour modifier l’heure, on utilise le paramètre --set
# date --set 00:00:00
h:m:s
Et si la date n’est pas bonne, même remède :
# date --set 1970-01-01
AA-MM-JJ
Configuration du fuseau horaire
On utilise simplement la commande tzconfig et on répond aux questions :
Avec Lenny : dpkg-reconfigure tzdata le principe reste le même.
/# tzconfig
Your current time zone is set to Europe/Paris
Do you want to change that? [n]: y
Please enter the number of the geographic area in which you live:
1) Africa 7) Australia
2) America 8) Europe
3) US time zones 9) Indian Ocean
4) Canada time zones 10) Pacific Ocean
5) Asia 11) Use System V style time zones
6) Atlantic Ocean 12) None of the above
Then you will be shown a list of cities which represent the time zone
in which they are located. You should choose a city in your time zone.
Number: 8
Amsterdam Andorra Athens Belfast Belgrade Berlin Bratislava Brussels
Bucharest Budapest Chisinau Copenhagen Dublin Gibraltar Guernsey Helsinki
Isle_of_Man Istanbul Jersey Kaliningrad Kiev Lisbon Ljubljana London
Luxembourg Madrid Malta Mariehamn Minsk Monaco Moscow Nicosia Oslo Paris
Podgorica Prague Riga Rome Samara San_Marino Sarajevo Simferopol Skopje
Sofia Stockholm Tallinn Tirane Tiraspol Uzhgorod Vaduz Vatican Vienna
Vilnius Volgograd Warsaw Zagreb Zaporozhye Zurich
Please enter the name of one of these cities or zones
You just need to type enough letters to resolve ambiguities
Press Enter to view all of them again
Name: [] paris
Your default time zone is set to 'Europe/Paris'.
Local time is now: jeudi 15 janvier 2009, 01:38:18 (UTC+0100).
Universal Time is now: jeudi 15 janvier 2009, 00:38:18 (UTC+0000). La configuration du fuseau horaire est stockée dans le fichier /etc/timezone.
Temps système et temps BIOS
Un détail sournois : le serveur gère deux références de temps, celle du système et celle de la carte-mère (horloge BIOS).
Et elles peuvent très bien ne pas indiquer la même heure.
Dans certains cas, cette subtile différence peut avoir des conséquences agaçantes lors du redémarrage du serveur (par exemple, perte de l’heure système).
Autant régler une bonne fois pour toute l’heure matérielle avec la commande hwclock.
Comme nous avons déjà réglé l’heure système, on utilise l’option —systohc pour la récupérer et —utc pour la définir en heure UTC :
# hwclock --systohc --utc
Synchronisation avec un serveur de temps
Le quartz qui pilote l’oscillation de l’horloge de la carte-mère n’est jamais parfait.
L’heure va donc se décaler petit à petit (parfois de plusieurs secondes par jour !). _ Heureusement, le protocole NTP (Network Time Protocol) vient à notre secours et offre la possibilité de synchroniser l’horloge du serveur avec un serveur de temps qui fait référence.
Il faut d’abord installer les paquets qui permettront d’utiliser NTP :
# apt-get install ntp-simple ntpdate
Puis, on configure NTP :
# vi /etc/ntp.conf
Concernant les serveurs NTP, choisissez sans hésiter ceux du projet pool.ntp.org qui optimisent les requêtes NTP par l’utilisation de clusters répartis dans le monde entier.
Une rapide visite de ce site vous indiquera les serveurs NTP à utiliser dans votre zone géographique.
Si votre serveur est en France, on ajoute donc les lignes suivantes dans ntp.conf :
server 0.fr.pool.ntp.org
server 1.fr.pool.ntp.org
server 2.fr.pool.ntp.orgAvant de mettre en place le démon qui synchronisera l’heure automatiquement, il faut le faire manuellement (ici, avec le serveur principal de pool.ntp.org) :
# ntpdate pool.ntp.org
Maintenant que l’heure système est bonne, reste à mettre à jour celle de l’horloge BIOS :
# hwclock --systohc --utc
Pourquoi choisir l’heure UTC ?
Pour éviter de perdre l’heure si les serveurs NTP ne sont pas accessibles au redémarrage de votre serveur.
Il reste à charger nos modifications et la synchronisation automatique est en place :
# /etc/init.d/ntp-server restart
On termine par le redémarrage du serveur qui est obligatoire pour éviter quelques mauvaises surprises (par exemple, les tâches cron qui se déclenchent à l’heure UTC ou les fonctions de temps de PHP qui perdent deux heures…).
Si le redémarrage n’est pas possible, il faut relancer tous les services actifs.
Si vous souhaitez mettre à jour l’heure manuellement, le paquet ntp-server n’est pas utile. _ Gardez simplement le paquet ntpdate et utilisez directement la commande ntpdate.
Vous pouvez aussi désactiver le chargement du démon NTP au démarrage :
# update-rc.d ntp remove
Et pour le remettre en place :
# update-rc.d ntp defaults
Régler l’heure d’un serveur virtuel (vserver)
Pour que le système de fichiers fonctionne correctement, tous les vservers utilisent la même référence de temps, celle du serveur principal.
On ne peut donc pas modifier l’heure d’un vserver.
Par contre, un vserver peut avoir sa propre configuration de fuseau horaire, très utile pour proposer des services à des utilisateurs de zones géographiques différentes.
Comme nous l’avons vu plus haut, la commande tzconfig permet de définir le fuseau horaire pour calculer le décalage horaire entre l’heure UTC du serveur principal et celle du vserver.
On remarque au passage la nécessité d’utiliser l’heure UTC comme référence de temps sur un serveur.
Les puristes (ou plutôt les administrateurs qui ont la responsabilité d’exploiter des serveurs de production en toute sécurité) se pencheront sur les nombreuses options de configuration de NTP :
- installation d’un serveur NTP local,
- filtrage des adresses IP,
- portée des requêtes,
- périodicité de la synchronisation,
- etc.