Вступление
NTP, сетевой протокол времени, является стандартизированным протоколом, обеспечивающим способы синхронизации времени в различных операционных системах. http://openntpd.org [OpenNTPd] - это бесплатная и простая в использовании реализация протокола сетевого времени (NTP), первоначально разработанная в рамках проекта http://openbsd.org [OpenBSD]. Он обеспечивает возможность синхронизации локальных часов с удаленных серверов NTP, а также может выступать в роли самого сервера.
Из этого туториала вы узнаете, как установить OpenNTPd на FreeBSD.
Предпосылки
Чтобы следовать этому уроку, вам необходимо иметь:
-
Одна FreeBSD 10.2 Droplet с пользователем * root *; пользователь * freebsd * по умолчанию в DigitalOcean - это нормально.
Капле FreeBSD требуется ключ SSH для удаленного доступа. Для получения справки по настройке ключа SSH прочитайте Wow Configure SSH. Аутентификация на основе ключей на сервере FreeBSD. Чтобы узнать больше о входе в свою FreeBSD Droplet и базовом управлении, ознакомьтесь с серией учебников https://www.digitalocean.com/community/tutorial_series/getting-started-with-freebsd[Getting Started with FreeBSD.
Шаг 1 - Установка OpenNTPd
Перед установкой OpenNTPd обновите информацию о репозитории, используемую + pkg +
:
sudo pkg update
Затем установите пакет OpenNTPd:
sudo pkg install openntpd
Конфигурация OpenNTPd по умолчанию использует + pool.ntp.org +
в качестве серверов времени по умолчанию и настроена для работы только в качестве клиентского компьютера. В оставшейся части этого руководства будет показано, как изменить используемый сервер времени и как настроить OpenNTPd в качестве сервера времени.
Шаг 2 - Изменение сервера времени ((необязательно)
Следующие несколько шагов отредактируют + / usr / local / etc / ntpd.conf +
, файл конфигурации по умолчанию. Используйте + ee +
, + vi +
или ваш любимый текстовый редактор для редактирования файла конфигурации.
sudo ee /usr/local/etc/ntpd.conf
При поддержке Ask Bjørn Hansen GeoDNS, + pool.ntp.org +
обычно возвращает IP-адреса для серверов в вашей стране или рядом с ней. Для большинства пользователей это даст лучшие результаты.
Кроме того, вы также можете использовать зону страны, например + br.pool.ntp.org id.pool.ntp.org
или` + ru.pool.ntp.org + `, чтобы принудительно / ограничивать результаты в соответствии с вашими личными потребностями. , Чтобы узнать больше о проекте NTP Pool, посетите http://www.pool.ntp.org [pool.ntp.org].
Для примера в этом руководстве мы будем использовать http://ntp.br [NTP.br], проект в Бразилии, который сохраняет и распределяет законное время на территории Бразилии. Если вы не в Бразилии, используйте аналогичный проект в вашей стране или регионе.
Определите свой желаемый сервер времени следующим образом, заменив + pool.ntp.br +
выбранным вами сервером времени.
/usr/local/etc/ntpd.conf
# $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
# 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"
Шаг 3 - Изменение ограничений
Пользовательская настройка клиента также может добавить поддержку ограничений, чтобы + ntpd +
мог запрашивать заголовки + Date: +
с доверенных HTTPS-серверов через TLS.
Страница man + ntpd.conf (5) + `гласит:« Полученные NTP-пакеты с информацией о времени, выходящей за пределы диапазона, близкого к ограничению, будут отброшены, и такие NTP-серверы будут помечены как недействительные ». Это предотвращает некоторые атаки MITM, сохраняя точность часов.
Добавьте ограничения в + / usr / local / etc / ntpd.conf +
. Обязательно используйте один или несколько надежных, известных сайтов HTTPS. Вы можете раскомментировать строку примера, представленную в файле, удалив первый символ + # +
, выделенный ниже:
/usr/local/etc/ntpd.conf
# $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
# 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.
Окончательные результаты для конфигурации сервера должны выглядеть следующим образом, с заменой ++
на IPv4 или IPv6-адрес вашего сервера.
/usr/local/etc/ntpd.conf
# $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)
# 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"
Шаг 5 - Запуск OpenNTPd при загрузке
Конфигурация службы по умолчанию для OpenNTPd не запускает демон во время процесса загрузки FreeBSD. Чтобы добавить службу NTP, предоставляемую + ntpd +
во FreeBSD, выполните следующее:
sudo sysrc openntpd_enable="YES"
Выход должен быть:
Outputopenntpd_enable: -> YES
Если вы хотите установить время сразу при запуске, добавьте + -s +
к + openntpd_flags +
. + -v +
также можно использовать для регистрации всех вызовов + adjtime +
. Передача + -s +
в + ntpd +
заставит демона ответить одному из настроенных серверов NTP. Это и пользовательская настройка, подобная этой, должна быть настроена так:
sudo sysrc openntpd_flags="-s -v"
Выход должен быть:
Outputopenntpd_flags: -> -s -v
Шаг 6 - Управление сервисом OpenNTPd
Теперь, когда у вас есть файл конфигурации, отредактированный и настроенный в соответствии со всеми вашими потребностями, вы можете запустить сервис, предоставляемый OpenNTPd.
Чтобы запустить сервис:
sudo service openntpd start
Если он начнется успешно, вы увидите:
OutputStarting openntpd.
Если флаги демона OpenNTPd настроены на запись отладочной информации, запуск вывода должен выглядеть следующим образом:
OutputStarting openntpd.
constraint certificate verification turned off
ntp_adjtime returns frequency of 8.643158ppm
Вы можете управлять сервисом OpenNTPd с помощью обычных команд: + status
,` + restart` и т. Д.
Шаг 7 - Устранение неполадок (необязательно)
OpenNTPd использует два двоичных файла: + ntpd +
и + ntpctl +
. Первый - это сам демон, который отвечает за службу NTP, предоставляемую клиенту или серверу. Второй используется для отображения информации о работающем демоне.
В этом разделе показано, как использовать + ntpctl +
, + nc +
и + sockstat +
для устранения неполадок в службе NTP, предоставляемой OpenNTPd и его демоном. Если у вас есть работающий сервис или вы просто хотите проверить, работает ли ваш сервис другим способом, используйте этот раздел.
Получение статуса и сверстников
+ Ntpctl +
в OpenNTPd использует локальный сокет для связи с демоном OpenNTPd. По умолчанию это + / var / run / ntpd.sock +
. В этом руководстве рассматриваются два вида запросов, которые вы можете запускать с помощью + ntpctl
:` + status` и + peers
.
+ status +
показывает состояние одноранговых узлов и датчиков, а также синхронизируются ли системные часы. Когда системные часы синхронизируются, отображается слой. Когда системные часы не синхронизированы, отображается смещение системных часов, сообщаемое системным вызовом + adjtime +
. Когда медианное ограничение установлено, отображается смещение по местному времени.
Чтобы показать статус с помощью ntpctl:
sudo ntpctl -s status
Вывод должен быть похож на следующее:
Выход
8/8 peers valid, clock synced, stratum 2
+ peers +
показывает следующую информацию о каждом узле: вес (wt), уровень доверия (tl), уровень (st) и количество секунд до следующего обновления однорангового узла (следующий опрос). Значения смещения, задержки в сети и дрожания сети указаны в миллисекундах. Когда системные часы синхронизируются с одноранговым узлом, слева от столбца веса для этого однорангового узла отображается звездочка (*).
Чтобы показать информацию о пирах, используя + ntpctl +
:
sudo ntpctl -s peers
В следующих выходных данных показана информация о том, что OpenNTPd запущен и синхронизирован с сервером уровня 1, отвечающим как «200.160.7.193» (разрешено из pool.ntp.br), и ваш демон OpenNTPd будет обновлять время через NTP через 31 секунду:
Output 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.20.186.76 from pool pool.ntp.br
1 10 1 18s 31s 0.023ms 37.481ms 0.031ms
. . .
Розетки для прослушивания
Вы можете использовать + sockstat +
для отображения списка открытых сокетов доменов 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-адресами; `: 123 `, представляющий сокет IPv4, и `: 123 +`, показывающий прослушивающий сокет IPv6.
Подключение к интернету
Используйте + nc +
для устранения неполадок не только NTP, но и множества сетевых демонов и их сокетов (UNIX, TCP или UDP). На странице руководства написано: «В отличие от` + telnet + , netcat хорошо выполняет сценарии и разделяет сообщения об ошибках на стандартные ошибки, а не отправляет их на стандартный вывод, как
+ telnet + `делает с некоторыми».
Чтобы проверить, можете ли вы подключиться к NTP-серверу или узлу пула через IPv4:
sudo nc pool.ntp.br 123 -z -u -v
OutputConnection to pool.ntp.br 123 port [udp/ntp] succeeded!
Чтобы проверить, можете ли вы подключиться к NTP-серверу или узлу пула через IPv6:
sudo nc pool.ntp.br 123 -z -u -v
OutputConnection to pool.ntp.br 123 port [udp/ntp] succeeded!
Использование ntpdate
Используйте + ntpdate +
для устранения неполадок на некоторых серверах, которые вы можете использовать. Вы можете получить некоторую информацию о машине, на которой запущена служба NTP: + stratum +
, + offset +
и + delay +
.
sudo ntpdate -q ntp.cais.rnp.br
Вывод будет выглядеть примерно так:
Outputserver 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 +
. Смотрите параметр командной строки + -q +
в справочной странице FreeBSD + ntpd +
или используйте + ntpq +
.
Чтение страниц руководства
+ Ntpd +
, + ntpd.conf +
и + ntpctl +
в OpenNTPd не являются частью базовой системы FreeBSD, поэтому ее страницы руководства также не являются частью стандартной операционной системы + MANPATH +
. Чтобы быть уверенным, что вы будете читать справочные страницы OpenNTPd, вы должны запустить + man +
с + -M / usr / local / man +
. Не путайте со стандартной страницей FreeBSD + ntpd (8) +
.
man -M /usr/local/man ntpd
Повторите ту же процедуру, чтобы прочитать справочную страницу + ntpctl (8) +
или + ntpd.conf (5) +
в OpenNTPd.
Заключение
Время неотъемлемо важно для работы рабочих станций, серверов, маршрутизаторов и сетей. Без синхронизированного времени точное сопоставление информации между устройствами становится трудным, если не невозможным. Когда дело доходит до безопасности, если вы не можете успешно сравнить журналы между каждым из ваших маршрутизаторов и всеми вашими сетевыми серверами, вам будет очень трудно составить достоверную картину инцидента.