ntpdate et ntpd ne parviennent pas à synchroniser l'horloge sous Linux


11

J'ai un problème étrange avec l'un de mes serveurs. ntpdet ntpdatene fonctionnent pas, mais le débogage ne montre aucune erreur. Au début, je pensais qu'un pare-feu local ou réseau bloquait le port UDP 123, mais ce n'est pas le cas - ce serveur peut communiquer le port UDP 123 (le protocole ntp) à Internet et obtenir des réponses.

Permettez-moi de démontrer le problème.

date -s "30 DEC 2012 02:30:00" - fonctionne, donc je peux régler l'horloge avec succès sans erreur.

ntpq -pn pool.ntp.org - fonctionne, j'obtiens des données horaires détaillées du serveur de temps et prouve que les paquets UDP fonctionnent.

ntpdate -d pool.ntp.org - le mode débogage fonctionne, affiche une tonne de données de débogage et affiche le décalage horaire actuel: 30 Dec 02:38:56 ntpdate[19267]: step time server 208.97.140.69 offset 228.234554 sec

Tout semble normal, jusqu'à ce que: ntpdate pool.ntp.org- après une pause de 4,7 secondes, il renvoie: 30 Dec 02:41:29 ntpdate[19274]: no server suitable for synchronization found

Problème similaire en cours d'exécution ntpd, il ne met pas à jour l'horloge.

Après le démarrage de ntpd, ntpq -pntous les refid sont bloqués pour toujours, .INIT.ce qui signifie qu'ils ne peuvent pas se synchroniser.

/ var / lib / ntp / drift est le paramètre driftfile dans ntp.conf, qui est chmod 644 et appartient à ntp: ntp, comme tous mes autres systèmes.

J'ai essayé une douzaine d'autres serveurs de temps ntp, désactivé le pare-feu iptables et confirmé que le centre de données ne filtre pas le trafic udp. Des idées ce qui empêche ntpd et ntpdate de synchroniser mon horloge?

Il s'agit de CentOS 6.3 x64 sur un serveur dédié avec processeur Intel.


2
Pouvez-vous clarifier ce que vous entendez par «serveur dédié» - est-ce du matériel physique ou une machine virtuelle?
Shane Madden

Serveur dédié = matériel physique. PAS une machine virtuelle.
Crash Override

Réponses:


13

ntpdate(et ntpd) refusera de régler (facilement) l'heure si le décalage est trop élevé. Les deux applications essaieront d' ajuster lentement votre temps, afin de ne pas confondre votre système ou les applications qui ne gèrent pas très bien les sauts de temps importants.

Essayez ntpdate -bplutôt. Il fixera l'heure, aussi déraisonnable que cela puisse paraître.

Vous devrez peut-être également ajouter l' -uindicateur, ce qui empêchera ntpdated'utiliser des ports privilégiés (<1024). Notez que cela -uest impliqué par -d! Et il semble que ça -dfonctionne bien.

Si l'ajout -ufait une différence entre le fonctionnement et le non-fonctionnement, alors vous avez un pare-feu sur le chemin qui cause ces problèmes.

Et malheureusement, il ne semble pas possible d' ntpdutiliser un port illimité .


Échoue toujours. ntpdate -b pool.ntp.orgrésultats: 30 Dec 03:00:10 ntpdate[1341]: no server suitable for synchronization foundl'indicateur de débogage ntpdate qui -daffichera les données de débogage mais pas réellement la synchronisation, et cela fonctionne: ntpdate -d pool.ntp.orgrésultats:30 Dec 03:00:55 ntpdate[1343]: step time server 128.10.254.6 offset 228.030338 sec
Crash Override

@CrashOverride, j'ai mis à jour ma réponse pour essayer d'expliquer pourquoi cela -dpeut fonctionner alors que ce n'est pas le cas.
chutz

1
ntpdate -b -utravaux!!! Impressionnant. Deux questions. Le démon ntpd échoue toujours, comment puis-je faire en sorte de ne pas utiliser les ports privilégiés? Deuxième question, POURQUOI cette machine échoue-t-elle avec ntp sur des ports privilégiés alors que tous mes autres serveurs ne le font pas?
Crash Override

Humm, il y a peut-être un pare-feu bloquant le port UDP source 123 de mon serveur. Je vérifie ça. Encore une fois, merci pour votre réponse.
Crash Override

J'ai mis à jour avec un lien pour expliquer qu'il n'est pas possible de changer le port source ntpd. Désolé, je n'ai pas cherché plus loin que de trouver ce lien.
chutz

2

Pouvez-vous fournir les sorties suivantes dans pastebin.

cat /etc/ntp.conf
cat /etc/sysconfig/ntpd
ntpq -pn
ntpdc -c sysstat
ntpdc -c kerninfo
ntpdc -c loopinfo
ntpdate -d <time-server-IP>
ntptrace

Synchronisez-vous depuis des serveurs de la couche 1 ou autre chose.

Aucun serveur adapté à la synchronisation ne signifie ce qu'il dit, à savoir que la communication entre le client et le serveur ne peut pas être établie.

Si nous ne pouvons pas trouver d'indices dans cet ensemble de données, tcpdump peut être nécessaire pour voir où le paquet est perdu.

tcpdump -s0 -i ethX -p udp -w /tmp/ntp.pcap

Arrêtez et démarrez le démon ntpd et attendez que la portée atteigne 377, puis arrêtez le tcpdump. Cela devrait donner d'autres indices.


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.