диагностика источников chronyc неработоспособны – время не синхронизируется

Вопрос или проблема

Пытаюсь настроить chrony в локальной сети на RHEL-8.10. Служба на моем сервере chrony или клиенте, похоже, работает, как сообщается командой service chronyd status -l. Однако я не могу синхронизировать время между двумя, они разошлись на пару минут.

# эта команда выполняется на сервере клиента, имеющем IP 192.168.1.4, например

chronyc> sources -a -v

  .-- Режим источника  '^' = сервер, '=' = пир, '#' = локальные часы.
 / .- Состояние источника '*' = текущий лучший, '+' = комбинированный, '-' = не комбинированный,
"https://unix.stackexchange.com/"x' = может быть ошибочным, '~' = слишком изменчивый, '?' = непригодный.
||                                                 .- xxxx [ yyyy ] +/- zzzz
||      Регистр доступности (восьмеричный) -.     |  xxxx = скорректированный сдвиг,
||      Log2(интервал опроса) --.      |          |  yyyy = измеренный сдвиг,
||                                \     |          |  zzzz = оценочная ошибка.
||                                 |    |           \
MS Имя/адрес IP          Стратум Опрос ПоследнийRx Последний образец
===============================================================================
^? 192.168.1.1                   3   6   377     5  -1500мкс[-1705мкс] +/-  500мс

# Я отредактировал имя/IP здесь для публикации, оно разрешается в имя хоста через DNS в нашей маленькой локальной сети

Команда chronyc tracking показывает нули, в то время как на другом сервере, который подключен к сети [интранет], синхронизируется с выделенным временным сервером, и здесь время совпадает с временем с time.gov до секунды, а chronyc tracking сообщает такие данные, как Системное время : 0.000830548 секунды опережает NTP время, а не все нули.

На моих системах локальной сети я пытался использовать setenforce 0 и service firewalld stop, и ни одно из этих действий не помогло.

Что вызывает '?' = непригодный в chronyc sources? Это кажется самой очевидной проблемой при сравнении работающей и неработающей настройки.

Я чувствую, что моя ошибка в том, что на моем сервере RHEL-8.10, который я пытаюсь сделать сервером времени для синхронизации других, есть что-то особенное в /etc/chrony.conf, что необходимо, но не было явно задокументировано в этом стандартном файле, предоставленном Red Hat? Ниже представлен мой /etc/chrony.conf с сервера, который я хочу сделать сервером времени в своей локальной сети с IP 192.168.1.1, который не синхронизируется ни с чем другим. Не хватает ли чего-то ниже, что могло бы вызвать '?' = непригодный при выполнении chronyc sources -a -v с временного клиента в моей локальной сети?

# Записать скорость, с которой системные часы накапливают/теряют время.
driftfile /var/lib/chrony/drift

# Разрешить шаг часов системы в первых трех обновлениях
# если их сдвиг больше 1 секунды.
makestep 1.0 3

# Включить синхронизацию ядра с часами реального времени (RTC).
rtcsync

# Включить аппаратную временную метку на всех интерфейсах, которые поддерживают это.
#hwtimestamp *

# Увеличить минимальное количество источников, которые можно выбрать, необходимых для корректировки
# системных часов.
#minsources 2

# Разрешить доступ NTP-клиента из локальной сети.
allow 192.168.1.0/24

# Обслуживать время, даже если не синхронизировано с источником времени.
local stratum 10

# Указать файл, содержащий ключи для аутентификации NTP.
keyfile /etc/chrony.keys

# Получить сдвиг TAI-UTC и дополнительные секунды из системной базы данных tz.
leapsectz right/UTC

# Указать директорию для журнальных файлов.
logdir /var/log/chrony

# Выбрать, какая информация будет записываться.
#log measurements statistics tracking

На моих клиентах их chrony.conf просто содержит server 192.168.1.1 iburst в начале.

В моем случае причиной ? = непригодный, как сообщалось командой chronyc sources -a -v, было отсутствие открытого порта 123 UDP в брандмауэре на моем временном сервере.

