У меня странная проблема с одним из моих серверов. ntpd
и ntpdate
не работают, но отладка вообще не показывает ошибок. Сначала я подумал, что, возможно, локальный или сетевой брандмауэр блокирует порт 123 UDP, но это не так - этот сервер может передавать порт 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 - это настройка файла дрейфа в ntp.conf, который является chmod 644 и принадлежит ntp: ntp, как и все другие мои системы.
Я попробовал дюжину других серверов времени ntp, отключил брандмауэр iptables и подтвердил, что центр обработки данных не фильтрует трафик udp. Есть идеи, что мешает ntpd и ntpdate синхронизировать мои часы?
Это CentOS 6.3 x64 на выделенном сервере с процессором Intel.
ntpdate
(и ntpd
) откажется (легко) установить время, если смещение слишком велико. Оба приложения попытаются медленно отрегулируйте время, чтобы не запутать вашу систему или любые приложения, которые могут не очень хорошо справляться с большими временными скачками.
Пытаться ntpdate -b
вместо. Он установит время, каким бы необоснованным оно ни казалось.
Вам также может потребоваться добавить -u
флаг, который предотвратит ntpdate
от использования привилегированных (<1024) портов. Обратите внимание, что -u
подразумевается -d
! И это звучит как -d
работает нормально.
Если добавить -u
имеет значение между рабочим и нерабочим, тогда у вас есть брандмауэр, который вызывает эти проблемы.
И к сожалению кажется невозможным сделать ntpd
использовать неограниченный порт.
Можете ли вы предоставить следующие результаты в 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. Это должно дать дополнительные подсказки.