Синхронизация времени по NTP

Синхронизация времени по NTP Хостинг

Важным параметром в эксплуатации любого сервера является корректно настроенное время и его своевременная синхронизация. Как выполнить смену часового пояса в ubuntu в случае его изменения или неверного указания во время установки – одна из тем этой статьи. Также я расскажу про установку и использование программ для синхронизации времени и настройку службы точного времени ntp.

Содержание
  1. Время и дата в Ubuntu Server
  2. Утилита date
  3. Утилита timedatectl
  4. Установка и настройка часового пояса в Ubuntu
  5. Синхронизация времени с помощью ntpdate, timedatectl
  6. Клиент ntp
  7. Настройка ntp сервера
  8. Ошибки синхронизации времени
  9. The NTP socket is in use, exiting
  10. No server suitable for synchronization found
  11. Служба ntp не запускается после загрузки сервера
  12. Ubuntu меняет время и часовой пояс в bios
  13. Время загрузки системы
  14. Как узнать точное время включения компьютера с Ubuntu?
  15. Время последнего выключения Ubuntu
  16. Заключение
  17. Настройка аппаратного (системного) времени
  18. Ручная настройка времени в CentOS
  19. Настройка часового пояса в CentOS
  20. Настройка синхронизация времени по NTP в CentOS
  21. Используем chronyd для синхронизация времени в CentOS 8
  22. Распространённые ошибки при настройке времени в CentOS
  23. Настройка политики синхронизации NTP на контролере домена PDC
  24. Настройка синхронизации времени на клиентах домена
  25. Как устроен протокол NTP
  26. Как установить и настроить NTP-сервер
  27. Ареал использования серверов NTP
  28. Резервный сервер точного времени
  29. Особые случаи использования NTP
  30. Как проверить синхронизацию
  31. Как установить локальные дату и время
  32. SYNOPSIS
  33. How to Check If Client machine is sync with NTP Server
  34. How to Test Connection to a NTP Server
  35. How to divert Connection output to the System Logs
  36. How to Synchronize Connection to a NTP Server
  37. How to Enable Debugging Mode
  38. How to Use Verbose Mode with ntpdate command in Linux
  39. How to Force Step up the time rather than adjust Using ntpdate command
  40. How to Force the Time Sync to always be slewed
  41. How to Check Man Page of ntpdate command in Linux
  42. Просмотр статуса

Время и дата в Ubuntu Server

Как я уже сказал во введении, следить за системным временем в ubuntu server нужно в обязательном порядке, как и в любом другом сервере. Начальные настройки вы делаете еще во время установки системы. Далее вам может понадобиться либо изменение часового пояса, либо более точная настройка и синхронизация часов.

Кстати, если вам интересно узнать, почему я лично использую именно ubuntu server, а не какой-то другой linux дистрибутив, то читайте мой обзор и сравнение ubuntu с другими системами.

Особенно актуальной тема системного времени становится, когда вы арендуете сервера где-то в другой стране с отличным от вашего часового пояса. По умолчанию, у хостера скорее всего будет установлен его часовой пояс. Иногда я забываю это проверить и замечаю только тогда, когда возникают какие-то проблемы. А вот список проблем, которые могут теоретически возникнуть, если на сервере будет неправильное время:

  • При просмотре логов или разборе инцидентов придется сначала переводить время в свой часовой пояс или формат, чтобы адекватно разобраться в ситуации.
  • Если у вас настроена какая-то интеграция с доменной структурой Windows, расхождение по времени может приводить к проблемам.
  • При использовании cron и автоматических заданий для выполнения, неправильное время на сервере может удивить вас тем, что ваши задачи будут выполнены не тогда, когда вы этого ожидаете.
  • Если на сервере работает web сайт или почтовый сервис, время публикации постов или отправления писем будет неправильным, что создаст неудобство пользователям.

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

Утилита date

Посмотреть время в командной строке Ubuntu можно с помощью команды date.

Синхронизация времени по NTP

В данном случае вы видите следующую информацию:

Для того, чтобы посмотреть время в 24-х часовом формате в консоли ubuntu, можно использовать дополнительный ключ к команде, добавив туда еще и саму дату:

date +»%H:%M %d/%m/%Y»
14:09 26/03/2021

Таким образом, с помощью параметров форматирования, вы можете выбирать любой формат времени для отображения. Традиционно, командная строка linux позволяет очень гибко выполнять различные действия с помощью своих утилит. Например, вы можете посмотреть не только время и дату, но и вывести в консоль номер дня недели, добавив дополнительный ключ %j:

