ntpdate i ntpd nie synchronizują zegara w systemie Linux


11

Mam dziwny problem z jednym z moich serwerów. ntpdi ntpdatenie działa, ale debugowanie nie pokazuje żadnych błędów. Na początku myślałem, że może lokalna lub sieciowa zapora blokuje port UDP 123, ale tak nie jest - ten serwer może komunikować port UDP 123 (protokół NTTP) z Internetem i uzyskiwać odpowiedzi.

Pokażę problem.

date -s "30 DEC 2012 02:30:00" - działa, więc mogę z powodzeniem ustawić zegar bez błędów.

ntpq -pn pool.ntp.org - działa, otrzymuję szczegółowe dane czasowe z serwera czasu i udowadnia, że ​​pakiety UDP działają.

ntpdate -d pool.ntp.org - tryb debugowania działa, pokazuje masę danych debugowania i pokazuje bieżące przesunięcie czasowe: 30 Dec 02:38:56 ntpdate[19267]: step time server 208.97.140.69 offset 228.234554 sec

Wszystko wygląda normalnie, dopóki: ntpdate pool.ntp.org- po 4,7 sekundy nie zwróci: 30 Dec 02:41:29 ntpdate[19274]: no server suitable for synchronization found

Podobny problem z działaniem ntpd, nie aktualizuje zegara.

Po uruchomieniu ntpd powoduje, ntpq -pnże wszystkie refid utkną na zawsze, .INIT.co oznacza, że ​​nie mogą się zsynchronizować.

/ var / lib / ntp / drift jest ustawieniem pliku drift w pliku ntp.conf, który jest chmod 644 i jest własnością ntp: ntp, tak samo jak wszystkie inne systemy.

Wypróbowałem kilkanaście innych serwerów czasu NTTP, wyłączyłem zaporę iptables i potwierdziłem, że centrum danych nie filtruje ruchu udp. Jakieś pomysły, co powstrzymuje ntpd i ntpdate od synchronizacji mojego zegara?

Jest to CentOS 6.3 x64 na dedykowanym serwerze z procesorem Intel.


2
Czy możesz wyjaśnić, co rozumiesz przez „serwer dedykowany” - czy jest to sprzęt fizyczny czy maszyna wirtualna?
— Shane Madden,

Serwer dedykowany = sprzęt fizyczny. NIE maszyna wirtualna.
— Crash Override

Odpowiedzi:


13

ntpdate(i ntpd) odmówi (łatwego) ustawienia czasu, jeśli przesunięcie jest zbyt wysokie. Obie aplikacje będą starały się powoli dostosowywać czas, aby nie mylić systemu lub aplikacji, które mogą nie radzić sobie z dużymi skokami czasu.

Spróbuj ntpdate -bzamiast tego. Ustali czas, bez względu na to, jak nieuzasadniony może się wydawać.

Konieczne może być również dodanie -uflagi, co uniemożliwi ntpdatekorzystanie z uprzywilejowanych portów (<1024). Zauważ, że -usugeruje to -d! I wygląda na -dto, że działa dobrze.

Jeśli dodanie -upowoduje różnicę między działaniem a niedziałaniem, oznacza to, że masz zaporę ogniową, która powoduje te problemy.

I niestety korzystanie z nieograniczonego portu nie wydaje się możliwentpd .


Nadal zawodzi. ntpdate -b pool.ntp.orgwyniki: 30 Dec 03:00:10 ntpdate[1341]: no server suitable for synchronization foundFlaga debugowania ntpdate, która -dwyświetla dane debugowania, ale nie synchronizuje, i działa: ntpdate -d pool.ntp.orgwyniki:30 Dec 03:00:55 ntpdate[1343]: step time server 128.10.254.6 offset 228.030338 sec
— Crash Override

@CrashOverride, zaktualizowałem swoją odpowiedź, aby spróbować wyjaśnić, dlaczego -dmoże działać, podczas gdy inaczej nie.
— chutz

1
ntpdate -b -uPracuje!!! Niesamowite. Dwa pytania. Demon ntpd nadal nie działa, jak mogę to zrobić, aby nie używać uprzywilejowanych portów? Drugie pytanie: DLACZEGO ten komputer nie działa z NTTP na uprzywilejowanych portach, podczas gdy wszystkie inne serwery nie działają?
— Crash Override

Humm, może zapora blokuje źródłowy port UDP 123 z mojego serwera. Sprawdzam to. Jeszcze raz dziękuję za odpowiedź.
— Crash Override

Zaktualizowałem link, aby wyjaśnić, że nie można zmienić portu źródłowego NTTP. Przepraszam, nie szukałem dalej niż znalezienie tego linku.
— chutz

2

Czy możesz podać następujące dane wyjściowe w pliku 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

Synchronizujesz z serwerów warstwy 1 lub czegokolwiek innego.

Brak serwera odpowiedniego do synchronizacji oznacza to, co mówi, że nie można nawiązać komunikacji między klientem a serwerem.

Jeśli nie możemy znaleźć wskazówek z tego zestawu danych, może być konieczne tcpdump, aby zobaczyć, gdzie pakiet jest tracony.

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

Zatrzymaj i uruchom demona ntpd i poczekaj, aż zasięg osiągnie 377, a następnie zatrzymaj tcpdump. To powinno dać dalsze wskazówki.


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.