Setting96.ru

Строительный журнал
3 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Будни администратора

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

Закопавшись в виртуализации я как то упустил момент корректной настройки времени на виртуальных машинах, но вот руки дошли и до этого вопроса.
Вообще говоря, у нас есть три варианта развития событий:
А. Если виртуалньые машины не в домене, то можно настроить сам сервер Hyper-V на наш внешний источник времени, а гостевые операционные системы Windows будут автоматически синхронизироваться с сервером Hyper-V через Time synchronisation по умолчанию. Тоесть сервер Hyper-V будет являться сервером времени для гостевых ОС. При его опросе можно увидеть что он является stratum 0. Что, кстати, довольно забавно
Б. Если у нас развернута доменная структура, то лучшим вариантом будет настроить контроллеры домена на раздачу по домену точного времени
В. Так же в доменной структуре можно, настроив Hyper-V на внешний источник времени, оставить Time synchronisation только для контроллеров домена, а для остальных машин убрать

Я рассматриваю вариант Б, мне он просто ближе для доменной структуры. Приступим:
1. На Hyper-V сервере для каждой виртуальной машины которую мы хотим настроить на работу с нашими источниками времени надо убрать в Integration Services предоставление услуги синхронизации времени (убираем галочку с Time synchronisation), это предотвратит распространение времени сервера с Hyper-V на гостевые ОС
2. Ввиду того что сервер time.windows.com все таки не является стабильным сервером и периодически пропадает, я бы порекомендовал поднять свой собственный сервер времени. На подопечных мне сетях, я поднимаю ntdp на FreeBSD и раздаю его по всем моим сетям
3. Настраиваем контроллеры домена использовать внешний источник времени. По этому поводу есть статья http://support.microsoft.com/kb/816042/ru в которой в общем то описано как настроить, но опишу то что делаю я:

Изменяю тип сервера на NTP:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeParametersType
Выставляю параметр NTP

Указываю источники времени:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeParametersNtpServer
Выставляю значение host.domain.ru,0x1 (имя моего сервера времени,тип сервера)

Описание типов:
0x00 Not a time server
0x01 Always time server
0x02 Automatic time server
0x04 Always reliable time server
0x08 Automatic reliable time server
Значения битовые, по этому для комбинации функций их можно суммировать.
например значение 0x9 — Automatic reliable time server 0x08 + Always time server 0x01

Изменяю AnnounceFlags:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeConfigAnnounceFlags
Выставляю значение 5

Включаю сервер NTP:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeTimeProvidersNtpServer
Выбираю параметр Enabled и выставляю значение 1 (по умолчанию на КД 2003 и 2008 уже включен)

Задаю интервал опроса:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeTimeProvidersNtpClientSpecialPollInterval
Рекомендуется установить его равным 900. В этом случае опрос будет выполняться каждые 15 минут.

Задаю параметры, определяющие максимальную и минимальную величину коррекции времени:
Максимальный плюсовой отступ от точного времени:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeConfigMaxPosPhaseCorrection
Значение можно задавать в разумных пределах (например, 1 час (3600) или 30 минут (1800))
Данное значение выбирается исходя из величины интервала опроса, состояния сети и типа внешнего источника времени.
Этот параметр задает максимальную величину положительной коррекции времени, которую может выполнить служба времени.
Если окажется, что величина коррекции превышает допустимое значение, то будет зарегистрировано соответствующее событие.
Значение 0xFFFFFFFF указывает на то, что коррекция времени будет выполняться всегда.
По умолчанию для компьютеров-членов домена используется значение 0xFFFFFFFF, а для автономных компьютеров и серверов — значение 54 000 (15 часов).

Максимальный минусовой отступ от точного времени:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeConfigMaxNegPhaseCorrection
Значение можно задавать в разумных пределах (например, 1 час (3600) или 30 минут (1800)).
Данное значение выбирается исходя из величины интервала опроса, состояния сети и типа внешнего источника времени.
Этот параметр задает максимальную величину положительной коррекции времени, которую может выполнить служба времени.
Если окажется, что величина коррекции превышает допустимое значение, то будет зарегистрировано соответствующее событие.
Значение 0xFFFFFFFF указывает на то, что коррекция времени будет выполняться всегда.
По умолчанию для компьютеров-членов домена используется значение 0xFFFFFFFF, а для автономных компьютеров и серверов — значение 54 000 (15 часов).

