Outils pour utilisateurs

Outils du site


sysadmin:linux:serveur-ntp

Ceci est une ancienne révision du document !


Installer serveur ntp

NTP1) permet de distribuer l'heure sur le réseau. L'heure du système impacte le fonctionnement de nombreux services. Une heure locale fortement décalée peut perturber/interrompre le fonctionnement normal de certains services notamment:

  • https
  • cache DNS

Le système est pyramidal pour éviter la surcharge des serveurs. Les sources sont de niveau 0 (strate), Chaque serveur est configuré sur un serveur parent

Installation

$ sudo apt-get install ntp

Configuration

Le protocole NTP communique en UDP sur le port 123 pour se synchroniser avec les serveurs distants.

La configuration du serveur se fait via /etc/ntp.conf. Ici on définit les serveurs de référence:

server 0.fr.pool.ntp.org
server 1.fr.pool.ntp.org
server 2.fr.pool.ntp.org
server 3.fr.pool.ntp.org
#server 4.ntp.exemple iburst
Chaque entrée server ou pool peut avoir une option iburst qui autorise le service à rattraper rapidement le temps de référence.

Une machine peut être à la fois serveur de temps et cliente de son propre service, dans ce cas ntpd assure le service et ntpdate le rôle de client.

La configuration du client ntp se fait via /etc/ntpdate.conf

Gestion du service

Après modification du fichier de configuration, redémarrer le service ntp à l'aide de la commande service:

$ sudo service ntp restart

Pour vérifier l'état du serveur NTP:

ss -nlpu

La commande ntpq (NTPQuery) permet d'afficher la liste des serveurs distants

$ ntpq -p

L'option -p permet de lister les serveurs pairs.

Si les valeurs des colonnes reach, delay offset, jitter sont à 0, la communication avec les serveurs n'est pas établie. Vérifier la configuration du serveur et du réseau.

Si le serveur écoute sur toutes les interfaces, vérifier la présence de la directive interface:

interface listen lan

Le client ntpdate

Le daemon ntpd resynchronise progressivement le temps du système local par rapport au temps de référence. Si un gros écart est constaté, on peut utiliser l'utilitaire ntpdate qui se chargera de resynchroniser directement le temps du système local.

ntpdate n'utilise pas le fichier de configuration /etc/ntp.conf, il faut donc préciser avec quel serveur on souhaite synchroniser le système. Sans cet argument on obtient une erreur.
ntpdate ne peut pas s'utiliser si le daemon ntpd s'exécute, on obtient alors le message suivant :
[root@www etc]# ntpdate 192.9.200.9
24 Apr 17:31:57 ntpdate[9183]: the NTP socket is in use, exiting

Pour resynchroniser directement le système, arrêter le daemon ntpd, faire la synchronisation en invoquant ntpdate et relancer le daemon :

[root@www etc]# /etc/init.d/ntpd stop
Arrêt de ntpd :                                            [  OK  ]
 
[root@www etc]# ntpdate ntp-server.domain
24 Apr 17:46:23 ntpdate[12874]: step time server ntp-server.domain offset 499.818895 sec
 
[root@www etc]# /etc/init.d/ntpd start
Démarrage de ntpd :                                        [  OK  ]

Le client sntp

Pour tester la communication avec le serveur depuis le bash, on peut installer le client sntp:

# installation du client
sudo apt-install sntp
 
# test de connexion au serveur
sntp server.fqdn

Toute requête vers le serveur retourne le message:

sntp 4.2.8p12@1.3728-o (1)
Can't open KOD db file /var/lib/sntp/kod for writing: Permission denied
sock_cb: 192.168.33.254 not in sync, skipping this server

Le client sntp de systemd

systemd intègre un client sntp, voir le wiki synchronisation du temps par systemd.

Paramétrage du pare-feu

Si l'on souhaite contrôler précisément le trafic NTP au tarvers un pare-feu restrictif, il est possible de créer des règles exploitant les ensembles (ipsets).

creation d'un ensemble ipset

# création de l'ensemble
ipset create set_ntp_servers hash:ip maxelem 64
 
# peuplement de l'ensemble avec les adresses des serveurs
dig +short 0.fr.pool.ntp.org | xargs --max-args=1 ipset add set_ntp_servers
dig +short 1.fr.pool.ntp.org | xargs --max-args=1 ipset add set_ntp_servers 
dig +short 2.fr.pool.ntp.org | xargs --max-args=1 ipset add set_ntp_servers 
dig +short 3.fr.pool.ntp.org | xargs --max-args=1 ipset add set_ntp_servers

Création/test des règles iptable

# Journalise le trafic NTP sortant
iptables -A ufw-after-output -o wan -m set --match-set set_ntp_servers dst -p udp --dport 123 -j ufw-logging-allow
 
# Autorise le trafic NTP sortant
iptables -A ufw-after-output -o wan -m set --match-set set_ntp_servers dst -p udp --dport 123 -j ACCEPT

Références

1)
Network Time Protocol
sysadmin/linux/serveur-ntp.1641423193.txt.gz · Dernière modification : 2022/01/05 22:53 de yoann