date +»%H:%M %d/%m/%Y %j»
14:13 26/03/2021 085

Узнать время сервера в unix формате можно вот так:

Если у вас часовой пояс отличный от UTC, а вы хотите увидеть время именно в этом часовой поясе, то воспользуйтесь следующим ключом команды:

Очень удобно использовать утилиту date с различными параметрами в скриптах, чтобы получать время в удобном для вас формате. Например, когда вы используете время в названиях файлов бэкапов при их создании. Вот несколько примеров наиболее часто используемых форматов отображения даты и времени:

date +%Y-%m-%d
2021-03-26
date +%H:%M:%S
14:36:35
date +%Y-%m-%d_%H:%M:%S
2021-03-26_14:36:42

Синхронизация времени по NTP

Утилита timedatectl

В составе systemd есть своя утилита для просмотра и настройки времени через консоль — timedatectl. Далее пример с ее участием для просмотра системного времени сервера ubuntu.

Синхронизация времени по NTP

С просмотром в консоли текущего времени сервера разобрались, переходим к его настройке.

Ручная настройка времени в ubuntu обычно не представляет какой-то особой сложности, если понимаешь, как это сделать. Для того, чтобы самостоятельно установить время через консоль, необходимо запустить date через sudo со следующими параметрами:

Синхронизация времени по NTP

В данном случае при обновлении времени мы подразумевали:

  • 03 — месяц март;
  • 26 — текущее число дня месяца;
  • 17 — часы;
  • 21 — минуты;

То есть базовый формат утилиты date следующий — MMDDhhmm.

В моих примерах время отображается в 12-ти часовом формате на английском языке. Для того, чтобы перевести его в 24-х часовой формат, нужно изменить в locale параметр LC_TIME. Именно там стоит привязка к формату. Например, в локали en_US по умолчанию используется 12-ти часовой формат, а в ru_RU или en_GB 24-х часовой.

Для того, чтобы дата в консоли отображалась на русском языке, а время в 24-х часовом формате, достаточно сформировать locale ru_RU и изменить только формат времени, оставив все остальное на английском языке.

sudo locale-gen ru_RU.UTF-8
sudo update-locale LANG=en_US.UTF-8 LC_TIME=»ru_RU.UTF-8″

Синхронизация времени по NTP

Еще один способ установки даты и времени с помощью timedatectl:

sudo timedatectl set-time «2021-03-26 18:09:30»

При этом вы можете получить ошибку: Failed to set time: Automatic time synchronization is enabled. Утилита timedatectl более умная, нежели date. Она проверяет, не настроена ли у вас автоматическая синхронизация времени. И если настроена, то вручную не дает его изменить. В целом, это правильный подход, хотя и может создавать неудобства. В этом случае вам надо отключить синхронизацию и только потом установить время руками. Эту тему мы будем рассматривать ниже отдельно.

Установка и настройка часового пояса в Ubuntu

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

Установить часовой пояс можно с помощью утилит — tzselect и timedatectl. С их же помощью можно перед этим посмотреть список доступных зон. Например, так:

Вы увидите длинный список временных зон, состоящий из 348 строк. Его можно будет скролить, либо сразу ограничить вывод нужным вам диапазоном.

Синхронизация времени по NTP

После того, как выбрали зону, изменяем текущий часовой пояс.

sudo timedatectl set-timezone Europe/Moscow

или с помощью tzselect:

Синхронизация времени по NTP

Меняя эту ссылку, можно так же изменять часовой пояс.

Синхронизация времени с помощью ntpdate, timedatectl

После того, как вы настроили правильную дату и нужный часовой пояс, стоит поработать над тем, чтобы часы всегда показывали точное значение минут и часов. Для этого надо настроить синхронизацию времени. Тут традиционно для linux есть несколько способов и вариантов настройки.

Первый и самый простой способ синхронизации времени в ubuntu — воспользоваться известной утилитой ntpdate.

sudo apt install ntpdate

В качестве параметра ntpdate принимает адрес сервера точного времени, с которого будет произведена синхронизация локальных часов. Я предлагаю воспользоваться популярным пулом серверов точного времени — pool.ntp.org.

sudo ntpdate pool.ntp.org

Синхронизация времени по NTP

Пул автоматически выбрал сервер точного времени, с которым мы синхронизировали свои часы. Один из способов автоматизации этого процесса является запуск ntpdate через cron. Но это не очень удобное решение, так как есть более эффективные способы. Например, с помощью локальной службы ntp или chrony, а так же компонента systemd — timesyncd.