Перезапускаю службу временииз cmd:
net stop w32time && net start w32time
(В Win2008 нужно cmd запустить от Administrator-а)

4. Далее политиками настраиваю клиентов домена работать с нашим контроллером домена:
Из Group policy management открываем Default domain policy (хотя можно конечно создать отдельную политику, но я иду по пути наименьшего числа дополнительных GPO)
Computer Configuration -> Administrative Templates -> System -> Windows Tome Settings ->
Global Configuration Settings — Enabled (выставляет все временные интервалы обновлений и коррекции для клиентов)
-> Time Providers
Configure Windows NTP Client — Enabled
-> NtpServer — dc.domain.ru,0x1 (здесь для клиентов выставляем синхронизироваться с контроллером домена как источником времени)
-> Type — NT5DS (здесь выставляем тип сервера — сервер времени в домене)
Enable Windows NTP Client — Enabled

5. Распространить политику на компьютеры пользователей и серверы домена. И все, они будут синхронизироваться.
6. Отдельно нужно упомянуть вторичные контроллеры домена — на них необходимо произвести действия по перерегистрированию службы времени:
из запущеной под администратором командной строки выполняю:
net stop w32time
w32tm /unregister
w32tm /register
net start w32time
w32tm /resync

Настраиваем NTP, Время, Часовой пояс

Сегодня пришлось повозиться на держателе домена (windows 2003) и корректно настроить ntp. Ниже будет информацию, которая мне помогла.

Процедура по восстановлению работоспособности сервиса w32tm

1. Находим все DC и того, кто из них PDC эмулятор

2. Проверяем доступность сервера времени с PDC эмулятора

portqry –n ntp.mydomain.ua –e 123 –p UDP Querying target system called: ntp.mydomain.ua Attempting to resolve name to IP address… Name resolved to 10.10.72.17
UDP port 123 (ntp service): LISTENING or FILTERED

Должно быть именно так “LISTENING or FILTERED”.

Эта утилита входит в комплект Support Tools для Windows 2003 Server. К сожалению, на Windows 2008 R2 она не работает.

3. В regedit открываем параметры ntp сервера

Там должен быть записан ip адрес или полное имя нашего ntp сервера и запись должна обязательно заканчиваться строкой “,0x1”. Кавычки, понятное дело, нужно убрать. Для уверенности в том, что тут нету ошибки, можно пропинговать указанный ntp-сервер.

4. Там же, следует перейти к параметру Type:

и убедиться, что там прописано NTP, а не NT5DS

5. Теперь следует проверить еще одно значение: AnnounceFlags

тут должна быть 5

6. Перезапускаем сервис времени:

7. Синхронизируемся:

8. На остальных контроллерах домена рекомендуется переустановить службу времени

Команда: «w32tm /unregister && w32tm /register» удаляет службу времени, а затем снова ее устанавливает, причем, что важно, удаляется, а затем создается заново вся ветка параметров в реестре.

9. Рекомендуется перезапустить контроллер домена, являющийся pdc эмулятором, да и все остальные тоже.

10. Если на pdc эмуляторе ошибки все равно наблюдаются, то стоит попробовать изменить формат клиентских запросов

Меняем значение с 0x1 на 0x8

11. Перезапускаем сервис времени

12. Рекомендуется проверить все политики, имеющие отношение к настройкам сервиса времени:

Default Domain Controllers group policy, Default Domain group policy и другие в которых изменены любые значения в разделе

Computer configuration/Administrative Templates /System/Windows Time service/Time Providers

Убедитесь, что все значения там в состоянии “not configured”. При необходимости, играть с параметрами следует позже.

Если что-то меняли в политике, то перезапускаем сервис времени: net stop w32time && net start w32time

13. Если так ничего не помогло, то нужно обнулить параметры сервиса времени и на pdc эмуляторе:

net stop w32time w32tm /unregister w32tm /register

