Comment configurer NTP pour une utilisation dans le projet de pool NTP sur Ubuntu 16.04

introduction

Un chronométrage précis est essentiel pour presque tous les services ou logiciels. Les e-mails, les enregistreurs, les systèmes et programmateurs d'événements, les mécanismes d'authentification des utilisateurs et les services exécutés sur des plates-formes distribuées ont tous besoin d'un horodatage précis pour enregistrer les événements dans un ordre chronologique. Ces services utilisent le protocole NTP (Network Time Protocol) pour synchroniser l'horloge système avec une source externe approuvée. Cette source peut être une horloge atomique, un récepteur GPS ou un autre serveur de temps utilisant déjà le protocole NTP.

C'est là que le projetNTP Pool Project entre en jeu. C’est un énorme cluster mondial de serveurs de temps qui offre un accès facile au «bon moment» connu à 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 grandes distributions Linux, ainsi que de nombreuses appliances et applications logicielles en réseau.

Dans ce guide, vous allez configurer NTP sur votre serveur et le configurer pour qu'il fasse partie du projet de pool NTP, de sorte qu'il fournisse une heure précise aux autres utilisateurs du projet de pool NTP. Fournir vos cycles d'UC de rechange et votre 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’envoie qu’un couple de paquets UDP toutes les 20 minutes. La plupart des serveurs ne reçoivent donc qu’une dizaine de paquets NTP par seconde, avec des pics deux à deux par jour pouvant aller jusqu’à cent paquets par seconde. Cela se traduit par une utilisation de la bande passante de 10-15Kb / s avec des pointes de 50-120Kb / s.

Avant de rejoindre le projet de pool NTP, vous devez remplir trois conditions de base:

  1. Votre serveur doit avoir une adresse IP statique.

  2. Votre serveur doit avoir une connexion Internet permanente et stable.

  3. Votre adresse IP ne change pas ou très peu (une fois par an ou moins).

Pour la plupart des serveurs en nuage, les deux premières exigences sont généralement satisfaites 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, vous pouvez retirer un serveur du pool, mais cela prendra beaucoup de temps (généralement des semaines, voire des mois, voire des années) pour que le trafic disparaisse complètement.

Conditions préalables

Pour compléter ce tutoriel, vous aurez besoin de:

[[step-1 -—- Installing-ntp]] == Étape 1 - Installation de NTP

Le paquet NTP n'étant pas installé par défaut, vous utiliserez le gestionnaire de paquets pour l'installer. Tout d'abord, mettez à jour vos paquets:

sudo apt-get update

Puis installez NTP:

sudo apt-get install ntp

Si vous avez configuré le pare-feu comme spécifié dans les conditions préalables, vous devez autoriser le trafic UDP sur le port123 afin de communiquer avec le pool NTP:

sudo ufw allow 123/udp

Pour plus d'informations sur UFW, reportez-vous àHow To Set Up a Firewall with UFW on Ubuntu.

NTP est maintenant installé, mais il est configuré pour utiliser les serveurs de temps du pool NTP par défaut. Permet de choisir des serveurs de temps spécifiques à la place.

