Passer au contenu principal

Il est essentiel que l'heure de votre module soit correcte pour toutes sortes d'opérations, notamment la synchronisation des journaux et la validation des certificats de sécurité. À partir de la version 15.1, VOS est fourni avec une adaptation du démon Network Time Protocol (ntpd) et il est fortement recommandé de l'exécuter.

En règle générale, pour exécuter ntpd, vous devez lui fournir une liste de serveurs de temps, c'est-à-dire des hôtes du réseau qui exécutent également ntpd et qui fournissent l'heure à tout hôte qui en fait la demande. Il existe un grand nombre de serveurs de temps disponibles sur Internet que vous pouvez utiliser. Consultez le site http://www.pool.ntp.org/en/, qui répertorie les serveurs par région.

Je recommande d'indiquer un ou trois (voire plus) serveurs, mais jamais deux. ntpd tente de déterminer quel serveur est le plus approprié en comparant leurs réponses. Si seuls deux serveurs sont indiqués, il est possible que ntpd ne parvienne pas à se décider et finisse par n'en utiliser aucun.

Mais que faire si les politiques de votre entreprise vous empêchent d'accéder aux serveurs de synchronisation sur Internet et que vous ne disposez pas d'un serveur de synchronisation désigné par l'entreprise ? Dans ce cas, vous pouvez éventuellement utiliser un contrôleur de domaine (DC) ou un contrôleur de domaine de secours (BDC) Microsoft Windows local. La plupart des DC et des BDC fournissent des services de synchronisation.

En tant qu'administrateur VOS, comment pouvez-vous localiser le contrôleur de domaine (DC) ou le contrôleur de domaine secondaire (BDC) local ? Le plus simple est de demander, mais si cela n'est pas possible, vous pouvez lancer un outil de surveillance des paquets et vérifier par vous-même. Les postes de travail comme les contrôleurs de domaine diffusent périodiquement sur le port UDP 138.

La commande

>system>stcp>command_library>packet_monitor -interface#INTERFACE -numeric
-time_stamp -verbose -pkt_hdr -hex_header -hex_dump -length 1500 -filter -port 138
Figure 1 – Commande packet_monitor

affichera ces diffusions (veillez à remplacer INTERFACE par le nom de votre interface IP). Malheureusement, pour identifier les serveurs de temps, vous devez examiner les données hexadécimales contenues dans les paquets ; comme il y aura probablement beaucoup de paquets à passer en revue, vous devrez les enregistrer dans un fichier. Ma macro de commande pm.cm (vous pouvez trouver la macro ici) créera automatiquement un fichier de sortie et exécutera la trace en tant que processus démarré. Le fichier de sortie portera le nom pm.(date).(heure).out. La commande serait

pm#INTERFACE -no_arp -no_icmp -port 138
Figure 2 – Macro de commande pm

Quelle que soit la manière dont vous lancez la trace, laissez-la tourner pendant 15 à 20 minutes : vous devriez alors recevoir une diffusion provenant de chaque DC et BDC de votre réseau. Recherchez ensuite les lignes contenant les chaînes « c0 3 » et « c0 2 » ; c'est-à-dire un C minuscule, un zéro, quatre espaces, puis un trois ou un deux. Le chiffre correspond au demi-octet supérieur de l'octet situé à l'adresse c0. Cet octet peut être décodé comme suit :

ABCD EFGH
^^^^ ^^^^
|||| ||||-- l'hôte est un poste de travail
|||| |||--- l'hôte est un serveur
|||| ||---- l'hôte n'est PAS un serveur SQL
|||| |----- l'hôte n'est PAS un contrôleur de domaine
||||------- l'hôte est un contrôleur de domaine de secours
|||-------- l'hôte est un serveur de temps
||--------- l'hôte n'est PAS un hôte Apple
|---------- l'hôte n'est PAS un hôte Novell
Figure 3 – Décodage de l'octet de type de serveur

Comme vous pouvez le constater, la recherche des deux ou trois premiers ne permet pas toujours de trouver tous les serveurs de temps, mais à moins que vous ne gériez un site exclusivement dédié à Novel ou à Apple, elle devrait vous permettre d'obtenir au moins un DC ou un BDC.

d pm.11-02-06.17:25:06.out -match 'c0    2'
ready  17:47:13

