web-dev-qa-db-fra.com

Comment configurer un serveur NTP local?

J'ai installé le serveur NTP sur Ubuntu Server 10.04 en utilisant:

Sudo apt-get install ntp

Le démon NTP semble fonctionner et écouter sur le port 123.

Cependant, je n'ai pas pu obtenir l'heure d'une autre machine:

Sudo ntpdate -u my_ntp_server
23 Nov 18:48:41 ntpdate[2990]: no server suitable for synchronization found

Y a-t-il des configurations nécessaires à faire?

15
Khaled

Voici un bon tutoriel sur les forums Ubuntu: http://ubuntuforums.org/showthread.php?t=86262

Copie-pâtes flagrante:

HOWTO: Configurer un serveur NTP

Ce didacticiel explique comment configurer votre ordinateur en tant que serveur NTP (Network Time Protocol) local et/ou comment utiliser le démon NTP pour maintenir régulièrement une heure système précise.

Qu'est-ce que NTP?

Le protocole NTP (Network Time Protocol) est un protocole conçu pour synchroniser avec précision les horloges locales avec les serveurs de temps en réseau. Le réseau de serveurs de temps NTP est configuré de manière hiérarchique, de sorte que tout utilisateur peut entrer dans le système en tant que serveur à un certain niveau (voir la page Wikipedia pour plus de détails).

La hiérarchie NTP est séparée en différents niveaux, appelés strates d'horloge. Le niveau le plus précis, Strate 0, est réservé aux horloges atomiques, etc. Le niveau suivant, Strate 1, est généralement utilisé par les machines en réseau connectées localement aux horloges de la strate 0. Les strates 2 à 15 sont NTP machines connectées, elles-mêmes, à des horloges de niveau inférieur.

Ce guide explique comment synchroniser avec précision avec les ordinateurs des strates 1 et 2 et conserver une horloge système aussi précise que possible tout au long de la journée. Des sections sont également incluses sur la manière de permettre à votre machine de fonctionner en tant que serveur Stratum 2/3 pour les autres machines de votre réseau local.

Dois-je créer un serveur NTP?

Non ... absolument pas! Si vous êtes satisfait du fait que les horloges de votre réseau ont une différence inconnue par rapport à l'heure standard (et les unes aux autres), vous n'avez pas besoin de configurer un serveur NTP. J'en ai installé un sur mon ordinateur portable afin de synchroniser plusieurs machines sur un réseau local en moins de 1 ms pour une expérience de bioingénierie. De plus, divers avantages sont décrits ci-dessous.

Motivation:

Régulièrement, les boîtes Ubuntu non modifiées utilisent ntpdate (/usr/sbin/ntpdate) pour synchroniser périodiquement l'horloge avec un serveur de temps externe. Cette approche synchronise l'horloge avec une résolution de parcours (généralement une fois par jour).

Les horloges informatiques sont imparfaites et dériveront du serveur de temps (correct) pendant la journée. En outre, les taux de dérive dans les horloges de différents ordinateurs diffèrent, de sorte qu’à la fin de la journée, des différences significatives peuvent exister entre différentes machines en réseau local, ce qui peut interférer avec certaines opérations différentes machines?).

Il est possible d'exécuter le démon NTP localement sur une machine de votre réseau. Cela présente de nombreux avantages: premièrement, le démon NTP "apprend" progressivement le taux de dérive de votre ordinateur local et peut le corriger tout au long de la journée. La synchronisation avec les serveurs de temps de plus haut niveau a lieu plusieurs fois par jour et de nombreux serveurs de temps différents peuvent être utilisés simultanément pour rendre la synchronisation plus précise. De cette manière, le démon NTP agit comme un client de l'heure précise, en maintenant votre horloge système aussi proche que possible de l'heure standard.

En plus de maintenir une horloge système précise, le démon NTP permet à une machine de votre réseau (si vous le souhaitez) de fonctionner en tant que serveur de temps NTP. Cela permettra aux autres machines de votre réseau local de se synchroniser avec votre serveur de temps LAN de manière très rapide et précise, car la latence du réseau est réduite au minimum. De cette manière, les différences d'horloge entre les machines de votre réseau sont réduites au minimum. Si vous en configurez un, les ordinateurs Mac et même Windows sont également capables de se synchroniser avec un serveur NTP.