После установки системы вам стоит проверить, а не запущена ли у вас уже синхронизация времени с помощью timesyncd. Проверяем:

Синхронизация времени по NTP

Так и есть. В большинстве современных дистрибутивов, где установлена systemd, уже запущена timesyncd. Параметры этой службы находятся в конфигурационном файле /etc/systemd/timesyncd.conf, где можно посмотреть, какой сервер используется для синхронизации времени и в случае необходимости, заменить. В Ubuntu это ntp.ubuntu.com. Большого смысла менять его на другой сервер нет. Если только вы не хотите синхронизировать время с какого-то своего локального сервера. Как это сделать, я расскажу отдельно ниже.

Читайте также:  - Тарифные планы на услуги хостинга

Клиент ntp

Если вас по какой-то причине не устраивает служба timesyncd, можете ее отключить.

sudo systemctl stop systemd-timesyncd
sudo systemctl disable systemd-timesyncd

А в место нее установить, к примеру, ntp, работающую в режиме клиента.

Поясню немного, зачем это может понадобиться. Если вам необходимо только синхронизировать время, то утилиты timesyncd вполне хватает для этой простой задачи. Но иногда вам нужен более широкий функционал. Например, вы хотите настроить в своей локальной сети свой собственный сервер времени, чтобы остальные компьютеры сверяли свои часы с ним. В этом случае вам нужна будет служба ntp. А раз вы ее и так поставите, то зачем вам дублирование функционала? В этом случае имеет смысл отключить timesyncd и оставить только ntp. Она умеет работать и в качестве сервера времени, и в качестве клиента синхронизации.

Итак, установили ntp. Для того, чтобы синхронизировать время, достаточно ее просто запустить:

sudo systemctl enable —now ntp

Проверяем статус синхронизации:

sudo systemctl status ntp

Синхронизация времени по NTP

Видим пул серверов времени, с которыми наш ubuntu server будет синхронизировать свои часы. Настройки службы находятся в конфигурационном файле /etc/ntp.conf. Посмотреть информацию о работе ntp можно с помощью утилиты ntpq:

Далее рассмотрим вариант, когда вам нужен свой сервер времени в локальной сети. Для этого донастроим установленную службу ntp.

Настройка ntp сервера

Сервер времени в своей работе использует отдельный протокол NTP (Network Time Protocol). Ему нужен для работы UDP Port 123. Так что прежде чем дальше настраивать ntp, откройте этот порт на фаерволе или отключите его. Настройка firewall выходит за рамки данной статьи, так как в его качестве может использоваться разный софт. Если у вас управление фаерволом настроено через ufw, то достаточно такой команды:

sudo ufw allow ntp

Далее открываем конфиг /etc/ntp.conf и приводим его к примерно следующему виду:

driftfile /var/lib/ntp/ntp.drift
restrict -4 default kod notrap nomodify nopeer noquery limited
restrict 127.0.0.1
restrict 10.20.1.0 mask 255.255.255.0 nomodify notrap

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

logfile /var/log/ntp.log

Это минимально необходимое содержимое, чтобы запустить свой собственный сервер времени на базе ntp в локальной сети 10.20.1.0/24. Если вам не нужен протокол ipv6, то можете его отключить. Для этого в файл /etc/default/ntp добавляем параметр:

И перезапускаем службу ntp. Проверяем, как она работает.

Синхронизация времени по NTP

Служба времени слушает все сетевые интерфейсы. Теперь с любого клиента в локальной сети можно выполнить с помощью ntpdate синхронизацию времени с нашим Ubuntu Server. Проверьте это самостоятельно. Ранее я уже показывал, как это сделать.

Ошибки синхронизации времени

Иногда в логе /var/log/ntp.log или системном логе /var/log/syslog вы можете наблюдать ошибку — kernel reports TIME_ERROR: 0x2041: Clock Unsynchronized. На нее можно не обращать внимание, так как реально это не ошибка, а информационное сообщение. Нам просто сообщают о том, что в момент страта службы ntp, ядро linux еще не синхронизировало время.

The NTP socket is in use, exiting

Если при запуске синхронизации времени с помощью ntpdate вы видите ошибку — the NTP socket is in use, exiting, то это значит, что у вас уже запущена служба ntp. Для того, чтобы не было конфликтов при изменении времени, должно работать что-то одно, либо ntpdate, либо ntp, но не оба одновременно. Чтобы эта ошибка исчезла, достаточно просто остановить ntp и запустить ntpdate еще раз.

