Introduction
Un chronométrage précis est essentiel pour presque tous les services ou logiciels. Les e-mails, les enregistreurs, les systèmes d’événements et les planificateurs, les mécanismes d’authentification des utilisateurs et les services exécutés sur des plates-formes distribuées ont tous besoin d’horodatages précis pour enregistrer les événements dans l’ordre chronologique. Ces services utilisent le protocole de temps réseau, ou NTP, pour synchroniser l’horloge système avec une source externe de confiance. Cette source peut être une horloge atomique, un récepteur GPS ou un autre serveur de temps qui utilise déjà NTP.
C’est là que le projet de projet de pool NTP entre en jeu. C’est un énorme cluster mondial de serveurs de temps qui fournit un accès facile au « bon temps » connu pour des dizaines de millions de clients à travers le monde. C’est le serveur de temps par défaut pour Ubuntu et la plupart des autres distributions Linux majeures, ainsi que de nombreuses appliances et applications logicielles en réseau.
Dans ce guide, vous configurerez NTP sur votre serveur et le configurerez pour qu’il fasse partie du projet de pool NTP, afin qu’il fournisse une heure précise aux autres utilisateurs du projet de pool NTP. Fournir vos cycles de CPU de rechange et la bande passante inutilisée est un moyen idéal de redonner quelque chose à la communauté.
La bande passante requise est relativement faible et peut être ajustée en fonction de la quantité que vous pouvez fournir et de l’emplacement de votre serveur. Chaque client n’enverra que quelques paquets UDP toutes les 20 minutes, de sorte que la plupart des serveurs ne reçoivent qu’une douzaine de paquets NTP par seconde, avec des pics pouvant atteindre cent paquets par seconde deux fois par jour. Cela se traduit par une utilisation de la bande passante de 10 à 15 Ko/s avec des pointes de 50 à 120 Ko/s.
Il y a trois exigences de base que vous devez satisfaire avant de rejoindre le projet de pool NTP:
- Votre serveur doit avoir une adresse IP statique.
- Votre serveur doit disposer d’une connexion Internet permanente et stable.
- Votre adresse IP ne change généralement pas, ou ne change que rarement (une fois par an ou moins).
Pour la plupart des serveurs basés sur le cloud, les deux premières exigences sont généralement remplies automatiquement. La troisième exigence souligne que l’adhésion au projet de pool NTP constitue un engagement à long terme. Bien sûr, si votre situation change, il est bon de sortir un serveur du pool, mais il faudra beaucoup de temps (principalement des semaines, mais parfois des mois, voire des années) avant que le trafic ne disparaisse complètement.
Prérequis
Pour terminer ce tutoriel, vous aurez besoin de:
- Un serveur Centos 7 avec réseau IPv6 configuré. Si vous devez configurer la mise en réseau IPv6 sur une gouttelette existante, vous pouvez suivre ce tutoriel.
- Un utilisateur non root de sudo et un pare-feu, que vous pouvez configurer en suivant le tutoriel Configuration initiale du serveur avec CentOS 7 et la section « Configuration d’un Pare-feu de base » dans le tutoriel Étapes supplémentaires recommandées pour les nouveaux serveurs CentOS 7.
Étape 1 — Installation de NTP
Le package NTP n’est pas installé par défaut, vous utiliserez donc le gestionnaire de paquets pour l’installer. Tout d’abord, mettez à jour vos packages:
- sudo yum update
Puis installez NTP:
- sudo yum install ntp
Une fois l’installation terminée, démarrez le service et configurez-le pour qu’il démarre automatiquement à chaque démarrage du serveur:
- sudo systemctl start ntpd
- sudo systemctl enable ntpd
Si vous avez configuré le pare-feu comme spécifié dans les conditions préalables, vous devez autoriser le trafic UDP pour le service NTP afin de communiquer avec le pool NTP:
- sudo firewall-cmd --permanent --add-service=ntp
- sudo firewall-cmd --reload
Pour en savoir plus sur FirewallD, reportez-vous à la section Comment Configurer un Pare-feu à l’aide de FirewallD sur CentOS 7.
NTP est maintenant installé, mais il est configuré pour utiliser les serveurs de temps de pool NTP par défaut. Permet de choisir des serveurs de temps spécifiques à la place.
Étape 2 – Choix d’un serveur amont approprié
Le projet de pool NTP demande aux opérateurs qui souhaitent rejoindre le pool de choisir de bons serveurs de temps local réseau plutôt que d’utiliser les serveurs pool.ntp.org
par défaut. Cela garantit que le projet de pool NTP reste fiable, rapide et sain. Lorsque vous choisissez votre source de temps, vous aurez besoin d’une connexion réseau stable sans perte de paquets et aussi peu de sauts que possible entre les serveurs.
Le protocole NTP hiérarchique et à plusieurs niveaux sépare les parties impliquées en serveurs primaires, serveurs secondaires et clients. Les serveurs primaires sont appelés Strate 1 et sont connectés directement à la source de temps, appelée Strate 0. Cette source peut être une horloge atomique, un récepteur GPS ou un système de radionavigation. Les serveurs secondaires de la chaîne sont appelés Strate 2, Strate 3, etc.
Chaque serveur est également un client. Un client de Strate 2 reçoit du temps d’un serveur de Strate 1 en amont et fournit du temps aux serveurs de Strate 3 en aval ou à d’autres clients. Pour que les membres du projet de pool NTP fonctionnent correctement, le démon NTP a besoin d’au moins trois serveurs configurés. Le projet recommande un minimum de quatre et pas plus de sept sources.
Le projet de pool NTP fournit une liste de serveurs de temps publics Strate 1 et Startum 2. Les listes désignent les serveurs de temps NTP disponibles pour un accès public sous les restrictions indiquées. Vous en trouverez trois types:
- OpenAccess: Ce serveur de temps est ouvert à tout client conforme aux recommandations d’utilisation du pool NTP.
- Accès restreint: Ce serveur de temps a des restrictions d’accès en plus des recommandations d’utilisation du pool NTP.
- Accès fermé: Ce serveur de temps est fermé ou nécessite un arrangement préalable.
Avertissement : N’utilisez pas de serveurs qui ne sont pas répertoriés comme OpenAccess sauf si vous avez reçu l’autorisation de le faire.
Visitez la liste des serveurs temporels de la Strate 1. Vous verrez une liste comme celle-ci:
Triez la liste par colonne de code ISO et recherchez un ou deux serveurs géographiquement proches du centre de données de votre serveur. Lorsque la colonne de stratégie d’accès du serveur indique OpenAccess, vous pouvez l’utiliser sans problème. S’il est dit « Accès restreint », cliquez pour ouvrir l’entrée et lisez les instructions indiquées dans le champ AccessDetails. Souvent, vous constaterez que NotificationMessage est défini sur Oui, ce qui signifie que vous devez créer un e-mail informel dirigé vers l’adresse fournie dans ServerContact, informant l’opérateur du serveur de votre désir d’utiliser ce serveur de temps comme source de temps pour votre membre du projet de pool NTP.
Une fois que vous avez identifié les serveurs que vous souhaitez utiliser, cliquez sur le lien de chaque serveur dans la colonne ISO et copiez son nom d’hôte ou son adresse IP. Vous utiliserez ces adresses à l’étape 3.
Ensuite, sélectionnez trois ou quatre serveurs dans la liste Strate 2, en suivant le même processus.
Une fois que vous avez sélectionné vos serveurs de temps, il est temps de configurer votre client NTP pour les utiliser.
Étape 3 – Configuration de NTP pour rejoindre le pool
Pour utiliser votre serveur avec le pool NTP et configurer vos nouveaux serveurs de temps, vous devrez apporter quelques modifications à la configuration de votre démon NTP. Pour ce faire, éditez le fichier /etc/ntp.conf
:
- sudo vi /etc/ntp.conf
Tout d’abord, assurez-vous qu’un fichier dérivé est configuré. Un fichier dérivé stocke le décalage de fréquence entre l’horloge système fonctionnant à sa fréquence nominale et la fréquence requise pour rester en synchronisation avec l’heure correcte. Cela aide à obtenir un temps stable et précis. Vous devriez le trouver en haut de votre fichier de configuration sur une installation par défaut :
# For more information about this file, see the man pages# ntp.conf(5), ntp_acc(5), ntp_auth(5), ntp_clock(5), ntp_misc(5), ntp_mon(5).driftfile /var/lib/ntp/drift...
Ensuite, supprimez les entrées de source temporelle par défaut de la configuration. Vous recherchez toutes les lignes qui sont du motif server 0.centos.pool.ntp.org iburst
. Si vous utilisez une configuration par défaut, supprimez les lignes en surbrillance comme indiqué dans l’exemple suivant:
...# Use public servers from the pool.ntp.org project.# Please consider joining the pool (http://www.pool.ntp.org/join.html).server 0.centos.pool.ntp.org iburstserver 1.centos.pool.ntp.org iburstserver 2.centos.pool.ntp.org iburstserver 3.centos.pool.ntp.org iburst
Remplacez les lignes que vous avez supprimées par les serveurs sélectionnés à l’étape précédente.
...server ntp_server_hostname_1 iburstserver ntp_server_hostname_2 iburstserver ntp_server_hostname_3 iburstserver ntp_server_hostname_4 iburstserver ntp_server_hostname_5 iburst...
Nous utilisons l’option iburst
pour chaque serveur, selon les recommandations du pool NTP. De cette façon, si le serveur est inaccessible, cela enverra une salve de huit paquets au lieu du paquet habituel. L’utilisation de l’option burst
dans le projet de pool NTP est considérée comme un abus car elle enverra ces huit paquets à chaque intervalle d’interrogation, tandis que iburst
n’envoie les huit paquets que la première fois.
Ensuite, assurez-vous que la configuration par défaut n’autorise pas les requêtes de gestion. Si vous ne le faites pas, votre serveur pourrait être utilisé dans des attaques par réflexion NTP, ou pourrait être vulnérable aux requêtes ntpq
et ntpdc
qui tentent de modifier l’état du serveur. Vérifiez que l’option noquery
est ajoutée aux lignes restrict
par défaut. Assurez-vous également d’ajouter les options kod
et limited
car elles restreignent trop les demandes des clients et imposent une limitation de débit.
...# Permit time synchronization with our time source, but do not# permit the source to query or modify the service on this system.restrict default nomodify notrap nopeer noquery kod limited# Permit all access over the loopback interface. This could# be tightened as well, but to do so would effect some of# the administrative functions.restrict 127.0.0.1restrict ::1
Vous trouverez plus d’informations sur les autres options dans la documentation officielle.
Votre fichier de configuration de démon NTP devrait maintenant ressembler à ce qui suit, bien que votre fichier puisse contenir des commentaires supplémentaires, que vous pouvez ignorer en toute sécurité:
driftfile /var/lib/ntp/ntp.driftrestrict default nomodify notrap nopeer noquery kod limitedrestrict 127.0.0.1restrict ::1server ntp_server_hostname_1 iburstserver ntp_server_hostname_2 iburstserver ntp_server_hostname_3 iburstserver ntp_server_hostname_4 iburstserver ntp_server_hostname_5 iburst
Enregistrez le fichier et quittez l’éditeur.
Redémarrez maintenant le service NTP et laissez votre serveur de temps synchroniser son horloge avec les serveurs en amont.
- sudo systemctl restart ntpd
Après quelques minutes, vérifiez la santé de votre serveur de temps avec la commande ntpq
:
- ntpq -p
La sortie devrait ressembler à ceci:
Output remote refid st t when poll reach delay offset jitter============================================================================== mizbeaver.udel. .INIT. 16 u - 64 0 0.000 0.000 0.000 montpelier.ilan .GPS. 1 u 25 64 7 55.190 2.121 130.492+nist1-lnk.binar .ACTS. 1 u 28 64 7 52.728 23.860 3.247*ntp.okstate.edu .GPS. 1 u 31 64 7 19.708 -8.344 6.853+ntp.colby.edu .GPS. 1 u 34 64 7 51.518 -5.914 6.669
La colonne distante vous indique le nom d’hôte des serveurs utilisés par le démon NTP et la colonne refid vous indique la source utilisée par les serveurs. Ainsi, pour les serveurs de Strate 1, le champ refid doit afficher GPS, PPS, ACTS ou PTB, et les serveurs de Strate 2 et supérieurs afficheront l’adresse IP du serveur en amont. La colonne st montre la strate, et le retard, le décalage et la gigue vous renseignent sur la qualité de la source temporelle. Les valeurs inférieures sont meilleures pour ces trois champs.
Votre serveur de temps peut maintenant servir du temps au public. Vous pouvez le vérifier en appelant ntpdate
depuis un autre hôte:
- ntpdate -q your_server_ip
La sortie devrait ressembler à ceci et elle vous indique qu’elle a ajusté le serveur de temps et le décalage:
Outputserver your_server_ip, stratum 2, offset 0.001172, delay 0.16428 2 Mar 23:06:44 ntpdate: adjust time server your_server_ip offset 0.001172 sec
Vous êtes maintenant prêt à enregistrer votre serveur NTP avec le projet de pool NTP afin que d’autres puissent l’utiliser.
Étape 4 – Ajout du serveur au pool NTP
Pour ajouter votre serveur afin que d’autres puissent l’utiliser, visitez manage.ntppool.org et créez un compte. Vous recevrez un e-mail de NTP Pool [email protected] vous demandant de vérifier votre compte. Confirmez votre compte en suivant les instructions de l’e-mail, puis connectez-vous à manage.ntppool.org .
Une fois connecté, vous verrez l’interface simple pour ajouter des serveurs:
Entrez l’adresse IP de votre serveur et cliquez sur Soumettre.
L’écran suivant vous demande de vérifier qu’il a identifié la région de votre serveur. S’il affiche votre serveur dans une région différente de celle à laquelle vous vous attendez, utilisez la zone de commentaire pour le faire savoir.
Si vous êtes satisfait, confirmez l’entrée en cliquant sur Oui, c’est mon serveur, ajoutez-le!
Votre serveur fait maintenant partie du projet de pool NTP. Visitez http://www.pool.ntp.org/scores/your_server_ip
pour voir les informations que le système de surveillance du pool NTP a collectées sur votre serveur. Il vérifie votre serveur plusieurs fois par heure et affiche les données de décalage, ainsi que le score de votre système. Tant que votre serveur reste à l’heure et est joignable, le score augmentera jusqu’à ce qu’il atteigne 20 points. Seuls les serveurs avec un score supérieur à 10 sont utilisés dans le pool.
Dépannage des problèmes de connectivité
Si vous rencontrez des difficultés pour synchroniser votre serveur, il se peut qu’un pare-feu de paquets soit en place pour déposer vos paquets sortants sur le port 123
. Découvrez comment Configurer un pare-feu à l’aide de FirewallD sur CentOS 7 pour savoir comment vérifier l’état du pare-feu.
Si la station de surveillance du projet de pool NTP ne peut pas atteindre votre serveur NTP et que le score de votre serveur diminue, ou si vous ne pouvez pas utiliser votre serveur pour synchroniser une autre horloge, vous pouvez avoir un pare-feu de paquets en place laissant tomber votre trafic entrant sur le port 123
. Vérifiez l’état de votre pare-feu.
Si vous êtes certain que vous n’avez pas de pare-feu en place ou que vous avez ouvert le port 123
pour le trafic entrant et sortant, votre fournisseur de serveur ou un autre fournisseur de transit peut abandonner vos paquets en cours de route. Si vous n’avez pas les connaissances nécessaires pour résoudre ces problèmes par vous-même, il est préférable de vous tourner vers la communauté et de demander de l’aide. Le forum des projets de piscine NTP est un bon point de départ. Vous pouvez également rejoindre la liste de diffusion ou envoyer un courrier électronique à l’opérateur de projet de pool NTP. Assurez-vous simplement de pouvoir afficher toutes les étapes que vous avez déjà essayé de résoudre le problème avant de demander de l’aide.
Conclusion
Dans ce tutoriel, vous avez configuré avec succès votre propre serveur de temps et en avez fait un membre du projet de pool NTP, servant du temps à la communauté. Pour rester en contact avec la communauté du chronométrage. rejoignez le forum des projets de pool NTP ou la liste de diffusion. Assurez-vous de surveiller le score de votre serveur et d’effectuer les ajustements nécessaires.