Серверы 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, и это то, что вы должны исправить.

Другие вопросы по тегам