No server suitable for synchronization found

Еще одна популярная ошибка, которая может возникнуть при запуске ntpdate. Она означает, что не получается по какой-то причине установить соединение с сервером времени. В общем случае это означает, что есть какие-то сетевые проблемы, но не обязательно. Вы можете попробовать запустить ntpdate c ключом -u. Он означает, что будет использован локальный не 123-й порт udp, как обычно, а другой из непривилегированного диапазона. Иногда это помогает, так как многие провайдеры из-за известной уязвимости протокола ntp блокируют исходящий 123 порт.

ntpdate -u pool.ntp.org

Служба ntp не запускается после загрузки сервера

Если ntp не стартует после загрузки сервера, то связано это может быть в первую очередь с тем, что не отключена служба timesyncd. Отключите ее и проверьте еще раз:

sudo timedatectl set-ntp no

Ubuntu меняет время и часовой пояс в bios

Убунта имеет дурную привычку при синхронизации времени устанавливать в bios часовой пояс UTC. В общем случае это не доставляет проблем, но если у вас установлена параллельно еще какая-то система на компьютере, то это может создавать проблемы. Чтобы Ubuntu не трогала часы в bios, необходимо выполнить следующую команду:

Время загрузки системы

Немного затрону еще одну тему, которая не связана напрямую с часами на сервере, но тем не менее имеет отношение ко времени. Эта информация наиболее актуальна как раз в этой статье.

Как узнать точное время включения компьютера с Ubuntu?

Команда uptime может показать не только время, в течении которого работает сервер, но и точное время запуска системы:

Синхронизация времени по NTP

Эту же информацию можно получить с помощью утилиты who:

Время последнего выключения Ubuntu

Если вы хотите узнать не только время включения сервера, но и время последних выключений или время последней перезагрузки, то воспользуйтесь утилитой last:

last -x reboot

Синхронизация времени по NTP

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

Заключение

В данной статье я расскажу, как настроить время, дату и изменить часовой пояс(timezone) в Linux CentOS, как выполнять синхронизацию времени с NTP сервером и исправить типичные ошибки.

На серверах существует два вида часов. Аппаратные (real time clock), которые работают даже при выключенном сервере и программные часы операционной системы. Показания этих двух часов, могут отличаться. При этом, после запуска операционной системы, программные часы опираются на показания аппаратных и в дальнейшем могут корректироваться системой.

Абсолютное большинство программ в своей работе используют время программных часов.

Настройка аппаратного (системного) времени

Чтобы проверить аппаратное время в Linux используется утилита hwclock:

  • hwclock —localtime
    — проверка аппаратного времени без поправки
  • hwclock —utc
    – проверка времени с условием, что аппаратные часы идут по времени UTC

Wed 27 Nov 2019 11:28:28 AM +06 -1.012225 seconds

Wed 27 Nov 2019 05:28:30 PM +06 -0.045476 seconds

Чтобы установить аппаратное время равное системному времени, выполните команду:

# hwclock —systohc

Чтобы установить конкретное время, выполните:

# hwclock —set —date «27 Nov 2019 17:30»

Синхронизация времени по NTP

Ручная настройка времени в CentOS

В Linux за программное время отвечает утилита date или timedatectl. Если вызывать утилиту date без параметров, она покажет текущее время на сервере:

Если вы хотите выставить время вручную, можно воспользоваться утилитой date с дополнительными ключами:

# date MMDDhhmm

Где MM – месяц, DD — день, hh – час, mm – минуты.

# date 11261740

Синхронизация времени по NTP

Синхронизация времени по NTP

Timedatectl также позволяет изменить время:

# timedatectl set-time ‘2019-11-27 17:51:00’

Синхронизация времени по NTP

Настройка часового пояса в CentOS

Чтобы время на сервере CentOS Linux соответствовало вашему часовому поясу, его можно изменить вручную. Для этого есть две утилиты:

  • timedatectl
  • tzdata

Чтобы изменить часовой пояс через утилиту timedatectl, выполните команду:

# timedatectl set-timezone Europe/Moscow

Синхронизация времени по NTP

# mv /etc/localtime /etc/localtime.bak

Создаем симлинк на нужный часовой пояс:

Синхронизация времени по NTP

Настройка синхронизация времени по NTP в CentOS

Вы можете настроить автоматическую синхронизацию времени на вашем сервере с внешним NTP (Network Time Protocol) сервером. Для этого нужно установить сервис ntp. Например, в CentOS 7 установка выполняется через yum:

# yum install ntp -y