После чего нужно будет настраивать все параметры заново, начиная с п.3.

Если вдруг, на этапе удаления напишет про запрет доступа, то нужно перезагрузиться.

Включение лога сервиса времени

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

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

  • FileLogSize, Type: DWORD, Data: 10000000 — максимальный размер лог-файла в байтах.
  • FileLogName, Type: REG_SZ (String), Data: C:Testw32time_log.txt — адрес нахождения лог-файла
  • FileLogEntries, Type: REG_SZ (String), Value: 0-116 — уровень детализации лога. Максимальный диапазон: 0-300.

Вместо изменения значений в реестре, можно то же самое сделать из командной строки:

Чтобы выключить логи отладки можно ввести команду:

Читать еще:  Синхронизация контактов windows live и gmail

Если Вы перенесли роль PDC Emulator на другой сервер, необходимо дополнительно выполнить настройку старого сервера командой

и перезапустить службу времени:

Первое решение проблемы «no time data was available»

Еще раз обращу внимание, что проблема была в доменных политиках.

Команда w32tm /resync выдавала ошибку

The computer did not resync because no time data was available.

Решено это было следующим образом:

  1. Start / Run / dsa.msc / OK.
  2. Right-click the Domain Controllers container and press Properties.
  3. Select the Group Policy tab.
  4. Select the Default Domain Controllers Policy and press Edit. If GPMC is implemented, press Open first.
  5. Expand Computer Configuration / Administrative Templates / System / Windows Time Service.
  6. Right-click Global Configuration Settings and press Properties.
  7. Select Not Configured.
  8. Press Apply and OK.
  9. Expand Windows Time Service.
  10. Double-click Enable Windows NTP Client.
  11. Select Not Configured.
  12. Press Apply and OK.
  13. Double-click Configure Windows NTP Client.
  14. Select Not Configured.
  15. Press Apply and OK.
  16. Double-click Enable Windows NTP Server.
  17. Select Not Configured.
  18. Press Apply and OK.
  19. Exit the Group Policy Editor.
  20. Close any open policy dialog boxes.
  21. Open a CMD.EXE window.
  22. Type gpupdate /force and press Enter.

Второе решение проблемы «no time data was available»

Во второй раз с этой же ошибкой с я столкнулся через пару лет. При попытке получить время от нашего cisco роутера, при помощи команды w32tm /resync, видел ошибку:

Sending resync command to local computer.
The computer did not resync because no time data was available.

Команда синхронизации отправлена на local computer.
Синхронизация не выполнена, поскольку нет доступных данных о времени.

При этом вышеописанные действия уже были совершены.

Служба win32time отсылала «симметрические пакеты»: в снифере wireshark я видел что windows сервер отсылает пакеты «NTP Version 3, symmetric active», но никакого ответа от CISCO не получал.

В логах службы сообщалось «No response from peer», а в логах роутера:

В этой случае мне помогла команда:

и перезапуск службы времени.

После этого в wireshark увидел нормальный обмен пакетами:

  • windows сервер посылал пакеты «NTP Version 3, client»
  • cisco роутер отвечал пакетами «NTP Version 3, server»

Настраиваем период синхронизации времени

Инструкция работает на компьютерах которые не включены в домен.

Переходим к редактированию реестра: HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32Time TimeProvidersNtpClientSpecialPollInterval — ключ в реестре, задает период обновления синхронизации времени в системе в секундах. Вводим в десятичном формате необходимый период.

После этого перезагружаем компьютер или вводим команду w32tm /config /update

Проверить с какой периодичностью происходит синхронизация времени:

  • Кликаем по часам в панели задач
  • Переходим к «изменение настроек даты и времени», вкладка «Время по Интернету»
  • Жмем кнопку «Изменить параметры»
  • Убеждаемся что установлена галочка возле «Синхронизировать с сервером времени в Интернете»
  • Выбираем нужный сервер, жмем кнопку «Обновить сейчас» и ждем пока не появиться надпись «Время было успешно синхронизировано», если же увидели надпись «Ошибка при выполнении синхронизации» то выбираем другой сервер.
  • После успешной синхронизации жмем кнопку «ОК» и на вкладке «Время по Интернету» смотрим когда будет «Следующее выполнение синхронизации»

