Введение
В этом руководстве мы рассмотрим установку общедоступного NTP сервера и опционально добавим его в пул публичных серверов.
Необходимо
- По крайней мере минимальный виртуальный сервер, например CX11 с root доступом. Все команды, если не указано иное, должны выполняться от root.
- Базовые знания Linux
Шаг 1 - Установка
Для начала установим на сервер ntp
и ntpdate
.
apt-get install ntp ntpdate
Шаг 2 - Настройка
Мы добавим 5 "upstream" серверов (источников времени) в нашу конфигурацию. Вы можете использовать как имена хостов, так и их IP адреса. Я предлагаю для трех серверов использовать IPv4 адреса, а для двух серверов их имена.
Опционально: Если вы используете имя хоста, проверьте, доступно ли оно по IPv6
Есть два общедоступных списка серверов:
(Нажмите, чтобы развернуть) Разница между Stratum первого и второго уровня
Основные серверы называются Stratum 1 и они напрямую подключены к источнику точного времени, который называется Stratum 0. Такими источниками могут быть атомные часы, GPS приемник или система радио навигации. Сервер времени Stratum 1 передает время другим устройствам в сети, уровня Stratum 2. Они так же могут использоваться в качестве источника времени и оборудование, выполняющее с ними синхронизацию становятся устройствами с уровнем Stratum 3.
Отсортируйте список по ISO коду и выберите серверы, которые находятся к вам ближе всего географически. Нажмите на ISO код для получения дополнительных сведений о сервере, таких как имя хоста или IP адрес. Вы должны выбрать два сервера из первого списка и три из второго.
Не выбирайте серверы закрытые для общего пользования. Эти серверы будут блокировать запросы на синхронизацию.
Откройте файл /etc/ntp.conf
, удалите содержимое, добавьте строки ниже и замените ntp_your_host_X
на выбранные вами серверы.
driftfile /var/lib/ntp/drift
server ntp_your_host_1 iburst
server ntp_your_host_2 iburst
server ntp_your_host_3 iburst
server ntp_your_host_4 iburst
server ntp_your_host_5 iburst
restrict -4 default kod notrap nomodify nopeer noquery limited
restrict -6 default kod notrap nomodify nopeer noquery limited
restrict 127.0.0.1
restrict -6 ::1
restrict source notrap nomodify noquery
Что означают все эти параметры? (Нажмите, чтобы развернуть)
driftfile
Файл содержит только одно значение для корректировки тактовой частоты системных часов после каждого запуска системы или сервиса.
iburst
С включенной опцией iburst на NTP сервер отправляется до десяти запросов на синхронизацию в течении минуты. Когда iburst выключен, отправляется только один запрос.
default
Данная опция по умолчанию запрещает все, что явно не разрешено.
kod
Опция kod позволяет отправлять так называемые a «kiss-of-death» пакеты, если доступ запрещен.
notrap
Параметр notrap предотвращает прерывания протокола управления сообщениями ntpdc.
nomodify
Параметр nomodify предотвращает попытки изменения конфигурации.
nopeer
Опция nopeer предотвращает синхронизацию сервера с обслуживаемым хостом
noquery
С опцией noquery сервер игнорирует запросы ntpq
и ntpdc
, но не запросы на синхронизацию времени.
Ниже приведен пример на разрешение запросов от localhost. Здесь вы также можете добавить необходимые IP адреса или диапазоны IP адресов.
restrict 127.0.0.1
restrict -6 ::1
Шаг 3 - Включение и запуск службы NTP
Запустите службу NTP выполнив systemctl start ntp
и включите ее автозапуск в процессе загрузки системы командой systemctl enable ntp
.
Теперь командой ntpq -p
можно проверить начал ли сервер выполнять синхронизацию с одним из указанных NTP серверов.
Колонка remote
показывает имена хостов удаленных серверов, refid
говорит о том, какой из серверов выбран в качестве источника. Для серверов уровня Stratum 1 в поле refid
должен быть указан GPS, PPS, ACTS или PTB, для уровня Stratum 2 должен быть указан вышестоящий сервер. Колонка st
показывает stratum сервера. Delay
, offset
и jitter
говорит о качестве источника времени. Чем меньше значения, тем лучше.
Если на вашем сервере установлен брандмауэр, не забудьте открыть порт 123
. В случае с iptables это можно сделать двумя командами:
iptables -A INPUT -p udp -m udp --dport 123 -j ACCEPT
ip6tables -A INPUT -p udp -m udp --dport 123 -j ACCEPT
Шаг 4 - Добавление NTP сервера в пул публичных серверов (не обязательно)
Проект pool.ntp.org представляет собой большой виртуальный кластер серверов времени, обеспечивающих надежный и простой в использовании сервис NTP для миллионов пользователей. Этот пул состоит из сотен миллионов систем по всему миру. Он также является сервером времени по умолчанию для большинства дистрибутивов Linux и различных сетевых устройств.
Если у вас есть домен и IPv6 адрес, вы должны настроить две DNS записи, чтобы данный проект также знал ваш IPv6 адрес. В зависимости от того, сколько NTP-серверов вы хотите развернуть, замените X
на соответствующее число или удалите его.
ntpX.example.com. 14400 IN A 10.0.0.1
ntpX.example.com. 14400 IN AAAA 2001:db8:1234::1
Чтобы добавить свой NTP сервер в пул, необходимо создать учетную запись. Нажмите Continue to login
и зарегистрируйте аккаунт.
После этого вы сможете добавить новый сервер используя доменное имя сервера ntpX.example.com
или его IP адрес. Установите максимальную скорость сети Net speed
, которую вы можете выделить пулу для запросов клиентов на синхронизацию, вот и все.
Заключение
Теперь у вас есть свой собственный NTP сервер. Вы можете использовать его для синхронизации времени на ваших серверах или просто добавить его в общедоступный пул NTP серверов!
Для поддержания сервера в актуальном состоянии следите за новостями на портале NTP pool. Также доступна RSS лента новостей.