После установки, нужно запустить сервис ntpd и добавить его в автозагрузку:

# systemctl start ntpd.service# systemctl enable ntpd.service

Проверим, что сервис запущен:

Redirecting to /bin/systemctl status ntpd.service
● ntpd.service — Network Time Service
Loaded: loaded (/usr/lib/systemd/system/ntpd.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2019-11-28 09:47:33 +06; 5min ago
Main PID: 3057 (ntpd)
CGroup: /system.slice/ntpd.service
└─3057 /usr/sbin/ntpd -u ntp:ntp -g

В файле /etc/ntp.conf нужно указать сервера, с которыми нужно синхронизировать время:

server 0.pool.ntp.org
server 1.pool.ntp.org
server 2.pool.ntp.org

Синхронизация времени выполняется последовательно. Если недоступен первый NTP сервер, идет обращение ко второму и т.д.

Можно вручную синхронизировать время с указанным NTP сервером командой:

# ntpdate 192.168.1.100

По умолчанию, ntpd включает в системе режим “11 minute mode”, то есть время будет синхронизироваться каждые 11 минут. Если вы не можете использовать демон ntpd, вы можете настроить синхронизацию времени по крону, добавьте в крон следующую команду:

# ntpdate pool.ntp.org

Используем chronyd для синхронизация времени в CentOS 8

Для CentOS 8 из официальных репозиториев убрали ntp и ntpdate, поэтому для синхронизации времени нужно использовать chrony.

Читайте также:  Отличный почтовый клиент Mozilla Thunderbird. Настройка почты

Основные преимущества chrony:

  • высокая скорость и точность синхронизции
  • корректная работа при отсутствии доступа к эталонным часам (ntpd требуются регулярные запросы)
  • по-умолчанию не меняет сразу время при синхронизации, чтобы не нарушить работу программ
  • Меньше использует ресурсов

По умолчанию, утилита chrony уже установлена в системе, но если по какой-то причина у вас ее нет, выполните установку:

# dnf install chrony

Как и любой другой сервис, после установки chrony нужно включить и добавить в автозагрузку:

# systemctl start chronyd# systemctl enable chronyd

Проверим статус сервиса:

Синхронизация времени по NTP

Чтобы проверить, что синхронизация работает, выполнитите команду:

# timedatectl status

NTP Service: active

Синхронизация времени по NTP

Конфигурационный файл chrony — /etc/chrony.conf. В нем нужно указать список NTP серверов, которые нужно использовать для синхронизации. Как и у ntp, у chrony есть интерфейс командной строки chronyc. Чтобы проверить информацию о текущих параметрах синхронизации времени, используйте:

# chronyc tracking

Синхронизация времени по NTP

Чтобы проверить информацию о серверах синхронизации, выполните команду:

# chronyc sources

Синхронизация времени по NTP

Если вы хотите установить конкретное время и дату вручную, вы можете воспользоваться утилитой date, но перед этим нужно отключить демон chronyd.

Распространённые ошибки при настройке времени в CentOS

В данном разделе, я опишу частые ошибки, которые возникают при работе с утилитами timedatectl, ntp.

При ручной синхронизации времени, у вас может возникнуть подобная ошибка:

Синхронизация времени по NTP

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

# service ntpd stop

И запустите синхронизацию заново:

Синхронизация времени по NTP

Аналогичная ошибка может возникать и при работе с утилитой timedatectl:

Синхронизация времени по NTP

Теперь нужно отключить автоматическую синхронизацию в самой утилите timedatectl:

И выполнить команду по установке конкретного времени:

Синхронизация времени по NTP

При работе с часовыми поясами, они могут быть не установлены у вас на сервере и создать симлинк для localtime не получится. Для того, чтобы в системе были доступны часовые пояса, установите утилиту tzdata:

# yum install tzdata -y

Так при ручной синхронизации, часто бывают ошибки вида:

В этом случае проверьте правила firewalld / iptables, и убедитесь, что у вас на сервере открыт UDP порт 123. Так же некоторые хосты синхронизации могут быть недоступны в момент проверки.

Служба времени Windows, несмотря на кажущуюся простоту, является одной из основ, необходимых для нормального функционирования домена Active Directory. В правильно настроенной среде AD служба времени работает следующим образом: компьютеры пользователей получают точное время от ближайшего контроллера домена, на котором они зарегистрировались. Все контроллеры домена в свою очередь получают точное время от DC с FSMO ролью «Эмулятор PDC», а контролер PDC синхронизирует свое время с неким внешним источником времени. В качестве внешнего источника времени может выступать один или несколько NTP серверов, например time.windows.com или NTP сервер вашего Интернет-провайдера. Также нужно отметить, что по умолчанию клиенты в домене синхронизируют время с помощью службы времени Windows (Windows Time), а не с помощью протокола NTP.

Если вы столкнулись с ситуацией, когда время на клиентах и контроллерах домена различается, возможно, в вашем домене есть проблемы с синхронизацией времени и эта статья будет вам полезна.

В первую очередь выберите подходящий NTP сервер, который вы могли бы использовать. Список общедоступных NTP серверов доступен на сайте . В нашем примере мы будем использовать NTP сервера из пула ru.pool.ntp.org:

  • 0.ru.pool.ntp.org
  • 1.ru.pool.ntp.org
  • 2.ru.pool.ntp.org
  • 3.ru.pool.ntp.org

Настройка синхронизации времени в домене с помощью групповых политик состоит из двух шагов:

1) Создание GPO для контроллера домена с ролью PDC2) Создание GPO для клиентов (опционально)

