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.

Crash Override
źródło
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 .

chutz
źródło
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.

Soham Chakraborty
źródło
pastebin.com/Rw0nZTA8
Crash Override