ntpdate и ntpd не могут синхронизировать часы в Linux

11

У меня странная проблема с одним из моих серверов. ntpdи ntpdateне работает, но отладка не показывает ошибок вообще. Сначала я подумал, что, может быть, локальный или сетевой брандмауэр блокирует UDP-порт 123, но это не так - этот сервер может связывать UDP-порт 123 (протокол 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
Можете ли вы уточнить, что вы подразумеваете под «выделенным сервером» - это физическое оборудование или виртуальная машина?
Шейн Мэдден
Выделенный сервер = физическое оборудование. НЕ виртуальная машина.
Отключение при сбое

Ответы:

13

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

Попробуй ntpdate -bвместо этого. Это установит время независимо от того, насколько необоснованным это может показаться.

Вам также может понадобиться добавить -uфлаг, который будет препятствовать ntpdateиспользованию привилегированных (<1024) портов. Обратите внимание, что -uподразумевается под -d! И это звучит как -dработает нормально.

Если добавление -uделает разницу между рабочим и нерабочим, то у вас есть брандмауэр на пути, который вызывает эти проблемы.

И, к сожалению , кажется невозможным ntpdиспользовать неограниченный порт .

chutz
источник
Все еще не удается. 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
Переопределение
@CrashOverride, я обновил свой ответ, чтобы попытаться объяснить, почему -dможет работать, а в противном случае это не так.
болтовня
1
ntpdate -b -uработает!!! Потрясающие. Два вопроса. Демон ntpd все еще терпит неудачу, как мне заставить это не использовать привилегированные порты? Второй вопрос: ПОЧЕМУ эта машина не работает с ntp на привилегированных портах, когда все остальные мои серверы не работают?
Крушение Override
Хм, возможно, есть брандмауэр, блокирующий исходный порт UDP 123 от моего сервера. Проверяю это. Еще раз спасибо за ваш ответ.
Крушение Override
Я обновил ссылку, чтобы объяснить, что невозможно изменить исходный порт ntpd. Извините, я не смотрел дальше, чем найти эту ссылку.
chutz
2

Можете ли вы предоставить следующие выводы в 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

Вы синхронизируете с серверов уровня 1 или что-нибудь еще.

Отсутствие сервера, пригодного для синхронизации, означает, что он не может установить связь между клиентом и сервером.

Если мы не можем найти подсказки из этого набора данных, может потребоваться tcpdump, чтобы увидеть, где пакет теряется.

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

Остановитесь и запустите демон ntpd, подождите, пока охват достигнет 377, а затем остановите tcpdump. Это должно дать дальнейшие подсказки.

Сохам Чакраборти
источник
pastebin.com/Rw0nZTA8
переопределение сбоев