- NTP сервер на Linux Ubuntu
- Установка сервера
- Настройка NTP
- Дополнительные настройки
- Тестирование
- Настройка клиента Linux
- NTP
- ntpdate
- Настройка клиента Windows
- Некоторые ошибки
- 1. the NTP socket is in use, exiting
- 2. Connection refused
- 3. no server suitable for synchronization found
- ⏲️ Как проверить, работают ли настройки NTP (синхронизация) или нет в Linux?
- Способ 1: Как проверить состояние NTP с помощью команды ntpq?
- Способ 2: Как проверить состояние NTP с помощью команды ntpstat?
- Способ 3: Как проверить состояние NTP с помощью команды timedatectl?
- Установка и настройка NTP-сервера на Linux CentOS 8
- Установка сервера
- Настройка NTP
- Тестирование
- Настройка клиента Linux
- Chrony
NTP сервер на Linux Ubuntu
Опубликовано: 12.01.2018
Тематические термины: NTP, Linux, Ubuntu. Следить за актуальностью времени на всех узлах локальной сети удобнее с помощью сервера синхронизации времени NTP. В инструкции рассказано об установке и настройке такого сервера на Linux Ubuntu Server 16.04. Данное руководство можно использовать для настройки ntpd на любом другом Linux (например, Debian или CentOS).
Установка сервера
Настройка NTP
pool ru.pool.ntp.org iburst
server ntp2.vniiftri.ru iburst prefer
pool 0.ubuntu.pool.ntp.org iburst
pool 1.ubuntu.pool.ntp.org iburst
server 127.127.1.0
* iburst — отправлять несколько пакетов (повышает точность); ru.pool.ntp.org / 0.ubuntu.pool.ntp.org / 1.ubuntu.pool.ntp.org — адреса серверов, с которыми наш сервер будет сверять время; server — указывает на выполнение синхронизации с сервером, а не пулом серверов; prefer — указывает на предпочитаемый сервер. server 127.127.1.0 — позволит в случае отказа сети Интернет брать время из своих системных часов. Настраиваем безопасность:
restrict default kod notrap nomodify nopeer noquery
restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap
restrict 127.0.0.1
restrict ::1
- restrict default — задает значение по умолчанию для всех рестриктов.
- kod — узлам, которые часто отправляют запросы сначала отправить поцелуй смерти (kiss of death), затем отключить от сервера.
- notrap — не принимать управляющие команды.
- nomodify — запрещает команды, которые могут вносить изменения состояния.
- nopeer — не синхронизироваться с хостом.
- noquery — не принимать запросы.
- restrict 192.168.0.0 mask 255.255.255.0 — разрешить синхронизацию для узлов в сети 192.168.0.0/24.
- IP адреса127.0.0.1 и ::1 позволяют обмен данные серверу с самим собой.
Настройки по умолчанию могут быть разные для IPv4 и IPv6:
restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery
systemctl restart ntp || service restart ntp
Если используется брандмауэр, добавляем правило:
iptables -I INPUT 1 -p udp —dport 123 -j ACCEPT
ufw allow in on enp2s0 to any port 123 proto udp
* где enp2s0 — сетевой интерфейс, на котором слушает наш сервер.
Дополнительные настройки
Настройка файла хранения логов:
Тестирование
Проверить состояние получения эталонного времени можно командой:
Мы должны увидеть, примерно, следующее:
remote refid st t when poll reach delay offset jitter
==============================================================================
ru.pool.ntp.org .POOL. 16 p — 64 0 0.000 0.000 0.000
ntp.ubuntu.com .POOL. 16 p — 64 0 0.000 0.000 0.000
*91.189.94.4 17.253.34.253 2 u 58 64 377 55.802 3.790 0.412
-91.189.91.157 132.246.11.231 2 u 56 64 377 113.456 -1.746 0.334
+91.189.89.198 192.53.103.108 2 u 1 64 377 54.595 4.229 0.608
+91.189.89.199 17.253.34.253 2 u 61 64 377 54.061 2.637 0.557
- remote — адрес сервера времени, с которым синхронизируется наш сервер;
- refid — вышестоящий сервер (с которым сервер из графы выше получает время);
- st — уровень сервера (stratum);
- t — пир (unicast или multicast);
- when — когда последний раз сверялось время;
- poll — периодичность синхронизации с этим сервером;
- reach — состояние работоспособности. Если удалось произвести синхронизации восемь раз в подряд становится равным 377;
- delay — время задержки;
- offset — разница между нашим временем и временем на сервере; положительное — наши часы спешат, отрицательное — отстают;
- jitter — смещение времени на удаленном сервере;
- * — с этим сервером синхронизирует время наш ntpd;
- + — сервер можно использовать для сверки часов;
- — — не рекомендован для синхронизации;
- x — не доступен.
Проверить отдачу времени сервером можно введя команду на другом Linux:
Правильный ответ имеет следующий вид:
ntpdate[3576]: adjust time server 192.168.0.15 offset 0.017657 sec
* время было рассинхронизировано на 0.017657 секунд.
Отобразить текущее время можно командой:
Если после синхронизации время некорректно, настраиваем правильный часовой пояс:
cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime
Настройка клиента Linux
Для клиентов можно выбрать 2 стратегии настройки — с помощью ntp или утилиты ntpdate.
NTP
В настройка /etc/ntp.conf в качестве сервера оставляем только наш локальный сервер, например:
Остальные pool и server удаляем или комментируем.
systemctl restart ntp || service restart ntp
ntpdate
Утилита командной строки выполняет разовую синхронизацию. Чтобы автоматизировать процесс, добавляем задание в cron:
0 0 * * * /usr/sbin/ntpdate 192.168.0.15
* в данном примере задание будет выполняться раз в день в 00:00. /usr/sbin/ntpdate — полный путь расположения утилиты, в разных системах может быть разным — проверить стоит командой which ntpdate.
Настройка клиента Windows
В командной строке выполняем:
w32tm /config /manualpeerlist:»192.168.0.15,0×8″ /syncfromflags:manual /update
Некоторые ошибки
1. the NTP socket is in use, exiting
Как правило, данная ошибка возникает при попытке синхронизировать время с помощью ntpdate, когда в системе работает демон ntp.
Причина: NTP сокет в системе уже занят, как правило, ntpd.
Решение: либо не использовать ntpdate, так как ntp умеет сверять время, либо отключить сервис ntpd командой service ntp stop.
2. Connection refused
Возникает при попытке выполнить команду ntpq -p.
Причина: нет разрешения на обращение к серверу.
Решение: проверьте, удастся ли выполнить запрос командой ntpq -pn 127.0.0.1 или ntpq -pn ::1. Также убедитесь, что настройка restrict позволяет серверу подключаться к самому себе по нужному протоколу.
3. no server suitable for synchronization found
Ошибка появляется при попытке синхронизировать время с другим сервером синхронизации.
Причина: сервер синхронизации не доступен по одной из причин: 1) не работает или выключен, 2) установлен restrict, 3) на сервере не запущен ntpd, 4) нет сетевой доступности из-за проблем на сети или брандмауэра.
- Убедиться, что сервер доступен по сети.
- Проверить настройки ntp.conf — наличие соответствующего restrict.
- Проверить состояние сервиса командой service ntp status.
- Проверить настройки брандмауэра — убедиться в наличие правила, которое разрешает UDP порт 123.
⏲️ Как проверить, работают ли настройки NTP (синхронизация) или нет в Linux?
NTP это сетевой протокол времени, который синхронизирует часы между компьютерными системами по сети.
NTP-сервер поддерживает синхронизацию всех серверов в вашей организации с точным временем выполнения заданий.
NTP-клиент синхронизирует свои часы с сетевым сервером времени.
Мы уже написали статью об установке и настройке NTP-сервера и клиента.
Я предполагаю, что мы уже настроили NTP-сервер и NTP-клиент, используя вышеуказанные ссылки.
Теперь, как проверить, правильно ли работает настройки NTP?
В Linux доступны три команды для проверки синхронизации NTP.
В этой статье мы расскажем вам, как проверить синхронизацию NTP с помощью всех этих команд.
- ntpq: ntpq – стандартная программа запросов NTP.
- ntpstat: показывает состояние синхронизации времени в сети.
- timedatectl: управляет системным временем и датой в systemd.
Способ 1: Как проверить состояние NTP с помощью команды ntpq?
Утилита ntpq используется для мониторинга операций NTP-демона ntpd и определения производительности.
Программа может быть запущена в интерактивном режиме или управляться с помощью аргументов командной строки.
Он выводит список пиров, которые соединились, отправив несколько запросов на сервер.
Если NTP работает правильно, вы получите вывод, аналогичный приведенному ниже.
# ntpq -p remote refid st t when poll reach delay offset jitter ============================================================================== *CentOS7.2daygee 133.243.238.163 2 u 14 64 37 0.686 0.151 16.432
Способ 2: Как проверить состояние NTP с помощью команды ntpstat?
ntpstat сообщит о состоянии синхронизации демона NTP (ntpd), работающего на локальной машине.
Если будет установлено, что локальная система синхронизирована с эталонным источником времени, ntpstat сообщит о приблизительной точности времени.
Команда ntpstat возвращает три вида кода состояния на основе синхронизации NTP. Подробности ниже.
- 0: возвращает 0, если часы синхронизированы.
- 1: Возвращает 1, если часы не синхронизированы.
- 2: Возвращает 2, если состояние часов не определено, например, если ntpd не доступен.
# ntpstat synchronised to NTP server (192.168.1.8) at stratum 3 time correct to within 508 ms polling server every 64 s
Способ 3: Как проверить состояние NTP с помощью команды timedatectl?
Команда timedatectl используется для запроса и изменения системного времени и его настроек в системе systmed.
# timedatectl или # timedatectl status Local time: Thu 2019-05-30 05:01:05 CDT Universal time: Thu 2019-05-30 10:01:05 UTC RTC time: Thu 2019-05-30 10:01:05 Time zone: America/Chicago (CDT, -0500) NTP enabled: yes NTP synchronized: yes RTC in local TZ: no DST active: yes Last DST change: DST began at Sun 2019-03-10 01:59:59 CST Sun 2019-03-10 03:00:00 CDT Next DST change: DST ends (the clock jumps one hour backwards) at Sun 2019-11-03 01:59:59 CDT Sun 2019-11-03 01:00:00 CST
Chrony это замена NTP-клиента.
Он может синхронизировать системные часы с большей точностью и может быть особенно полезен для систем, которые не подключены к сети все время.
chronyd меньше, он использует меньше памяти и пробуждает процессор только при необходимости, что лучше для экономии энергии.
Он может работать хорошо, даже если сеть перегружена в течение более длительных периодов времени.
Установка и настройка NTP-сервера на Linux CentOS 8
Опубликовано: 17.12.2020
Тематические термины: NTP, CentOS. Сервер синхронизации времени NTP помогает актуализировать время на всех узлах сети. В инструкции рассказано о его установке и настройке на Linux CentOS 8.
Установка сервера
В CentOS 8 пакетом для синхронизации времени является chrony — он пришел на смену ntpd. Устанавливаем его командой:
Настройка 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
Проверить отдачу времени сервером можно введя команду на другом Linux:
* где 192.168.0.15 — адрес нашего NTP-сервера.
Правильный ответ имеет следующий вид:
ntpdate[3576]: adjust time server 192.168.0.15 offset 0.017657 sec
* время было рассинхронизировано на 0.017657 секунд.
Настройка клиента Linux
Для клиентов можно выбрать несколько стратегий настройки — мы рассмотрим 3:
Chrony
Команда для установки зависит от типа дистрибутива Linux.
После установки открываем /etc/chrony.conf:
. и в качестве сервера оставляем только наш локальный сервер, например:
server 192.168.156.215 iburst
Разрешаем автозапуск сервиса:
systemctl enable chronyd || systemctl enable chrony
systemctl restart chronyd || systemctl restart chrony
Проверить состояние работы можно командой: