Ntpdate синхронизация времени windows

  • Настройка сервера NTP на ОС Windows 10
    • Автоматическая настройка
    • Настройка вручную
  • Настройка синхронизации времени и часового пояса на сервере RLP

Настройка сервера NTP на ОС Windows 10

Для настройки сервера понадобятся права администратора у пользователя Windows.

Автоматическая настройка

  1. Скачайте файл NTP_server_setup.bat
  2. Нажмите на файл правой кнопкой мыши и в меню выберите Запуск от имени администратора. Если Windows запросит разрешения на внесение изменений приложением, нажмите кнопку Да.

  3. Подождите, пока скрипт настроит сервер NTP. Последняя команда скрипта выводит текущую конфигурацию службы времени. Если скрипт успешно настроил сервер NTP, то в разделе NtpServer опция Enabled будет выставлена в 1. Нажмите любую клавишу, чтобы завершить работу скрипта и закрыть окно командной строки.

Настройка вручную

  1. Зайдите в редактор реестра одним из способов:
    • Нажмите клавиши Win+R, в появившемся окне Выполнить наберите regedit и нажмите Enter.

    • В строке поиска Windows наберите regedit и выберите найденное приложение Редактор реестра.

      Если Windows запросит разрешения на внесение изменений приложением Редактор реестра, нажмите кнопку Да.

  2. В Редакторе реестра перейдите по пути \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer
    Для этого можно воспользоваться деревом в левой части окна или скопировать и добавить строку пути в поле в верхней части окна.

  3. Откройте окно изменения параметра Enabled двойным щелчком мыши по нему в правой части окна Редактора реестра. Измените значение параметра на 1 и нажмите кнопку ОК.

  4. В Редакторе реестра перейдите по пути \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config



  5. Измените значение параметра AnnounceFlags на 5.

  6. Закройте Редактор реестра.
  7. Чтобы изменения вступили в силу, необходимо перезапустить службу времени Windows. Зайдите в управление службами одним из способов:
    • Нажмите клавиши Win+R, в появившемся окне Выполнить наберите services.msc и нажмите Enter.

    • В строке поиска Windows наберите службы и выберите найденное приложение Службы.

  8. В списке служб найдите Службу времени Windows.

  9. Дважды щёлкните на службу, чтобы зайти в окно её настройки.
    Если служба в состоянии Остановлена, то нажмите кнопку Запустить и дождитесь запуска службы.
    Если служба в состоянии Выполняется, сначала нажмите кнопку Остановить, дождитесь остановки службы, нажмите кнопку Запустить и дождитесь запуска службы.
    Установите Тип запуска в Автоматически и нажмите кнопку ОК, чтобы сохранить настройку.

  10. Закройте окно Служб Windows.
  11. Для проверки, что сервер NTP запустился, можно использовать команду w32time командной строки Windows.
    Запустите командную строку Windows одним из способов:
    • Нажмите клавиши Win+R, в появившемся окне Выполнить наберите cmd и нажмите Enter.

    • В строке поиска Windows наберите cmd и выберите найденное приложение Командная строка.

  12. В Командной строке наберите или скопируйте сочетанием клавиш Shift+Insert строку w32tm /query /configuration и нажмите клавишу Enter.

  13. Команда выведет текущую конфигурацию службы времени. Если сервер NTP запущен, то в разделе NtpServer опция Enabled будет выставлена в 1. Закройте окно Командной строки.

  14. Для работы сервера NTP нужно разрешить в Брандмауэре Windows UDP траффик по порту 123. Откройте Монитор брандмауэра Защитника Windows в режиме повышенной безопасности одним из способов:
    • Нажмите клавиши Win+R, в появившемся окне Выполнить наберите wf.msc и нажмите Enter.

    • В строке поиска Windows наберите  и выберите найденное приложение.

  15. В окне Монитора брандмауэра… переключитесь на Правила для входящих подключений и нажмите на Создать правило…

  16. Выберите тип правила Для порта и нажмите кнопку Далее.

  17. Выберите Протокол UDP, впишите номер порта 123 и нажмите кнопку Далее.

  18. Выберите Разрешить подключение и нажмите кнопку Далее.

  19. Установите галочки для всех профилей и нажмите кнопку Далее.

  20. Введите имя правила, например, udp in 123 и нажмите кнопку Готово.

  21. Переключитесь на Правила для исходящего подключения и нажмите Создать правило. Создайте правило с такими же настройками (тип правила, протокол и порты и т.д.), как и в предыдущих пунктах.

  22. Закройте окно Монитора брандмауэра…