Указание часового пояса через групповые политики

  • Открываем политику для контейнера где находиться компьютер
  • Переходим к Конфигурация компьютера — Настройка — Конфигурация Windows — Реестр
  • Левый клик по правой белой области в области «Реестр» и выбираем пункт меню «Создать» — «Мастер реестра»
  • Выбираем компьютер на котором установлен нужный часовой пояс (у меня это локальный)
  • В Браузере реестра переходим к «HKLM System CurrentControlSet Control TimeZoneInformation»
  • Отмечаем все ключи в этой папке и жмем «готово»
  • Все теперь на локальных компьютерах автоматически будет устанавливаться необходимый часовой пояс и после перезагрузки устанавливаться правильной время

Полезные команды связанные со службой времени ntp:

  • netdom query fsmo — раскажет кто PDC (главный сервер времени в домене)
  • w32tm /monitor
  • w32tm /config /manualpeerlist:time.windows.com,0x1 /syncfromflags:manual /reliable:yes /update — команда которая настроит ваш доменный контроллер с ролью «Эмулятора PDC» на синхронизацию с внешним источником
  • w32tm /stripchart /computer:time.windows.com /samples:5 /dataonly — 5 сравнений с источником
  • net time /querysntp — показывает кто является ntp сервером
  • w32tm /query /peers — показывает источник, сколько времени осталось до синхронизации, режим работы, страту, интервал опроса
  • w32tm /query /status — отображает индикатор помех, старту, точность, задержку корня, дисперсию, время последней успешной синхронизации, источник и интервал опроса
  • net time /setsntp:192.168.1.1 — задает ntp-сервер.
  • w32tm /debug /enable /file:C:Testw32time_log.txt /size:100000 /entries:0-300 — включаем ведение лога службой времени
  • w32tm /debug /disable — отключаем логирование
  • w32tm /config /update — применить/обновить конфигурацию.
  • w32tm /query /configuration — полный список параметров службы

Помните что после любых изменений в конфигурации ntp-службы нужно ее перезапускать, команда:

Тоже Админ

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

Посмотреть текущие настройки службы времени (выполнять из консоли с правами администратора):

w32tm /query /configuration

Screenshot_1

Посмотреть текущее состояние службы времени можно командой:

w32tm /query /status

Screenshot_2

Чтобы понять, что это нам там Windows выводит на экран, нужно разобраться как Windows работает со временем. Служба времени зависит от того является ли компьютер частью централизовано администрируемого домена или нет.

Возможные две ситуации:

  • компьютер (сервер) входит в состав рабочей группы, т.е. это домашний компьютер или компьютер в небольшом офисе;
  • компьютер (сервер) входит в состав домена Active Directory.

Компьютер входит в состав рабочей группы.

В этом случае централизованного управления компьютером нет, он сам заботиться о синхронизации времени. На нем вывод команды
w32tm /query /configuration будет следующим.

time1

Обратите внимание на параметры:
SpecialPollInterval — интервал синхронизации в секундах, 604800 секунд — это неделя, т.е. синхронизация будет проводиться раз в неделю.
Type — определяет источник синхронизации времени. Возможные значени параметра Type:
NoSync. Служба времени вообще не синхронизируется ни с чем.
NTP. Служба времени синхронизируется с серверами указынными в параметре NtpServer. Типично для домашних компьютеров. Как на скриншоте вверху.
NT5DS. Служба времени синхронизируется используя доменную иерархию (только для компьютеров — членов домена Active Directory). Как на самом первом скриншоте.
AllSync. Служба времени использует все возможные механизмы для синхронизации.
NtpServer — указывает сервреры, с которым может синхроинизировать время компьютер.

Как можно видеть, по умолчанию интервал синхронизации 1 неделя, сервер time.windows.com, значение Type NTP.

Компьютер входит в состав домена Active Directory.

Домен AD — иерархичная централизованная структура. Время на всех компьютерах в домене синхронизируется с контроллерами домена, а те в свою очередь синхронизируются с одним контроллером, выполняющим FSMO роль PDC-Emulator. Синхронизация времени происходит раз в 1 час.

