Il est essentiel de disposer de l'heure correcte sur votre module pour toutes sortes d'activités, notamment la synchronisation des journaux et la validation des certificats de sécurité. À partir de la version 15.1, VOS est livré avec un port du démon Network Time Protocol (ntpd) et il est fortement recommandé de l'exécuter.
En général, pour faire fonctionner ntpd, vous devez lui fournir une liste de serveurs de temps, d'hôtes sur le réseau qui font également fonctionner ntpd et qui fourniront l'heure à tout hôte qui le demande. Il existe un grand nombre de serveurs de temps disponibles sur l'internet que vous pouvez utiliser. Jetez un coup d'œil à http://www.pool.ntp.org/en/ qui organise les serveurs par région.
Je suggère de répertorier un ou trois (ou plus) serveurs, jamais deux. ntpd tente de déterminer quel est le meilleur serveur à utiliser en comparant les réponses des serveurs. Si seulement deux serveurs sont listés, il est possible que ntpd ne puisse pas faire de détermination et finisse par ne pas utiliser l'un ou l'autre.
Mais que devez-vous faire si les politiques de votre entreprise vous empêchent d'accéder aux serveurs de temps sur Internet et que vous ne disposez pas d'un serveur de temps désigné par votre entreprise ? Dans ce cas, vous pouvez peut-être utiliser un contrôleur de domaine (DC) ou un contrôleur de domaine de secours (BDC) de Microsoft Windows local. La plupart des DC et BDC fournissent des services de temps.
En tant qu'administrateur VOS, comment trouver le DC ou le BDC local ? Le plus simple est de demander, mais en supposant que ce n'est pas une option, vous pouvez lancer le moniteur de paquets et chercher par vous-même. Les stations de travail et 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 -longueur 1500 -filtre -port 138
|
Figure 1 - Commande packet_monitor |
affichera ces diffusions (veillez à remplacer INTERFACE par le nom de votre interface IP). Malheureusement, pour trouver les serveurs de temps, vous devez regarder les données hexadécimales dans le paquet et, comme il y aura probablement beaucoup de paquets à parcourir, vous devez vider les paquets dans un fichier. Mon pm.cm, commande macro (vous pouvez trouver la macro ici) créera automatiquement un fichier de sortie et lancera la trace comme un processus lancé. Le fichier de sortie portera le nom pm.(date).(heure).out. La commande sera
pm #INTERFACE -no_arp -no_icmp -port 138 |
Figure 2 - Macro-commande pm |
Quelle que soit la manière dont vous lancez la trace, laissez la fonctionner pendant 15 à 20 minutes et vous devriez obtenir une diffusion de chaque DC et BDC de votre réseau. Ensuite, recherchez les lignes contenant la chaîne "c0 3" et "c0 2", c'est-à-dire un C minuscule, un zéro, quatre espaces et un trois ou un deux. Le nombre correspond à l'octet supérieur de l'octet au décalage 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 ||--------- 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 serveur |
Comme vous pouvez le voir, la recherche des trois ou deux premiers ne permet pas d'obtenir tous les serveurs de temps, mais à moins que vous ne gériez un site exclusif de Novel ou d'Apple, il devrait 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 sauvegarde |
Il ne suffit pas de trouver les lignes "c0". Vous devez é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 peut correspondre 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 montrant les serveurs de temps découverts |
L'adresse des serveurs de temps apparaît sur les lignes situées immédiatement au-dessus de la ligne "c0". Dans la figure ci-dessus, nous avons identifié 192.168.33.249, 192.168.33.248, 192.168.33.253 et 192.168.33.252.
Maintenant que nous avons identifié les hôtes qui s'annoncent comme des serveurs de temps, comment pouvons-nous être sûrs qu'ils fonctionneront ? La commande ntpdate peut être utilisée pour interroger manuellement chaque serveur de temps. Utilisez l'argument "-q" pour n'interroger que le serveur de temps, à ce stade, nous ne voulons pas que ntpdate fixe é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, strate 4, décalage -0.117418, retard 0.04202
6 Feb 17:53:10 ntpdate [1427079382] : ajustement du serveur de temps 192.168.33.248 offset -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, strate 4, décalage -0.038709, retard 0.04355
6 Feb 17:53:25 ntpdate [1427079382] : ajustement du serveur de temps 192.168.33.249 offset -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, strate 3, décalage 0.015733, retard 0.04216
6 Feb 17:53:38 ntpdate [1427079382] : ajuster le serveur de temps 192.168.33.252 offset 0.
+015733 sec
prêt 17:53:38
|
Figure 6 - Utilisation de ntpdate pour tester les serveurs de temps découverts - serveurs en fonctionnement |
Disons que l'un des serveurs a une politique de pare-feu qui l'empêche de donner l'heure même s'il l'annonce, ntpdate affichera 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, strate 0, décalage 0,000000, retard 0,00000
6 Feb 17:54:00 ntpdate [1427079382] : pas de serveur adapté à la synchronisation foun
+d
prêt 17:54:00
|
Figure 7 - Utilisation de ntpdate pour tester les serveurs de temps découverts - serveur non fonctionnel |
Maintenant que vous savez quels serveurs de temps vous pouvez utiliser, vous pouvez écrire le fichier >system>ntp>ntp.conf comme suit Tout ce qui est en noir provient du fichier sample_ntp.conf.17.0, les nouveaux caractères sont dans vert. Notez le caractère de commentaire qui a été ajouté devant la ligne "server foo.bar.somewhere.com". Les déclarations de restriction améliorent la position de sécurité du système en empêchant d'autres hôtes d'effectuer des requêtes intempestives contre le démon ntp.
# les directives du serveur indiquent où obtenir du temps.
# Elles peuvent être des valeurs DNS ou IP, une par directive.
# serveur foo.bar.somewhere.com
serveur 192.168.33.248 burst iburst
serveur 192.168.33.249 burst iburst
serveur 192.168.33.252 burst iburst
# Home pour le logile. Choisissez un bon chemin relatif - VOS absolu
# les noms de patrons ne peuvent pas être analysés correctement.
logfile >system>ntp>ntp.logfile
# Home pour le fichier de dérive.
driftfile >system>ntp>ntp.drift
# Ces déclarations empêcheront les requêtes hors temps provenant de tout hôte autre que l'hôte local
limiter la noquerie par défaut
restreindre 127.0.0.1
|
Figure 8 - mise à jour du fichier >system>ntp>ntp.conf |
Lancez la commande ntpd (il y a un sample_start_ntpd.17.0 dans le répertoire >system>ntp) et après quelques minutes, vous devriez voir quelque chose comme ce qui suit. Le "*" devant 192.168.33.252 indique que c'est le serveur sur lequel ntpd a choisi de prendre son temps. Le "+" devant 192.168.33.248 indique un autre bon choix au cas où il n'y aurait pas de réponse 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 qu'il peut s'écouler un certain temps avant que les temps ne convergent lorsque la différence initiale entre le module et le serveur de temps est importante.
ntpq -n
ntpq> peer
refid st t à distance lorsque le sondage atteint un retard compensant la gigue
==============================================================================
+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 confirmer la synchronisation du temps |
Enfin, ntpd agit à la fois comme client et comme serveur, de sorte qu'une fois qu'il fonctionne 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.