Мой файл /etc/firewalld/zones/custom.xml имел строку для открытия 123/udp, однако команда firewall-cmd --list-all не отображала этот номер порта. Решением в моем случае было:

  • переотредактировать XML-файл брандмауэра, выполнить firewall-cmd --complete-reload и убедиться, что 123/udp отображается при выполнении firewall-cmd --list-all.
    • конечно, можно было бы также выполнить systemctl stop firewalld
  • однако даже при отключении брандмауэра как на сервере, так и на клиенте я заметил, что служба chronyd должна быть перезапущена на клиенте, и затем следует подождать как минимум 30 секунд перед выполнением chronyc sources -a -v, чтобы увидеть, получите ли вы ответ ^* вместо ^?. Когда я в первый раз выполнил все, печатая быстро, я всегда получал ^? от chronyc sources, что вызывало недовольство.
  • Я обнаружил, что службу chrony также нужно было перезапустить на клиенте, только после этого chrony sources -a -v примерно через 30 секунд сообщала с * = лучший вместо непригодного. И chronyc tracking затем не показывала все нули.

Ответ или решение

Диагностика проблем с невостребованными источниками Chrony: синхронизация времени

В процессе использования Chrony для синхронизации времени в локальной сети на RHEL-8.10, вы можете столкнуться с проблемами, связанными со статусом «?» в выводе команды chronyc sources -a -v. Этот символ указывает на проблемы с доступностью источников времени и, как следствие, нарушает синхронизацию времени между сервером Chrony и клиентами.

Основные причины проблемы

  1. Блокировка порта 123/UDP:
    Поскольку Chrony использует протокол NTP (Network Time Protocol), он зависит от UDP-порта 123 для связи. Если этот порт закрыт на сервере Chrony, клиенты не смогут получать обновления времени. Это одна из наиболее распространенных причин появления статуса «?».

  2. Конфигурация Chrony:
    Проверьте файл конфигурации /etc/chrony.conf на наличие корректных настроек. Убедитесь, что директива allow прописана для локальной сети, что позволяет клиентам получать доступ к серверу.

  3. Статус сервиса Chrony:
    Убедитесь, что сервис Chrony работает корректно на сервере и клиентах. Вы можете использовать команду service chronyd status -l для проверки состояния сервиса.

Решение проблемы

  1. Проверка настроек Firewall:
    Выполните следующие шаги:

    • Проверьте, открыты ли необходимые порты. Для этого выполните команду:
      firewall-cmd --list-all

      Убедитесь, что в списке отображается 123/udp.

    • Если порт не открыт, добавьте его в конфигурацию firewall, внесите изменения и перезагрузите firewall:
      firewall-cmd --permanent --add-port=123/udp
      firewall-cmd --reload
  2. Перезапуск сервисов:
    После внесения изменений не забудьте перезапустить сервис Chrony на обоих машинах:

    systemctl restart chronyd
  3. Ожидание обновлений:
    После перезапуска сервиса дайте системе некоторое время для синхронизации, обычно 30 секунд. Затем выполните команду chronyc sources -a -v для проверки статуса синхронизации. Если вы все сделали правильно, вы должны увидеть знак «*», который указывает на лучшее решение.

  4. Дополнительные проверки:

    • Проверьте журнал Chrony для выявления возможных ошибок:
      journalctl -u chronyd
    • Убедитесь, что системное время на сервере Chrony правильно настроено.

Заключение

Проблемы с синхронизацией времени в локальной сети могут быть вызваны множеством факторов, начиная от настроек файрвола и заканчивая самими конфигурациями Chrony. Убедившись, что порт 123 открыт и что сервисы работают, можно настроить надежную синхронизацию времени для всех устройств в сети. Пошаговое выполнение этих рекомендаций поможет исключить большинство распространенных ошибок и достичь успешной синхронизации времени.

Оцените материал
Добавить комментарий

Капча загружается...