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

Проблема с синхронизацией серверного времени с ntpd

Я пытаюсь синхронизировать одну машину с другой по ntp. оба работают под управлением Debian lenny, и я установил пакет ntp в оба. Я настроил сервер для синхронизации с внешней машиной, поставив

server IP.ADDRESS iburst

в файле /etc/ntp.conf.

Я настроил клиента на синхронизацию с подачей, поместив только сервер в /etc/ntp.conf клиента.

однако, похоже, они не синхронизируются. ntpq показывает, что состояние - INIT, которое, согласно документации, указывает, что «ассоциация еще не синхронизировалась в первый раз»

# ntpq -n
ntpq> pe
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 10.99.84.134    .INIT.          16 u  665 1024    0    0.000    0.000   0.000

ntpq -> как показывает 'отклонить' в строке условия:

# ntpq
ntpq> as

ind assID status  conf reach auth condition  last_event cnt
===========================================================
  1 40102  8000   yes   yes  none    reject

Есть идеи, как это решить? (Я бы предпочел не использовать ntpdate).

Сегодня многие дистрибутивы настраивают ntpd для ограничения доступа. Если restrict линии присутствуют в вашем сервере /etc/ntp.conf, только узлы / сети, соответствующие этим линиям, смогут подключаться к ntpd. Вероятно, вам нужно добавить дополнительные restrict строки для хостов или сетей, которые вы хотите разрешить для синхронизации с вашим сервером. Например, чтобы позволить упомянутому клиенту синхронизироваться, добавьте одну из следующих строк:

# allow just this host
restrict 10.99.84.134 nomodify notrap

# or allow the whole /24 segment
restrict 10.99.84.0 mask 255.255.255.0 nomodify notrap

После этого перезапустите ntpd, и ваши клиенты смогут синхронизироваться.

Проблема заключалась в том, что сам сервер не мог синхронизироваться с вышестоящим сервером. Решением было изменить конфигурацию сервера следующим образом:

повторно включил серверы пула Debian вместо моего единственного жестко запрограммированного сервера.

server 0.debian.pool.ntp.org iburst
server 1.debian.pool.ntp.org iburst
server 2.debian.pool.ntp.org iburst
server 3.debian.pool.ntp.org iburst

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

server 127.127.1.0
fudge 127.127.1.0 stratum 10

После того, как я внес эти изменения, серверу удалось синхронизироваться, а затем клиентам удалось синхронизироваться с сервером.

Вы также можете сказать, что существует какая-то проблема с подключением, потому что «досягаемость» по-прежнему равна 0.

Отключите на мгновение ntp и попробуйте запустить ntpdate, чтобы синхронизировать его один раз:

ntpdate 10.99.84.134

Если это не удается, у вас определенно проблема с подключением:

  1. убедитесь, что две машины могут общаться друг с другом через ICMP (ping)
  2. если они могут, убедитесь, что в 10.99.84.134 нет настройки брандмауэра, предотвращающей подключение к ntp
  3. Если проблем с брандмауэром нет, проверьте на 10.99.84.134, что ntp прослушивает

    netstat -tapn | grep 123

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

убедитесь, что порт 123 udp разрешен [Out] в брандмауэре. У меня была такая же проблема, из-за того, что брандмауэр блокировал порт 123.