Настройка политики синхронизации NTP на контролере домена PDC

Этот шаг предполагает настройку контроллера домена с ролью эмулятора PDC на синхронизацию времени с внешним NTP сервером. Т.к. теоретически роль эмулятора PDC может перемещаться между контроллерами домена, нам нужно сделать политику, которая применялась бы только к текущему владельцу роли PDC. Для этого в консоли управления Group Policy Management Console (GPMC.msc), создадим новый WMI фильтр групповых политик. Для этого в разделе WMI Filters создадим фильтр и именем PDC Emulator и WMI запросом:
Select * from Win32_ComputerSystem where DomainRole = 5

Синхронизация времени по NTP

Затем создайте новую GPO и назначьте ее на контейнер Domain Controllers.

Синхронизация времени по NTP

Нас интересуют три политики:

  • Configure Windows NTP Client: Enabled (настройки политики описаны ниже)
  • Enable Windows NTP Client: Enabled
  • Enable Windows NTP Server: Enabled

Синхронизация времени по NTP

В настройках политики Configure Windows NTP Client укажите следующие параметры:

  • NtpServer: 0.ru.pool.ntp.org,0x1 1.ru.pool.ntp.org,0x1 2.ru.pool.ntp.org,0x1 3.ru.pool.ntp.org,0x1
  • Type: NTP
  • ResolvePeerBackoffMinutes: 15

Совет. Не забудьте настроить межсетевой экран таким образом, чтобы сервер PDC мог получить доступ к внешним NTP серверам по протоколу NTP (UDP порт 123).

Синхронизация времени по NTP

Примечание. Обратите внимание на синтаксис в поле NtpServer. Формат указания нескольких NTP серверов такой:ntsrv1.org,0x1 ntpsrv2.org,0x1 (разделитель пробел). На скриншоте указаны ошибочные данные!

Примените созданный ранее фильтр PDC Emulator к данной политике.

Синхронизация времени по NTP

Совет. Найти имя сервера с ролью PDC можно с помощью команды:
netdom query fsmo

Осталось обновить политики на контроллере PDC:
gpupdate /force

Вручную запустите синхронизацию времени:
w32tm /resync

Проверьте текущие настройки NTP:
w32tm /query /status

Совет. В том случае, если время не синхронизировалось, перезапустите службу времени Windows и сбросьте текущие настройки:
net stop w32timew32tm.exe /unregisterw32tm.exe /registernet start w32time

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

В среде Active Directory по умолчанию клиенты домена синхронизируют свое время с контролерами домена (опция Nt5DS – синхронизировать время согласно иерархии домена). Как правило, эта схема работает и не требует перенастройки. Однако при наличии проблем с синхронизацией времени на клиентах домена, можно попробовать принудительно назначить сервер времени для клиентов с помощью GPO.

В качестве сервера NTP укажите имя или ip адрес PDC, например msk-dc1.winitpro.ru,0x9, а в качестве типа синхронизации — NT5DS

Синхронизация времени по NTP

Обновите настройки групповых политик на клиентах и проверьте, что клиенты успешно синхронизировали свое время с PDC.

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

Работа многих служб ОС зависит от того, насколько точны системные часы. Для чего нужна эта точность? Затем, что неточное время на сервере повлечет за собой много неприятностей.

