- unboxIT
- Правильная настройка сервера времени NTP на Linux
- Добавить комментарий
- ⏲️ Как установить и настроить NTP-сервер и NTP-клиент на Linux?
- Что такое NTP-сервер?
- Что такое NTP-клиент?
- Что такое Chrony ?
- Зачем нам нужен NTP сервер?
- СТОРОНА NTP-СЕРВЕРА: Как установить NTP-сервер на Linux?
- Как настроить NTP-сервер на Linux?
- Установка и настройка NTP-сервера на Linux CentOS 8
- Установка сервера
- Настройка NTP
- Тестирование
- Настройка клиента Linux
- Chrony
unboxIT
Если информация была полезной для вас, вы можете поблагодарить за труды Яндекс деньгами: 41001164449086 или пластиковой картой:
Правильная настройка сервера времени NTP на Linux
В интернете можно найти целое море мануалов по настройке сервера времени — ntpd, но ирония состоит в том, что 95% из них либо не совсем верны, и авторы этого даже не замечают, либо не дают необходимой информации. Далее я расскажу как организовать NTP сервер под Linux в локальной сети, который будет синхронизировать своё время с серверами в Интернете, а устройства в локальной сети будут уже синхронизировать время с ним.
Немного пред истории. Как и положено, всё началось неожиданно, сервер который я настраивал на кануне ночью, при следующей загрузки завис. «Шикарно» подумал я и полез в логи. В результате в том что сервер вис был повинен ntpd сервис, который из-за неправильной настройки сети не мог связаться внешним сервером для синхронизации. Посмотрев скрипт запуска, я наткнулся на интересную запись:
А теперь внимание на строку с номером 8. Это начало цикла, в котором целых 7-мь раз будет предпринята попытка начальной, грубой синхронизации времени. Всё бы хорошо, но если у вас неправильно настроена сеть, или DNS, то вызовет подвисание сервера, на 7*( 1 + время проверки доступности DNS, порядка 5 сек ) секунд. В общем ждать минуту меня явно не устраивало, итак приступим.
Настройка начальной, грубой синхронизации
В замечательном файле /etc/ntp/step-tickers, хранятся имена серверов с которыми производиться начальная, грубая (сотни милесекунд) корректировка. Если вы уверены что у вас всегда будет доступ к Internet, можете перечислить в нём имена серверов, например:
Но если у вас в момент начальной загрузки сервера связь с интернетом будет отсутствовать, то при определённых условиях, это вызовет подвисание консоли на довольно продолжительное время. Именно по этому я стёр все записи от туда. В конце концов я могу и в ручную сделать грубую корректировку времени. Есть ещё вариант поиграться с опциями и подправить скрипт запуска, но это не мой путь. По этому переходим непосредственно к настройки полноценного NTP сервера, который будет синхронизировать свое время с публичными серверами в Интернете, и предоставлять его участникам локальной сети в случае необходимости.
Задача: Организовать NTP сервер в локальной сети, который будет синхронизировать своё время с Интернетом, а устройства в локальной сети будут уже синхронизировать время с ним.
Дистрибутив: Mandriva 2010.2 free Версия ntpd: 4.2.4p8
Мир Linux действительно великолепен, все настройки в нём сводятся к простому редактированию файлов конфигураций. ntpd в этом плане не исключение. Итак если у вас ещё не стоит ntpd сервер установим его:
Желающие могут скомпилировать из исходников, или установить его другим способом, в мои же платны входит показать как настроить это чудо, по скольку в интернете можно найти целое море мануалов по настройке ntpd, но ирония состоит в том, что 95% из них либо не совсем верны (и авторы этого даже не замечают при вызове статусов) либо не дают необходимой информации. Итак файл с настройками храниться в /etc/ntp.conf, минимальные настройки примерно такие:
Каждая строчка указывает на сервер (списки серверов можно найти здесь http://www.pool.ntp.org), с которым будет происходить синхронизация. Четыре строчки с server, соответственно четыре сервера. Хотя на самом деле в данном примере это не совсем так. Каждая запись указывает на пул (группу) серверов. При обращении скажем по адресу 2.ru.pool.ntp.org будет выбран 1 IP адрес сервера, с которым будет происходить синхронизация. Соответствия обновляются 1 раз в час. Теперь на более простом примере. Всего у нас имеется 4 коробки с часами. Мы берём и наугад достаём из каждой коробки 1 часы, всего у нас получается 4 часов, с которыми мы будем сверять наше время. В течении часа, каждый раз когда мы будем сверять время, мы будем брать одни и те же часы. Через час если мы опять обратимся к этим коробкам, то вытащим уже другие часы. Таким образом наше время будет сверяться постоянно с разными часами, и если какие-то из них окажутся не рабочими, то ничего страшного не случиться, ведь за 1 час, наши локальные часы не слишком сильно рассинхронизируются. Ну да мы отвлеклись, продолжим. Прежде чем запускать сервер ntpd, необходимо произвести начальную, грубую установку времени. Можно просто выставить время руками, а можно выполнить команду (разумеется если у нас корректно работает связь с интернетом):
После того как время грубо синхронизировано можно запускать основной сервис (на всякий случае перезапустим его):
После чего выполним команду:
В результате должны увидеть что-то на подобии:
Небольшие пояснения что есть что. remote — FQDN или IP-адрес сервера; refid — IP-адрес сервера с которым в настоящий момент выполняется синхронизация сервера из столбца remote; st — stratum сервера; t — режим работы сервера: ‘u’ — unicast, ‘m’ — multicast, ‘b’ — broadcast, ‘-‘ — manycast; when — время, прошедшее с момента последнего ответа сервера в секундах или ‘-‘, если сервер еще ни разу не ответил (скорее всего, «умер», и сведения о нем пора удалить из файла конфигурации); poll — интервал опроса сервера в секундах (после запуска имеет небольшое значение, чтобы синхронизация происходила быстрее, с течением времени значение увеличивается); reach — состояние восьми последних попыток запроса времени у сервера в восьмеричном представлении (в случае успешной попытки устанавливается соответствующий бит); delay — задержка ответа сервера в секундах; offset — самое важное значение — различие локального времени и времени на сервере (с течением времени значение уменьшается, т.к. время становится более точным); jitter — дисперсия, дрожание фазы (более низкие значения обеспечивают более точную синхронизацию). Ждём 10 минут. Повторяем, команду и видем:
Ага, вот оно появились всякие дополнительные символы и вот что они означают: ‘*’ — сервер, с которым в настоящий момент выполняется синхронизация, ‘#’ — сервер отобран для синхронизации, но дистанция до него превышает максимально возможную, ‘?’ — сервер отобран для синхронизации и использует сигнал PPS, ‘+’ — сервер добавлен в список серверов, отобранных для синхронизации, ‘x’ — сервер использует некорректный алгоритм, ‘.’ — сервер выбран из конца списка серверов, отобранных для синхронизации, ‘-‘ — сервер отвергнут группирующим алгоритмом, пробел — сервер имеет слишком высокий stratum и/или не может быть проверен; Теперь по простому, если видем ‘+’, ‘-‘, ‘*’ синхронизация пошла. offset — отклонение нашего времени и времени удалённого сервера, если значение скажем больше 100, то синхронизация реально не произошла. На некоторых ресурсах можно увидеть следующую картину:
Видим что половина серверов (2, 3, 4) вообще не работает и реально происходит работа с локальным сервером и с 172.22.128.8. Смотрим значение offset которое говорит что никакой синхронизации нет и в помине! Из листинга можно сделать только один вывод, что сервер засинхронизирован сам с собой, и его время имеет мало общего с действительным. Будьте внимательны, не давайте вас нае. обмануть 🙂 На этом бы можно и остановиться но теперь как говориться усложняем задачу. Нам надо чтоб наш сервер являлся источником времени для локальной сети, но при этом никто не смог сделать ничего плохого с вашим сервером. В чём проблема? В том что для нормальной синхронизации, даже если вы не планируете кому то давать синхронизировать время с вами, У ВАС ДОЛЖЕН быть открытым порт udp 123. После прочтения множества мануалов и дня потерянного времени вот что в /etc/ntp.conf получилось у меня:
Вникаем внимательно. Наш сервер засинхронизирован с 6-тью внешними пулами серверов, строки с 02 по 07. Строка 10, мы запрещаем кому либо чтобы-то не было делать с нашим сервером. Теперь нам надо внести исключение для серверов с которыми наш сервер будет синхронизироваться, строки с 13 по 18. При этом параметры nomodify notrap, говорят о том что запрещено изменять состояние НАШЕГО сервера и отправлять сообщения об исключениях ВНЕШНИМИ серверами, т. е. чтоб никто из этих серверов ничего не натворил. Строка 22, мы разрешаем участникам локальной сети синхронизировать время с нашим сервером, но при этом тоже вводим ограничение. Теперь самая важная строка — 25, будем считать что это локальная петля. Без неё работать не будет. В итоге, наш сервер синхронизируется с внешними серверами, при этом сам является сервером но только для нашей локальной сети, всем остальным доступ запрещён. Ещё раз перезапустим сервис:
Пойдём покурим, выпьем чаю, кофе (нужное подчеркнуть), после чего выполним команду:
Видим, наш сервер засинхронизирован, отклонение не превышают и 50мс. Настройка NTPD практически одинакова для всех Xnix систем, и отличается по сути только способом запуска. Всем советую ознакомиться также со статьёй где расписан вариант настройки для FreeBSD. http://www.sergeysl.ru/freebsd-ntpd/ Вот собственно и всё.
Добавить комментарий
Если информация была полезной для вас, вы можете поблагодарить за труды Яндекс деньгами: 41001164449086 или пластиковой картой:
Источник
⏲️ Как установить и настроить NTP-сервер и NTP-клиент на Linux?
Возможно, вы слышали это слово много раз, а также, возможно, работали с ним.
Тем не менее, я расскажу вам ясно в этой статье о настройке NTP-сервера и NTP-клиента
О настройке Chrony NTP Client мы узнаем позже.
Что такое NTP-сервер?
NTP означает сетевой протокол времени.
Это сетевой протокол, который синхронизирует часы между компьютерными системами по сети.
Он будет сохранять одинаковое время (точное время) для всех систем, которые подключены к NTP-серверу через NTP или клиент Chrony.
NTP обычно может поддерживать время с точностью до десятков миллисекунд по общедоступному Интернету и может достигать точности, превышающей одну миллисекунду, в локальных сетях при идеальных условиях.
Он использует протокол пользовательских дейтаграмм (UDP) на порту номер 123 для отметок времени отправки и получения.
Это клиент / серверное приложение.
Он отправляет и получает временные метки с использованием протокола пользовательских дейтаграмм (UDP) на порту 123.
Что такое NTP-клиент?
NTP-клиент синхронизирует свои часы с сетевым сервером времени.
Что такое Chrony ?
Chrony – это замена NTP-клиента.
Он может синхронизировать системные часы с большей точностью и может быть особенно полезен для систем, которые не подключены к сети все время.
Зачем нам нужен NTP сервер?
Чтобы все серверы в вашей организации были синхронизированы с точным временем выполнения заданий, основанных на времени.
Чтобы прояснить это, я расскажу вам сценарий.
Скажем, например, у нас есть два сервера (Server1 и Server2).
Server1 обычно выполняет пакетные задания в 10:55, а затем Server2 необходимо выполнить другое задание в 11:00 на основании отчета о завершении задания Server1.
Если обе системы используют в разное время (если одна система опережает другие, другие отстают от этой конкретной), мы не сможем это сделать.
Для этого нам нужно настроить NTP.
Надеюсь, это убрало ваши сомнения по поводу необходимости NTP.
В этой статье мы будем использовать следующую настройку, чтобы проверить работу NTP
- NTP-сервер: HostName: CentOS7.itisgood.ru, IP: 192.168.1.8, ОС: CentOS 7
- NTP-клиент: HostName: Ubuntu18.itisgood.ru, IP: 192.168.1.5, ОС: Ubuntu 18.04
СТОРОНА NTP-СЕРВЕРА: Как установить NTP-сервер на Linux?
Не существует разных пакетов для NTP-сервера и NTP-клиента, так как это модель клиент / сервер.
Пакет NTP доступен в официальном репозитории дистрибутива, поэтому используйте его для установки.
Для системы Fedora используйте DNF для установки ntp.
Для систем Debian / Ubuntu используйте команду APT-GET или APT для установки ntp.
Для систем на основе Arch Linux используйте Pacman для установки ntp.
Для систем RHEL / CentOS используйте команду YUM для установки ntp.
Для системы openSUSE Leap используйте Zypper для установки ntp.
Как настроить NTP-сервер на Linux?
После установки пакета NTP убедитесь, что вы раскомментировали следующую конфигурацию в файле /etc/ntp.conf на стороне сервера.
По умолчанию конфигурация NTP-сервера основана на X.distribution_name.pool.ntp.org.
Если вы хотите, вы можете использовать конфигурацию по умолчанию или изменить ее в соответствии с вашим местоположением (в зависимости от страны), посетив https://www.ntppool.org/zone/@
Если вы находитесь в Индии, то ваш NTP-сервер будет 0.in.pool.ntp.org, и он будет работать для большинства стран.
Мы разрешили только клиентам подсети 192.168.1.0/24 получать доступ к NTP-серверу.
Поскольку брандмауэр по умолчанию включен в дистрибутивах на основе RHEL 7, разрешите использование сервера / службы ntp.
Для системы на основе Debian нам нужно запустить ntp вместо ntpd.
Для systemctl систем
СТОРОНА КЛИЕНТА NTP: Как установить клиент NTP в Linux?
Как я уже упоминал ранее в этой статье.
Не существует специального пакета для NTP-сервера и клиента. Итак, установите этот же пакет на клиенте.
Для системы Fedora используйте DNF для установки ntp.
Для систем Debian / Ubuntu используйте команду APT-GET или APT для установки ntp.
Для систем на основе Arch Linux используйте Pacman для установки ntp.
Для систем RHEL / CentOS используйте команду YUM для установки ntp.
Для системы openSUSE Leap используйте Zypper для установки ntp.
Я установил и настроил NTP-сервер на CentOS7.itisgood.ru, добавив те же самые настройки на все клиентские машины.
Для системы на основе Debian нам нужно запустить ntp вместо ntpd.
Для systemctl систем.
Для системы на основе Debian нам нужно запустить ntp вместо ntpd.
Подождите несколько минут после перезапуска службы NTP, чтобы получить время синхронизации с NTP-сервером.
Выполните следующие команды, чтобы проверить состояние синхронизации сервера NTP в Linux.
Выполните следующую команду, чтобы получить текущий статус ntpd.
Наконец, запустите команду date
Если вы наблюдаете значительное смещение по времени на выводе NTP, выполните следующую команду, чтобы синхронизировать часы вручную с NTP-сервера.
Убедитесь, что ваш NTP-клие неактивен, когда вы выполняете команду.
Источник
Установка и настройка NTP-сервера на Linux CentOS 8
Сервер синхронизации времени NTP помогает актуализировать время на всех узлах сети. В инструкции рассказано о его установке и настройке на Linux CentOS 8.
Установка сервера
В CentOS 8 пакетом для синхронизации времени является chrony — он пришел на смену ntpd.
Устанавливаем его командой:
dnf install chrony
Разрешаем автозапуск и стартуем сервис:
systemctl enable chronyd —now
Настройка NTP
Открываем файл с настройками:
Настраиваем серверы, с которых наш NTP будет брать эталонное время. Например:
#pool 2.centos.pool.ntp.org iburst
server 192.168.0.100 iburst prefer
server 192.168.0.110 iburst
server 127.127.1.0
- pool — указывает на выполнение синхронизации с пулом серверов.
- server — указывает на выполнение синхронизации с сервером.
- iburst — отправлять несколько пакетов (повышает точность).
- prefer — указывает на предпочитаемый сервер.
- server 127.127.1.0 — позволит в случае отказа сети Интернет брать время из своих системных часов.
* в данном примере мы закомментировали указанный пул по умолчанию и добавили свои серверы 192.168.0.100 и 192.168.0.110.
* в данном примере мы разрешаем синхронизацию времени с нашим сервером для узлов сети 192.168.0.0/255.255.255.0.
systemctl restart chronyd
Добавляем правило в брандмауэр:
firewall-cmd —permanent —add-service=ntp
Тестирование
Проверить состояние получения эталонного времени можно командой:
Мы должны увидеть, примерно, следующее:
210 Number of sources = 2
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^? 127.127.1.0 0 6 0 — +0ns[ +0ns] +/- 0ns
^* server-01.dmosk.local 2 6 17 55 +629us[+1184us] +/- 152ms
Отобразить текущее время можно командой:
Для настройки часового пояса применяем команду:
timedatectl set-timezone Europe/Moscow
* московское время (GMT+3).
Проверить отдачу времени сервером можно введя команду на другом Linux:
* где 192.168.0.15 — адрес нашего NTP-сервера.
Правильный ответ имеет следующий вид:
ntpdate[3576]: adjust time server 192.168.0.15 offset 0.017657 sec
* время было рассинхронизировано на 0.017657 секунд.
Настройка клиента Linux
Для клиентов можно выбрать несколько стратегий настройки — мы рассмотрим 3:
- С помощью Chrony.
- Сервис ntpd.
- Утилиты ntpdate.
Начнем с Chrony.
Chrony
Команда для установки зависит от типа дистрибутива Linux.
а) Ubuntu / Debian:
apt-get install chrony
yum install chrony
После установки открываем /etc/chrony.conf:
. и в качестве сервера оставляем только наш локальный сервер, например:
server 192.168.156.215 iburst
Разрешаем автозапуск сервиса:
systemctl enable chronyd || systemctl enable chrony
systemctl restart chronyd || systemctl restart chrony
Источник