d pm.11-02-06.17:25:06.out -match 'c0    3'

%phx_vos#m15_mas>SysAdmin>Noah_Davids>pm.11-02-06.17:25:06.out  11-02-06 17:47

     c0    33 10 82  0  f  1 55 aa   0                       3 <<U*
     c0    33 10 84  0  f  1 55 aa   0                       3 <<U*
     c0    33 10 84  0  f  1 55 aa   0                       3 <<U*
     c0    33 10 82  0  f  1 55 aa   0                       3 <<U*
     c0    33 10 84  0  f  1 55 aa   0                       3 <<U*
     c0    33 10 84  0  f  1 55 aa   0                       3 <<U*
     c0    33 10 84  0  f  1 55 aa   0                       3 <<U*
     c0    33 10 82  0  f  1 55 aa   0                       3 <<U*
     c0    33 10 84  0  f  1 55 aa   0                       3 <<U*
     c0    33 10 82  0  f  1 55 aa   0                       3 <<U*
     c0    33 10 84  0  f  1 55 aa   0                       3 <<U*

ready  17:47:29
Figure 4 – Lignes de packet_monitor correspondant au serveur de temps et au contrôleur de domaine de secours

Il ne suffit pas de repérer les lignes « c0 ». Il faut également trouver l'adresse de l'hôte qui a envoyé le paquet. La commande grep, qui se trouve dans le répertoire >system>gnu_library>bin, permet d'effectuer une recherche sur plusieurs lignes

grep -e 'c0    3' -e 'c0    2' -e UDP pm.11-02-06.17:25:06.out
. . . .
UDP from 192.168.33.180.138 to 192.168.33.255.138 Cksum 7ca3, 220 data bytes.
UDP from 192.168.33.249.138 to 192.168.33.255.138 Cksum c89a, 209 data bytes.
     c0    33 10 82  0  f  1 55 aa   0                       3 <<U*
. . . .
UDP from 192.168.33.50.138 to 192.168.33.255.138 Cksum 9526, 193 data bytes.
UDP from 192.168.33.248.138 to 192.168.33.255.138 Cksum d05f, 209 data bytes.
     c0    33 10 84  0  f  1 55 aa   0                       3 <<U*
. . . .
UDP from 192.168.33.202.138 to 192.168.33.255.138 Cksum cf35, 219 data bytes.
UDP from 192.168.33.253.138 to 192.168.33.255.138 Cksum 9505, 209 data bytes.
     c0    33 10 82  0  f  1 55 aa   0                       3 <<U*
. . . .
UDP from 192.168.33.131.138 to 192.168.33.255.138 Cksum aa35, 222 data bytes.
UDP from 192.168.33.252.138 to 192.168.33.255.138 Cksum 7343, 209 data bytes.
     c0    33 10 84  0  f  1 55 aa   0                       3 <<U*
. . . . .
Figure 5 – Lignes de « packet_monitor » indiquant les serveurs de temps détectés

Les adresses des serveurs de temps apparaissent sur les lignes situées juste au-dessus de la ligne « c0 ». Dans la figure ci-dessus, nous avons identifié les adresses 192.168.33.249, 192.168.33.248, 192.168.33.253 et 192.168.33.252.

Maintenant que nous avons identifié les serveurs qui se présentent comme des serveurs de temps, comment pouvons-nous être sûrs qu’ils fonctionneront ? La commande ntpdate permet d’interroger manuellement chaque serveur de temps. Utilisez l’argument « -q » pour vous contenter d’interroger le serveur de temps ; à ce stade, nous ne voulons pas que ntpdate règle également l’heure du module.

ntpdate -q 192.168.33.248
Recherche de l'hôte 192.168.33.248 et du service ntp
hôte trouvé : dc48.noahslab.stratus.com
serveur 192.168.33.248, stratum 4, décalage -0,117418, délai 0,04202
6 févr. 17:53:10 ntpdate[1427079382] : ajustement du serveur de temps 192.168.33.248, décalage -0
+.117418 sec
prêt  17:53:10

