Настройка NTP сервера для локальной сети

Опубликовано:

Для синхронизации системных часов, серверов, рабочих станций, камер видео наблюдения, и других устройств в локальной сети.
Будем использовать локальный сервер точного времени с настроенным протоколом NTP (Network Time Protocol).

Устанавливаем NTP

apt-get install ntp

Все настройки производятся в одном единственном файле ntp.conf.
Добавляем данные в него.

mcedit /etc/ntp.conf

разрешим доступ к серверу времени только из нашей локальной сети

echo "#Разрешим доступ к серверу времени только из нашей локальной сети
echo "restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap nopeer ">> /etc/ntp.conf

Посмотрим конфигурационный файл ntp.conf

cat /etc/ntp.conf

если указанной ниже строки нет то добавляем ее или изменяем.

restrict default kod notrap nomodify nopeer noquery

* где:

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 позволяют обмен данные серверу с самим собой.

перезапускаем наш сервер NTP

service ntp restart

Для настройки автоматического запуска демона при загрузке системы, используйте специальную команду.

update-rc.d ntp defaults

Тестирование

Проверить состояние получения эталонного времени можно командой:

ntpq -pn

Ее вывод будет представлен в виде таблицы:

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 0.debian.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 1.debian.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 2.debian.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 3.debian.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
-195.141.190.190 10.17.10.20      3 u  520 1024  377   60.802    2.831   0.071
-213.141.154.170 89.109.251.22    2 u  999 1024  377   27.349    0.745   0.296
*89.175.20.7     .GPS.            1 u  35m 1024  376   28.392   -0.606   0.137
-85.21.78.8      89.175.22.41     2 u  937 1024  377   27.077   -0.428   0.496
+194.190.168.1   .GPS.            1 u  861 1024  377   30.165   -0.225  12.432
+85.21.78.91     89.109.251.23    2 u  743 1024  377   27.434   -0.619   0.247

В таблице указываются следующие параметры:

remote — адрес сервера точного времени (в этой графе отображаются серверы из списка в конфигурационном файле);
refid — вышестоящий сервер (тот, от которого сервер из предыдущей графы получает синхронизацию);
st — уровень (stratum) сервера;
t — тип пира (u- unicast, m- multicast);
when — время последней синхронизации;
poll — время в секундах, за которое демон NTP синхронизируется с пиром;
reach — состояние доступности сервера; после восьми успешных попыток синхронизации значение этого параметра становится равным 377;
delay — время задержки ответа от сервера;
offset — разница времени между нашим сервером и сервером синхронизации; положительное значение этого параметра означает, что наши часы спешат, отрицательное — что отстают;
jitter — смещение времени на удаленном сервере.
Слева от адреса сервера могут быть указаны следующие символы:
* сервер выбран для синхронизации;
+ сервер, пригодный для обновления (с которым можно синхронизироваться);
— с сервером синхронизироваться не рекомендуется;
х сервер недоступен.

Проверить, пригоден ли сервер из списка для синхронизации, можно при помощи утилиты ntpdate:
Устанавливаем ее

apt-get install ntpdate

и проверяем

ntpdate -q 127.0.0.1
server 127.0.0.1, stratum 2, offset -0.000000, delay 0.02563
 4 Dec 12:30:58 ntpdate[24565]: adjust time server 127.0.0.1 offset -0.000000 sec

В данном случае вывода видно, что сервер пригоден для синхронизации, его уровень — 2, смещение — 0.000000 мс, задержка — 0.02563 мс.

Настройка клиента в Linux

Для этих можно использовать 2 способа настройки — с помощью ntp или утилиты ntpdate.

NTP

Устанавливаем ntp:

Ubuntu / Debian:

apt install ntp

В настройка /etc/ntp.conf в качестве сервера оставляем только наш локальный сервер, например:

server 192.168.0.1

Остальные pool и server удаляем или комментируем.

Перезапускаем NTP:

service restart ntp

ntpdate

Утилита командной строки выполняет синхронизацию только при запуске. Для автоматизации процесса, добавляем задание в cron:

crontab -e
*/30 * * * * root /usr/sbin/ntpdate 192.168.0.1

* в данном примере задание будет выполняться каждые 30 минут. /usr/sbin/ntpdate — полный путь расположения утилиты, в разных системах может быть разным — проверить стоит командой which ntpdate.

Настройка клиента в Windows

В командной строке выполняем:

w32tm /config /manualpeerlist:"192.168.0.1,0x8" /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.

Понравилась статья, расскажи о ней друзьям, нажми кнопку!