Il existe d'autres motivations, moins personnelles, pour configurer une machine en tant que serveur NTP. Premièrement, cela peut réduire la charge sur les serveurs de niveau NTP de niveau supérieur, car d'autres machines de votre réseau local peuvent se synchroniser avec un serveur de temps établi localement. De plus, ntpdate est déconseillé au lieu d'utiliser l'indicateur -q pour ntpd (qui imite ses fonctionnalités). Ainsi, même si vous ne souhaitez pas exécuter ntpd de manière constante en arrière-plan, ntpdate sera éventuellement remplacé par ntpd. Vous voudrez peut-être vous y familiariser maintenant.

Comment gérer une horloge système précise avec ntpd

  1. Installez le démon NTP

Commencez par installer le démon NTP (ntpd):

Sudo aptitude install ntpd

Comme cela a été mentionné précédemment, ntpd peut agir à la fois en tant que client (synchronisant l'heure de votre système) et en tant que serveur (fournissant une heure précise aux autres ordinateurs).

Vous pouvez également éventuellement supprimer le programme de synchronisation de temps précédent (obsolète), ntpdate. Peut-être serait-il plus sage de le faire après avoir utilisé ntpd

Sudo aptitude remove ntpdate
  1. Configurez le démon correctement

Le fichier de configuration pour ntpd se trouve à /etc/ntp.conf. Le fichier Ubuntu par défaut nécessite probablement quelques modifications pour des performances optimales.

La première section que vous voudrez peut-être modifier est la liste des serveurs avec lesquels vous synchroniser. La section par défaut ressemble probablement à ceci:

# You do need to talk to an NTP server or two (or three).
server ntp.ubuntu.com

Pour obtenir l'heure la plus précise possible, il est préférable de communiquer avec plusieurs serveurs NTP différents et de les conserver aussi près que possible de votre emplacement physique. Il existe différentes listes de serveurs en ligne, le meilleur est probablement situé ici. Il existe un débat sur le nombre de serveurs à utiliser. Un vaut mieux que deux, et trois ou plus est probablement une bonne idée, tant que vous n'allez pas trop loin. Voici un exemple de quelques serveurs de temps que j'ai utilisés:

server nist1-dc.WiTime.net iburst
server ntp0.mcs.anl.gov
server 0.us.pool.ntp.org
server 1.us.pool.ntp.org
server 2.us.pool.ntp.org
server 3.us.pool.ntp.org

Une fois que quelques bons serveurs ont été trouvés, ajoutez-les à la liste, en mettant 'iburst' après le plus prometteur. Par exemple:

server nist1-dc.WiTime.net iburst

Cela provoquera une synchronisation très rapide de ntpd avec ce serveur après le démarrage. Dans le cas contraire, ntpd aura lentement tendance à s'accorder avec la liste de serveurs (comme c'est le cas par exemple) et la synchronisation peut prendre 15 à 20 minutes pour être suffisamment synchronisée pour servir de serveur de temps pour le reste de votre réseau.

Ajoutez également quelques lignes supplémentaires au bas de la liste de vos serveurs pour indiquer votre heure locale actuelle par défaut en cas de perte temporaire de la connectivité Internet:

server 127.127.1.0
fudge 127.127.1.0 stratum 10

Cela vous évitera des problèmes si vous exécutez ntpd sur un ordinateur portable ou un autre ordinateur avec des périodes de déconnexion intermittentes d'Internet.

Dans l’ensemble, la liste des serveurs devrait ressembler à la suivante (ceci est le mien, vos serveurs seront probablement différents):

# You do need to talk to an NTP server or two (or three).
server nist1-dc.WiTime.net iburst
server ntp0.mcs.anl.gov
server 0.us.pool.ntp.org
server 1.us.pool.ntp.org
server 2.us.pool.ntp.org
server 3.us.pool.ntp.org
server 127.127.1.0
fudge 127.127.1.0 stratum 10
  1. Assurez-vous que la configuration fonctionne

Maintenant que vous avez une liste de serveurs appropriée dans votre fichier /etc/ntp.conf, il est temps d'exécuter le démon et de voir si vous synchronisez correctement! Assurez-vous que vous avez une connexion Internet active, puis exécutez:

Sudo /etc/init.d/ntp restart

Ensuite, surveillez votre journal système pour voir si vous synchronisez avec un serveur de temps:

tail -f /var/log/syslog