Как узнать какой контроллер — PDC-Emulator? Простейший способ — это выполнить команду из командной строки:

netdom /query fsmo

Windows_Server_2008_R2_SP1_How_to_Sync_Time_to_External_Time_Source_1

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

Делается это из командной строки с адмнистративными правами следующим образом (один из способов):

  1. Останавливаем службу времени W32Time: C:>net stop w32time
  2. Конфигурируем внешние источники синхронизации:
    C:> w32tm /config /syncfromflags:manual /manualpeerlist:”0.ru.pool.ntp.org, 1.ru.pool.ntp.org, 2.ru.pool.ntp.org
  3. Делаем PDC-Emulator надежным источником для клиентов:C:>w32tm /config /reliable:yes
  4. Запускаем службу времени w32time : C:>net start w32time
  5. Служба должна начать синхронизироваться. Можно проверить как применились настройки уже знакомой командой: C:>w32tm /query /configuration
  6. Проверяем Event Viewer на наличие ошибок, относящихся к службе времени.

На остальных компьютерах домена вывод команды C:>w32tm /query /configuration будет следующим:

Screenshot_1

Если вы по какой-то причине поменяли конфигурацию службы времени на доменном компьютере, то чтобы вернуть настройки по-умолчанию выполните команду:
w32tm /config /syncfromflags:domhier /update

Иногда при переносе роли PDC-Emulator на другой контроллер домена, старый продолжает считает считать себя сервером времени для всего домена, что может стать причиной ошибок в Системном логе, например таких:
«The time provider NtpClient was unable to find a domain controller to use as a time source. NtpClient will try again in 15 minutes.»
и других веселых глюков. «Успокоить» его можно такой-же командой с небольшим дополнением:

w32tm /config /syncfromflags:domhier /reliable:no /update

Как синхронизировать время в Linux

Linux синхронизация времени NTP

Часы в компьютере далеко не идеальны. Через несколько дней, недель или месяцев они перестают отображать правильное время. Они могут показывать «10:30», тогда как на самом деле «10:33». На старых компьютерах было обычной практикой периодически переустанавливать часы компьютера вручную. Но после того, как интернет-соединения стали повсеместными, современные операционные системы начали автоматически настраивать часы с помощью NTP-серверов.

Читать еще:  Удаленная синхронизация контактов гугл

В статье я покажу, как синхронизировать время в Linux в дистрибутивах Ubuntu, Debian, Fedora, Arch Linux, openSUSE, Manjaro, CentOS, Elementary ОС, Zorin OS и т.д.

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

NTP — это сокращение от Network Time Protocol. Это алгоритм, разработанный для синхронизации часов компьютера с помощью подключения к NTP-серверу.

Как включить синхронизацию времени в Linux

К счастью, большинство Linux-дистрибутивов по умолчанию синхронизируют время. Если вы не замечали, что часы вашего компьютера расходятся с часами телефона, тогда наверняка ваш дистрибутив использует NTP-клиент / демон.

Синхронизировать время в Linux с systemd

В большинстве дистрибутивов Linux используется systemd, а вместе с ним и демон systemd-timesyncd. Это означает, что у вас уже есть NTP-клиент, предварительно установленный в Ubuntu, Debian, Fedora, Arch Linux, openSUSE, Manjaro и других. На этих дистрибутивах (и других основанных на них, например, Elementary ОС, Zorin OS) чтобы проверить, включена ли синхронизация NTP запустите команду:

Ntp Linux Проверка статуса Ntp на ОС Systemd

Если на выходе отображается « Network time on: yes », часы вашего компьютера автоматически синхорнизируются через NTP. Иногда вы можете также заметить NTP synchronized: — это означает, что часы синхронизируются с помощью другого инструмента.

Если вы видите Network time on: no , выполните следующую команду, чтобы включить синхронизацию времени NTP.

Это все, что вам нужно сделать в этих дистрибутивах.

Синхронизировать время в Linux без systemd

