Fin de la seconde intercalaire : ce qui change pour vos serveurs NTP d'ici mai 2027
La seconde intercalaire s'arrête. La dernière restera celle du 31 décembre 2016 : le Bulletin C 72 de l'IERS (6 juillet 2026) annonce « NO leap second […] at the end of December 2026 », et rappelle qu'une seconde intercalaire ne s'introduit qu'« at the end of the months of December or June ». La date suivante, le 30 juin 2027, tombe après l'entrée en vigueur. TAI − UTC reste donc à 37 secondes.
Pour l'histoire du mécanisme, les pannes qu'il a causées et le détail du vote, voir notre page seconde intercalaire. Cet article répond à une autre question : qu'est-ce que l'administrateur d'un serveur NTP doit vérifier d'ici mai 2027 ? Ce que nous disons de chrony et de ntpd vient de leur documentation et de leur code source actuel. Aucun des deux projets n'a annoncé, au 16 octobre 2026, ce qu'il fera de son code de seconde intercalaire : nous ne le devinons pas.
1. Ce que dit la résolution, et ce qu'elle ne dit pas
La résolution 5, « sur les actions techniques requises pour assurer la continuité de l'UTC », tient en deux décisions : l'UTC continu au 20 mai 2027, et un écart |UT1-UTC| porté à 3 600 secondes, « ce qui assurera une continuité à long terme de l'UTC pendant plusieurs siècles ». Elle salue l'engagement de l'IERS « à prendre toutes les mesures nécessaires pour modifier au niveau opérationnel la façon dont sont annoncées et transmises les secondes intercalaires ».
Elle ne dit rien de NTP, ni du fichier leap-seconds.list, ni des logiciels. Parmi ses motifs,
un passage concerne directement les opérateurs de temps : « l'utilisation de différentes méthodes de
compensation par les fournisseurs de services mondiaux […] conduit à des incohérences dans la
synchronisation des différents systèmes ». C'est le smear, lissage pratiqué notamment par
Google et AWS, que la page seconde intercalaire décrit
en détail.
2. Ce qui reste : le Leap Indicator
Les deux bits du Leap Indicator restent dans chaque paquet NTP : la résolution ne touche pas le protocole, défini par le RFC 5905 (§7.3).
| Valeur | Signification | Après le 20 mai 2027 |
|---|---|---|
| 00 | Aucun avertissement | La valeur normale, en permanence |
| 01 | Dernière minute du mois à 61 secondes | À traiter comme une anomalie : plus aucune seconde ne peut être annoncée |
| 10 | Dernière minute du mois à 59 secondes | Jamais utilisée ; à traiter de même comme une anomalie |
| 11 | Horloge non synchronisée | Inchangé : l'alarme garde son usage |
« Du mois » suit la définition du champ (RFC 5905, §7.3) et le RFC 8633 (§3.7), selon lequel la seconde ne s'applique que le dernier jour du mois ; la figure 9 du RFC 5905 écrit, elle, « last minute of the day » (détail).
Ce point compte parce que la liste locale ne fait pas barrage seule. La
documentation de chrony le dit :
si une majorité de sources annonce une seconde intercalaire le dernier jour de juin ou de décembre,
« it will be accepted even if it is not included in the timezone ». Côté ntpd, le code
(ntp_proto.c et ntp_leapsec.c) accepte une annonce portée par plus de la moitié
de ses sources retenues, mais seulement si sa table locale a expiré.
Deux réflexes, donc : garder des sources qui suivent la liste de l'IERS, et surveiller l'état.
# chrony : l'état attendu est « Normal »
chronyc tracking | grep 'Leap status'
Leap status : Normal
# ntpd ou NTPsec : leap=00
ntpq -c 'rv 0 leap'
3. leap-seconds.list : l'échéance du 28 juin 2027
Le fichier leap-seconds.list,
tenu par l'IERS et redistribué par la base tz de l'IANA (paquet tzdata), porte une date
d'expiration sur sa ligne #@, en secondes depuis 1900. La version en cours expire le
28 juin 2027, soit cinq semaines après l'entrée en vigueur de l'UTC continu. Pour la lire
sur un serveur :
date -u -d @$(( $(awk '/^#@/{print $2}' /usr/share/zoneinfo/leap-seconds.list) - 2208988800 )) +%F
2027-06-28
Ce que font les logiciels d'une liste expirée, d'après leur code actuel :
- chrony (
leapdb.c) : une fois l'échéance passée, il journalise « Leap second list … needs update » et continue d'utiliser le contenu du fichier. La dernière entrée, TAI − UTC = 37 s au 1er janvier 2017, reste juste. - ntpd (
ntp_util.c) et NTPsec (ntp_util.c) : un avertissement par jour pendant les 28 jours qui précèdent l'échéance (« will expire in less than N days »), puis une erreur par jour après (« expired N days ago »). Table expirée, ntpd accepte de nouveau une annonce majoritaire de ses sources (section 2).
La suite dépend de l'IERS. Le 15 octobre 2026, le coordinateur de la base tz, Paul Eggert, a écrit au directeur du centre de l'IERS qui maintient le fichier ; il s'attend à ce que l'échéance soit retirée ou repoussée loin dans le futur. Au 16 octobre, aucune nouvelle version n'est publiée.
4. leapsectz de chrony : vérifier qu'il lit quelque chose
chrony connaît deux sources locales. leapsectz right/UTC interroge un fuseau horaire de la
base tz qui contient les secondes intercalaires ; leapseclist, ajoutée dans chrony 4.6
(NEWS), lit directement
leap-seconds.list. Sous Debian 13, right/UTC est absent par défaut (constaté sur nos serveurs) : les fuseaux
right/ sont passés dans le paquet tzdata-legacy, non installé par défaut
(changelog de
tzdata, version 2023c-7), et le chrony.conf fourni par Debian utilise déjà
leapseclist sur leap-seconds.list
(changelog de
chrony, version 4.6~pre1-1). Une configuration plus ancienne ou gérée à part qui garde
leapsectz right/UTC ne lit alors plus rien, et chrony l'écarte au démarrage avec « Timezone
right/UTC failed leap second check, ignoring ».
La documentation donne le test, à lancer sur chaque serveur qui garde leapsectz :
TZ=right/UTC date -d 'Dec 31 2008 23:59:60'
Wed Dec 31 23:59:60 UTC 2008 # le fuseau contient les secondes intercalaires
# sinon, remplacer par (chrony 4.6 ou plus récent) :
leapseclist /usr/share/zoneinfo/leap-seconds.list
Une source locale garde son utilité après mai 2027. D'après la documentation, elle sert aussi quand
l'horloge système doit porter le bon écart TAI − UTC (le noyau ne le reçoit qu'avec
leapsecmode system), ce qui compte pour les applications qui lisent CLOCK_TAI.
Et c'est elle qui permet de reconnaître une annonce erronée (section 2).
Notre propre configuration est décrite dans la
politique de nos serveurs.
5. Le smear sert-il encore ?
Le lissage ne s'applique qu'autour d'une seconde intercalaire. Google le dit de son service : « Before and after this period, smeared clocks and time service agree with clocks » qui suivent UTC (Google Public NTP, Leap Smear). Sans seconde intercalaire après le 20 mai 2027, il n'y a plus de période de lissage.
- Sources qui lissent (
time.google.com, Amazon Time Sync) : le risque de les mêler à des sources conformes n'existait que pendant la fenêtre. Rien à retirer, la page seconde intercalaire détaille ce point. - chrony :
smoothtime … leaponlyne lisse que les secondes intercalaires, il n'aura plus rien à lisser. Sansleaponly, la directive garde un usage documenté distinct : adoucir pour les clients les grosses corrections d'horloge du serveur, par exemple après une longue coupure. - ntpd :
leapsmearintervalreste une option expérimentale, présente seulement si ntpd a été compilé avec--enable-leap-smear(documentation ntpd).
6. Ce que l'administrateur doit vérifier
- La source locale existe. La directive
leapseclist(chrony) ouleapfile(ntpd) pointe vers un fichier présent, et chrony écrit au démarrage « Using leap second list … » ; ntpd, « leapsecond file (…): loaded, expire=… ». - Pas de leapsectz orphelin. Le test
TZ=right/UTCde la section 4 répond 23:59:60, ou la directive est remplacée. - La mise à jour de tzdata est planifiée avant le 28 juin 2027, avec une alerte sur « needs update » (chrony) et sur « will expire in less than » (ntpd, NTPsec) dans les journaux.
- L'état leap est surveillé.
Leap status : Normalouleap=00; après le 20 mai 2027, toute autre valeur que 00 ou 11 devrait être traitée comme un incident de source, puisque plus aucune seconde intercalaire ne peut être annoncée. - Les applications n'ont rien à changer pour l'heure courante : le temps Unix n'a jamais compté les secondes intercalaires. Pour convertir des horodatages anciens, la table reste nécessaire ; le convertisseur de timestamp donne l'écart TAI − UTC en vigueur à une date donnée.
7. Le calendrier
| Date | Événement | Source |
|---|---|---|
| 31 décembre 2016 | 27e et dernière seconde intercalaire ; TAI − UTC = 37 s | IERS |
| 6 juillet 2026 | Bulletin C 72 : pas de seconde intercalaire fin décembre 2026 | IERS |
| 15 octobre 2026 | Résolution 5 adoptée par la 28e CGPM | BIPM |
| 20 mai 2027 | UTC continu en vigueur | BIPM |
| 28 juin 2027 | Expiration de la version actuelle de leap-seconds.list | IANA |
Sources
- BIPM, résolution 5 de la 28e CGPM (2026) — texte qui fait foi
- IERS, Bulletin C 72 (6 juillet 2026)
- leap-seconds.list (IANA) — échéance du 28 juin 2027
- Liste tz, 15 octobre 2026 — demande à l'IERS sur l'échéance du fichier
- Documentation de chrony.conf (4.8) et leapdb.c
- Documentation de ntpd (leapfile), ntp_util.c et NTPsec
- RFC 5905 — NTPv4, champ Leap Indicator (§7.3)
- Google Public NTP, Leap Smear
- Interne — La seconde intercalaire en NTP : historique, incidents, step vs smear, notre politique