Ntpd

ntpd (Network Time Protocol daemon) — программа-демон, которая устанавливает и поддерживает системное время, используется для синхронизации серверами точного времени.

Программа ntpd — это демон операционной системы, который устанавливает и поддерживает системное время, синхронизированное с серверами точного времени. Является полной имплементацией протокола NTP версии 4, но также сохраняет совместимость с версией 3, как определено в RFC-1305[1], и версиями 1 и 2, определёнными в RFC-1059[2] и RFC-1119[3] соответственно. ntpd выполняет большинство вычислений, используя 64-битную арифметику с плавающей запятой и сравнительно неплохо выполняет 64-битные операции с фиксированной запятой, только когда необходимо добиться высокой точности около 232 пикосекунд. Тогда как сегодня столь высокая точность недостижима на обычных компьютерах и в сетях, она может потребоваться для будущих гигагерцовых ЦПУ и гигабитных сетей.

xntpd — демон NTP третьей версии. «x» был добавлен в название, так как ветвь кода, ставшая в конечном итоге NTPDv3, была «экспериментальной». Название демона было изменено к начальному «ntpd» к четвёртой версии, поскольку создатель NTP David Mills решил, что вероятно что-либо не может быть «экспериментальным» в течение двадцати лет и не претерпеть за это время каких-либо значительных изменений.

ntpd использует два варианта хранения файлов конфигурации:

  • Первый вариант — с единым конфигурационным файлом для запуска демона в режиме сервера или клиента. В этом случае файл конфигурации обычно называется ntp.conf и размещается в каталоге /etc.
  • Второй вариант размещения файла конфигурации NTP: /etc/ntp/ntpd.conf для демона и /etc/ntp/ntp.conf для клиента.

Другой важный файл — файл «дрифта» (англ. drift file), который используется ntpd для коррекции аппаратных часов в случае отсутствия подключения к более точному серверу времени и располагается обычно в /var/db/ntp.drift.

Принцип работы

[править | править код]

Точное время можно получить с помощью специальной аппаратуры, основанной на атомных часах. Также существует метод, основанный на GPS (Global Positioning System, глобальной системе позиционирования). Оба способа требуют специализированного и дорогого оборудования, но их владельцы (обычно университеты и исследовательские лаборатории) подключают это оборудование к компьютерам, на которых запущен демон NTP. Зачастую эти же машины подключены к Интернету, что в конечном итоге даёт людям возможность бесплатно узнавать точное время.

ntpd выполняет обмен сообщениями с одним или более сконфигурированными серверами через определённые интервалы времени. При старте, в первый либо последующие разы, программе требуется несколько раз обменяться сообщениями с большинством этих серверов, чтобы алгоритмы обработки сигналов и оптимизации могли собрать и подготовить данные и установить время. По умолчанию интервал равен 64 секундам, поэтому для установки времени может потребоваться несколько минут. Начальная задержка в установке часов может быть уменьшена при использовании ключевого слова iburst с конфигурационной командой server, как описано на странице Configuration Options[4].

Большинство операционных систем и аппаратного обеспечения сегодня используют встроенный TOY (time-of-year) чип, чтобы поддерживать время, когда питание отключено. При включении машины чип используется для инициализации часов операционной системы. После того, как машина синхронизировала свои часы с NTP сервером, операционная система время от времени корректирует часы чипа. В случае, когда TOY-чип отсутствует либо, по какой-то причине, время на нём отличается от серверного более чем на 1000 секунд, ntpd считает, что что-то пошло не так, и единственным правильным действием в такой ситуации является вмешательство оператора и установка часов руками. В этом случае ntpd завершает работу с сообщением об ошибке в системном логе. Опция -g позволяет игнорировать эту проверку и устанавливать серверное время вне зависимости от времени на чипе.

После настройки NTP будет поддерживать точность времени, выполняя очень маленькие корректировки часов, такие маленькие, что они никак не будут влиять на работающие приложения.

Режимы работы

[править | править код]

По умолчанию, ntpd работает в непрерывном режиме, в котором каждый из нескольких внешних серверов опрашивается через временные промежутки, определяемые сложным эвристическим алгоритмом, учитывающим джиттер задержки и погрешность частоты. Обычно, в большинстве операционных систем, начальный интервал равен 64 секунды и пошагово увеличивается до 1024 секунд.

В некоторых случаях может быть непрактично использовать ntpd в непрерывном режиме. Типичным обходом проблемы является запуск ntpdate из cron-а в назначенное время. Однако, ntpdate не имеет встроенных алгоритмов проверки ошибок и оптимизации. Для такого случая предназначена опция -q. Запущенный с ней, ntpd выставит время только один раз и закончит после этого свою работу.

Параметры командной строки

[править | править код]

-4

Использовать пространство адресов IPv4

-6

Использовать пространство адресов IPv6

-a

Запрашивать криптографическую аутентификацию. Используется по умолчанию.

-A

Не запрашивать криптографическую аутентификацию. Не рекомендуется.

-b

Позволяет клиенту синхронизироваться с широковещательными серверами.

-c conffile

Определяет имя и путь к конфигурационному файлу, по умолчанию /etc/ntp.conf

-d

Определяет режим отладки.

-D level

Определяет уровень режима отладки напрямую.

-f driftfile

Определяет имя и путь к файлу частоты.

-g

Снимает ограничение на разницу серверного и локального времени.

-l logfile

Определяет имя и путь к файлу журнала.

-q

Копирует действие программы ntpdate — выполняет синхронизацию часов один раз.

Программа ntpd впервые появилась в OpenBSD 3.6

Примечания

[править | править код]
  1. D. Mills. Network Time Protocol (Version 3) Specification, Implementation and Analysis. tools.ietf.org. Дата обращения: 8 ноября 2015. Архивировано 11 декабря 2019 года.
  2. D. L. Mills. Network Time Protocol (version 1) specification and implementation. tools.ietf.org. Дата обращения: 8 ноября 2015. Архивировано 2 ноября 2015 года.
  3. D. L. Mills. Network Time Protocol (version 2) specification and implementation. tools.ietf.org. Дата обращения: 8 ноября 2015. Архивировано 16 ноября 2015 года.
  4. Configuration Options. doc.ntp.org. Дата обращения: 8 ноября 2015. Архивировано 28 сентября 2015 года.