Установка и настройка OpenNTPd в FreeBSD 10.2
FreeBSD | Комментировать запись
NTP (Network Time Protocol) – это стандартизированный протокол, предусматривающий способы синхронизации времени на различных операционных системах. OpenNTPD – это свободная и простая в использовании реализация протокола NTP, первоначально разработанная в рамках проекта OpenBSD. OpenNTPd дает возможность синхронизировать локальные часы с удаленными серверами NTP.
Данное руководство поможет установить OpenNTPd в FreeBSD.
Требования
- Сервер FreeBSD 10.2.
- Пользователь с доступом root.
- Для удалённого доступа к серверу FreeBSD нужен ключ SSH.
Примечание: Больше информации о FreeBSD можно найти в этом руководстве.
1: Установка OpenNTPd
Обновите индекс пакетов:
sudo pkg update
Установите OpenNTPd:
sudo pkg install openntpd
По умолчанию OpenNTPd использует серверы pool.ntp.org и работает только как клиент.
2: Изменение сервера времени (опционально)
Стандартный конфигурационный файл находится в /usr/local/etc/ntpd.conf. Откройте его в текстовом редакторе:
sudo ee /usr/local/etc/ntpd.conf
Поддерживаемый проектом GeoDNS, pool.ntp.org обычно возвращает IP-адреса вашей страны (или рядом). В большинстве случаев это подходит.
Также можно указать часовой пояс (например, br.pool.ntp.org, de.pool.ntp.org, orru.pool.ntp.org), чтобы подогнать или ограничить результаты согласно вашим требованиям.
Примечание: Чтобы узнать больше о NTP Pool Project, посетите сайт проекта.
В данном руководстве для примера используется NTP. Br, бразильский проект, показывающий правильное время на территории Бразилии.
Выберите сервер времени, как показано выше.
# $OpenBSD: ntpd.conf,v 1.2 2015/02/10 06:40:08 reyk Exp $
# sample ntpd configuration file, see ntpd.conf(5)
# Addresses to listen on (ntpd does not listen by default)
#listen on *
# sync to a single server
#server ntp.example.org
# use a random selection of NTP Pool Time Servers
# see http://support.ntp.org/bin/view/Servers/NTPPoolServers
servers pool.ntp.br
# use a specific local timedelta sensor (radio clock, etc)
#sensor nmea0
# use all detected timedelta sensors
#sensor *
# get the time constraint from a well-known HTTPS site
#constraints from "https://www.google.com/search?q=openntpd"
Примечание: Вместо pool.ntp.br укажите свой сервер.
3: Настройка ограничений
Пользовательские настройки клиента позволяют добавлять поддержку ограничений, чтобы ntpd мог запрашивать дату.
В руководстве ntpd.conf сказано: «Принятые NTP-пакеты с информацией о времени, которые не входят в диапазон, будут отброшены, а такие серверы NTP будут помечены как недействительные». Это предотвращает атаки «человек посередине», сохраняя при этом точность часов.
Добавьте ограничения в файл /usr/local/etc/ntpd.conf, чтобы установить доверенный диапазон. При этом используйте несколько надёжных, проверенных HTTPS сайтов. Чтобы раскомментировать строку, удалите символ #.
# $OpenBSD: ntpd.conf,v 1.2 2015/02/10 06:40:08 reyk Exp $
# sample ntpd configuration file, see ntpd.conf(5)
# Addresses to listen on (ntpd does not listen by default)
#listen on *
# sync to a single server
#server ntp.example.org
# use a random selection of NTP Pool Time Servers
# see http://support.ntp.org/bin/view/Servers/NTPPoolServers
servers pool.ntp.br
# use a specific local timedelta sensor (radio clock, etc)
#sensor nmea0
# use all detected timedelta sensors
#sensor *
# get the time constraint from a well-known HTTPS site
# constraints from "https://www.google.com/search?q=openntpd"
4: Сервер времени OpenNTPd
Этот раздел покажет, как изменить стандартное поведение OpenNTPd и превратить FreeBSD в NTP-сервер, обслуживающий IPv4 и IPv6.
Эти настройки имеют такой вид:
# $OpenBSD: ntpd.conf,v 1.2 2015/02/10 06:40:08 reyk Exp $
# sample ntpd configuration file, see ntpd.conf(5)
# Addresses to listen on (ntpd does not listen by default)
listen on your_server_ip
# sync to a single server
#server ntp.example.org
# use a random selection of NTP Pool Time Servers
# see http://support.ntp.org/bin/view/Servers/NTPPoolServers
servers pool.ntp.br
# use a specific local timedelta sensor (radio clock, etc)
#sensor nmea0
# use all detected timedelta sensors
#sensor *
# get the time constraint from a well-known HTTPS site
#constraints from "https://www.google.com/search?q=openntpd"
Примечание: Вместо your_server_ip укажите адрес IPv4 или IPv6 сервера.
5: Автоматический запуск OpenNTPd
По умолчанию OpenNTPd не запускается вместе с сервером. Чтобы настроить автоматический запуск OpenNTPd, выполните команду:
sudo sysrc openntpd_enable="YES"
openntpd_enable: -> YES
Чтобы при загрузке сервер сразу показывал правильное время, добавьте флаг -s в openntpd_flags. Флаг –v будет регистрировать изменения времени. Флаг –s будет держать демон ntpd на переднем плане в течение 15 секунд в ожидании ответа NTP-сервера. Чтобы настроить такое поведение, введите:
sudo sysrc openntpd_flags="-s -v"
openntpd_flags: -> -s -v
6: Управление OpenNTPd
Теперь можно запустить сервис OpenNTPd.
sudo service openntpd start
Если сервис запущен успешно, команда вернёт:
Starting openntpd.
Если OpenNTPd регистрирует отладочную информацию, то вывод будет выглядеть следующим образом:
Starting openntpd.
constraint certificate verification turned off
ntp_adjtime returns frequency of 8.643158ppm
Для управления сервисом OpenNTPd используются стандартные команды: status, restart и т.п.
7: Устранение неполадок (опционально)
OpenNTPd использует два бинарных файла: ntpd и ntpctl. Первый – это сам демон, который отвечает за сервис NTP. Второй отображает информацию о запущенном демоне.
Данный раздел научит вас устранять неполадки OpenNTPd с помощью ntpctl, nc и sockstat.
Состояние
Для взаимодействия с демоном OpenNTPd ntpctl использует локальный сокет, по умолчанию это /var/run/ntpd.sock.
Чтобы узнать состояние с помощью ntpctl, введите:
sudo ntpctl -s status
Команда вернёт примерно такую строку:
8/8 peers valid, clock synced, stratum 2
Чтобы просмотреть данные о peers, введите:
sudo ntpctl -s peers
peer
wt tl st next poll offset delay jitter
200.160.0.8 from pool pool.ntp.br
1 10 2 8s 30s -0.005ms 44.814ms 0.023ms
200.160.7.193 from pool pool.ntp.br
* 1 10 1 26s 31s -0.012ms 44.814ms 0.027ms
200.20.186.76 from pool pool.ntp.br
1 10 1 18s 31s 0.023ms 37.481ms 0.031ms
Сокеты
Вы можете просмотреть список открытых сокетов IPv4, IPv6 и UNIX. Чтобы получить список прослушиваемых сокетов NTP по протоколам IPv4 и IPv6, введите:
sudo sockstat -4 -6 -p 123
USER COMMAND PID FD PROTO LOCAL ADDRESS FOREIGN ADDRESS
_ntp ntpd 44208 7 udp4 203.0.113.123:16987 200.160.0.8:123
_ntp ntpd 44208 8 udp4 203.0.113.123:38739 200.160.7.193:123
. . .
Если вы используете OpenNTPd для обслуживания времени по сети, столбец LOCAL ADDRESS покажет список ваших IP-адресов.
Подключение к интернету
Утилита nc устраняет неполадки NTP, а также других сетевых демонов и их сокетов (UNIX, TCP, UDP).
Чтобы узнать, доступен ли NTP по IPv4, введите:
sudo nc pool.ntp.br 123 -z -4 -u -v
Connection to pool.ntp.br 123 port [udp/ntp] succeeded!
Чтобы узнать, доступен ли NTP по IPv6, введите:
sudo nc pool.ntp.br 123 -z -6 -u -v
Connection to pool.ntp.br 123 port [udp/ntp] succeeded!
Утилита ntpdate
Утилита ntpdate предоставляет важные данные о сервере, на котором запущен NTP.
sudo ntpdate -q -4 ntp.cais.rnp.br
server 200.144.121.33, stratum 3, offset -0.000049, delay 0.09001
1 Sep 17:28:54 ntpdate[66740]: adjust time server 200.144.121.33 offset -0.000049 sec
Примечание: Теперь функции ntpdate доступны в программе FreeBSD под названием ntpd.
Мануал
Утилиты OpenNTPd (ntpd, ntpd.conf и ntpctl) не входят в систему FreeBSD по умолчанию, потому и справку о них нельзя получить в MANPATH по умолчанию. Чтобы узнать больше о OpenNTPd, запустите мануал:
man -M /usr/local/man ntpd
Заключение
Точное время – очень важный аспект работы серверов, роутеров, сетевых демонов и т.п. Если время на сервере не синхронизировано, это может вызвать несогласованность данных и усложнить обмен данными этого сервера с другими устройствами.
Tags: FreeBSD 10.2, NTP, OpenNTPd