Ceci est une ancienne révision du document !
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:
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
$ sudo apt-get install ntp
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
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
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 le serveur écoute sur toutes les interfaces, vérifier la présence de la directive interface:
interface listen lan
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.
[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 ]
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
systemd intègre un client sntp, voir le wiki synchronisation du temps par systemd.
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