Многие NTP-сервера не достаточно хороши по разным причинам. Некоторые из
них слишком сложны, следуют архаичным методам проектирования, а так же
сложны в настройке. Другие же наоборот - слишком упрощены, поддерживают
только синхронизацию на стороне клиента или просто находятся на ранней
стадии разработки.
В мире, где все больше и больше NTP-синхронизации, важно иметь свободную
реализацию, которая обеспечивала бы хорошую синхронизацию времени, сохраняя
при этом высокий уровень безопасности и простоту конфигурации.
Для достижения этих целей OpenNTPD предоставляет:
- Более 10 лет проверенной надежности.
- Простой в понимании код.
- Синхронизация как на стороне сервера, так и на стороне клента.
OpenNTPD подходит для всего, от синхронизации домашнего роутера
или лептопа, и заканчивая кластером серверов, состоящим из тысячи
нод.
- Разделение привилегий, которое изолирует непривилегированный
процесс, работающий с сетью, от привилегированного, использованного
для установки времени. Демон работает в среде chroot, что еще
больше ограничивает его возможности.
- Поддержка DNS с разделением привилегий, которая срабатывает
динамически во время выполнения, что позволяет создавать более
поздние запросы, даже если сеть не работает при запуске.
Это важно для длительного использования кластера
пулов NTP.
- Помимо использования
adjtime(2)
для грубых настроек времени, OpenNTPD может выполнять детальную
настройку времени с помощью системных вызовов
adjfreq(2)
и ntp_adjtime.
- Интеграция с аппаратным обеспечением для синхронизации времени,
где доступен фреймворк
sensorsd(8).
- Поддержка таблиц виртуальной маршрутизации (называемых в OpenBSD
rdomains) для изоляции сетей, к которым может обращаться OpenNTPD.
- Программа-клиент
ntpctl(8)
для запроса статуса синхронизации в реальном времени.
- Интеграция последних достижений secure API из OpenBSD, такие как
getentropy(2),
arc4random(3)
(отказоустойчивый CSRNG, который работает в chroot) и
reallocarray(3)
(целочисленная проверка на переполнение (integer overflow-checking),
которая является заменой malloc/calloc/realloc).