В стандартные дистрибутивы ОС ОН Орёл 2.12 и ОС СН Смоленск 1.6 включены две службы точного времени:
- Серверная служба NTP (представлена пакетами ntp и ntpdate). Может обеспечивать работу ОС в режиме как сервера точного, так и клиента.
- Клиентская служба timedatectl / systemd-timesyncd.servic. Не представлена отдельными пакетами, встроена непосредственно в ОС.
Предназначена для использования только на клиентских ОС, и не может работать сервером точного времени.
Поддерживает только упрощенный протокол передачи времени, однако считается более современным вариантом для типичных клиентских применений.
Предупреждение |
---|
Службы ntp и timesyncd несовместимы между собой и их одновременная работа невозможна. |
Основные понятия
Системные часы оперируют тремя основными типами времени, связанными друг с другом через параметры временной зоны и настроек аппаратных часов:
Тип | Пояснение | Пример |
---|---|---|
Universal time, UTC | UTC — это всемирное координированное время, стандарт времени, принятый на Земле. | Universal time: Ср 2019-02-20 07:51:49 UTC |
Local time | Локальное время, местное время. Получается из всемирного координированного времени добавлением временного смещения временной зоны. Для Москвы смещение составляет +3 часа (Time zone: Europe/Moscow (MSK, +0300). Используется в основном для взаимодействия с пользователями системы. | Local time: Ср 2019-02-20 10:51:49 MSK |
RTC time | Аппаратное время. Рекомендуется использовать RTC в режиме | RTC time: Ср 2019-02-20 07:51:49 |
Служба времени NTP
Эта служба устанавливается и запускается автоматически при установке ОС, и, в общем случае, для использования в качестве клиентской службы, дополнительных настроек не требует.
Информация |
---|
Служба ntp не будет запускаться автоматически при перезагрузке компьютера, если она не сможет найти ни одного сервера времени из перечисленных в конфигурации. |
Для управления службой в состав дистрибутивов включен графический инструмент fly-admin-ntp, который можно установить из графического менеджера пакетов, или из командной строки:
Command |
---|
apt install fly-admin-ntp |
После установки графического инструмента он будет доступен в меню
Информация |
---|
Пуск -> Панель управления -> Сеть -> Синхронизация времени (NTP). |
Описанные далее действия по настройке можно выполнять с помощью графического инструмента,
или непосредственно редактировать файл настроек /etc/ntp.conf
.
Свой сервер времени
По умолчанию служба ntpd настроена как клиентская.
Все подключения к ней запрещены в файле конфигурации:
Информация |
---|
# ограничения для IPv4 |
По умолчанию заданы следующие параметры ограничений:
- kod — узлам, которые слишком часто отправляют запросы сначала отправить предупреждение (поцелуй смерти, kiss of death), затем отключить от сервера
- notrap — не принимать управляющие команды
- nomodify — не принимать команды, которые могут вносить изменения состояния
- nopeer — не синхронизироваться с хостом
- noquery — не принимать запросы
- limited — ограничение одновременного приема запросов
Соответственно, для разрешения работы сервера можно добавить более слабые ограничения. Например, для сети 192.168.0.0
Информация |
---|
# не запрещаем принимать запросы от сети 192.168.0.0, но не разрешаем управление из этой сети # разрешаем управление с локального компьютера |
Так как сервер времени сам выступает клиентом для получения своего точного времени, настройка источников синхронизации для сервера делается так же, как и для клиента.
Передача параметров NTP через DNS
Параметры для доступа к NTP могут автоматически передаваться клиентам через DNS-сервер.
Подробности см. в DNS-сервер BIND9
Изменение настроек клиентов
Изменение настроек может понадобиться в следующих ситуациях:
- оптимизация и локализация сетевого трафика
- работа в изолированной сети
- работа со специальными серверами времени
По умолчанию, служба настроена на работу с открытым пулом специальных серверов времени,
выбирая при запуске каждый раз новый оптимальный набор серверов со всего мира:
Информация |
---|
pool 0.debian.pool.ntp.org iburst pool 1.debian.pool.ntp.org iburst pool 2.debian.pool.ntp.org iburst pool 3.debian.pool.ntp.org iburst |
При желании ограничить набор серверов российскими серверами можно использовать следующие настройки:
Информация |
---|
server 0.ru.pool.ntp.org server 1.ru.pool.ntp.org server 2.ru.pool.ntp.org server 3.ru.pool.ntp.org |
При необходимости работать в изолированной сети, или при желании ограничить свой внешний трафик, можно использовать свои локальные серверы времени:
Информация |
---|
server <IP_адрес_сервера_1> server <IP_адрес_сервера_2> |
Особенности работы
Некоторые особенности синхронизации времени описаны в статье про виртуализацию
Служба TIMESYNCD
Служба timesyncd предлагается в качестве современной "легковесной" замены ntp.
Она более проста, интегрирована в ОС, но несколько ограничена в возможностях.
Служба не может выполнять функции сервера, и список серверов времени, с которыми будет выполняться синхронизация, жестко задан в исходном коде службы.
Служба timesyncd устанавливается автоматически при установке ОС , автоматически запускается при каждой перезагрузке ОС, однако немедленно завершает свою работу с сообщением об ошибке, обнаружив, что на компьютере присутствует служба ntp.
Для использования timesyncd в первую очередь необходимо полностью удалить службу ntp:
Command |
---|
sudo apt purge ntp |
Или, как вариант (чтобы сохранить настройки ntp), остановить, полностью отключить и полностью запретить службу ntp:
Command |
---|
sudo systemctl stop ntp sudo systemctl disable ntp sudo systemctl mask ntp |
После чего запустить службу timesyncd:
Command |
---|
sudo systemctl start systemd-timesyncd |
Состояние службы можно проверить командой:
Command |
---|
sudo systemctl status systemd-timesyncd |
Или командой:
Command |
---|
sudo timedatectl status |
Примерный вывод команды:
Информация |
---|
Local time: Ср 2018-12-26 11:08:12 MSK |
Настройка аппаратных ( RTC)часов
При использовании службы timesyncd рекомендуется настраивать аппаратные часы компьютера так, чтобы они показывали не локальное, а всемирное координированное время (UTC).
Если этого не сделать, возможны проблемы с коррекцией времени и сменой сезонного локального времени.
Если RTС настроены на локальное время, команда timedatectl status будет выдавать соответствующее предупреждение.
Переключение аппаратных часов на время UTC с одновременной их синхронизацией с системным временем выполняется командой:
Command |
---|
sudo timedatectl set-local-rtc 0 |
Для переключения с синхронизацией системного времени по показаниям часов RTC можно использовать опцию --adjust-system-clock.