[[step-2 -—- choix-d'un-serveur-en-amont-approprié]] == Étape 2 - Choix d'un serveur en amont approprié

Le projet de pool NTP demande aux opérateurs qui souhaitent rejoindre le pool de choisir de bons serveurs de temps réseau-local plutôt que d'utiliser les serveurs par défautpool.ntp.org. Cela garantit que le projet de pool NTP reste fiable, rapide et sain. Lorsque vous choisissez votre source de temps, vous souhaiterez une connexion réseau stable, sans perte de paquet et avec le moins de sauts possible entre les serveurs.

Le protocole NTP hiérarchisé et à plusieurs niveaux sépare les parties impliquées dans les serveurs principaux, les serveurs secondaires et les clients. Les serveurs primaires sont appelésStratum 1 et sont connectés directement à la source de temps, qui est appeléeStratum 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ésStratum 2,Stratum 3 et ainsi de suite.

Chaque serveur est aussi un client. Un client de la strate 2 reçoit l'heure d'un serveur de la strate 1 en amont et fournit l'heure aux serveurs de la strate 3 en aval ou à d'autres clients. Pour que les membres du projet de pool NTP fonctionnent correctement, le démon NTP nécessite la configuration d'au moins trois serveurs. Le projet recommande un minimum de quatre, et pas plus de sept sources.

Le projet de pool NTP fournit une liste des serveurs de temps publics Stratum 1 et Startum 2. Les listes désignent les serveurs de temps NTP disponibles pour un accès public dans les conditions définies. Vous trouverez trois types:

  • OpenAccess: ce serveur de temps est ouvert à tout client conforme au pool NTPusage recommendations.

  • RestrictedAccess: ce serveur de temps a des restrictions d'accès en plus des recommandations d'utilisation du pool NTP.

  • ClosedAccess: Ce serveur de temps est fermé ou nécessite un accord préalable.

[.warning] #Warning: n'utilisez pas de serveurs qui ne sont pas répertoriés commeOpenAccess sauf si vous avez reçu l'autorisation de le faire.
#

Visitez leStratum 1 Time Servers list. Vous verrez une liste comme celle-ci:

Stratum 1 servers

Triez la liste en fonction de la colonneISO code et recherchez un ou deux serveurs géographiquement proches du centre de données de votre serveur. Lorsque la colonneAccess Policy du serveur indiqueOpenAccess, vous pouvez l’utiliser sans problème. S'il indique «RestrictedAccess», cliquez pour ouvrir l'entrée et lisez les instructions notées dans le champAccessDetails. Souvent, vous constaterez queNotificationMessage est défini surYes, ce qui signifie que vous devez créer un e-mail informel dirigé vers l'adresse fournie dansServerContact, informant l'opérateur du serveur de votre désir de utilisez ce serveur de temps comme source de temps pour votre membre de 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 colonneISO 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 listeStratum 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.

[[step-3 -—- configuring-ntp-to-join-the-pool]] == É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 nano /etc/ntp.conf

Tout d'abord, assurez-vous qu'undriftfile est configuré. Un fichier de dérive stocke le décalage de fréquence entre l'horloge système fonctionnant à sa fréquence nominale et la fréquence nécessaire pour rester synchronisé avec l'heure correcte. Cela aide à obtenir un temps stable et précis. Vous devriez trouver ceci en haut de votre fichier de configuration sur une installation par défaut:

/etc/ntp.conf

# /etc/ntp.conf, configuration for ntpd; see ntp.conf(5) for help

driftfile /var/lib/ntp/ntp.drift
...

Ensuite, supprimez les entrées de source de temps par défaut de la configuration. Vous recherchez toutes les lignes qui sont du modèlepool [0-3].ubuntu.pool.ntp.org iburst oupool ntp.ubuntu.com. Si vous utilisez une configuration par défaut, supprimez les lignes en surbrillance:

/etc/ntp.conf

# Use servers from the NTP Pool Project. Approved by Ubuntu Technical Board
# on 2011-02-08 (LP: #104525). See http://www.pool.ntp.org/join.html for
# more information.
pool 0.ubuntu.pool.ntp.org iburst
pool 1.ubuntu.pool.ntp.org iburst
pool 2.ubuntu.pool.ntp.org iburst
pool 3.ubuntu.pool.ntp.org iburst

# Use Ubuntu's ntp server as a fallback.
pool ntp.ubuntu.com

Remplacez les lignes que vous avez supprimées par les serveurs triés sur le volet que vous avez sélectionnés à l'étape précédente, en utilisant le mot cléserver au lieu du mot clépool.

/etc/ntp.conf

...
server ntp_server_hostname_1 iburst
server ntp_server_hostname_2 iburst
server ntp_server_hostname_3 iburst
server ntp_server_hostname_4 iburst
server ntp_server_hostname_5 iburst
...

Nous utilisons l'optioniburst pour chaque serveur, conformément aux recommandations du pool NTP. Ainsi, si le serveur est inaccessible, il enverra une rafale de huit paquets au lieu du paquet habituel. L'utilisation de l'optionburst dans le projet de pool NTP est considérée comme un abus car elle enverra ces huit paquets à chaque intervalle d'interrogation, tandis queiburst n'enverra 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. Sinon, votre serveur pourrait être utilisé dans des attaques par réflexion NTP ou être vulnérable aux requêtesntpq etntpdc qui tentent de modifier l’état du serveur. Vérifiez que l'optionnoquery est ajoutée aux lignesrestrict par défaut:

/etc/ntp.conf

...
# By default, exchange time with everybody, but don't allow configuration.
restrict -4 default kod notrap nomodify nopeer noquery limited
restrict -6 default kod notrap nomodify nopeer noquery limited

# Local users may interrogate the ntp server more closely.
restrict 127.0.0.1
restrict ::1

Vous pouvez trouver plus d'informations sur les autres options dans lesofficial documentation.

Votre fichier de configuration du démon NTP devrait maintenant ressembler à ceci, bien que votre fichier puisse contenir des commentaires supplémentaires que vous pouvez ignorer en toute sécurité:

/etc/ntp.conf

driftfile /var/lib/ntp/ntp.drift

server ntp_server_hostname_1 iburst
server ntp_server_hostname_2 iburst
server ntp_server_hostname_3 iburst
server ntp_server_hostname_4 iburst
server ntp_server_hostname_5 iburst

# By default, exchange time with everybody, but don't allow configuration.
restrict -4 default kod notrap nomodify nopeer noquery limited
restrict -6 default kod notrap nomodify nopeer noquery limited

# Local users may interrogate the ntp server more closely.
restrict 127.0.0.1
restrict ::1

Enregistrez le fichier et quittez l'éditeur.

Maintenant, redémarrez le service NTP et laissez votre serveur de temps synchroniser son horloge sur les serveurs en amont.

sudo systemctl restart ntp.service

Après quelques minutes, vérifiez l'état de votre serveur de temps avec la commandentpq:

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 colonneremote vous indique le nom d'hôte des serveurs que le démon NTP utilise et la colonnerefid vous indique la source que les serveurs utilisent. Ainsi, pour les serveurs Stratum 1, le champrefid doit afficherGPS,PPS,ACTS ouPTB, et les serveurs Stratum 2 et supérieurs afficheront l'IP adresse du serveur en amont. La colonnest affiche la strate, etdelay,offset etjitter vous indiquent la qualité de la source de temps. Des valeurs basses sont meilleures pour ces trois champs.

Votre serveur de temps est maintenant capable de servir du temps au public. Vous pouvez le vérifier en appelantntpdate depuis un autre hôte:

ntpdate -q your_server_ip

Le résultat devrait ressembler à ceci et il vous dit qu'il 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[18427]: adjust time server your_server_ip offset 0.001172 sec

Vous êtes maintenant prêt à enregistrer votre serveur NTP auprès du projet de pool NTP afin que d'autres personnes puissent l'utiliser.

[[step-4 -—- add-the-server-to-the-ntp-pool]] == Étape 4 - Ajout du serveur au pool NTP

Pour ajouter votre serveur afin que d'autres puissent l'utiliser, visitezmanage.ntppool.org et créez un compte. Vous recevrez un e-mail deNTP 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:

Add a server

Saisissez l'adresse IP de votre serveur et cliquez surSubmit.

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 que vous attendez, utilisez la caseComment pour le leur faire savoir.

The verification screen

Si vous êtes satisfait, confirmez l'entrée en cliquant surYes, this is my server, add it!

Votre serveur fait maintenant partie du projet de pool NTP. Visitezhttp://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, en lien avec lesscore de votre système. Tant que votre serveur garde le bon temps et qu'il est accessible, le score augmente jusqu'à atteindre 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 ne parvenez pas à synchroniser votre serveur, vous avez peut-être un pare-feu de paquets en place, laissant tomber vos paquetsoutgoing sur le port123. Jetez un œil àHow To Set Up a Firewall with UFW on Ubuntu pour savoir comment vérifier l'état du pare-feu.

Si la station de surveillance du NTP Pool Project 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 votreincoming trafic sur le port123. 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 port123 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 vous-même ces problèmes, il est préférable de vous tourner vers la communauté et de demander de l’aide. LeNTP Pool Projects forum est un bon point de départ. Vous pouvez également joindre lesmailing list ousend an emaill à l'opérateur du projet de pool NTP. Assurez-vous simplement que vous pouvez afficher toutes les étapes que vous avez déjà essayées pour résoudre le problème avant de demander de l'aide.

Conclusion

Dans ce didacticiel, vous avez correctement configuré votre propre serveur de temps et en avez fait un membre du projet de pool NTP, qui passe le temps à la communauté. Rester en contact avec la communauté des chronométreurs. rejoindre lesNTP Pool Projects forum ou lesmailing list. Veillez à surveiller le score de votre serveur et à apporter les modifications nécessaires.

Related