ntpdate -q 192.168.33.249
Recherche de l'hôte 192.168.33.249 et du service ntp
hôte trouvé : dc49.noahslab.stratus.com
serveur 192.168.33.249, stratum 4, décalage -0,038709, délai 0,04355
6 févr. 17:53:25 ntpdate[1427079382] : ajustement du serveur de temps 192.168.33.249, décalage -0
+.038709 sec
prêt  17:53:25

ntpdate -q 192.168.33.252
Recherche de l'hôte 192.168.33.252 et du service ntp
hôte trouvé : dc52.noahslab.stratus.com
serveur 192.168.33.252, stratum 3, décalage 0,015733, délai 0,04216
6 févr. 17:53:38 ntpdate[1427079382] : ajustement du serveur de temps 192.168.33.252, décalage 0.
+015733 sec
prêt  17:53:38
Figure 6 – Utilisation de ntpdate pour tester les serveurs de temps détectés — serveurs opérationnels

Imaginons qu'un des serveurs dispose d'une règle de pare-feu qui l'empêche de diffuser l'heure bien qu'il la publie ; ntpdate affichera alors ce qui suit.

ntpdate -q 192.168.33.254
Recherche de l'hôte 192.168.33.254 et du service ntp
Hôte trouvé : dc54.noahslab.stratus.com
Serveur 192.168.33.254, stratum 0, décalage 0,000000, délai 0,00000
6 févr. 17:54:00 ntpdate[1427079382] : aucun serveur adapté à la synchronisation trouvé
+d
prêt  17:54:00
Figure 7 – Utilisation de ntpdate pour tester les serveurs de temps détectés — serveur hors service

Maintenant que vous savez quels serveurs de temps vous pouvez utiliser, vous pouvez modifier le fichier >system>ntp>ntp.conf comme suit. Tout ce qui est en noir provient du fichier sample_ntp.conf.17.0 ; les nouveaux éléments sont en vert. Notez le caractère de commentaire qui a été ajouté devant la ligne « server foo.bar.somewhere.com ». Les instructions restrict améliorent la sécurité du système en empêchant d'autres hôtes d'envoyer des requêtes non liées à l'heure au démon ntp.

# Les directives « server » indiquent d'où provient l'heure.
# Il peut s'agir de valeurs DNS ou IP, à raison d'une par directive.
# server foo.bar.somewhere.com

server 192.168.33.248 burstiburst
server 192.168.33.249 burst iburst
server 192.168.33.252 burstiburst

# Home fichier journal. Choisissez un bon chemin relatif — les chemins absolus VOS
# ne peuvent pas être analysés correctement.
logfile >system>ntp>ntp.logfile

# Home fichier drift.
driftfile >system>ntp>ntp.drift

# Ces instructions empêcheront les requêtes non temporelles provenant de tout hôte autre que l'hôte local
restrict default noquery
restrict 127.0.0.1
Figure 8 – Fichier >system>ntp>ntp.conf mis à jour

Lancez la commande ntpd (vous trouverez un fichier sample_start_ntpd.17.0 dans le répertoire >system>ntp) et, après quelques minutes, vous devriez voir s'afficher quelque chose de similaire à ce qui suit. Le « * » devant 192.168.33.252 indique qu'il s'agit du serveur que ntpd a choisi pour se synchroniser. Le « + » devant 192.168.33.248 indique un autre choix valable au cas où il n'y aurait pas de réponse de la part de 192.168.33.252. Tant qu'une des lignes comporte un « * » dans la première colonne, vous savez que l'heure du module sera synchronisée avec un serveur de temps. N'oubliez pas cependant que la convergence des heures peut prendre un certain temps lorsque la différence initiale entre le module et le serveur de temps est importante.

ntpq -n
ntpq> peer
     distant           refid      st t when poll reach   delay   offset  jitter
==============================================================================
+192.168.33.248  192.168.33.252   4 u    - 1024  377    1,312  -1549,3 639,489
 192.168.33.249  192.168.33.252   4 u  626 1024  377  132,423   15,202  27,797
*192.168.33.252  192.168.33.51    3 u  802 1024  377    0,964  -27,486   2,993
Figure 9 – Utilisation de ntpq pour vérifier la synchronisation de l'heure

Enfin, ntpd fait office à la fois de client et de serveur ; ainsi, une fois qu'il est en cours d'exécution sur un module VOS, il peut servir de serveur de temps pour les autres modules ou pour tout autre élément de votre réseau.