Archives par étiquette : ntp

Serveur de temps et Windows 2008

J’avais déjà fait un article sur la configuration d’un serveur Windows avec le pool français afin de rester à la bonne heure (cf. ici), mais voici un petit complément. Cette méthode a été appliquée sur un contrôleur de domaine tournant sous Windows 2008 Server Standard. En ligne de commande (Démarrer, Exécuter, cmd) entrer la suite de commandes suivantes :

net stop w32time
w32tm /config /syncfromflags:manual /manualpeerlist:fr.pool.ntp.org
w32tm /config /reliable:yes
net start w32time

Votre serveur se synchronisera alors avec le pool français et pourra donc synchroniser les postes clients. Pour plus d’informations sur la commande w32tm je vous invite à lire cette page de Microsoft TechNet. Cette commande peut aussi bien vous permettre de configurer le serveur de temps sous Windows que de travailler au diagnostique d’un problème avec le serveur de temps.

Configurer un serveur de temps sous Windows

Voici quelques temps j’ai été confronté à un souci. Si tout mes serveurs Linux étaient bien synchronisés avec des serveurs NTP (cf. ce post), les postes de travail sous Windows avaient eux une légère avance. Vous me direz que ce n’est pas trop grave, mais comme les personnes travaillant sur ces postes se basent sur cette heure pour partir, cela fait désordre. En cherchant quelques informations j’ai pu avoir une meilleure idée du fonctionnement des serveurs de temps sous Windows. Au sein d’un domaine, les machines se basent sur le temps du serveur d’autorité, donc bien souvent le PDC (Contrôleur de domaine). Ce dernier se base par défaut sur son horloge interne. C’est en effet le plus simple et le plus sûr car on est alors indépendant d’une source externe (pas de souci si on a pas Internet). Dans le cadre de mon réseau d’entreprise, j’ai un accès à Internet redondant avec d’un côté une fibre optique à 100 Mo et de l’autre une connexion basique via une Box d’un FAI. Si l’accès principal se coupe, le Firewall basculera automatiquement vers la deuxième connexion le temps que la première se rétablisse. L’horloge interne de mon contrôleur de domaine semblant avancer, j’ai décidé de synchroniser ce dernier avec le pool ntp français, comme pour mes serveurs Linux.

Je suis d’abord tombé sur cette fiche du support de Microsoft. On y trouve une description très complète de ces soucis, peut-être trop. Autant sous Linux on édite juste le fichier de configuration ntp.conf, autant ici on se retrouve à devoir jouer avec la base de registre, ce qui est loin d’être ma méthode préférée sur un contrôleur de domaine principal 😉 Je suis ensuite tombé sur un site d’administration réseau où l’explication était plus simple et a répondue à mon besoin (www.adminreseau.net). Voici ci-dessous la méthode que j’ai donc appliquée :

Dans une invite de commandes DOS entrer la commande suivante :

net time /setsntp:fr.pool.ntp.org

Cette commande permettra de configurer la source de temps externe en modifiant les entrées suivantes de la base de registre (personnellement, j’ai fais une sauvegarde complète de la base de registre avant de faire cette manipulation, on est jamais trop prudents …) :

HKLM\SYSTEM\CurrentControlSet\Services\W32Time\Parameters\Type passera de NT5DS à NTP
HKLM\SYSTEM\CurrentControlSet\Services\W32Time\Config\AnnounceFlags passera de 10 à 5 en décimal
HKLM\SYSTEM\CurrentControlSet\Services\W32Time\Parameters\NtpServer sera créée au besoin et contiendra le nom du serveur NTP utilisé pour la synchronisation, ici fr.pool.ntp.org (pool de serveurs de temps français).

Il fallait ensuite redémarrer le serveur de temps en tapant les commandes suivantes à la suite :

net stop w32time (arrêt du service de temps)
net start w32time (démarrage du serveur de temps)
w32tm /resync /rediscover (force la synchronisation)

Si vous avez d’autres contrôleurs de domaine, vous pouvez faire cette manipulation supplémentaire dessus pour les synchroniser :

/setsntp (efface la configuration précédente)
w32tm /resync /rediscover (force la synchronisation)

Vous pourrez ensuite vérifier la synchronisation de vos contrôleurs de domaine avec la commande suivante :

w32tm /monitor

Personnellement je n’avais qu’un seul contrôleur de domaine donc pas besoin de m’occuper de la synchronisation des autres. En revanche je ne me suis pas embêté à aller sur chaque poste Windows pour le synchroniser. Les utilisateurs éteignant les machines la nuit, la synchronisation s’est faite naturellement au petit matin quand ils ont rallumés leurs postes de travail 🙂

Maintenir ses machines linux à l’heure avec ntp (exemple sur une Mandriva)

Quand il s’agit de conserver nos machines Linux (ou même Windows) à l’heure, il y a toujours plusieurs solutions. La première est de le faire manuellement avec date ou ntpdate par exemple.

date MMJJhhmmAAAA

MM = mois sur deux chiffres (01 à 12)
JJ = jour du mois sur deux chiffres (01 à 31)
hh = heures sur deux chiffres (00 à 24)
mm = minutes sur deux chiffres (00 à 59)
AAAA = année sur quatre chiffres

