- Настройка сервера NTP на ОС Windows 10
- Автоматическая настройка
- Настройка вручную
- Настройка синхронизации времени и часового пояса на сервере RLP
Настройка сервера NTP на ОС Windows 10
Для настройки сервера понадобятся права администратора у пользователя Windows.
Автоматическая настройка
- Скачайте файл NTP_server_setup.bat
- Нажмите на файл правой кнопкой мыши и в меню выберите Запуск от имени администратора. Если Windows запросит разрешения на внесение изменений приложением, нажмите кнопку Да.
- Подождите, пока скрипт настроит сервер NTP. Последняя команда скрипта выводит текущую конфигурацию службы времени. Если скрипт успешно настроил сервер NTP, то в разделе NtpServer опция Enabled будет выставлена в 1. Нажмите любую клавишу, чтобы завершить работу скрипта и закрыть окно командной строки.
Настройка вручную
- Зайдите в редактор реестра одним из способов:
- Нажмите клавиши Win+R, в появившемся окне Выполнить наберите regedit и нажмите Enter.
- В строке поиска Windows наберите regedit и выберите найденное приложение Редактор реестра.
Если Windows запросит разрешения на внесение изменений приложением Редактор реестра, нажмите кнопку Да.
- Нажмите клавиши Win+R, в появившемся окне Выполнить наберите regedit и нажмите Enter.
- В Редакторе реестра перейдите по пути
\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer
Для этого можно воспользоваться деревом в левой части окна или скопировать и добавить строку пути в поле в верхней части окна.
- Откройте окно изменения параметра Enabled двойным щелчком мыши по нему в правой части окна Редактора реестра. Измените значение параметра на 1 и нажмите кнопку ОК.
- В Редакторе реестра перейдите по пути
\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config
- Измените значение параметра AnnounceFlags на 5.
- Закройте Редактор реестра.
- Чтобы изменения вступили в силу, необходимо перезапустить службу времени Windows. Зайдите в управление службами одним из способов:
- Нажмите клавиши Win+R, в появившемся окне Выполнить наберите services.msc и нажмите Enter.
- В строке поиска Windows наберите службы и выберите найденное приложение Службы.
- Нажмите клавиши Win+R, в появившемся окне Выполнить наберите services.msc и нажмите Enter.
- В списке служб найдите Службу времени Windows.
- Дважды щёлкните на службу, чтобы зайти в окно её настройки.
Если служба в состоянии Остановлена, то нажмите кнопку Запустить и дождитесь запуска службы.
Если служба в состоянии Выполняется, сначала нажмите кнопку Остановить, дождитесь остановки службы, нажмите кнопку Запустить и дождитесь запуска службы.
Установите Тип запуска в Автоматически и нажмите кнопку ОК, чтобы сохранить настройку.
- Закройте окно Служб Windows.
- Для проверки, что сервер NTP запустился, можно использовать команду w32time командной строки Windows.
Запустите командную строку Windows одним из способов:- Нажмите клавиши Win+R, в появившемся окне Выполнить наберите cmd и нажмите Enter.
- В строке поиска Windows наберите cmd и выберите найденное приложение Командная строка.
- Нажмите клавиши Win+R, в появившемся окне Выполнить наберите cmd и нажмите Enter.
- В Командной строке наберите или скопируйте сочетанием клавиш Shift+Insert строку
w32tm /query /configuration
и нажмите клавишу Enter.
- Команда выведет текущую конфигурацию службы времени. Если сервер NTP запущен, то в разделе NtpServer опция Enabled будет выставлена в 1. Закройте окно Командной строки.
- Для работы сервера NTP нужно разрешить в Брандмауэре Windows UDP траффик по порту 123. Откройте Монитор брандмауэра Защитника Windows в режиме повышенной безопасности одним из способов:
- Нажмите клавиши Win+R, в появившемся окне Выполнить наберите wf.msc и нажмите Enter.
- В строке поиска Windows наберите и выберите найденное приложение.
- Нажмите клавиши Win+R, в появившемся окне Выполнить наберите wf.msc и нажмите Enter.
- В окне Монитора брандмауэра… переключитесь на Правила для входящих подключений и нажмите на Создать правило…
- Выберите тип правила Для порта и нажмите кнопку Далее.
- Выберите Протокол UDP, впишите номер порта 123 и нажмите кнопку Далее.
- Выберите Разрешить подключение и нажмите кнопку Далее.
- Установите галочки для всех профилей и нажмите кнопку Далее.
- Введите имя правила, например, udp in 123 и нажмите кнопку Готово.
- Переключитесь на Правила для исходящего подключения и нажмите Создать правило. Создайте правило с такими же настройками (тип правила, протокол и порты и т.д.), как и в предыдущих пунктах.
- Закройте окно Монитора брандмауэра…
Настройка синхронизации времени и часового пояса на сервере RLP
Для копирования файлов по сети из ОС Windows можно использовать WinSCP.
Команды можно вводить как локально на сервере, так и удалённо по SSH. Для удалённого подключения можно использовать PuTTY.
Данные для подключения по умолчанию:
Логин: root
Пароль: root (при наборе пароля он может не отображаться, даже символами «звёздочка»)
- Скачайте и разархивируйте ntp_local_install.zip
- Скопируйте получившуюся папку
ntp_local_install
в папкуhome
на сервере RLP. - Зайдите на сервер локально или удалённо.
- Остановите службу TRASSIR командой:
systemctl stop t1daemon
- Установите rpm из скопированной папки командой:
yum install -y /home/ntp_local_install/*.rpm
- Зайдите в редактирование файла настроек планировщика задач командой:
crontab -e
- Нажмите клавишу Insert для перехода в режим редактирования.
Добавьте строку*/5 * * * * sudo ntpdate IP-адрес компьютера на Windows с настроенным NTP-сервером
Пример:*/5 * * * * sudo ntpdate 192.168.1.1
- Нажмите клавишу Esc, чтобы выйти из режима редактирования. Введите
:wq!
и нажмите клавишу Enter, чтобы сохранить изменения и выйти из редактора. - Проверьте текущий часовой пояс на сервере RLP командой
timedatectl status
Часовой пояс и город указаны в разделе Time zone:
- Если часовой пояс на сервере не совпадает с часовым поясом, где физически размещён сервер, то его можно поменять:
- Выведите список городов, поддерживаемых службой времени и выберите ближайший:
Для списка городов Европы введите команду:timedatectl list-timezones | grep Europe
Для списка городов Азии введите команду:timedatectl list-timezones | grep Asia
-
Установите нужный часовой пояс командой:
timedatectl set-timezone выбранный город
Пример:timedatectl set-timezone Asia/Vladivostok
Город нужно указать в том же виде, в котором он выводится командой
timedatectl list-timezones
, включая регистр букв. Если указать город неправильно, часовой пояс не изменится.
- Выведите список городов, поддерживаемых службой времени и выберите ближайший:
- Проверьте текущее время на сервере RLP командой:
date
Время должно совпадать со временем на компьютере с настроенным NTP-сервером. Если время не совпадает, то подождите пять минут (настроенный период синхронизации) и введите команду ещё раз.
Запустите TRASSIR командой:systemctl start t1daemon
удобный скрипт для работы со временем на серверах NTP доступен по ссылке:
https://ncloud.dssl.ru/s/HpQrdWMBLet7Wps
3.9.10.3 Утилита синхронизации времени ntpdate
Скачать документ
Программа ntpdate — позволяет разово синхронизировать локальное время с эталонным сервером времени в интернете. Подобных эталонов существует достаточно много. Для примера можно воспользоваться одним из них — pool.ntp.org.
Запускаем синхронизацию времени:
ntpdate pool.ntp.org
Утилита провела синхронизацию, в результате которой к системному времени было добавлено число секунд, необходимое для приближения к эталонному. Если в результате работы синхронизации возникает ошибка: «no server suitable for synchronization found», то попробуйте в работе утилиты использовать непривилегированный порт. По-умолчанию ntpdate работает по 123 порту. Если он закрыт на firewall, то помочь в синхронизации поможет следующий параметр:
ntpdate -u pool.ntp.org
Если у вас запуск ntpdate завершается ошибкой — «the NTP socket is in use, exiting», значит у вас уже установлена и запущена служба ntpd, которая заняла необходимый udp-порт, необходимый для работы ntpdate.
Эта информация оказалась полезной? ДА НЕТ
Дата последнего изменения: 23.10.2024
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.
Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров7.4K
Содержание
-
Введение
-
Что такое NTP?
-
Как работает NTP?
-
Процесс синхронизации
-
Время практики
Введение
Сегодня точное время необходимо для корректной работы компьютерных систем, обеспечения согласованности данных, безопасности транзакций и координации действий в распределенных системах. Предлагаю вам сегодня разобраться в механизме синхронизации времени. Рассмотрим, что такое NTP, как он работает, как проходит синхронизация времени, а также попрактикуемся на конкретной задаче.
Что такое NTP?
В 1985 году профессором Делавэрского университета Дэвидом Л. Милсом был создан протокол NTP (Network Time Protocol), который является одним из наиболее распространенных и эффективных методов синхронизации времени. Протокол работает по алгоритму согласования данных Марзулло, согласно которому оценка точного времени выполняется на основании ряда источников времени с разной степенью точности, осредненных по времени и поступающих с разных NTP серверов. Протокол имеет несколько версий, последним является NTPV4. Для небольших сетей или устройств, где небольшие изменения в синхронизации времени не вызывают существенных сбоев, была разработан протокол SNTP — несколько упрощенная версия NTP.
Протокол NTP (а именно его последняя версия NTPv4) описан в RFC5905. В нем описана базовая архитектура, протокол, конечные автоматы, структуры данных и алгоритмы.
Как работает NTP?
Протокол NTP работает по принципу клиент-сервер, где NTP-клиенты отправляют запрос на получение времени у NTP-серверов. Серверы, в свою очередь, получают точное время от высокоточных источников, таких как атомные часы или GPS, и отправляют ответ клиенту, на котором устанавливается точное время. Передача от одного устройства к другому происходит с использованием сетевого протокола UDP.
Все NTP-сервера образуют иерархическую структуру, состоящую из уровней, называемых «stratum» (см. рисунок 1). Серверы уровня 1 напрямую подключены к источникам точного времени и служат основными источниками для серверов уровня 2, серверы уровня 2 — для уровня 3 и т.д. Клиенты могут обращаться к нескольким серверам для получения времени, что повышает надежность синхронизации. Протокол также учитывает сетевые задержки и может постепенно корректировать время, чтобы избежать резких изменений. Кстати, недавно яндекс.станции уронили NTP-сервера рунета.
Процесс синхронизации
Процесс синхронизации включает в себя обмен небольшими пакетами данных, содержащими информацию о времени и представляющими собой запросы и соответствующие ответы (см. рисунок 2) между клиентом и сервером (или двумя серверами).
Чтобы определить смещение времени между системами и задержки, прошедшей с момента отправки запроса до получения ответа, в передаваемых пакетах используются три поля:
-
t1: Локальное время клиента в момент отправки запроса.
-
t2: Локальное время сервера при получении запроса.
-
t3: Локальное время сервера в момент отправки ответа.
Перед отправкой клиент фиксирует своё текущее время (метка времени t1) и сохраняет это значение в переменной.
Когда сервер получает пакет от клиента, он формирует ответный пакет. В этот пакет копируется значение времени отправки из полученного запроса, и записывается текущее время сервера (метка времени t2, момент получения запроса). После обработки запроса сервер добавляет в пакет своё текущее время (метка времени t3, момент отправки ответа) и отправляет его обратно клиенту.
Когда клиент получает ответ, он записывает время его получения (метка времени t4). Теперь у клиента есть все необходимые данные для вычисления смещения и задержки, связанной с передачей пакетов по сети.
Смещение времени (разница между временем сервера и клиента) вычисляется по формуле: dt = 0.5 * ((t2−t1) + (t3−t4)), а общее время передачи данных: t = (t4−t1) − (t3−t2). Используя эти данные, клиент выставляет у себя время.
Время практики
Попробуем настроить свой NTP-сервер в локальной сети и добиться синхронизации с ним клиента, который будет находится в этой же локальной сети. Для этого построим простую сеть, состоящую из двух виртуальных машин. Одна из них будет в роли NTP-сервера, другая — в роли NTP-клиента.
Будем использовать VMware Workstation Pro для запуска наших виртуальных машин, на каждой из которых будет установлена обычная ubuntu-22.04.4-desktop-amd64.
Настройка виртуальных машин сети
Ещё до запуска клиента и сервера изменим настройки сети для каждой из виртуальных машин (VM -> Settings -> Network Adapter). Создадим LAN Segment, который будет представлять собой виртуальную сеть (см. рисунок 3). Этот сегмент будет изолирован от других сетей и будет доступен только для виртуальных машин, которые подключены к нему. Виртуальные машины, подключенные к одному и тому же LAN Segment, могут обмениваться данными друг с другом так же, как если бы они находились в одной физической сети (см. рисунок 4). Они могут использовать IP-адреса для связи, и все стандартные сетевые протоколы (например, TCP/IP) будут работать.
Виртуальные машины должны быть настроены с уникальными IP-адресами в пределах одного сегмента, чтобы они могли корректно обмениваться данными. Для этого запустим каждую из виртуальных машин, откроем терминал и проделаем ряд команд для статической настройки IP-адресов нашей сети. Будем использовать утилиту nmcli (инструмент управления сетевыми подключениями NetworkManager в командной строке). Для понятности и однозначности восприятия будем использовать конкретный сетевой адрес, IP-адреса и прочие настройки далее (при большом желании их можно поменять на свои). Установка IP-адресов:
Для сервера:
$ nmcli connection modify "Wired connection 1" ipv4.address 192.168.10.1/24
Для клиента:
$ nmcli connection modify "Wired connection 1" ipv4.address 192.168.10.2/24
Далее метод установки IP-адреса и для клиента, и для сервера изменим на значение «вручную» (manual), чтобы изменения вступили в силу, деактивируем и затем активируем соединение:
$ nmcli connection modify "Wired connection 1" ipv4.method manual
$ nmcli connection down "Wired connection 1"
Connection 'Wired connection 1' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/10)
$ nmcli connection up "Wired conn
ection 1"
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/11)
Проверим, что сеть настроена правильно с помощью утилиты ping.
С клиента на сервер:
$ ping 192.168.10.1 -c 4
PING 192.168.10.1 (192.168.10.1) 56(84) bytes of data.
64 bytes from 192.168.10.1: icmp_seq=1 ttl=64 time=0.507 ms
64 bytes from 192.168.10.1: icmp_seq=2 ttl=64 time=0.505 ms
64 bytes from 192.168.10.1: icmp_seq=3 ttl=64 time=0.423 ms
64 bytes from 192.168.10.1: icmp_seq=4 ttl=64 time=0.581 ms
--- 192.168.10.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3051ms
rtt min/avg/max/mdev = 0.423/0.504/0.581/0.055 ms
С сервера на клиент:
$ ping 192.168.10.2 -c 4
PING 192.168.10.2 (192.168.10.2) 56(84) bytes of data.
64 bytes from 192.168.10.2: icmp_seq=1 ttl=64 time=0.373 ms
64 bytes from 192.168.10.2: icmp_seq=2 ttl=64 time=0.445 ms
64 bytes from 192.168.10.2: icmp_seq=3 ttl=64 time=0.471 ms
64 bytes from 192.168.10.2: icmp_seq=4 ttl=64 time=0.453 ms
--- 192.168.10.2 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3079ms
rtt min/avg/max/mdev = 0.373/0.435/0.471/0.037 ms
Установка и настройка NTP-сервера
В Linux NTP-сервер функционирует на основе пакета ntp, который необходимо установить. Этот пакет доступен в репозиториях различных дистрибутивов Linux. В зависимости от конфигурации, демон NTP (ntpd) может работать как сервер, предоставляющий точное время другим хостам, или как клиент.
Настройка NTP сервера включает в себя несколько этапов:
-
Установка пакета ntp.
-
Конфигурация файла ntp.conf.
-
Проверка настроек и работоспособности сервера.
Для установки пакета ntp в Linux воспользуемся менеджером пакетов apt:
$ sudo apt update && sudo apt install ntp
После установки запустим службу NTP:
$ sudo service ntp start
Настроим наш NTP-сервер. Для этого изменим в любом редакторе файл /etc/ntp.conf, который содержит настройки для работы сервера. В нем можно определить уровень сервера, указать ключи шифрования для обеспечения безопасности и задать правила доступа к клиентам.
$ sudo nano /etc/ntp.conf
Рассмотрим содержимое этого файла.
driftfile /var/lib/ntp/ntp.drift
В этой строке указывается файл для хранения информации о частоте смещения времени. В этом файле хранится значение, получаемое в результате предшествующих корректировок времени. Если внешние NTP-серверы по той или иной причине становятся недоступными, значение будет взятого из него.
Далее указывается файл, в который будут сохраняться логи синхронизации:
logfile /var/log/ntp.log
В конфигурационном файле указывается список 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
Уровень сервера 0 — 3 определяет его место в иерархии NTP серверов. Чем меньше значение стратума, тем ближе сервер к источнику времени с высшим уровнем.
Изменим (либо можно просто закомментировать) эти строчки, добавив следующий пул NTP-серверов:
server 0.ru.pool.ntp.org
server 1.ru.pool.ntp.org
server 2.ru.pool.ntp.org
server 3.ru.pool.ntp.org
Чтобы повысить точность синхронизации используем опцию iburst, она отвечает за отправку на сервер для синхронизации несколько пакетов вместо одного:
server 0.ru.pool.ntp.org iburst
server 1.ru.pool.ntp.org iburst
server 2.ru.pool.ntp.org iburst
server 3.ru.pool.ntp.org iburst
Также сделаем указанный пул серверов приоритетным для синхронизации,используя опцию prefer:
server 0.ru.pool.ntp.org iburst
server 1.ru.pool.ntp.org iburst prefer
server 2.ru.pool.ntp.org iburst
server 3.ru.pool.ntp.org iburst
Чтобы наш NTP-сервер не стал инструментов в руках злоумышленников, которые научились использовать NTP-сервера для усиления трафика в DDoS-атаках, установим ограничения на доступ для внешних клиентов:
restrict -4 default kod notrap nomodify nopeer noquery limited
restrict -6 default kod notrap nomodify nopeer noquery limited
-
restrict -4 default:
-
-4: Ограничения применяются к IPv4-адресам.
-
default: Ограничения применяются ко всем клиентам, которые не имеют более специфичных правил.
-
-
restrict -6 default:
-
-6: Ограничения применяются к IPv6-адресам.
-
default: Аналогично, это правило применяется ко всем клиентам IPv6.
-
-
kod: Включение использования «Kiss-o-Death» сообщений для ограничения частоты запросов от клиентов.
-
notrap: Запрет использования команды trap.
-
nomodify: Запрет клиентам изменять настройки сервера NTP.
-
nopeer: Запрет клиентам устанавливать пировые соединения с сервером.
-
noquery: Запрет клиентам выполнять запросы к серверу для получения информации о его состоянии.
-
limited: Ограничение количества запросов, которые сервер будет обрабатывать от клиентов.
Чтобы с NTP-сервером мог синхронизироваться с NTP-клиентом из локальной сети, добавим в конфигурационный файл следующую строку:
restrict 192.168.10.0 mask 255.255.255.0 nomodify notrap
Для того, чтобы сервер мог обмениваться NTP данными сам собой вносим строки:
restrict 127.0.0.1
restrict ::1
Сохраняем файл и возвращаемся в терминал. Теперь, чтобы наши изменения вступили в силу, перезапустим сервер и проверим его статус. Если все настроено верно, то получим примерно следующее:
$ sudo service ntp restart
$ sudo service ntp status
● ntp.service - Network Time Service
Loaded: loaded (/lib/systemd/system/ntp.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2024-12-21 21:53:13 MSK; 7s ago
Docs: man:ntpd(8)
Process: 64671 ExecStart=/usr/lib/ntp/ntp-systemd-wrapper (code=exited, status=0/SUCCESS)
Main PID: 64677 (ntpd)
Tasks: 2 (limit: 4551)
Memory: 1.3M
CPU: 27ms
CGroup: /system.slice/ntp.service
└─64677 /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 129:137
...
server-virtual-machine systemd[1]: Started Network Time Service.
...
Последним шагом проверим работоспособность нашего NTP-сервера, выполнив команду:
$ ntpq -pn
remote refid st t when poll reach delay offset jitter
==============================================================================
51.250.107.88 .STEP. 16 u 193 64 0 0.000 +0.000 0.000
*85.113.58.74 89.109.251.25 3 u 4 64 1 100.311 +2.282 10.038
+192.36.143.130 .PPS. 1 u 3 64 1 105.163 +11.645 19.525
+188.124.37.90 194.190.168.1 2 u 4 64 1 81.926 +15.642 9.457
-
remote: Адрес удаленного NTP-сервера.
-
refid: Идентификатор референсного времени, с которым синхронизируется данный сервер.
-
st: Уровень (stratum) сервера.
-
t: Тип сервера:
-
u — unicast (обычный NTP-сервер).
-
p — multicast.
-
b — broadcast.
-
-
when: Время (в секундах) с момента последнего запроса к серверу.
-
poll: Интервал опроса (в секундах) для этого сервера.
-
reach: Битовая маска, показывающая, были ли успешные запросы к серверу. Значение от 0 до 377 (восьмеричное представление). Если значение 0, это означает, что не было успешных ответов.
-
delay: Задержка (в миллисекундах) при получении ответа от сервера.
-
offset: Смещение (в миллисекундах) между временем на вашем клиенте и временем на сервере.
-
jitter: Изменчивость (в миллисекундах) времени, что указывает на стабильность соединения.
-
‘*’: Сервер выбран для синхронизации.
-
‘+’: Сервер, пригодный для обновления (с которым можно синхронизироваться).
-
‘-‘: С сервером синхронизироваться не рекомендуется.
-
‘x’: Сервер недоступен.
Настройка клиента для синхронизации с NTP-сервером
Следующие шаги мы выполним, чтобы обеспечить возможность постоянной синхронизации NTP-клиента с нашим NTP-сервером, который будет служить для него эталонным источником времени.
Устанавливаем NTP на системе клиента, аналогично нашему серверу:
$ sudo apt update && sudo apt install ntp
После установки запустим службу NTP:
$ sudo service ntp start
Также изменим файл конфигурации /etc/ntp.conf на клиенте, добавив наш сервер в качестве эталонного:
server 192.168.10.1 iburst prefer
Установим минимальный и максимальный интревал опроса NTP-сервера:
server 192.168.10.1 minpoll 4 maxpoll 10 iburst prefer
Значение 4 соответствует 16 секундам (2^4 = 16). Это означает, что клиент будет запрашивать время у сервера не реже чем раз в 16 секунд.
Значение 10 соответствует 1024 секундам (2^10 = 1024). Это означает, что клиент может запрашивать время у сервера не чаще чем раз в 1024 секунды.
Теперь чтобы наши изменения вступили в силу перезапустим демон:
$ sudo service ntp restart
Проверим работу клиента, если все настроено верно, то получим следующее:
$ ntpq -pn
remote refid st t when poll reach delay offset jitter
==============================================================================
*192.168.10.1 62.84.117.189 3 u 3 64 17 0.569 -1.016 14.298
Изменим дату на клиенте, чтобы проверить синхронизацию с сервером. Для этого воспользуемся командой date:
$ sudo date -s "2024-05-17 17:17:17"
Пт 17 мая 2024 17:17:17 MSK
Наконец проверим, что NTP-клиент синхронизируется с NTP-клиентом. Время на клиенте изменится с помощью демона ntpd, который работает в фоновом режиме и обеспечивает постоянную синхронизацию системного времени, для этого нам нужно просто подождать какое-то время или перезапустить систему,
Также, имея установленный пакет NTP, можно синхронизировать время принудительно и единоразово c помощью утилиты ntpdate. Она работает без настроенного файла конфигурации /etc/ntp.conf, достаточно просто от имени суперпользователя, указав IP-адрес NTP-сервера, выполнить команду:
$ sudo ntpdate 192.168.10.1
При возникновении ошибки с сокетом
При выполнении команды ntpdate может возникнуть примерно следующая ошибка:
ntpdate[2708]: the NTP socket is in use, exiting
Она возникает из-за того, что на вашей системе запущен NTP-демон, он использует сокет NTP (обычно порт 123). В этом случае ntpdate не сможет получить доступ к этому порту, так как он уже занят.
Чтобы это исправить, нужно остановить ntpd и выполнить команду снова:
$ sudo service ntp stop
$ sudo ntpdate 192.168.10.1
ntpdate[2898]: step time server 192.168.10.1 offset +19089349.973492 sec
Если все выполнено верно, то время на клиенте установится таким же, как и на сервере.
Таким образом, у нас получилось настроить свой NTP-сервер в локальной сети и синхронизировать с ним NTP-клиент.
Network Time Protocol, или NTP – это протокол сетевого времени, который используется для синхронизации времени на компьютерах и других устройствах в сети. Он позволяет устройствам получать точное время от так называемых временных серверов и синхронизироваться с ними.
NTP особенно важен в компьютерных сетях и серверах, где точность времени имеет большое значение.
- Как работает NTP
- Задачи синхронизации
- Чем отличается SNTP от NTP
- Инструкция по настройке NTP-сервера Linux (Ubuntu)
- Установка NTP-сервера
- Настройка NTP-сервера в Ubuntu
- Настройка синхронизации клиентов с NTP-сервером
- Дополнительные настройки
- Настройка NTP-сервера Windows Server
Как работает NTP
Протокол NTP работает на основе иерархии временных серверов, где более высокоуровневые серверы синхронизируются с точными источниками времени (например, атомными часами). Они предоставляют эту информацию более низкоуровневым устройствам в сети. А уже эти устройства, в свою очередь, могут предоставлять свои временные данные другим.
Задачи синхронизации
Для чего применяется NTP? Протокол NTP играет ключевую роль в обеспечении согласованности времени в сети, обеспечивая точность синхронизации до наносекунд. Он позволяет устанавливать единое время для начала и завершения процессов в сети, что имеет ряд важных применений:
- Синхронизация позволяет устройствам и приложениям оперировать данными в режиме реального времени с единым временным референсом.
- Синхронизация времени необходима для правильного проведения транзакций, работы с сертификатами и подписью электронных документов. В таких ситуациях она обеспечивает точность и последовательность операций.
- Синхронизация позволяет более эффективно расследовать внутренние инциденты и контролировать нарушения безопасности в компьютерной сети.
- Благодаря синхронизации гарантируется точность информации о времени в системных логах. Она обеспечивает правильную хронологию событий для анализа и мониторинга ошибок.
- Протокол NTP позволяет сохранять сверхточные временные метки.
Чем отличается SNTP от NTP
SNTP (Simple Network Time Protocol) и NTP (Network Time Protocol) действительно имеют схожий формат сетевых пакетов, а потому представляют собой два взаимодействующих протокола для синхронизации времени в компьютерных сетях.
Но все-таки у них есть некоторые отличия:
NTP |
SNTP |
---|---|
Это более полная и точная версия протокола. Она предоставляет различные механизмы для повышения точности синхронизации времени: например, использование более сложных алгоритмов оценки времени и учета задержек в сети. |
Это упрощенная версия NTP, и ее цель – предоставить базовую функциональность синхронизации времени без использования сложных алгоритмов. В результате SNTP может быть менее точным, но при этом более простым в использовании и реализации. |
Более сложный протокол, который предоставляет множество возможностей для уточнения времени и обеспечения надежной синхронизации.
Обычно используется в средах, где критически важна точность синхронизации времени: финансовые транзакции, телекоммуникации и другие области. |
Его реализация и использование менее сложны. Он подходит для сред, где высокая точность синхронизации времени не играет большой роли. |
Инструкция по настройке NTP-сервера Linux (Ubuntu)
Установка NTP-сервера
- Обновите пакеты репозитория:
sudo apt-get update
Важно! Перед выполнением следующей команды удостоверьтесь, что вы авторизованы в системе для выполнения команд с sudo.
- Установите NTP-сервер с помощью команды:
sudo apt-get install ntp
Если вас попросят подтвердить установку, нажмите «y».
- Убедитесь, что NTP корректно установился. Для этого пропишите:
systemctl status ntp
Вывод должен содержать номер версии и информацию о времени установки:
Если установка прошла успешно, переходите к следующим шагам.
Настройка NTP-сервера в Ubuntu
- Откройте файл конфигурации NTP:
sudo nano /etc/ntp.conf
Как правило, сервер будет указывать корректное время, но мы все равно рекомендуем вам переключиться на ближайший пул серверов. Так вы сможете избежать возможных ошибок.
- Внесите необходимые изменения в файл конфигурации, указав российские сервера времени. По умолчанию у вас на экране будут отображаться такая информация:
Перед выделенными серверами поставьте символ «#», а в конце добавьте четыре российских сервера. Например:
server 0.ru.pool.ntp.org
server 1.ru.pool.ntp.org
server 2.ru.pool.ntp.org
server 3.ru.pool.ntp.org
Пример того, как должен выглядеть файл перед сохранением:
# Use servers from the NTP Pool Project. Approved by Ubuntu Technical Board
# on 2011-02-08 (LP: #104525). See http://www.pool.ntp.org/join.html for
# more information.
# server 0.ubuntu.pool.ntp.org
# server 1.ubuntu.pool.ntp.org
# server 2.ubuntu.pool.ntp.org
# server 3.ubuntu.pool.ntp.org
server 0.ru.pool.ntp.org
server 1.ru.pool.ntp.org
server 2.ru.pool.ntp.org
server 3.ru.pool.ntp.org
- Сохраните изменения, зажав Ctrl+O, затем нажмите Enter.
- Затем закройте редактор с помощью сочетания клавиш Ctrl+X.
- Перезапустите NTP-сервер:
sudo service ntp restart
- Теперь проверьте, успешно ли применились настройки. Для этого пропишите:
sudo service ntp status
В выводе вы должны увидеть надпись «Active (running)».
- Далее необходимо открыть доступ через UFW и порт 123. Введите:
sudo ufw allow from any to any port 123 proto udp
Теперь ваш NTP-сервер установлен и сконфигурирован на сервере Ubuntu. Вы можете продолжить настройку, добавляя или изменяя сервера времени в файле конфигурации по мере необходимости.
Настройка синхронизации клиентов с NTP-сервером
- Установите инструмент для проверки сетевой конфигурации NTP:
sudo apt-get install ntpdate
- Для внесения дальнейших изменений потребуется отредактировать файл «hosts»:
sudo nano /etc/hosts
- Добавьте соответствующую строку с IP-адресом вашего NTP-сервера и хостом:
<IP-адрес> ntp-server
- Сохраните изменения, нажав Ctrl+X, а затем – Y.
- Теперь необходимо проверить синхронизацию клиента с сервером. Для этого пропишите:
sudo ntpdate ntp-server
Это позволит вам убедиться в наличии синхронизации между системой сервера и клиента. Обратите внимание на вывод, который будет отображать смещение времени.
- Отключите службу timesyncd. Хотя она и синхронизирует время локальной сети, вам она не потребуется:
sudo timedatectl set-ntp off
- Затем введите:
sudo apt-get install ntp
Этой командой вы установите NTP на системе клиента.
- Откройте файл конфигурации «ntp.conf»:
sudo nano /etc/ntp.conf
- Добавьте строку, которая укажет на предпочтение сервера. Кроме того, опция iburst в ней повысит точность синхронизации:
server NTP-server-host prefer iburst
- Сохраните изменения, нажав Ctrl+X, а затем – Y.
- Перезапустите сервер, чтобы применить все изменения:
sudo service ntp restart
- Проверьте очередь синхронизации:
ntpq -ps
Эта команда позволит вам убедиться, что ваш NTP-сервер указан как источник в очереди синхронизации времени.
Дополнительные настройки
С основными настройками мы закончили. Теперь продолжим знакомиться уже с продвинутыми настройками в файле конфигурации «ntp.conf».
В данном случае мы рассмотрим использование предпочитаемого сервера и настройки безопасности с использованием директив «restrict».
Как настроить предпочитаемый сервер
Для того чтобы задать предпочитаемый сервер в конфигурационном файле NTP, нужно воспользоваться директивой «prefer». Она указывает на то, что выбранный сервер должен в первую очередь использоваться для синхронизации.
Например, вы можете использовать ее с одним из ранее заданных серверов:
server 1.ru.pool.ntp.org prefer
Кроме того, указывать можно не только отдельные серверы, но и целые пулы. Разница будет лишь в синтаксисе – вместо опции «server» нужно указать «pool».
Как указать настройки безопасности
С помощью утилиты restrict вы можете управлять доступом к NTP-серверу и обеспечивать безопасность синхронизации времени.
Рассмотрим пример таких настроек:
restrict default kod notrap nomodify nopeer noquery
Здесь:
- «default» указывает, что эти ограничения по умолчанию применяются ко всем серверам и клиентам.
- «kod» используется для отправки протокола безопасности «kiss of death». Он отправляется серверам, которые отправляют слишком много запросов.
- «notrap» запрещает принимать управляющие команды.
- «nomodify» запрещает команды, которые могут повлиять на состояние сервера.
- «nopeer» запрещает синхронизацию с хостами.
- «noquery» запрещает выполнение запросов.
Обязательно перезапустите NTP-сервер после внесения изменений в конфигурационный файл:
sudo service ntp restart
Настройка NTP-сервера Windows Server
Важно! Не забудьте на всякий случай создать резервную копию реестра перед внесением изменений.
Компания SpaceWeb не предоставляет услугу Windows Server, информация по настройке предоставляется как справочная.
- Прежде чем приступить к настройке, убедитесь, что служба W32Time уже запущена. Мы можем сделать это, изменив запись в реестре:
HKLM\System\CurrentControlSet\services\W32Time\TimeProviders\NtpServer
- Далее найдите параметр «Enabled» и установите ему значение 1:
0x00000001 (1)
- Затем в командной строке выполните следующую команду для перезапуска службы:
net stop w32time && net start w32time
- Убедитесь, что служба W32Time включена:
w32tm /query /configuration
В выводе обратите внимание на блок «NtpServer <Local>». Значение «Enabled» должно быть равно 1, как мы и указали ранее.
- Проверьте, что UDP-порт 123 открыт в файерволе для корректного обслуживания клиентов.
Вы знаете, какой порт NTP по умолчанию? 123/UDP. Именно поэтому мы проверяем, открыт ли он.
- Вновь откройте реестр и найдите:
HKLM\System\CurrentControlSet\services\W32Time\Parameters
В этой ветке нас интересует параметр «Type». Установите ему одно из следующих значений в зависимости от требуемого режима синхронизации:
- «NoSync» – синхронизация не требуется.
- «NTP» – нужна синхронизация с внешними серверами NTP, определенными в реестре.
- «NT5DS» – требуется синхронизация в соответствии с иерархией доменов.
- «AllSync» – необходима синхронизация со всеми доступными серверами.
- Вернитесь в реестр и настройте значения в ветке «NtpServer». Добавьте сервера, обратив внимание на параметр в конце:
- «0x1», SpecialInterval. Это стандартный режим, мы рекомендуем вам выбрать именно его.
- «0x2», UseAsFallbackOnly. Позволяет использовать сервер в качестве резервного.
- «0x4», SymmetricActive. Это основной режим для NTP-серверов.
- «0x8», Client. Используется, если есть проблемы с синхронизацией.
- Наконец, в ветке «W32Time\TimeProviders\NtpClient» найдите параметр «SpecialPollInterval» и установите требуемое значение (в секундах).
- После внесения изменений перезапустите службу W32Time:
net stop w32time && net start w32time
Теперь у вас должен есть настроенный NTP-сервер на Windows Server.
Заключение
В этой статье мы рассмотрели, как настроить NTP на сервере Ubuntu и Windows.
Настройка синхронизации времени NTP в домене Windows
В этой статье рассмотрим настройку синхронизации времени между контроллерами домена, клиентскими ПК и прочими устройствами подключенными в домен Windows.
Допустим, у нас есть два контроллера домена Windows GC без доступа в интернет. Сервера находятся в разных подсетях на разных физических адресах (разные площадки или офисы). Сеть между площадками организована через VPN туннель, например GRE. Вся репликация между серверами происходит по GRE.
Схема получения времени следующая:
- Роутер на базе PFSense получает время из сети Internet. На каждой площадке свой PFSense.
- Контроллер домена опрашивает согласно GPO сервер времени на PFSense
- Члены домена ПК и прочие устройства опрашивают контроллер домена своей площадки. Если один из контроллеров домена не в сети, то ПК будут опрашивать другой доступный контроллер домена.
Задача раздать, синхронизировать время по всему домену используя настройки DHCP и GPO.
Итак приступим.
- Подключаемся к серверу на котором развёрнут DHCP и для области настраиваем параметр 004 — «Сервер времени» и 042 — «NTP — серверы». В нашем случае сервером времени для клиентов домена является контроллер домена. Так как у нас две подсети, то для каждой сети нужно указать свой контроллер домена.
В этой статье приоритет настройки синхронизации времени через GPO. Поэтому настройка времени опциями 004 и 042 на DHCP не обязательна, но бывает полезна когда в сети есть старые устройства которые не находятся в домене.
Параметр 004 определяет серверы, которые предоставляют TIME/ITP (согласно RFC 868)
Параметр 042 определяет серверы, которые предоставляют NTP/SNTP (RFC 1769). - Теперь создадим политику домена для синхронизации времени для членов домена не являющимися контроллерами домена. Другими словами для обычных ПК и серверов.
- Откроем консоль управления групповой политикой домена.
- В «Фильтры WMI» создадим фильтр с следующими параметрами.
Имя: PDC Emulator Описание: Настройка NTP для домена Запрос WMI: Пространство имён: root\CIMv2 Запрос: Select * from Win32_ComputerSystem where DomainRole <> 5
В запросе DomainRole <> 5 — члены домена которые не являются контроллерами домена
-
Создадим объект групповой политики с свяжем его с текущим доменом. Имя например: «NTP сервер для ПК»
-
Правим параметры в ветке: «Конфигурация компьютера» / «Политики» / «Административные шаблоны» / «Система» / «Служба времени Windows» / «Поставщики времени»
-
«Включить NTP-клиент Windows» — Включить
-
«Настроить NTP-клиент Windows» — настраиваем
NTPServer: FQDN,0x9 FQDN,0x9 FQDN,0x9 Type: NT5DS
В параметре NTPServer указываем через ПРОБЕЛ FQDN имена наших контроллеров домена, а их у нас по схеме два. Срезу после FQDN указываем параметр, например: 0х9.
- 0x1 – SpecialInterval, использование задаваемого интервала опроса
- 0x2 – режим UseAsFallbackOnly – синхронизация только при необходимости
- 0x4 – SymmetricActive, симметричный активный режим
- 0x8 – Client, отправка запроса в клиентском режиме
- 0x9 – сложение параметров 0x1 и 0x8
В параметре Type указываем: NT5DS
- NoSync — не использовать синхронизацию с каким либо внешним источником времени
- NTP синхронизация с внешними серверами времени, которые указаны в параметре NtpServer
- NT5DS — синхронизация выполняется согласно доменной иерархии
- AllSync — синхронизация с использованием любых доступных источников
Закрываем окно редактирования групповой политики.
Выделяем GPO которое мы только что создали. Заходим на вкладку «Область» и указываем в фильтрах безопасности «Компьютеры домена», в WMI фильтре указываем фильтр который мы создали во втором пункте этой статьи «PDC Emulator»
-
- Создадим политику для синхронизации времени для самого контроллера домена.
- Откроем консоль управления групповой политикой домена.
- Создадим объект групповой политики с свяжем его с текущим доменом. Имя например: «NTP для FQDN»
- Правим параметры в ветке: «Конфигурация компьютера» / «Настройка» / «Конфигурация Windows» / «Реестр»
- Создаём параметр
Действие: Заменить Куст:HKLM Путь: SYSTEM\CurrentControlSet\Services\w32time\TimeProviders\VMICTimeProvider Имя: Enabled
- Создаём параметр
- Правим параметры в ветке: «Конфигурация компьютера» / «Политики» / «Административные шаблоны» / «Система» / «Служба времени Windows» / «Поставщики времени»
- «Включить NTP-клиент Windows» — включить
- «Включить NTP-сервер Windows» — включить
- «Настроить NTP-клиент Windows» — настраиваем
NTPServer: FQDN,0x8 Type: NTP
В параметре NTPServer указываем FQDN имя NTP сервера с параметром 0х8. В качестве NTP сервера выступает шлюз PFSense на котором включена служба времени NTP
Выделяем GPO которое мы только что создали для контроллера домена. Заходим на вкладку «Область» и указываем в фильтрах безопасности либо группу либо прямое имя контроллера домены. WMI фильтр оставить пустым.
- Заходим на PFSense и настраиваем NTP сервер, а так же проход UDP 123
Настройка синхронизации времени в домене завершена.
Комментарии ()
-
brrrr66
05 февраля 2025, 18:26
Вы уверены, что параметр «004 — Time Server», верный?
NTP отвечает параметр «042 NTP Server»-
MG
06 февраля 2025, 09:55
004 — верный параметр для старых устройств… редко когда нужен…
042 — часто используется, но в этой статье все настройки через GPO, поэтому эти опции DHCP можно не настраивать.
-