Настройка синхронизации времени и часового пояса на сервере RLP

Для копирования файлов по сети из ОС Windows можно использовать WinSCP.

Команды можно вводить как локально на сервере, так и удалённо по SSH. Для удалённого подключения можно использовать PuTTY.

Данные для подключения по умолчанию:
Логин: root
Пароль: root (при наборе пароля он может не отображаться, даже символами «звёздочка»)

  1. Скачайте и разархивируйте ntp_local_install.zip
  2. Скопируйте получившуюся папку ntp_local_install в папку home на сервере RLP.
  3. Зайдите на сервер локально или удалённо.
  4. Остановите службу TRASSIR командой:
    systemctl stop t1daemon
  5. Установите rpm из скопированной папки командой:
    yum install -y /home/ntp_local_install/*.rpm
  6. Зайдите в редактирование файла настроек планировщика задач командой:
    crontab -e
  7. Нажмите клавишу Insert для перехода в режим редактирования.
    Добавьте строку */5 * * * * sudo ntpdate IP-адрес компьютера на Windows с настроенным NTP-сервером
    Пример: */5 * * * * sudo ntpdate 192.168.1.1
  8. Нажмите клавишу Esc, чтобы выйти из режима редактирования. Введите :wq! и нажмите клавишу Enter, чтобы сохранить изменения и выйти из редактора.
  9. Проверьте текущий часовой пояс на сервере RLP командой
    timedatectl status
    Часовой пояс и город указаны в разделе Time zone:

  10. Если часовой пояс на сервере не совпадает с часовым поясом, где физически размещён сервер, то его можно поменять:
    1. Выведите список городов, поддерживаемых службой времени и выберите ближайший:
      Для списка городов Европы введите команду: timedatectl list-timezones | grep Europe
      Для списка городов Азии введите команду: timedatectl list-timezones | grep Asia
    2. Установите нужный часовой пояс командой: timedatectl set-timezone выбранный город
      Пример: timedatectl set-timezone Asia/Vladivostok

      Город нужно указать в том же виде, в котором он выводится командой timedatectl list-timezones, включая регистр букв. Если указать город неправильно, часовой пояс не изменится.

  11. Проверьте текущее время на сервере 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-сервера рунета.

Рисунок 1. Иерархическая структура NTP-серверов

Рисунок 1. Иерархическая структура NTP-серверов

Процесс синхронизации

Процесс синхронизации включает в себя обмен небольшими пакетами данных, содержащими информацию о времени и представляющими собой запросы и соответствующие ответы (см. рисунок 2) между клиентом и сервером (или двумя серверами).

Рисунок 2. Процесс синхронизации клиента и сервера

Рисунок 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) будут работать.

Рисунок 3. Создание LAN Segment
Рисунок 4. Настройка сети виртуальных машин

Рисунок 4. Настройка сети виртуальных машин

Виртуальные машины должны быть настроены с уникальными 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 сервера включает в себя несколько этапов:

  1. Установка пакета ntp.

  2. Конфигурация файла ntp.conf.

  3. Проверка настроек и работоспособности сервера.

Для установки пакета 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-сервера

  1. Обновите пакеты репозитория:

sudo apt-get update

Важно! Перед выполнением следующей команды удостоверьтесь, что вы авторизованы в системе для выполнения команд с sudo. 

  1. Установите NTP-сервер с помощью команды:

sudo apt-get install ntp

Если вас попросят подтвердить установку, нажмите «y». 

  1. Убедитесь, что NTP корректно установился. Для этого пропишите:

systemctl status ntp

Вывод должен содержать номер версии и информацию о времени установки: 

Если установка прошла успешно, переходите к следующим шагам.

