Synchronisation de l'horloge, hiérarchie stratum, authentification, timestamps de logs et pièges classiques CCIE/ENARSI.
| Mode | Commande | Rôle |
|---|---|---|
| Client | ntp server <ip> |
Se synchronise sur un serveur NTP. Pas de service aux autres. |
| Serveur | ntp master <stratum> |
Annonce sa propre horloge comme source. Sert les clients NTP. |
| Peer | ntp peer <ip> |
Synchronisation bidirectionnelle. Le meilleur des deux sert l'autre. |
| Broadcast client | ntp broadcast client |
Reçoit des broadcasts NTP sur l'interface (passif). |
| Broadcast server | ntp broadcast |
Envoie des broadcasts NTP sur l'interface (actif). |
Horloge logicielle maintenue par IOS. Consultée par show clock. Synchronisée par NTP. Perdue lors d'un reboot si pas de hardware clock.
show clock *15:42:00.506 CET Fri Jun 28 2019 ! * = non authoritative (pas sync NTP) ! Sans * = synchronisée
Horloge matérielle (RTC), persiste après reboot. Présente sur la plupart des plateformes. NTP ne la met pas à jour automatiquement — il faut le configurer explicitement.
show calendar ! Synchroniser le calendar sur la software clock ntp update-calendar ! ou manuellement : clock update-calendar
clock timezone.
UTC est l'étalon mondial. Il ne dépend d'aucun pays, ne change pas avec les saisons (pas d'heure d'été). Tous les autres fuseaux horaires sont exprimés par rapport à UTC.
Quand il est 12h00 UTC, il est simultanément :
| Timezone | Nom | Heure | Période |
|---|---|---|---|
| UTC+0 | UTC / GMT | 12:00 | toujours |
| UTC+1 | CET — Central European Time | 13:00 | hiver (oct → mars) |
| UTC+2 | CEST — Central European Summer Time | 14:00 | été (mars → oct) |
Central European Time
UTC +1 heure
Période : dernier dimanche d'octobre → dernier dimanche de mars
France, Belgique, Suisse, Espagne, Italie, Allemagne… en hiver.
! IOS : clock timezone CET 1 0 ! UTC 12:00 → show clock = 13:00 CET
Central European Summer Time
UTC +2 heures
Période : dernier dimanche de mars → dernier dimanche d'octobre
Même pays qu'en CET mais en été — le "changement d'heure".
! IOS — gestion automatique : clock summer-time CEST recurring ! UTC 12:00 → show clock = 14:00 CEST
! Ce qu'on voit dans la question : Log timestamp : 14:41:57 ← UTC (service timestamps log datetime sans localtime) show clock : 15:42:00 CET ← heure locale (clock timezone CET 1 configuré) ! Calcul : ! CET = UTC+1 → 14:41 UTC + 1h = 15:41 CET ✓ ! Décalage = exactement 1h = offset CET ! Ce n'est PAS un problème de sync NTP ! C'est juste que les logs sont en UTC et show clock en heure locale ! Solution : aligner les logs sur l'heure locale service timestamps log datetime localtime ! → logs afficheront maintenant 15:41:57 CET = même que show clock
| Situation | Offset UTC | Exemple UTC 12:00 | IOS |
|---|---|---|---|
| Hiver (nov–mars) | UTC+1 → CET | 13:00 CET | clock timezone CET 1 0 |
| Été (mars–oct) | UTC+2 → CEST | 14:00 CEST | clock summer-time CEST recurring |
| Logs IOS défaut | UTC+0 | 12:00 (sans label) | service timestamps log datetime |
| Logs en heure locale | +1 ou +2 selon saison | 13:00 CET ou 14:00 CEST | service timestamps log datetime localtime |
clock timezone CET 1
sans clock summer-time CEST recurring, en été le routeur affichera
13:00 CET au lieu de 14:00 CEST — décalage d'1h avec ta montre.
La commande clock summer-time CEST recurring gère le changement d'heure
automatiquement aux bonnes dates.
! Fuseau horaire France / Europe Centrale clock timezone CET 1 0 clock summer-time CEST recurring ! Résultat : ! En hiver : show clock → 13:00 CET (UTC+1) ! En été : show clock → 14:00 CEST (UTC+2) ! IOS gère le changement d'heure automatiquement ! Aligner les logs sur cette heure locale service timestamps log datetime msec localtime show-timezone ! → logs en hiver : Jun 28 13:00:00.123 CET ! → logs en été : Jun 28 14:00:00.123 CEST
! Définir le fuseau horaire (AVANT de configurer NTP) clock timezone CET 1 0 ! UTC+1, 0 minute offset clock summer-time CEST recurring ! heure d'été automatique ! Serveur NTP (plusieurs possibles, prefer = préféré) ntp server 192.168.1.1 ntp server 10.0.0.1 prefer ntp server pool.ntp.org ! serveur public ! Source des paquets NTP (recommandé = loopback) ntp source Loopback0
! Le routeur devient sa propre source NTP (stratum configurable) ! Utile quand pas d'accès internet mais besoin de sync interne ntp master 3 ! stratum 3 → les clients seront stratum 4 ! Défaut si omis : stratum 8 ! Combinaison typique : sync sur internet ET serveur interne de fallback ntp server 216.239.35.0 ! Google NTP ntp master 5 ! fallback si internet indisponible
! Sur R1 : ntp peer 192.168.1.2 ! Sur R2 : ntp peer 192.168.1.1 ! Le routeur avec la meilleure horloge (stratum le plus bas) ! synchronise l'autre automatiquement ! Utilisé pour la redondance entre deux routeurs de distribution
! Limiter qui peut interroger ce routeur en NTP access-list 10 permit 192.168.0.0 0.0.255.255 ntp access-group serve-only 10 ! Options : ! peer → autoriser sync bidirectionnelle ! serve → autoriser les requêtes NTP (client peut se sync sur nous) ! serve-only → idem serve, mais ce routeur ne se sync pas sur eux ! query-only → autoriser les requêtes d'état seulement
* Jun 28 14:41:57: %BGP-5-ADJCHANGE: neighbor 192.168.2.2 Down User reset * Jun 28 14:41:57: %BGP_SESSION-5-ADJCHANGE: neighbor 192.168.2.2 IPv4 Unicast topology base removed from session User reset * Jun 28 14:41:57: %BGP-5-ADJCHANGE: neighbor 192.168.2.2 Up R1#show clock *15:42:00.506 CET Fri Jun 28 2019
The clock on the device does not correspond to the timestamp of the log entries. Which action ensures consistency between the two times?
14:41:57 (UTC par défaut),
show clock affiche 15:42:00 CET (heure locale = UTC+1).
Décalage exact = 1 heure = offset CET. La commande
service timestamps log datetime localtime aligne les timestamps de logs
sur l'heure locale, correspondant à ce que show clock affiche.
D serait utile pour l'exactitude mais ne résout pas le décalage UTC/local.
! Format de base — heure depuis le dernier reboot service timestamps log uptime ! Exemple : *0d00h05m32s: %SYS-5-CONFIG_I: ... ! Format datetime — heure système (UTC par défaut) service timestamps log datetime ! Exemple : *Jun 28 14:41:57: %BGP-5-... ! ✅ Heure locale (même timezone que show clock) service timestamps log datetime localtime ! Exemple : *Jun 28 15:41:57 CET: %BGP-5-... ! Avec millisecondes service timestamps log datetime msec ! Exemple : *Jun 28 14:41:57.342: %BGP-5-... ! Avec millisecondes + heure locale + afficher timezone service timestamps log datetime msec localtime show-timezone ! Exemple : Jun 28 15:41:57.342 CET: %BGP-5-... ! (recommandé en production) ! Idem pour les debug service timestamps debug datetime msec localtime show-timezone
| Commande | Affichage | Quand utiliser |
|---|---|---|
| service timestamps log uptime | 0d05h12m33s | Diagnostic post-reboot, pas de corrélation avec horloge murale |
| service timestamps log datetime | Jun 28 14:41:57 (UTC) | Corrélation multi-devices si tous en UTC |
| service timestamps log datetime localtime | Jun 28 15:41:57 (local) | RECOMMANDÉ Cohérence avec show clock, heure locale |
| ... msec localtime show-timezone | Jun 28 15:41:57.342 CET | PRODUCTION Maximum de détail, timezone visible |
Cette commande (sous line vty/console) empêche les messages de log d'interrompre une ligne de commande en cours de saisie. Elle n'a aucun rapport avec la synchronisation NTP ou les timestamps.
! Sur la ligne console ou VTY line console 0 logging synchronous ! Effet : les logs s'affichent après la fin de la commande tapée ! Pas d'impact sur les timestamps
! 1. Fuseau horaire clock timezone CET 1 0 clock summer-time CEST recurring ! 2. Serveurs NTP ntp server 10.0.0.1 prefer ntp server 10.0.0.2 ntp source Loopback0 ntp update-calendar ! sync hardware clock ! 3. Timestamps détaillés service timestamps log datetime msec localtime show-timezone service timestamps debug datetime msec localtime show-timezone ! 4. Logging sur serveur syslog logging host 10.0.0.10 logging trap informational ! niveau 6
! 1. Activer l'authentification NTP ntp authenticate ! 2. Définir la clé (id clé + algo + valeur) ntp authentication-key 1 md5 MonSecret2024 ! 3. Déclarer cette clé comme "de confiance" ntp trusted-key 1 ! 4. Se déclarer maître (si ce routeur est la source) ntp master 3
! Mêmes étapes 1-3, puis associer la clé au serveur ntp authenticate ntp authentication-key 1 md5 MonSecret2024 ntp trusted-key 1 ! Associer la clé à ce serveur spécifique ntp server 10.0.0.1 key 1 ! Vérification show ntp associations detail ! Chercher : authenticated ! Si absent : clé manquante ou mismatch
ntp trusted-key côté client.
Sans cette commande, même si la clé est définie, le client n'accepte pas les paquets
authentifiés. Les trois commandes sont obligatoires des deux côtés :
ntp authenticate + ntp authentication-key + ntp trusted-key.
! Plusieurs clés permettent une rotation sans interruption ntp authentication-key 1 md5 AncienneClé ntp authentication-key 2 md5 NouvelleClé ntp trusted-key 1 ntp trusted-key 2 ! Le serveur peut signer avec key 2, les clients acceptent ! key 1 ET key 2 pendant la transition
! Créer le VRF de management vrf definition MGMT address-family ipv4 exit-address-family ! Associer l'interface de management au VRF interface GigabitEthernet0 vrf forwarding MGMT ip address 192.168.100.1 255.255.255.0 ! NTP server dans le VRF MGMT ntp server vrf MGMT 192.168.100.254 ! Source NTP dans le VRF ntp source GigabitEthernet0 ! Avec authentification dans un VRF ntp authenticate ntp authentication-key 1 md5 MonSecret ntp trusted-key 1 ntp server vrf MGMT 192.168.100.254 key 1
show ntp associations vrf MGMT show ntp status vrf MGMT ping vrf MGMT 192.168.100.254 ! Toujours pinger le serveur NTP avant de debugger
ntp server vrf MGMT
est supportée nativement. Sur certains IOS plus anciens, il faut utiliser
ip vrf forwarding sur l'interface source et ntp source <if>.
Vérifier la version IOS si la commande n'est pas reconnue.
show ntp status Clock is synchronized, stratum 4, reference is 10.0.0.1 nominal freq is 250.0000 Hz, actual freq is 249.9990 Hz, precision is 2**10 ntp uptime is 120000 (1/100 of seconds), resolution is 4004 reference time is E1234567.89ABCDEF (15:42:00.506 CET Fri Jun 28 2019) clock offset is 0.5442 msec, root delay is 1.27 msec root dispersion is 7813.50 msec, peer dispersion is 0.02 msec loopfilter state is 'CTRL' (Normal Controlled Loop), drift is 0.000004 s/s system poll interval is 64, last update was 42 sec ago. ! "synchronized" → horloge valide ✓ ! "unsynchronized" → stratum 16, problème de sync ! stratum = niveau dans la hiérarchie ! reference = IP du serveur utilisé ! clock offset = décalage en ms par rapport au serveur
show ntp associations address ref clock st when poll reach delay offset disp *~10.0.0.1 .GPS. 1 42 64 377 1.270 0.544 0.021 ~10.0.0.2 10.0.0.1 2 18 64 377 2.100 -0.120 0.018 ! Symboles devant l'adresse : ! * = serveur actuellement utilisé (synchronized) ! + = bon candidat (sélectionnable) ! - = éliminé par l'algorithme de sélection ! ~ = configuré comme serveur ! = = peer ! ! reach = 377 (octal) → 8 requêtes consécutives reçues (parfait) ! reach = 0 → aucune réponse reçue
show ntp associations detail 10.0.0.1 configured, authenticated, our_master, sane, valid, stratum 1 ref ID .GPS., time E1234567.89ABCDEF (15:41:50.535 CET Fri Jun 28 2019) our mode client, peer mode server, our poll intvl 64, peer poll intvl 64 root delay 0.00 msec, root disp 0.00, reach 377, sync dist 1.750 delay 1.27 msec, offset 0.5442 msec, dispersion 0.02 msec, jitter 0.01 msec precision 2**-19, version 4 assoc ID 1, assoc name 10.0.0.1 assoc in packets 42, assoc out packets 42, assoc error packets 0 org time 00000000.00000000 (00:00:00.000 UTC Thu Feb 7 2036) rec time E1234567.89ABCDEF (15:42:00.506 CET Fri Jun 28 2019) xmt time E1234568.90BCDEF0 (15:42:00.507 CET Fri Jun 28 2019) filtdelay = 1.27 1.28 1.26 1.30 filtoffset= 0.54 0.55 0.53 0.56 ! "authenticated" → auth NTP fonctionne ✓ ! "our_master" → on utilise ce peer comme référence
! 1. Horloge synchronisée ? show ntp status → "Clock is synchronized" ! 2. Quel serveur est utilisé ? show ntp associations → chercher le * devant l'IP ! 3. Auth fonctionne ? show ntp associations detail → "authenticated" ! 4. Heure affichée correcte ? show clock detail → timezone, sans * ! 5. Hardware clock à jour ? show calendar → doit correspondre à show clock ! 6. Timestamps des logs alignés ? show logging → comparer l'heure des messages
Par défaut, service timestamps log datetime utilise UTC. Si clock timezone est configuré, show clock affiche l'heure locale. Le décalage visible n'est pas un bug NTP — c'est une divergence UTC/localtime. Solution : service timestamps log datetime localtime.
Un routeur configuré avec ntp server mais dont le serveur est injoignable affiche stratum 16 dans show ntp status et le message Clock is unsynchronized. Le * devant show clock indique la même chose. Vérifier la connectivité UDP 123 vers le serveur.
Si ntp authenticate est activé mais ntp trusted-key est absent, le routeur rejette tous les paquets NTP non-authentifiés — y compris les serveurs publics. Soit désactiver l'auth, soit configurer les clés des deux côtés.
ntp master 3 seul fait du routeur une source NTP basée sur sa propre horloge locale (non synchronisée). Si cette horloge dérive, tous les clients dérivent aussi. Toujours combiner avec ntp server externe et mettre ntp master à un stratum plus élevé comme fallback.
NTP synchronise la software clock uniquement. Sans ntp update-calendar, le hardware clock dérive indépendamment. Après un reboot, la software clock repart du hardware clock — si celui-ci est faux, le routeur démarre avec une mauvaise heure jusqu'à la prochaine sync NTP.
Sans clock timezone, les logs et show clock affichent l'heure UTC sans mention du timezone. En corrélation multi-devices dans différents pays, c'est source de confusion. Toujours configurer clock timezone explicitement, même à UTC+0 (clock timezone UTC 0).
Si l'interface de management est dans un VRF, ntp server 192.168.1.1 (sans vrf MGMT) cherche la route dans le VRF global — introuvable. Le routeur reste à stratum 16. Solution : ntp server vrf MGMT 192.168.1.1.
logging synchronous (sur line vty/console) ne concerne que l'affichage des messages sur le terminal — il évite que les logs interrompent une frappe. Aucun impact sur les timestamps ou la synchronisation NTP. Question d'exam classique : cette commande ne résout PAS un décalage de timestamps.
service timestamps log datetime localtime — les logs utilisaient UTC, show clock affichait l'heure locale (CET = UTC+1). localtime aligne les timestamps des logs sur l'heure locale.ntp authenticate + ntp authentication-key <id> md5 <secret> + ntp trusted-key <id>. Oublier l'une des trois empêche la synchronisation authentifiée.ntp server : le routeur se synchronise sur un serveur externe (client). ntp master : le routeur devient lui-même source NTP basée sur sa propre horloge. Combinés : le routeur se sync sur internet ET sert de source interne si internet tombe.logging synchronous (ligne vty/console) empêche les messages de log d'interrompre une commande en cours de saisie. N'a aucun effet sur les timestamps ni sur la synchronisation NTP — piège d'exam classique.ntp server vrf MGMT <ip-serveur>. Sans le mot-clé vrf, IOS cherche la route dans le VRF global et ne trouve pas le serveur si l'interface est dans un VRF dédié.show clock : le * indique que l'horloge n'est PAS synchronisée (ou n'est pas authoritative). Sans * = synchronisée. Dans show ntp associations : le * devant une IP indique le serveur NTP actuellement utilisé.ntp update-calendar demande à IOS de mettre à jour aussi la hardware clock (RTC). Sans cette commande, après un reboot, le routeur repart avec l'heure du hardware clock qui peut avoir dérivé.service timestamps log datetime msec localtime show-timezone — exemple de sortie : Jun 28 15:41:57.342 CET: %BGP-5-ADJCHANGE. Recommandé en production pour la corrélation maximale.reach 0 = aucune réponse reçue.