Page MenuHomeDevCentral

Default NTP configuration leads to connection refused
Open, HighPublic

Description

Currently, FreeBSD servers are configured to query a ntp server daily,
through the periodic system.

This has been noticed when db-B-001 had an offset of 2 hours.

On db-B-001:

$ cd /etc/periodic/daily
$ ./480.status-ntpd

NTP status:
ntpq: read: Connection refused

Meanwhile, service ntpdate works correctly (but is disabled in favour of the periodic version).

Revisions and Commits

Event Timeline

dereckson triaged this task as High priority.Tue, Nov 25, 10:39
dereckson created this task.

ntpq log: https://termbin.com/1vu4

Apparently it only queries status, ntpdate service should be enabled too for actual time change.

ntpq log shows it only works to print statistics when ntpd is launched.

We so need to choose between two setup (but we must pick one) to get correct time on FreeBSD machines:

  • ntpdate -> the new standard recommendation for query only
  • ntpd -> if so, we keep the periodic to get peer status, useful only if we want to serve time to other machines
This comment was removed by ptdradmin.

Dans le cadre de mes activités du jour, j'ai travaillé avec mon maître de scène sur un problème de synchronisation horaire détecté sur le serveur db-B-001, qui présentait un décalage de deux heures.
Ce problème a été documenté dans le rapport d'incident suivant :
https://agora.nasqueron.org/Operations_grimoire/Incidents/2025-11-25-MariaDB
Nous avons analysé la configuration actuelle : la synchronisation NTP est gérée par les scripts périodiques situés dans :

$ cd /etc/periodic/daily
$ cd ./480.status-ntpd

Constats techniques
ntpq retournait « Connexion refusée ».
ntpdate fonctionne correctement, mais il est désactivé car remplacé par la vérification périodique.
ntpq n'imprime des statistiques que si ntpd est acti

Analyse réalisée
Le script périodique ne fait qu'afficher l'état, il ne corrige pas l'heure.
Pour garantir une synchronisation correcte, deux options sont possibles :

Activer ntpdate : recommandé pour les synchronisations ponctuelles.
Activer ntpd : nécessaire si le serveur doit aussi servir de source horaire à d'autres machines.

Résultat:
L'analyse a été réalisée avec succès.
La configuration actuelle et les options possibles ont été clairement identifiées afin de garantir une synchronisation fiable sur les machines FreeBSD.

Activer ntpd : nécessaire si le serveur doit aussi servir de source horaire à d'autres machines.

Let's go for that road, even if it's only for the local machine.

We tested ntpdate, it works well, but with servers uptime up to 900 days (it's too much, but it's what we currently have on some machines), date risks to drift after some time. We would need a crontab entry, or to run it through the periodic system. But in practice, users tend to use ntpd instead.

Plan is to ntpd_enable="YES" through rc system (in /etc/rc.conf.d/ntpd)

Action plan

Configure ntpd service to be started at boot time:

  • Create /etc/rc.conf.d/ntdp in roles/core/ntp/init.sls
  • Prepare roles/core/ntp/files/rc/ntpd.conf with the content ntdp_enable="YES"

We can use Knot as state of art implementation:

Deployed on all FreeBSD servers with salt -G 'os:FreeBSD' state.apply roles/core/ntp