Настройка NTP-сервера в Ubuntu

  1. Откройте файл конфигурации NTP:

sudo nano /etc/ntp.conf

Как правило, сервер будет указывать корректное время, но мы все равно рекомендуем вам переключиться на ближайший пул серверов. Так вы сможете избежать возможных ошибок. 

  1. Внесите необходимые изменения в файл конфигурации, указав российские сервера времени. По умолчанию у вас на экране будут отображаться такая информация:

Перед выделенными серверами поставьте символ «#», а в конце добавьте четыре российских сервера. Например:

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

  1. Сохраните изменения, зажав Ctrl+O, затем нажмите Enter.
  2. Затем закройте редактор с помощью сочетания клавиш Ctrl+X.
  3. Перезапустите NTP-сервер:

sudo service ntp restart

  1. Теперь проверьте, успешно ли применились настройки. Для этого пропишите:

sudo service ntp status

В выводе вы должны увидеть надпись «Active (running)». 

  1. Далее необходимо открыть доступ через UFW и порт 123. Введите:

sudo ufw allow from any to any port 123 proto udp 

Теперь ваш NTP-сервер установлен и сконфигурирован на сервере Ubuntu. Вы можете продолжить настройку, добавляя или изменяя сервера времени в файле конфигурации по мере необходимости.

Настройка синхронизации клиентов с NTP-сервером

  1. Установите инструмент для проверки сетевой конфигурации NTP:

sudo apt-get install ntpdate

  1. Для внесения дальнейших изменений потребуется отредактировать файл «hosts»:

sudo nano /etc/hosts

  1. Добавьте соответствующую строку с IP-адресом вашего NTP-сервера и хостом:

<IP-адрес> ntp-server

  1. Сохраните изменения, нажав Ctrl+X, а затем – Y.
  2. Теперь необходимо проверить синхронизацию клиента с сервером. Для этого пропишите: 

sudo ntpdate ntp-server

Это позволит вам убедиться в наличии синхронизации между системой сервера и клиента. Обратите внимание на вывод, который будет отображать смещение времени. 

  1. Отключите службу timesyncd. Хотя она и синхронизирует время локальной сети, вам она не потребуется:

sudo timedatectl set-ntp off

  1. Затем введите:

sudo apt-get install ntp

Этой командой вы установите NTP на системе клиента. 

  1. Откройте файл конфигурации «ntp.conf»:

sudo nano /etc/ntp.conf

  1. Добавьте строку, которая укажет на предпочтение сервера. Кроме того, опция iburst в ней повысит точность синхронизации:

server NTP-server-host prefer iburst

  1. Сохраните изменения, нажав Ctrl+X, а затем – Y.
  2. Перезапустите сервер, чтобы применить все изменения:

sudo service ntp restart

  1. Проверьте очередь синхронизации:

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, информация по настройке предоставляется как справочная.

  1. Прежде чем приступить к настройке, убедитесь, что служба W32Time уже запущена. Мы можем сделать это, изменив запись в реестре:

HKLM\System\CurrentControlSet\services\W32Time\TimeProviders\NtpServer

  1. Далее найдите параметр «Enabled» и установите ему значение 1:

0x00000001 (1)

  1. Затем в командной строке выполните следующую команду для перезапуска службы:

net stop w32time && net start w32time

  1. Убедитесь, что служба W32Time включена:

w32tm /query /configuration

В выводе обратите внимание на блок «NtpServer <Local>». Значение «Enabled» должно быть равно 1, как мы и указали ранее. 

  1. Проверьте, что UDP-порт 123 открыт в файерволе для корректного обслуживания клиентов. 

Вы знаете, какой порт NTP по умолчанию? 123/UDP. Именно поэтому мы проверяем, открыт ли он. 

  1. Вновь откройте реестр и найдите:

HKLM\System\CurrentControlSet\services\W32Time\Parameters

