ntpdate і ntpd не вдалося синхронізувати годинник в Linux


11

У мене дивна проблема з одним із моїх серверів. ntpdі ntpdateне спрацьовує, але налагодження не виявляє жодних помилок. Спочатку я думав, що, можливо, локальний або мережевий брандмауер блокує UDP-порт 123, але це не так - цей сервер може поговорити з портом 123 UDP (протокол ntp) в Інтернет та отримати відповіді.

Дозвольте продемонструвати це питання.

date -s "30 DEC 2012 02:30:00" - працює, тому я можу успішно встановити годинник без помилок.

ntpq -pn pool.ntp.org - працює, я отримую детальні дані про час від серверу часу, і доводять, що пакети UDP функціонують.

ntpdate -d pool.ntp.org - працює режим налагодження, показує тонну даних налагодження та показує поточний зсув часу: 30 Dec 02:38:56 ntpdate[19267]: step time server 208.97.140.69 offset 228.234554 sec

Все виглядає нормально, поки: ntpdate pool.ntp.org- після 4,7 секундної паузи він повертається: 30 Dec 02:41:29 ntpdate[19274]: no server suitable for synchronization found

Подібна проблема працює ntpd, вона не оновлює годинник.

Після запуску ntpd ntpq -pnвсі повернення коштів назавжди застрягли, .INIT.а значить, вони не можуть синхронізуватися.

/ var / lib / ntp / drift - це налаштування driftfile у ntp.conf, яке є chmod 644 і належить ntp: ntp, як і всі інші мої системи.

Я спробував десяток інших серверів часу ntp, відключив брандмауер iptables і підтвердив, що центр обробки даних не фільтрує udp-трафік. Будь-які ідеї, що зупиняє ntpd і ntpdate від синхронізації мого годинника?

Це CentOS 6.3 x64 на спеціальному сервері з процесором Intel.


2
Чи можете ви уточнити, що ви маєте на увазі під «виділеним сервером» - це фізичне обладнання або віртуальна машина?
Шейн Мадден

Виділений сервер = фізичне обладнання. НЕ віртуальна машина.
Crash Override

Відповіді:


13

ntpdatentpd) відмовиться (легко) встановлювати час, якщо зміщення занадто велике. Обидва додатки намагатимуться повільно регулювати ваш час, щоб не заплутати вашу систему чи будь-які додатки, які можуть не дуже добре справлятися з великими стрибками часу.

Спробуйте ntpdate -bзамість цього. Це встановить час, яким би необґрунтованим він не здавався.

Вам також може знадобитися додати -uпрапор, який не дозволить ntpdateвикористовувати привілейовані (<1024) порти. Зауважте, що -uмається на увазі -d! І це здається, що -dце працює добре.

Якщо додавання -uробить різницю між робочою та непрацюючою, у вас є брандмауер на шляху, який викликає ці проблеми.

І, на жаль , не представляється можливим ntpdвикористовувати необмежений порт .


Ще не вдається. ntpdate -b pool.ntp.orgРезультати: 30 Dec 03:00:10 ntpdate[1341]: no server suitable for synchronization foundПрапор налагодження ntpdate, який є -d, відображатиме дані про налагодження, але насправді не синхронізується, і це працює: ntpdate -d pool.ntp.orgрезультати:30 Dec 03:00:55 ntpdate[1343]: step time server 128.10.254.6 offset 228.030338 sec
Crash Override

@CrashOverride, я оновив свою відповідь, щоб спробувати пояснити, чому -dможе працювати, а інакше - ні.
chutz

1
ntpdate -b -uпрацює !!! Дивовижно. Два питання. Демон ntpd все ще не працює, як мені це зробити, щоб не використовувати привілейовані порти? Друге питання: Чому ця машина не працює з ntp на привілейованих портах, коли всі інші мої сервери цього не роблять?
Crash Override

Гумм, можливо, з мого сервера є брандмауер, що блокує джерело UDP-порту 123. Перевіряючи це. Ще раз дякую за вашу відповідь.
Crash Override

Я оновив посилання, щоб пояснити, що змінити порт джерела ntpd неможливо. Вибачте, я не заглянув далі, ніж знайшов це посилання.
chutz

2

Чи можете ви надати наступні виходи у пастбіні.

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

Ви синхронізуєте із серверів stratum 1 чи ще чогось іншого.

Жоден сервер, придатний для синхронізації, означає, що він говорить про те, що зв’язок між клієнтом і сервером не може бути встановлений.

Якщо ми не зможемо знайти підказки з цього набору даних, може знадобитися tcpdump, щоб побачити, де втрачається пакет.

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

Зупиніться і запустіть демон ntpd і зачекайте, поки охорона перейде до 377, а потім зупиніть tcpdump. Це повинно дати подальші підказки.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.