Серверы ntpd застряли в состоянии инициализации, когда определяется по имени хоста, но синхронизируются правильно, когда определяются по IP-адресу
У меня возникла проблема на нескольких наших серверах colo, которая вызывает немало царапин на голове.
Я предупрежден о перекосе часов на нескольких серверах, и когда я отправился исследовать, ntpq -=p показал следующее:
remote refid st t when poll reach delay offset jitter
==============================================================================
ntp1.hetzner.de .INIT. 16 u - 64 0 0.000 0.000 0.000
ntp2.hetzner.de .INIT. 16 u - 64 0 0.000 0.000 0.000
ntp3.hetzner.de .INIT. 16 u - 64 0 0.000 0.000 0.000
так ясно, что сервер не может связаться с его серверами ntp. Однако у его родственных серверов таких проблем нет, поэтому я предположил, что проблема связана с сервером. Вероятно, неправильная конфигурация в IPtables. Но нет, IPtables настроен правильно. Перезапустил ntpd, подождал несколько минут, но ntp-серверы все еще были в INIT. В качестве проверки я побежал
ntpdate ntp1.hetzner.de
и я получаю ответ от сервера времени! Озадаченный, я запустил tcpdump для трафика UDP 123 и перезапустил ntpd. Нет пакетов. Не один. Даже через час. И все же, если я остановлю ntp и запуском ntpdate, я увижу, что пакеты по сети передаются на серверы времени без проблем.
Итак, я попытался поместить IP-адреса серверов времени в ntp.conf и мгновенно синхронизируюсь
remote refid st t when poll reach delay offset jitter
==============================================================================
ntp1.hetzner.de .INIT. 16 u - 64 0 0.000 0.000 0.000
ntp2.hetzner.de .INIT. 16 u - 64 0 0.000 0.000 0.000
ntp3.hetzner.de .INIT. 16 u - 64 0 0.000 0.000 0.000
*ntp1.hetzner.de 192.53.103.103 2 u 23 64 1 2.856 -2.246 0.016
ntp2.hetzner.de 192.53.103.103 2 u 22 64 1 0.246 -2.174 0.019
ntp3.hetzner.de 192.53.103.108 2 u 21 64 1 0.262 -1.282 0.037
в этом выводе шесть серверов, так как я добавил IP-адреса сервера в ntp.conf
Так что я в тупике. Есть ли какая-то странная проблема DNS в ntpd, или я сделал что-то глупое в моей конфигурации? Это машина Debian 7.8, а версия ntpd - 4.2.6p5.
Моя конфигурация ntp теперь выглядит следующим образом:
driftfile /var/lib/ntp/ntp.drift
statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable
restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery
restrict 127.0.0.1
restrict ::1
server ntp1.hetzner.de iburst
server ntp2.hetzner.com iburst
server ntp3.hetzner.net iburst
server 213.239.239.164 iburst
server 213.239.239.165 iburst
server 213.239.239.166 iburst
1 ответ
У меня есть несколько серверов в Hetzner, которые с конфигурацией ntpd по умолчанию из установочного образа будут использовать IPv6 для связи с серверами ntp, предоставленными Hetzner.
Учитывая, что вы видите дублированные записи в выводе, я сильно подозреваю, что ваш ntpd разрешил эти имена хостов в адреса IPv6, а не адреса IPv4. Вы можете проверить это с помощью -n
флаг для ntpq
так что он будет отображать IP-адреса, а не имена хостов.
Нет ничего плохого в том, чтобы сконфигурировать ntpd так, чтобы он использовал в качестве источника времени как некоторые адреса IPv4, так и некоторые адреса IPv6. Я бы даже сказал, что это хорошая практика. Поэтому я бы не сказал, что с вашей конфигурацией ntpd что-то не так.
Однако я подозреваю, что у вас неверная конфигурация в конфигурации IPv6, и это то, что вы должны исправить.