В качестве примера приведем следующий: если в локальной сети часы машин, которые совместно используют файлы, не будут синхронизированы, то нельзя будет установить время изменения файлов. Из-за этого возникнет конфликт версий или перезаписи данных. Без установки точного времени на сервере появятся и сложности с задачами Cron – непонятно, когда они запустятся. Невозможно будет проанализировать журналы системных событий, чтобы понять причины неисправностей и сбоев.

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

Как устроен протокол NTP

Протокол NTP основан на иерархической структуре сервера точного времени, где выделены разные уровни. К нулевому уровню, на котором NTP-серверы не работают, относятся так называемые эталонные часы.

С ними синхронизируются NTP серверы уровня 1, являющиеся источниками для серверов уровня 2. Серверы второго уровня синхронизируются с серверами первого уровня, но еще могут синхронизироваться между собой. Точно так же функционируют серверы третьего уровня и ниже. В целом, поддерживается порядка 256 уровней.

Иерархическая структура NTP является отказоустойчивой и избыточной. Так, резервные серверы берут синхронизацию на себя, когда речь идет об отказах соединения с вышестоящими серверами. Для расчета точного времени NTP берет данные ото всех источников, синхронизируясь с несколькими серверами.

Комьюнити теперь в Телеграм

Подпишитесь и будьте в курсе последних IT-новостей

Как установить и настроить NTP-сервер

Чтобы синхронизировать время, используют демон ntpd, который может быть как сервером, принимающим время из удаленных хостов, так и клиентом, раздающим время сторонним хостам. Демон ntpd зависит от указанных в файле конфигурации настроек.

Для установки сервера NTP используется стандартный менеджер пакетов $ sudo apt-get install ntp.

После установки все необходимые настройки NTP будут находиться в файле /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

Эти строки означают группу серверов, которые сообщают серверу верное время. Через опцию 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
Читайте также:  10 Best Hosting Platforms for Python Application

Еще можно донести информацию о нужном сервере через опцию prefer:

server 0.ubuntu.pool.ntp.org iburst prefer

Ареал использования серверов NTP

Такие серверы есть во всем мире, но обычно синхронизация происходит с NTP-серверами именно того ареала, где физически находится ваш сервер. Таким образом, в файле конфигурации /etc/ntp.conf указывается поддомен ареала (региона) для pool.ntp.org:

  • Азия – asia.pool.ntp.org
  • Европа – europe.pool.ntp org
  • Африка – africa.pool.ntp.org
  • Северная Америка – north-america.pool.ntp.org
  • Южная Америка – south-america.pool.ntp.org
  • Океания – oceania.pool.ntp.org
  • Россия – ru.pool.ntp.org

Резервный сервер точного времени

NTP-сервер, по какой-либо причине отключенный от интернета, может передавать для синхронизации данные своих системных часов. Для этого в конфигурационный файл нужно добавить следующую строку:

Особые случаи использования NTP

Например, NTP могут использовать, чтобы усилить трафик в DDoS-атаках. А чтобы избежать столкновения с различными злоупотреблениями, следует ограничить доступ для внешних клиентов. Говоря об ограничениях, то по умолчанию в /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:

Как проверить синхронизацию

После сохранения всех изменений в файле конфигурации NTP-сервер нужно перезагрузить:

$ service restart ntp

А затем выполнить команду:

$ ntpq -p

На выходе получится таблица, в которой указаны следующие параметры:

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

Слева от адреса сервера могут быть указаны еще и такие символы:

  • * – сервер выбран для синхронизации;
  • + – сервер, пригодный для синхронизации;
  • – – с сервером синхронизироваться не стоит;
  • х – сервер недоступен.

Чтобы проверить, насколько сервер подходит для синхронизации, нужно использовать команду ntpdate -q.

Как установить локальные дату и время

Чтобы установить локальные дату и время на сервере, нужно использовать команду ntpdate, при этом отправив необходимый запрос к серверу NTP:

$ ntpdate -u 192.168.1.1

Статус ntpd проверяется при помощи команды:

$ ntpdc -c sysinfo

  • SYNOPSIS
  • ntpdate command examples in Linux(RHEL/CentOS 7/8)

There are other ntp utilities like ntpq, ntpstat which are used along with ntpdate to check and synchronizes the local server time with the NTP Server. Here we will keep our focus on ntpdate command and will see the usage of this command with examples.

SYNOPSIS

Синхронизация времени по NTP

10 Practical and Useful ntpq command examples in Linux(RHEL/CentOS 7/8)

How to Check If Client machine is sync with NTP Server

You can simply run ntpdate command in your Linux Command Line interface and check whether your client machine is getting synced with any of the NTP Server. As you can see from the output as of now there is no NTP Server configured.