exemple : date 032112352010

Cette première solution est plutôt longue et fastidieuse, de plus elle favorise les risques d’erreur par une saisie manuelle. On peut ensuite demande à se synchronise avec un serveur de temps. Pour cela il faudra installer ntp-client ( urpmi ntp-client )

[root@srv-test ~]# ntpdate fr.pool.ntp.org
21 Mar 16:55:50 ntpdate[3392]: step time server 193.55.167.1 offset -6335.455525 sec
[root@srv-test ~]#

La commande ntpdate permet de synchroniser une machine avec un serveur de temps sur Internet. C’est déjà un plus mais cela reste toujours manuel. Il est possible de l’automatiser en rajoutant une tâche planifiée dans la crontab, afin que cela tourne une fois par jour par exemple.

0 1 * * * ntpdate fr.pool.ntp.org >> /root/ntpd.sh.log

Un complément d’information car voici deux fois que j’utilise une URL sans l’avoir expliquée. Il existe un projet en ligne pour un ensemble de serveurs de temps qui se nomme NTP POOL PROJECT. On peut y trouver des listes de serveurs de temps en ligne pour se synchroniser pour l’ensemble des pays, et donc pour la France aussi : pool zone France.

Nous venons de voir comment réaliser une synchronisation simple, déclenchée à un instant « t », mais il peut-être intéressant d’avoir une synchronisation permanente avec la présence d’un serveur de temps sur notre machine ou dans notre réseau privé. Pour cela il nous faut installer ntp ( urpmi ntp ) et ensuite modifier le fichier de configuration :

vi /etc/ntp.conf

On doit y trouver ceci les lignes suivantes :

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

Nous allons les remplacer par les lignes suivantes :

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

Le paramètre « prefer » ici utilisé permet de définir le serveur par défaut, celui qui faudra utiliser en premier. Une fois ce paramètre enregistré il nous suffit de démarrer le service ntp.

service ntpd start

Il est possible qu’il ne se relance pas en cas de redémarrage machine, pour cela vérifier la liste des services qui sont planifiés au démarrage.

chkconfig –list

Pour passer ntpd en démarrage automatique, utilisez la commande suivante :

chkconfig –level 2345 ntpd on

Maintenant que notre service tourne, nous pouvons le vérifier avec la commande ntpq -p :

[root@srv-test ~]# ntpq -p
remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
LOCAL(0)        .LOCL.          10 l    –   64    0    0.000    0.000   0.001
ks35603.kimsufi .INIT.          16 u    –   64    0    0.000    0.000   0.001
ns1.azuria.net  .INIT.          16 u    –   64    0    0.000    0.000   0.001
digi00161.digic .INIT.          16 u    –   64    0    0.000    0.000   0.001
81.19.16.225    .INIT.          16 u    –   64    0    0.000    0.000   0.001
ns.e-madeinfran 192.93.2.20      2 u    3   64    1   42.936  -176568   0.001
[root@srv-test ~]#

Il est possible, comme dans l’exemple ci-dessus, d’avoir des INIT dans la deuxième colonne. Il suffit d’attendre un peu pour les voir disparaitre. Au fil du temps qui va passer, les valeurs de la colonne « reach » vont augmenter. La connexion est considérée comme stable quand vous aurez d’affiché 377.

[root@srv-test ~]# ntpq -p
remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
LOCAL(0)        .LOCL.          10 l   37   64  377    0.000    0.000   0.001
*ntp.univ-poitie 195.34.89.227    3 u  284 1024  377   47.650   -1.037   1.482
+ntp.univ-angers 195.220.94.163   2 u  196 1024  377   50.958    4.429   1.011
+sd-16014.dedibo 213.162.48.10    3 u  130 1024  377   40.630    6.772   2.567
+diane.ensma.fr  192.93.2.20      2 u  198 1024  377   52.104    2.234   1.397
+ddb3.europeacon 193.204.114.232  2 u  164 1024  377   36.599    4.849  41.804
[root@srv-test ~]#

La synchronisation n’est pas immédiate et peut prendre quelques minutes. Le serveur précédé d’une astérisque (*) est celui utilisé, ceux précédés d’un plus (+) sont les potentiels, ceux précédés d’un moins (-) seront retirés et ceux précédés d’un espace sont soit inaccessible, soit trop éloignés. Et voila votre machine ou serveur est maintenant synchronisé avec un serveur de temps et il devrait le rester tant que le service tournera. Il peut-être envisagé de se servir d’une machine synchronisée pour servir de serveur de temps au sein du réseau directement par la suite. Une configuration plus poussée peut-être envisagée dans ce cadre (je verrais si je rédige un nouvel article ultérieurement, mais en attendant vous pouvez consulter l’un des deux liens ci-dessous qui donne des procédures légèrement différentes, dont une sur nicolargo qui prend en compte plus de paramètres.

Installation d’un serveur NTP sous Ubuntu sur blog.nicolargo.com
Mettre vos serveurs à la bonne heure avec NTP sur system-Linux.eu