Для примера возьмем MX Linux. Запуск команды timedatectl показывает, что сетевое время включено, но systemd-timesyncd не используется. Как же синхронизировать время в таких дистрибутивах без systemd?

Проверьте с помощью следующей команды, которую вы можете использовать в любой другой операционной системе Linux.

В MX Linux вы увидите результат, подобный тому, что вы видите на следующем снимке экрана.

Синхронизация времени Linux проверка Ntp Client

Из этого сообщения журнала видно, что клиент «ntpdate» запускался один раз. Это популярный клиент, установленный по умолчанию во многих дистрибутивах Linux. Он легкий и время от времени запрашивает только NTP-серверы. Он не работает в фоновом режиме и запускается сценариями, синхронизируется, а затем завершается.

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

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

Если по какой-то причине вы хотите установить ntp или ntpdate в операционных системах с systemd, сначала отключите ntp-клиент systemd.

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

Установить клиент ntpdate

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

На Debian, Ubuntu, Linux Mint, Zorin и других дистрибутивах, основанных на них, запустите:

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

В Fedora ntpdate устарела, поэтому рекомендуется вместо этого использовать демон ntpd (см. Следующую главу). То же самое рекомендуется для всех других дистрибутивов по двум причинам:

  • Иногда они не включают ntpdate в отдельный пакет, а связывают его с ntpd из следующего раздела.
  • Они не автоматизируют запуск ntpdate автоматически при каждом сетевом подключении. Вы должны вставить ntpdate самостоятельно в скрипт, который автоматически запускается после подключения к сети.

В этом случае имеет смысл установить ntpd, как указано в следующей главе.

Установить ntpd Daemon

В Debian, Ubuntu, Zorin, Mint и других дистрибутивах, основанных на Debian или Ubuntu, запустите:

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

Как установить, изменить время и часовой пояс в CentOS 7, 8

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

Цели статьи

  1. Показать способы настройки и смены времени и часового пояса в centos.
  2. Рассказать о средствах для автоматической синхронизации времени.
  3. Настройка своего сервера точного времени на основе centos.

Данная статья является частью единого цикла статьей про сервер Centos.

Время на сервере CentOS

Во время установки CentOS вам обязательно предлагается настроить текущее время, указать временную зону, в которой находится машина. По-умолчанию инсталлятор берет время из bios и предлагает его откорректировать. Кто-то во время установки не придал этому значение и не откорректировал часы, кто-то ошибся в выборе часового пояса. Так же популярна ситуация, когда сервер арендуется за границей, там уже предустановлена система и ее настройки времени и часового пояса не соответствуют необходимым. Все это можно исправить после установки, я подробно обо всем расскажу. Но начнем с самого простого.

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

  • Для корректного логирования событий той или иной службы. Например, у вас в сети случился какой-то инцидент и вы его расследуете. Удобно, когда время на всех машинах сети одинаковое, это упрощает проверку и сопоставление различных действий.
  • Могут возникнуть проблемы с работой в доменной среде windows, если у вас существенно различаются данные системных часов. Это актуально, если у вас файловый сервер centos интегрирован в доменную сеть windows. Пользователь в определенный момент не сможет получить доступ к файлам, если время сервера превысит допустимое отклонение от контроллера домена (более 5 минут). Это связано с особенностью работы протокола аутентификации Kerberos.
  • На вашем сервере может располагаться web хостинг с сайтами, в которых указано время публикации материала. Если часы сервера не будут совпадать с временной зоной основной аудитории, то могут возникать курьезные моменты, когда посетители увидят статьи, опубликованные в будущем. Так же некорректно будет работать статистика, основанная на анализе логов apache или nginx.
  • Вы используете планировщик cron в своей работе. Для корректной и предсказуемой работы запланированных событий дата и часовой пояс на сервере должны быть настроены правильно.

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

Установка и настройка времени в CentOS

Первым делом проверим текущую дату и время на сервере с помощью команды date:

Или более подробной команды timedatectl.

Узнать время в centos

Monдень недели, в данном случае понедельник
Oct 21месяц август, 10-е число
11:17:03текущее время часы:минуты:секунды
MSKчасовой пояс
2019текущий год

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

