NTP сервер на Linux Ubuntu
NTP сервер на Linux Ubuntu
Опубликовано: 12.01.2018
Следить за актуальностью времени на всех узлах локальной сети удобнее с помощью сервера синхронизации времени NTP. В инструкции рассказано об установке и настройке такого сервера на Linux Ubuntu Server 16.04. Данное руководство можно использовать для настройки ntpd на любом другом Linux (например, Debian или CentOS).
Установка сервера
Устанавливаем ntp сервер следующей командой:
apt-get install ntp
Разрешаем автозапуск и стартуем сервис:
systemctl enable ntp || update-rc.d ntp defaults
systemctl start ntp || service ntp start
Настройка NTP
Открываем файл с настройками:
Настраиваем серверы, с которых наш 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:
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
* московское время (GMT+3).
Настройка клиента Linux
Для клиентов можно выбрать 2 стратегии настройки — с помощью ntp или утилиты ntpdate.
apt-get install ntp
CentOS / Red Hat:
yum install 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 сервера для локальной сети
Для синхронизации системных часов, серверов, рабочих станций, камер видео наблюдения, и других устройств в локальной сети.
Будем использовать локальный сервер точного времени с настроенным протоколом NTP (Network Time Protocol).
Устанавливаем NTP
Все настройки производятся в одном единственном файле ntp.conf.
Добавляем данные в него.
разрешим доступ к серверу времени только из нашей локальной сети
Посмотрим конфигурационный файл ntp.conf
если указанной ниже строки нет то добавляем ее или изменяем.
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
Для настройки автоматического запуска демона при загрузке системы, используйте специальную команду.
Тестирование
Проверить состояние получения эталонного времени можно командой:
Ее вывод будет представлен в виде таблицы:
В таблице указываются следующие параметры:
Проверить, пригоден ли сервер из списка для синхронизации, можно при помощи утилиты ntpdate:
Устанавливаем ее
В данном случае вывода видно, что сервер пригоден для синхронизации, его уровень — 2, смещение — 0.000000 мс, задержка — 0.02563 мс.
Настройка клиента в Linux
Для этих можно использовать 2 способа настройки — с помощью ntp или утилиты ntpdate.
В настройка /etc/ntp.conf в качестве сервера оставляем только наш локальный сервер, например:
Остальные pool и server удаляем или комментируем.
ntpdate
Утилита командной строки выполняет синхронизацию только при запуске. Для автоматизации процесса, добавляем задание в cron:
* в данном примере задание будет выполняться каждые 30 минут. /usr/sbin/ntpdate — полный путь расположения утилиты, в разных системах может быть разным — проверить стоит командой which ntpdate.
Настройка клиента в Windows
В командной строке выполняем:
Возможные ошибки
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-сервера в Linux
Протокол сетевого времени NTP (Network Time Protocol) используется для синхронизации времени в вашей системе с централизованным NTP-сервером. В этой статье рассмотрим установку и настройку NTP сервера.
Установка NTP
В первую очередь нужно установить пакет NTP при помощи менеджера пакетов. Например, в RedHat или CentOS используется yum:
Настройка NTP-сервера
Установка ограничений в ntp.conf
В файл /etc/ntp.conf нужно добавить две строки restrict. Они разрешают синхронизацию с источником данных о времени, но не разрешают источнику опрашивать сервис на нашей системе или изменять его параметры.
Первая строка разрешает другим клиентам опрашивать ваш сервер времени. В ней заданы следующие параметры:
noquery – запрещает получение данных о состоянии ntpd
notrap – запрещает использование управляющих сообщений.
nomodify – запрещает все запросы ntpq, которые пытаются изменить параметры сервера.
nopeer – запрещает все пакеты, которые пытаются установить синхронизацию с узлом.
kod – отправка пакета об отказе в обслуживании “Kiss-o-death” для исключения нежелательных запросов, затем отключение от сервера.
Значение -6 во второй строке устанавливает аналогичные параметры для IPV6. Более подробная информация о параметрах приведена в соответствующей man-странице
Проверьте что у вас в фале конфигурации прописаны внешние NTP-сервера. При желании измените их на свои
Ограничение круга клиентов
Чтобы с вашим NTP-сервером могли синхронизироваться только машины вашей сети, добавьте в файл /etc/ntp.conf следующую строку (указав актуальные для вашей сети значения):
Если на локальном узле требуется полный доступ с возможностью изменения параметров, нужно добавить такую строку:
Резервное использование локальных часов
Чтобы при отключении от Интернета NTP-сервер определял время по своим локальным системным часам, в файле конфигурации нужно прописать соответствующие параметры.
Протокол NTP использует иерархию, называемую Stratum. Sratum 0 – это эталонные часы, Stratum 1 – серверы, получающие время от них напрямую (не по сети). Начиная со Stratum 2 и далее серверы получают время по сети от серверов предыдущего уровня. С каждым уровнем точность времени снижается. Лучше всего выбирать для синхронизации серверы уровня 2, так как несмотря на более высокую точность Stratum 1 они сильнее загружены, и задержка получения пакетов от них может быть слишком большой.
В двух следующих строках мы командой server указываем использование локального узла в качестве сервера времени, а командой fudge задаем его уровень в иерархии Stratum и исключаем обновление, когда доступ к Интернету есть.
Установка параметров журнала
Укажите в файле конфигурации расположение файла погрешности (driftfile) и файла журнала (logfile):
Файл погрешности используется для записи отклонений ваших часов от необходимого значения. С течением времени NTP должен постепенно снижать это отклонение.
Запуск NTP-сервера
После задания необходимых параметров в файле конфигурации ntp.conf нужно запустить службу ntp.
И добавим в автозагрузку
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Установка сервера точного времени NTP в Ubuntu 16.04
NTP — Network Time Protocol — специальный сетевой протокол,используемый для синхронизации внутренних часов компьютера по сети.
До недавнего времени за синхронизацию времени отвечал демон ntpd. Он подключал сервер к пулу серверов NTP, что обеспечивало точное хронометрирование.
В Ubuntu 16.04 вместо ntpd по умолчанию использует timesyncd. Сервис timesyncd подключается к тем же серверам времени и работает примерно таким же образом, но он легче ntpd и интегрирован с systemd.
В большинстве случаев сервис timesyncd подходит для работы, но если ваши приложения чувствительны к малейшим колебаниям времени, лучше обслуживать их с помощью ntpd, так как этот демон использует более сложные методы синхронизации системного времени.
Прежде чем установить ntpd, отключите timesyncd:
Убедитесь, что timesyncd отключился:
В выводе должна быть строка:
Установка NTP и конфигурирование NTP сервера в Ubuntu 16.04 для синхронизации точного времени через интернет
В своей работе NTP использует порт 123 по протоколу UDP. Клиенты запрашивают текущее время на сервере и используют его для установки своих собственных часов.
В зависимости от настроек, указанных в конфигурационном файле, он может выступать как в качестве сервера, так и в качестве клиента, т.е может как принимать время с удаленных хостов, так и раздавать его другим хостам.
Конфигурирование NTP сервера
В конфигурационном файле указывается список NTP-серверов, с которыми будет осуществляться синхронизация. По умолчанию он выглядит так:
Каждая строка означает группу серверов, которые будут cообщать нашему серверу корректное время. Повысить точность синхронизации можно с помощью опции iburst (она указывает, что на сервер для синхронизации нужно посылать не один, а несколько пакетов):
Можно также указать предпочитаемый сервер при помощи опции prefer:
Работу общедоступных серверов точного времени координирует проект pool.ntp.org — это огромный кластер серверов точного времени, предоставляющий надежный и простой в использовании NTP-сервис для миллионов клиентов.
Чтобы обеспечить более точную установку системных часов, рекомендуется синхронизироваться только с ntp-серверами того региона, в котором географически расположен наш сервер.
Правим файл настроек NTP — /etc/ntp.conf:
Резервный сервер точного времени
NTP-сервер, по какой-либо причине отключенный от Интернета, может передавать для синхронизации данные своих системных часов. Для этого в конфигурационный файл нужно добавить следующую строку:
Перестартуем NTP сервер:
И в завешении установки проверим статус NTP сервера:
Должно выдать что-то типа:
В заголовке указываются следующие параметры:
remote — адрес сервера точного времени (в этой графе отображаются серверы из списка в конфигурационном файле);
refid — вышестоящий сервер (тот, от которого сервер из предыдушей графы получает синхронизацию);
st — уровень (stratum) сервера;
t — тип пира (u- unicast, m- multicast);
when — время последней синхронизации;
poll — время в секундах, за которое демон NTP синхронизируется с пиром;
reach — состояние доступности сервера; после восьми успешных попыток синхронизации значение этого параметра становится равным 377;
delay — время задержки ответа от сервера;
offset — разница времени между нашим сервером и сервером синхронизации; положительное значение этого параметра означает, что наши часы спешат, отрицательное — что отстают;
jitter — смещение времени на удаленном сервере.
Слева от адреса сервера могут быть указаны следующие символы:
* сервер выбран для синхронизации;
+ сервер, пригодный для обновления (с которым можно синхронизироваться);
— с сервером синхронизироваться не рекомендуется;
х сервер недоступен.
Для защиты от DDoS-атак по умолчанию в файлe /etc/ntp.conf установлены следующие ограничения:
Параметры nomodify, notrap, nopeer и noquery запрещают сторонним клиентам изменять что-либо на сервере. Параметр kod (эта аббревиатура означает kiss of death — «поцелуй смерти») обеспечивает дополнительную защиту: клиент, отправляющий слишком частые запросы, сначала получит так называемый kod-пакет (предупреждение об отказе в обслуживании), а затем будет отключен от сервера.
Чтобы с NTP-сервером могли синхронизироваться машины из локальной сети, в конфигурационный файл следует добавить следующую строку:
Для локального хоста можно установить доступ к NTP-серверу без ограничений: