Linux
Настройка NTP сервера на Linux ОС
Last updated
Was this helpful?
Настройка NTP сервера на Linux ОС
Last updated
Was this helpful?
Перед установкой сервера времени нужно убедиться, что в системе правильно настроен часовой пояс, проверить и изменить это можно командой ниже, данную и все последующие команды следует выполнять с правами суперпользователя:
После установки часового пояса можно посмотреть текущее время и дату командой:
Сейчас по умолчанию используется служба timedatectl, в Debian она встроенна в подсистему инициализации systemd, порт 123 (NTP) занят этой службой, для настройки утилиты ntp нужно отключить timedatectl следующей командой:
Теперь приступаем к установки пакета NTP-сервера, для этого нужно обновить список пакетов и установить ntp следующими командами:
Пакет работоспособен сразу после установки и стандартная конфигурация достаточно актуальна, но лучше внести в нее некоторые дополнительные изменения. Для изменения настроек откроем файл ntp.conf командой:
Начнем с вышестоящих серверов для синхронизации времени, рекомендуется выбирать ближайшие сервера, их адреса можно получить на сайте. Затем найдем в конфигурационном файле следующую секцию:
Удалим резервные пулы адресов NTP сервером, т. к. воспользуемся одним:
В данном примере приведены настройки для использования российских серверов времени. Ниже зададим настройку для синхронизации с аппаратными часами на случай отсутствия синхронизации с серверами в интернет:
Первая строка задает адрес аппаратных часов - 127.127.1.0, вторая указывает приоритет - stratum - он выбран таким образом, чтобы при наличии интернета NTP-сервер не синхронизировался с аппаратными часами. У серверов входящих в пулы ntp.org значение stratum равно двум. Затем перейдем к списку контроля доступа, который состоит из сетевых адресов отсортированных по возрастанию адресов и масок. Запись по умолчанию - default соответствует адресу 0.0.0.0 с маской 0.0.0.0, если в записи не указана маска, то автоматически подставляется значение 255.255.255.255, что соответствует конечному хосту. Кроме адресов строки списка содержат флаги, они указывают на те или иные ограничения, если строка не содержит флагов - это означает полный доступ к серверу. По умолчанию список контроля доступа, следующий:
Разберем его подробнее. Первые две строки задают значения по умолчанию, т.е. для любых клиентов, в сетях IPv4 и IPv6:
Перечисленные флаги имеют значения:
kod - отправка клиенту, посылающему нежелательные запросы, пакета KoD (Kiss O'Death), получатель такого пакета обязан выполнить предписанную ему проверку и изменить свое поведение, в противном случае такой клиент будет отключен от сервера;
notrap - запрет приема управляющих сообщений;
nomodify - запрет приема сообщений, изменяющих состояние сервера;
nopeer - запрет установки одноранговых отношений с другими NTP-серверами;
noquery - запрет любых запросов для синхронизации времени поступающих с других серверов;
limited - запрет обслуживания, если интервал между пакетами от клиента превышает разрешенные значения.
Под ними расположены строки, дающие полный доступ к серверу локальной системе:
Отсутствие маски указывает на то, что это конечный узел, а отсутствие флагов предоставляет полный доступ. После внесения изменений следует перезапустить службу:
Проверить ее статус можно командой:
Состояние синхронизации с вышестоящими серверами можно узнать командой:
Которая выдаст нам следующий вывод:
О чём говорят названия столбцов:
remote - удалённые сервера, с которыми вы синхронизируете время;
refid - вышестоящий stratum для данного сервера;
st - уровень stratum. От 0 (нам недоступно) до 16 (нам не желательно). Идеально - 2.
t - тип соединения. "u" - unicast или manycast, "b" - broadcast или multicast, "l" local reference clock, "s" - симметричный узел, "A" - manycast сервер, "B" - broadcast server, "M" - multicast сервер;
when - время, когда последний раз сервер ответил нам. Параметр отображает число в секундах, но может в минутах, если число с m или в часах, если h;
poll - частота опроса. Минимум 16 секунд, максимум 32 часа. Число должно быть 2n. Обычно в данном параметре наблюдается или 64 секунды или 1024;
reach - 8 бит октета, показывающий статус общения с удалённым сервером времени: успешный или сбойный. Если биты установлены - то успешно, иначе - сбой. Значение 377 - бинарное это 0000 0000 1111 1111;
delay - значение в миллисекундах показывает время между отправкой и получения ответа (round trip time - RTT);
offset - смещение в миллисекундах между вами и серверами времени. Может быть положительным и отрицательным числом;
jitter - абсолютное значение в миллисекундах с указанием среднеквадратичного отклонения вашего смещения.
Перед IP адресом NTP сервера есть символ - это tally code. Виды tally code:
" " - отброшен как недопустимый. Например, нет связи с ним или он в оффлайн, он слишком высокого ранга и не обслуживает таких как вы.
"x" - отброшен алгоритмом "пересечения" (intersection algorithm). Алгоритм пересечения подготавливает список кандидатов партнеров, могущих стать источниками синхронизации и вычисляет доверительный интервал для каждого из них.
"." - отброшен из-за переполнения таблицы.
"-" - отброшен алгоритмом кластеризации (cluster algorithm). Алгоритм кластеризации сортирует список кандидатов по кодам слоя и расстояния синхронизации.
"+" - сервер включён алгоритмом "комбинирования" (combine algorithm). Этот сервер - отличный кандидат если текущий сервер времени начнёт отказывать вам.
"#" - сервер является отличным альтернативным сервером времени. Сервер с # можно увидеть только если у вас более 10 записей server в /etc/ntp.conf
"*" - текущий сервер времени. Его показания используются для синхронизации ваших часов.
"o" - сервер Pulse per second (PPS). Обычно это означает, что данный сервер времени использует источники времени типа GPS спутников и другие сигналы точного времени. Если рисуется о, то другие типы tally code уже отображаться не будут.
NTP-сервер настроен!
Теперь осталось синхронизировать клиентскую машину. Повторяем предыдущие действия, а именно:
Меняем часовой пояс;
Отключаем службу timedatectl;
Обновляем список пакетов;
Качаем пакет ntp;
Настраиваем конфигурационный файл ntp.conf. В секции с адресами убираем все адреса строчке pool debian.pool.ntp.org iburst на pool "IP адрес сервера" iburst;
Перезапускаем службу;
Проверяем синхронизации с серверами. Если в выводе видим сервер с символом "*", значит все настроено верно!