Здесь MM — месяц, DD — число, hh — час, mm — минуты. Таким образом, чтобы изменить дату на 22 октября, 17:10, выполняем в консоли:

Чтобы узнать текущее время без учета часового пояса, то есть время по UTC, можно воспользоваться следующим ключом команды date:

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

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

Как уже было показано раньше, чтобы узнать в каком часовом поясе находятся системные часы сервера centos, необходимо воспользоваться командой date. В нашем случае timezone указана как MSK. Это общепризнанное сокращение для часовой зоны Московское время (Moscow Time). Если у вас указан другой часовой пояс, а вы хотите установить московскую временную зону, то вам нужно выполнить следующие процедуры:

Читать еще:  Как регулировать скорость вращения кулера через биос

Обновить системный список часовых поясов tzdata с помощью yum:

Настраиваем часовой пояс с помощью утилиты timedatectl.

Эта утилита выполняет очень простое действие. Она проставляет символьную ссылку с нужного файла timezone из /usr/share/zoneinfo на файл /etc/ localtime . Тот же самый результат вы получите, если сделаете это сами вручную.

Перед этим лучше сделать резервную копию текущей timezone на всякий случай:

centos timezone

Далее найдите в каталоге /usr/share/zoneinfo/ необходимую временную зону. В нашем случае это файл Moscow в папке Europe.

Установить символьную ссылку на указанный файл timezone:

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

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

Способов синхронизации времени в centos существует как минимум три:

  • ручной с помощью утилиты ntpdate
  • автоматический при помощи сервиса ntp или chrony
  • автоматический через утилиту из пакета systemd — timesyncd.

Рассмотрим сначала вариант ручной однократной синхронизации при помощи программы ntpdate. Она позволяет разово синхронизировать локальное время с эталонным сервером времени в интернете. Подобных эталонов существует великое множество. Мы для примера воспользуемся одним из них — pool.ntp.org

Запускаем синхронизацию времени:

Если получите ошибку

значит утилита у вас не установлена. Установить ее можно из базового репозитория.

Это актуально только для 7-й версии, в В CentOS 8 ntp и ntpdate убрали из репозиториев . Для синхронизации времени можно использовать только chrony. Ее мы рассмотрим ниже.

Утилита ntpdate провела синхронизацию, в результате которой к моему системному времени было добавлено 0.001664 секунды для приближения к эталонному. Если в результате работы синхронизации вы получаете ошибку: no server suitable for synchronization found то попробуйте в работе утилиты использовать непривилегированный порт. По-умолчанию ntpdate работает по 123 порту. Если он закрыт на фаерволе, то помочь в синхронизации поможет следующий параметр:

Если у вас запуск ntpdate завершается ошибкой — the NTP socket is in use, exiting, значит у вас уже установлена и запущена служба ntpd, которая заняла udp порт, необходимый для работы ntpdate. Установкой и настройкой этой службы мы и займемся далее.

Как я уже сказал, в CentOS 8 служба ntpd и утилита ntpdate стали недоступны в базовых репозиториях. Возможно, их как-то удастся установить из сторонних репозиториев, но большого смысла нет. Можно воспользоваться программой chrony. Ставим ее:

Запускаем и добавляем в автозагрузку.

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

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

timedatectl

systemd-timesyncd

Отдельно пару слов о службе systemd-timesyncd, которая в системах с systemd выступает в роли простого sntp клиента, в отличие от chrony и ntp, которые в том числе могут работать в качестве сервера времени. В Debian служба systemd-timesyncd присутствует в составе systemd и ей можно пользоваться, что достаточно удобно. Легкий полновесный клиент, который по дефолту есть в составе системы.

Я сначала не мог понять, что с systemd-timesyncd в Centos. Команда вроде есть и работает, но как оказалось, это просто обертка над chrony. Реально команда управляет именно chrony и без него не работает. Без него вы получите ошибку, при попытке активировать компонент timesyncd.

Если вернете chrony в систему, то timedatectl будет запускать именно его. Немного погуглив, я понял в чем тут дело. Red Hat компилирует systemd без компонента systemd-timesyncd, предлагая по дефолту именно chrony.

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