How to Test Connection to a NTP Server

If you want to test connection to a NTP Server then you need to use -q option with ntpdate command as shown below. In this example we are testing connection with pool.ntp.org NTP Server using ntpdate -q pool.ntp.org.

Query only — don’t set the clock. More on ntpdate command Page.

It denotes the level in timing hierarchy. Stratum 1 denotes the first level which synchronize its time with external NTP Server. Stratum 2 denotes the second level which synchronizes its time with Stratum 1 servers and so on.

: It is the difference in time between reference or configured NTP Server and the local server. Greater value indicates lesser synchronization with the source.

It denotes the round trip time or latency with the NTP Server.

How to divert Connection output to the System Logs

If you are ever running ntpdate command in cron scripts or in any other bash script then you can always use -s option to divert the command output to Syslog.

Divert logging output from the standard output (default) to the system syslog facility.

How to Synchronize Connection to a NTP Server

If you want to synchronize your time with some hosts lying behind a firewall then you need to use -u option to always use the unprivileged ports. In this example we are trying to sync time with pool.ntp.org using ntpdate -u pool.ntp.org command as shown below.

Direct ntpdate to use an unprivileged port for outgoing packets.

How to Enable Debugging Mode

To enable debugging mode you need to use -d option with ntpdate command as shown in below example. In this example we are trying to debug the time sync with NTP Server pool.ntp.org using ntpdate -d pool.ntp.org command as shown below.

Enable the debugging mode. More on ntpdate command Page.

How to Use Verbose Mode with ntpdate command in Linux

To enable the verbose mode with ntpdate command you need to use -v option as shown below. This option will make all ntpdate tasks visible on console output.

Be verbose. More on ntpdate command Page.

How to Force Step up the time rather than adjust Using ntpdate command

If you want to stepped up the time sync then you need to use -b option as shown below. In this example we have stepped the time sync with pool.ntp.org Server by using ntpdate -vb pool.ntp.org command.

Force the time to be stepped using the settimeofday() system call, rather than slewed (default) using the adjtime() system call.

How to Force the Time Sync to always be slewed

If you want sync to always be slewed then you need to use -B option as shown below. In this example we have slewed the time sync with pool.ntp.org Server using ntpdate -vB pool.ntp.org command.

Force the time to always be slewed using the adjtime() system call, even if the measured offset is greater than +-500 ms.

How to Check Man Page of ntpdate command in Linux

If you want to check the man page of ntpdate command then you need to use man ntpdate command as shown below.

NTP — это протокол синхронизации времени по сети. По существу клиенты запрашивают текущее время на сервере и используют его для установки своих собственных часов.

За этим простым описанием скрывается много сложностей — существуют уровни NTP серверов, где первый уровень подключен к атомным часам, а второй и третий уровни серверов распределяют на себя нагрузку по актуальным запросам из интернета. Кроме того клиентское приложение сложнее, чем вы можете подумать — оно компенсирует задержки соединения и регулирует время таким образом, чтобы не навредить другим процессам, запущенным на сервере. Но к счастью вся эта сложность скрыта от вас!

Ubuntu использует ntpdate и ntpd.

Ubuntu стандартно устанавливается с ntpdate и будет запускать его при каждой загрузке один раз для установки времени по NTP серверу Ubuntu.

ntpdate -s ntp.ubuntu.com

Сервис NTP ntpd вычисляет уход ваших системных часов и постоянно подправляет их, благодаря чему не происходит сильных изменений, что может приводить к непоследовательности в журналах. Ценой этому небольшое расходование мощности процессора и оперативной памяти, но для современного сервера это несущественно.

Для установки ntpd из терминала введите:

Отредактируйте /etc/ntp.conf для добавления/удаления серверов. По умолчанию эти сервера такие:

# 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

После изменений конфигурационного файла вам надо перезапустить ntpd:

sudo service ntp restart

Просмотр статуса

Используйте ntpq для просмотра дополнительной информации:

# sudo ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
+stratum2-2.NTP. 129.70.130.70 2 u 5 64 377 68.461 -44.274 110.334
+ntp2.m-online.n 212.18.1.106 2 u 5 64 377 54.629 -27.318 78.882
*145.253.66.170 .DCFa. 1 u 10 64 377 83.607 -30.159 68.343
+stratum2-3.NTP. 129.70.130.70 2 u 5 64 357 68.795 -68.168 104.612
+europium.canoni 193.79.237.14 2 u 63 64 337 81.534 -67.968 92.792

Оцените статью
Хостинги