NTP — Network Time Protocol — специальный сетевой протокол,используемый для синхронизации внутренних часов компьютера по сети.
До недавнего времени за синхронизацию времени отвечал демон ntpd. Он подключал сервер к пулу серверов NTP, что обеспечивало точное хронометрирование.
В Ubuntu 16.04 вместо ntpd по умолчанию использует timesyncd. Сервис timesyncd подключается к тем же серверам времени и работает примерно таким же образом, но он легче ntpd и интегрирован с systemd.
В большинстве случаев сервис timesyncd подходит для работы, но если ваши приложения чувствительны к малейшим колебаниям времени, лучше обслуживать их с помощью ntpd, так как этот демон использует более сложные методы синхронизации системного времени.
Прежде чем установить ntpd, отключите timesyncd:
$sudo timedatectl set-ntp noУбедитесь, что timesyncd отключился:
$timedatectlВ выводе должна быть строка:
Network time on: noВ своей работе NTP использует порт 123 по протоколу UDP. Клиенты запрашивают текущее время на сервере и используют его для установки своих собственных часов.
В зависимости от настроек, указанных в конфигурационном файле, он может выступать как в качестве сервера, так и в качестве клиента, т.е может как принимать время с удаленных хостов, так и раздавать его другим хостам.
Установка NTP:
somebody@myvds:~$ sudo apt-get -y install ntpВ конфигурационном файле указывается список NTP-серверов, с которыми будет осуществляться синхронизация. По умолчанию он выглядит так:
server 0.ubuntu.pool.ntp.org
server 1.ubuntu.pool.ntp.org
server 2.ubuntu.pool.ntp.org
server 3.ubuntu.pool.ntp.orgКаждая строка означает группу серверов, которые будут cообщать нашему серверу корректное время. Повысить точность синхронизации можно с помощью опции iburst (она указывает, что на сервер для синхронизации нужно посылать не один, а несколько пакетов):
server 0.ubuntu.pool.ntp.org iburst
server 1.ubuntu.pool.ntp.org iburst
server 2.ubuntu.pool.ntp.org iburst
server 3.ubuntu.pool.ntp.org iburstМожно также указать предпочитаемый сервер при помощи опции prefer:
server 0.ubuntu.pool.ntp.org iburst preferРаботу общедоступных серверов точного времени координирует проект pool.ntp.org — это огромный кластер серверов точного времени, предоставляющий надежный и простой в использовании NTP-сервис для миллионов клиентов.
Чтобы обеспечить более точную установку системных часов, рекомендуется синхронизироваться только с ntp-серверами того региона, в котором географически расположен наш сервер.
Правим файл настроек NTP — /etc/ntp.conf:
somebody@myvds:~$ sudo nano /etc/ntp.conf# line 18: Закомментируем сервера по умолчанию
# pool 0.ubuntu.pool.ntp.org iburst
# pool 1.ubuntu.pool.ntp.org iburst
# pool 2.ubuntu.pool.ntp.org iburst
# pool 3.ubuntu.pool.ntp.org iburst
# pool ntp.ubuntu.com
# Добавим сервера для нашей временной зоны (здесь приводятся для Москвы) для синхронизации точного времени:
server ntp2.stratum2.ru iburst
server ntp3.stratum2.ru iburst
server ntp4.stratum2.ru iburst
server ntp5.stratum2.ru iburst
server ntp1.stratum1.ru iburst
server ntp2.stratum1.ru iburst
server ntp3.stratum1.ru iburst
server ntp4.stratum1.ru iburst
server ntp5.stratum1.ru iburst
# line 50: add the network range you allow to receive requests
restrict 127.0.0.1
restrict 10.0.0.0 mask 255.255.255.0 nomodify notrapNTP-сервер, по какой-либо причине отключенный от Интернета, может передавать для синхронизации данные своих системных часов. Для этого в конфигурационный файл нужно добавить следующую строку:
server 127.127.1.0Перестартуем NTP сервер:
somebody@myvds:~$ sudo service ntp restartИ в завешении установки проверим статус NTP сервера:
somebody@myvds:~$ sudo ntpq -p
Должно выдать что-то типа:
remote refid st t when poll reach delay offset jitter
==============================================================================
192.168.1.255 .BCST. 16 B - 64 0 0.000 0.000 0.000
-n1.sigma.d6.hsd 91.226.136.141 2 u 190 256 377 23.334 -13.156 4.350
-ns5.hsdn.org 244.165.32.6 2 u 206 256 377 32.584 3.045 1.380
-91.226.136.155 244.165.32.6 2 u 183 256 377 34.251 -3.888 1.850
-n1.vfose-ru.d6. 91.226.136.141 2 u 115 256 377 32.864 -5.900 2.251
-n44-1.time3.d6. .GPS. 1 u 187 256 377 34.104 -4.338 0.658
*109.195.19.73 ( .GPS. 1 u 226 256 377 21.238 0.698 0.445
+n44.time3.d6.hs .GPS. 1 u 135 256 377 34.269 -3.855 0.321
-88.147.254.229 .GPS. 1 u 170 256 377 32.354 3.879 0.788
+88.147.254.227 .GPS. 1 u 177 256 377 32.803 3.473 1.077
В заголовке указываются следующие параметры:
remote — адрес сервера точного времени (в этой графе отображаются серверы из списка в конфигурационном файле);
refid — вышестоящий сервер (тот, от которого сервер из предыдушей графы получает синхронизацию);
st — уровень (stratum) сервера;
t — тип пира (u- unicast, m- multicast);
when — время последней синхронизации;
poll — время в секундах, за которое демон NTP синхронизируется с пиром;
reach — состояние доступности сервера; после восьми успешных попыток синхронизации значение этого параметра становится равным 377;
delay — время задержки ответа от сервера;
offset — разница времени между нашим сервером и сервером синхронизации; положительное значение этого параметра означает, что наши часы спешат, отрицательное — что отстают;
jitter — смещение времени на удаленном сервере.
Слева от адреса сервера могут быть указаны следующие символы:
* сервер выбран для синхронизации;
+ сервер, пригодный для обновления (с которым можно синхронизироваться);
— с сервером синхронизироваться не рекомендуется;
х сервер недоступен.
Для защиты от DDoS-атак по умолчанию в файлe /etc/ntp.conf установлены следующие ограничения:
restrict −4 default kod notrap nomodify nopeer noquery
restrict −6 default kod notrap nomodify nopeer noqueryПараметры nomodify, notrap, nopeer и noquery запрещают сторонним клиентам изменять что-либо на сервере. Параметр kod (эта аббревиатура означает kiss of death — «поцелуй смерти») обеспечивает дополнительную защиту: клиент, отправляющий слишком частые запросы, сначала получит так называемый kod-пакет (предупреждение об отказе в обслуживании), а затем будет отключен от сервера.
Чтобы с NTP-сервером могли синхронизироваться машины из локальной сети, в конфигурационный файл следует добавить следующую строку:
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrapДля локального хоста можно установить доступ к NTP-серверу без ограничений:
restrict 127.127.1.0