Назад | Перейти на главную страницу

Серверы 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

У меня есть несколько серверов в Hetzner, которые с конфигурацией ntpd по умолчанию из установочного образа будут использовать IPv6 для связи с серверами ntp, предоставленными Hetzner.

Учитывая, что вы видите повторяющиеся записи в выходных данных, я сильно подозреваю, что ваш ntpd преобразовал эти имена хостов в адреса IPv6, а не адреса IPv4. Вы можете проверить это, используя -n флаг для ntpq так что он будет отображать IP-адреса, а не имена хостов.

Нет ничего плохого в настройке ntpd таким образом, чтобы он использовал как некоторые адреса IPv4, так и некоторые адреса IPv6 в качестве источника времени. Я бы даже сказал, что это хорошая практика. Следовательно, я бы не сказал, что с вашей конфигурацией ntpd что-то не так.

Однако я подозреваю, что у вас есть неправильная конфигурация в вашей конфигурации IPv6, и это то, что вы должны исправить.