Dans environ 10 à 15 secondes (ou jusqu'à 15 à 20 minutes si vous avez oublié de mettre "iburst" après votre serveur favori), le journal suivant devrait s'afficher comme suit:

Jul 17 16:50:22 hostname ntpd[22402]: synchronized to 140.221.9.20, stratum 2

Si ce message n'arrive jamais, vous n'êtes pas encore correctement synchronisé avec le réseau du serveur NTP. Vérifiez la liste des NTP pairs avec lesquels vous communiquez en utilisant les éléments suivants:

ntpq -c lpeer

Si les champs 'delay', 'offset' et 'jitter' sont non nuls et que vous n'êtes pas synchronisés, cela signifie probablement que vous devez simplement attendre un moment. Vérifiez à nouveau que vous avez inséré l'argument 'iburst' dans votre liste de serveurs! Mes pairs, pour référence, ressemblent à ceci:

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*milo.mcs.anl.go 192.5.41.40      2 u    4   64   77   46.213   67.753   2.207
-europium.canoni 193.79.237.14    2 u   63   64   37   97.375   71.020   1.875
-dtype.org       69.25.96.13      2 u    2   64   77   86.956   69.178   1.804
+smtp130.junkema 216.218.254.202  2 u    2   64   77   87.266   67.677   0.916
+kechara.flame.o 216.218.254.202  2 u    -   64   77   89.183   68.717   1.713
-Host2.kingrst.c 99.150.184.201   2 u    -   64   77   24.306   62.121   2.608
 LOCAL(0)        .LOCL.          10 l   59   64   37    0.000    0.000   0.002
  1. Partager! (optionnel)

Une fois que ntpd est en cours d’exécution et synchronisé avec les serveurs de temps que vous avez sélectionnés, vous pouvez le configurer afin d’agir en tant que serveur de temps pour d’autres machines. Pour ce faire, ajoutez une section comme celle-ci à /etc/ntp.conf:

# Allow LAN machines to synchronize with this ntp server
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
restrict 192.168.2.0 mask 255.255.255.0 nomodify notrap
You may add as many (or few) CIDR address blocks to allow to synchronize with your machine as you'd like. I included those commonly used with Linksys (192.168.1.*) and SMC (192.168.2.*) routers.
  1. Synchroniser! (optionnel)

Une fois que vous avez configuré un serveur NTP à l'aide des étapes 1 à 4, vous pouvez synchroniser les autres ordinateurs de votre réseau avec votre serveur de différentes manières. J'en décris quelques-uns ci-dessous:

ntpd:

Si ntpd est installé sur un autre ordinateur, vous pouvez utiliser votre premier serveur dans la liste des serveurs de votre fichier ntp.conf ou vous pouvez le synchroniser une fois avec l'option -q, comme suit:

ntpd -q [IP address of your server]

ntpdate:

Si ntpdate est toujours installé sur une autre machine, vous pouvez l’utiliser pour effectuer la synchronisation avec votre serveur de la manière suivante:

ntpdate [IP address of your server]

Remarque: si vous exécutez ntpd sur une machine et que, pour une raison quelconque, souhaitez toujours utiliser ntpdate pour définir l'heure, vous devez utiliser l'option -u.

Les fenêtres:

Les machines Windows utilisent une version simplifiée de NTP appelée SNTP (Simple Network Time Protocol) et peuvent se synchroniser avec les serveurs NTP. Pour vous synchroniser avec votre nouveau serveur, double-cliquez sur l'heure et allez dans l'onglet "Heure Internet". Mettez l'adresse IP de votre serveur dans le champ "Serveur". J'ai joint une capture d'écran de Windows XP en synchronisation avec un serveur de temps LAN, si cela vous intéresse.

C'est tout! L'ensemble du processus n'est pas compliqué, mais peut être déroutant pour quelqu'un qui n'a pas beaucoup traité avec le réseau NTP. J'espère que ça aide! Faites-moi savoir si vous rencontrez des problèmes pour configurer votre serveur.

Mike

Liens

J'ai trouvé les liens suivants utiles ... vous aussi!

https://help.ubuntu.com/7.10/server/C/NTP.htmlhttp://linuxwave.blogspot.com/2007/0...tp-server. htmlhttp://lists.ntp.isc.org/pipermail/q...er/011889.htmlhttp://www.linuxhomenetworking.com/w. ..Fntp.conf_Filehttp://www.ntp.org/ntpfaq/NTP-a-faq.htm

17
RobotHumans

Il existe de nombreux liens à ce sujet et il me semble qu’ils compliquent la procédure. Dans mon cas, j'ai une machine qui fait office de serveur proxy et de pare-feu, et toutes les autres machines se connectent à Internet par ce biais. Je ne voulais pas ouvrir les ports sur le pare-feu. Par conséquent, le serveur proxy doit être l'heure (ntp) serveur et les autres machines (clients) en obtiennent l'heure.

Vous devez installer ntp sur toutes les machines et vous devez également installer ntpq sur toutes les machines.

Tout d’abord, voyez si NTP fonctionne. Par défaut, ntpd (le démon ntp) sera exécuté dès son installation et les paramètres par défaut devraient fonctionner. Cependant, NTP ne fonctionne pas instantanément, alors attendez un peu. Ensuite, la commande:

ntpq -c lpeer

devrait vous donner une sortie qui ressemble à ceci:

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
+golem.canonical 193.79.237.14    2 u  170 1024  377  140.458   -0.655   3.234
*gatekeeper.tss. 204.123.2.72     2 u  608 1024  377   84.650    2.168   0.471

ou:

ntpq --numeric --peers

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
+91.189.89.199   193.79.237.14    2 u  652 1024  377  140.151   -0.242   2.821
*66.7.96.1       204.123.2.72     2 u   64 1024  377   85.074    2.409   0.963

Si c'est le cas, vous êtes connecté et votre serveur de temps reçoit l'heure. Si non, utilisez

ps -e | grep "ntp" 

pour être sûr que ntp en cours d'exécution, et essayez à nouveau. Essayez également de redémarrer NTP:

Sudo /etc/init.d/ntp restart

cela peut prendre du "temps" (désolé!) avant que la connexion soit établie. Le démon n'interroge pas les serveurs très souvent. La colonne "quand" dans la sortie ci-dessus indique le temps en secondes depuis l'interrogation du serveur.

Maintenant, vous devez faire en sorte que le serveur de temps envoie le temps à vos autres machines.

Editez le fichier /etc/ntp.conf sur le serveur. Vous devez ajouter une ligne pour votre réseau. Dans mon cas, j'ai un réseau 10.0.0.0. Dans le fichier ntp.conf, j'ai ajouté la ligne:

broadcast 10.255.255.255

Vous devez ajouter une ligne de diffusion pour chaque segment de votre réseau. Si votre réseau est simple comme le mien, une ligne comme celle ci-dessus est tout ce dont vous avez besoin. Maintenant, redémarrez ntp en utilisant la commande ci-dessus et vérifiez à nouveau en utilisant ntpq, et vous devriez voir:

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
+golem.canonical 193.79.237.14    2 u   70 1024  377  140.151   -0.242   2.821
*gatekeeper.tss. 204.123.2.72     2 u  506 1024  377   84.650    2.168   0.241
 10.255.255.255  .BCST.          16 u    -   64    0    0.000    0.000   0.002

Voilà, c'est la radiodiffusion.

Maintenant, vous devez faire en sorte que chaque ordinateur client obtienne l'heure de votre serveur de diffusion. Sur chacun, éditez le fichier:

/etc/ntp.conf

et vous verrez quelques lignes spécifiant des serveurs.

ajouter une ligne

server 10.10.10.1

ou quelle que soit l'adresse de votre serveur. Puis redémarrez ntp sur la machine cliente en utilisant la commande ci-dessus. Vous pouvez également obtenir l'ID du processus, le tuer et l'exécuter à nouveau. Peu importe.

Puis, après suffisamment de temps, vérifiez avec ntpq:

ntpq --numeric --peers
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*10.10.10.1      66.7.96.1        3 u  123 1024  377    0.430    1.022   1.831

et vous pouvez voir que le client utilise le serveur de temps.

Cela prend du temps.

5
Wastrel

La réponse acceptée (comme pour juillet 2018) n'a pas fonctionné pour moi. Cette autre méthode a bien fonctionné sur buntu 16.04 LTS en juillet 2018:

Installer NTP si non installé:

Sudo apt-get update
Sudo apt-get install ntp

Édition de la configuration fichier permettant au service NTP de recevoir des demandes:

Sudo nano /etc/ntp.conf --syntax=sh

Ne commentez pas cette ligne:

# If you want to provide time to your local subnet, change the next line.
# (Again, the address is an example only.)
# broadcast 192.168.111.255

à:

# If you want to provide time to your local subnet, change the next line.
# (Again, the address is an example only.)
broadcast 192.168.111.255

Redémarrer NTP service:

Sudo /etc/init.d/ntp restart

Maintenant, votre le serveur NTP doit fonctionner et autorisez un autre ordinateur à se synchroniser avec le vôtre. N'importe lequel des tests ci-dessus, comme le ntpdate -u YourComputer devrait fonctionner correctement.

1