В этой ветке нас интересует параметр «Type». Установите ему одно из следующих значений в зависимости от требуемого режима синхронизации:

  • «NoSync» – синхронизация не требуется. 
  • «NTP» – нужна синхронизация с внешними серверами NTP, определенными в реестре.
  • «NT5DS» – требуется синхронизация в соответствии с иерархией доменов. 
  • «AllSync» – необходима синхронизация со всеми доступными серверами.
  1. Вернитесь в реестр и настройте значения в ветке «NtpServer». Добавьте сервера, обратив внимание на параметр в конце:
  • «0x1», SpecialInterval. Это стандартный режим, мы рекомендуем вам выбрать именно его.
  • «0x2», UseAsFallbackOnly. Позволяет использовать сервер в качестве резервного.
  • «0x4», SymmetricActive. Это основной режим для NTP-серверов.
  • «0x8», Client. Используется, если есть проблемы с синхронизацией.
  1. Наконец, в ветке «W32Time\TimeProviders\NtpClient» найдите параметр «SpecialPollInterval» и установите требуемое значение (в секундах).
  2. После внесения изменений перезапустите службу W32Time:

net stop w32time && net start w32time

Теперь у вас должен есть настроенный NTP-сервер на Windows Server. 

Заключение

В этой статье мы рассмотрели, как настроить NTP на сервере Ubuntu и Windows. 

Настройка синхронизации времени NTP в домене Windows

В этой статье рассмотрим настройку синхронизации времени между контроллерами домена, клиентскими ПК и прочими устройствами подключенными в домен Windows.

Допустим, у нас есть два контроллера домена Windows GC без доступа в интернет. Сервера находятся в разных подсетях на разных физических адресах (разные площадки или офисы). Сеть между площадками организована через VPN туннель, например GRE. Вся репликация между серверами происходит по GRE.

Схема получения времени следующая:

  1. Роутер на базе PFSense получает время из сети Internet. На каждой площадке свой PFSense.
  2. Контроллер домена опрашивает согласно GPO сервер времени на PFSense
  3. Члены домена ПК и прочие устройства опрашивают контроллер домена своей площадки. Если один из контроллеров домена не в сети, то ПК будут опрашивать другой доступный контроллер домена.

Задача раздать, синхронизировать время по всему домену используя настройки DHCP и GPO.

Итак приступим.

  1. Подключаемся к серверу на котором развёрнут DHCP и для области настраиваем параметр 004 — «Сервер времени» и 042 — «NTP — серверы». В нашем случае сервером времени для клиентов домена является контроллер домена. Так как у нас две подсети, то для каждой сети нужно указать свой контроллер домена.

    В этой статье приоритет настройки синхронизации времени через GPO. Поэтому настройка времени опциями 004 и 042 на DHCP не обязательна, но бывает полезна когда в сети есть старые устройства которые не находятся в домене.
    Параметр 004 определяет серверы, которые предоставляют TIME/ITP (согласно RFC 868)
    Параметр 042 определяет серверы, которые предоставляют NTP/SNTP (RFC 1769).

  2. Теперь создадим политику домена для синхронизации времени для членов домена не являющимися контроллерами домена. Другими словами для обычных ПК и серверов.
    • Откроем консоль управления групповой политикой домена.
    • В «Фильтры 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»

  3. Создадим политику для синхронизации времени для самого контроллера домена.
    • Откроем консоль управления групповой политикой домена.
    • Создадим объект групповой политики с свяжем его с текущим доменом. Имя например: «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 фильтр оставить пустым.

  4. Заходим на PFSense и настраиваем NTP сервер, а так же проход UDP 123

Настройка синхронизации времени в домене завершена.



Комментарии ()

  1. brrrr66
    05 февраля 2025, 18:26

    Вы уверены, что параметр «004 — Time Server», верный?
    NTP отвечает параметр «042 NTP Server»

    1. MG
      06 февраля 2025, 09:55

      004 — верный параметр для старых устройств… редко когда нужен…
      042 — часто используется, но в этой статье все настройки через GPO, поэтому эти опции DHCP можно не настраивать.

    Написать комментарий

    Понравилась статья? Поделить с друзьями:
    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии
  2. Кумулятивный пакет обновлений windows xp
  3. Drive cleanup windows 10
  4. Как удалить защитник windows 10 навсегда powershell
  5. Как ставить обновления windows вручную
  6. История изменения файлов windows 10