Сервер времени ntp использует в своей работе одноименный протокол — Network Time Protocol, которому для работы необходим UDP порт 123. Так что перед установкой и настройкой службы времени убедитесь, что на фаерволе открыт этот порт.

Устанавливаем сервер ntp:

Теперь отредактируем файл конфигурации /etc/ntp.conf , удалив все лишнее:

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

Проверяем запустился ли сервер:

настройка ntp centos

Все в порядке, служба слушает положенный порт 123. Проверим еще на всякий случай системные логи centos:

centos ntp server настройка ntpd centos

Все в порядке, сервер запущен и полностью готов к работе.

Теперь настроим автозапуск ntp вместе с загрузкой centos:

Наблюдать за работой службы ntp можно с помощью команды ntpq -p:

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

Что значат все эти данные:

remoteАдрес удаленного эталона времени, с которого была синхронизация
refidУказывает, откуда каждый эталон получает точное время. Это могут быть другие сервера времени, система GPS и другое
stStratum (уровень) это число от 1 до 16, которое указывает на точность эталона. 1- максимальная точность, 16 — сервер недоступен. Уровень вашего сервера будет равен уровню наименее точного удаленного эталона плюс 1.
pollИнтервал в секундах между опросами
reachВосьмеричное представление массива из 8 бит, отражающего результаты последних восьми попыток соединения с эталоном. Бит выставлен, если удаленный сервер ответил.
delayВремя задержки ответа на запрос о точном времени
offsetРазница между вашим и удаленным сервером
jitterДисперсия (Jitter) — это мера статистических отклонений от значения смещения (поле offset) по нескольким успешным парам запрос-ответ. Чем меньше значение дисперсии, тем лучше, поскольку позволяет точнее синхронизировать время.

Настройка сервера chrony в CentOS 8

С сервером времени chrony все будет практически идентично ntpd. Принцип работы и формат конфигов у них примерно одинаковый. Если вы еще не установили chrony, то сделайте это и добавьте его в автозагрузку.

Конфигурация сервера времени chrony располагается в файле /etc/chrony.conf. Ниже представлен минимум настроек, необходимых, чтобы он работал в качестве локального сервера времени для клиентов.

Параметр rtcsync задает возможность периодически записывать системное время в RTC (Real Time Clock) — аппаратные часы компьютера. Описание всех параметров файла конфигурации можно посмотреть тут — https://chrony.tuxfamily.org/doc/3.4/chrony.conf.html.

Не забываем настраивать firewalld, если отдельно не настраивали iptables, для доступа клиентов к серверу.

Теперь можно перезапустить chrony и проверить синхронизацию времени с какого-нибудь клиента в сети.

Идем на другой компьютер и там проверяем работу нашего сервера времени.

Часто задаваемые вопросы по теме статьи (FAQ)

Мне отличия не известны. В общем случае, обе утилиты делают одно и то же. Формат конфигов у них тоже одинаковый. Конечно же, программы имеют отличия, но в общем случае, для типового сервера нет принципиальной разницы.

Я бы рекомендовал так делать. Если перезагрузиться совсем нельзя, я рекомендую вручную перезапустить основные сервисы. Не все могут автоматически корректно отработать внезапное изменение времени. Может начаться путаница в логах, особенно если время изменилось существенно (на несколько часов).

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

Нет, это не возможно. Да и не имеет практического смысла. Обе эти программы проверяют при запуске, свободен ли udp порт 123 на сетевом интерфейсе. Если он занят другой программой, то запуск завершится с ошибкой.

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

Заключение

Подведем итог опубликованного материала. Мы рассмотрели практически все, что связано со временем на сервере CentOS. Да и не только на нем, вся информация в статье актуальна практически для любого Linux дистрибутива. Мы научились устанавливать время, изменять часовой пояс, синхронизировать время с помощью ntp, chrony и настраивать сервер времени в локальной сети.

Напоминаю, что данная статья является частью единого цикла статьей про сервер Centos.

голоса
Рейтинг статьи
Ссылка на основную публикацию
ВсеИнструменты
Adblock
detector