Centos 8 синхронизация времени с контроллером домена windows

Во многих мануалах в Интернете для присоединения Linux к домену Active Directory используется Samba и Winbind. В этой статье мы покажем альтернативный способ добавления в домен с помощью пакета realmd (Realm Discovery) и службы SSSD (System Security Services Daemon). В этой статье мы покажем, как добавить сервер CentOS 8.1 в ваш домен Active Directory (на базе Windows Server 2016).

Во многих мануалах в Интернете для присоединения Linux к домену Active Directory используется Samba и Winbind. В этой статье мы покажем альтернативный способ добавления в домен с помощью пакета realmd (Realm Discovery) и службы SSSD (System Security Services Daemon). В этой статье мы покажем, как добавить сервер CentOS 8.1 в ваш домен Active Directory (на базе Windows Server 2016).

Realmd позволяет произвести настройку сетевой аутентификации и членства в домене (AD или IPA/FreeIPA) без сложных настроек. Информация о домене обнаруживается автоматически. Realmd использует SSSD для аутентификации и проверки учетных записей.

Для успешного присоединения и членства в домене Active Directory вам нужно выполнить следующие требования:

  1. Настроить синхронизацию времени с контроллером домена Active Directory. Иначе SSSD не сможет корректно работать, т.к. эта служба поддерживает только Kerberos (не может использовать NTLM для аутентификации в домене). Соответственно разница во времени между DC и Linux клиентом не должна быть больше 5 минут.
  2. Необходимо изменить настройки DNS на клиенте Linux CentOS. Он должен указывать на DNS сервер на контроллерах домена AD.

Установите в CentOS клиент ntp chrony:

# yum install -y chrony

установка chrony в centos linux

Затем в конфигурационном файле /etc/chrony.conf укажите адреса NTP серверов для синхронизации времени (это могут быть ваши контроллеры домена AD).

# nano /etc/chrony.conf

server dc01.test.com iburst

Запустите службу NTP и добавьте ее в автозагрузку

# systemctl start chronyd
# systemctl enable chronyd

Теперь в файл /etc/resolv.conf добавьте адреса DNS-серверов, которые отвечают за разрешение имён в вашем домене Active Directory:

# nano /etc/resolv.conf

search vmblog.ru
nameserver 192.168.1.201
nameserver 192.168.1.200

настройка dns в centos

Теперь нужно установить необходимые пакеты из репозитория CentOS:

# yum install adcli krb5-workstation realmd sssd

установка realmd и sssd в linux centos

Совет. Если у вас другой дистрибутив CentOS или старая версия Linux, убедитесь, что версия пакет SSSD новее, чем 1.9.0. Полноценная поддержка AD в SSDD появилась, начиная с этой версии. В моем примере используется sssd-2.2.

Проверьте, что утилита rearm может обнаружить ваш домен:

# realm discover vmblog.ru –verbos

Если утилита успешно обнаружит ваш домен AD, появится примерно такой лог:

* Resolving: _ldap._tcp.vmblog.ru
* Performing LDAP DSE lookup on: 192.168.1.201
* Successfully discovered: vmblog.ru
vmblog.ru
type: kerberos
realm-name: VMBLOG.RU
domain-name: vmblog.ru
configured: no
server-software: active-directory
client-software: sssd
required-package: oddjob
required-package: oddjob-mkhomedir
required-package: sssd
required-package: adcli
required-package: samba-common-tools

realm discover - обнаружение домена active directory в linux

Теперь в конфигурационном файле /etc/realmd.conf нужно указать значения атрибутов operatingSystem и operatingSystemVersion.

# nano /etc/realmd.conf

[active-directory]
os-name = CentOS Linux
os-version = 8.1.1911 (Core)

настройка параметров сервера linux  в active directory

Теперь можно добавить ваш сервер CentOS в Active Directory. Для этого используется команда realm join. В следующей команде мы указали имя пользователя с правами добавления в домен и OU, в который нужно поместить учетную запись вашего компьютера Linux.

# realm join --user=aivanov --computer-ou="OU=Servers,OU=MSK,DC=vmblog,DC=ru" vmblog.ru

Утилита запросит пароль пользователя AD. После выполнения команды откройте консоль Active Directory Users and Computers (dsa.msc), и убедитесь, что в указанном контейнере AD появилась учетная запись для вашего сервера CentOS.

linux centos появился в active directory

Выполните команду realm list и убедитесь, что появилась строка

server-software: active-directory

Это означает что данный сервер является членом домена Active Directory.

Чтобы не вводить полное имя домена при входе пользователей, можете добавить в файл /etc/sssd/sssd.conf строку:

use_fully_qualified_names = False

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

Содержание:

  • Hwclock: настройка аппаратного (системного) времени
  • Ручная настройка времени в CentOS
  • Настройка часового пояса в CentOS
  • Настройка синхронизация времени по NTP в CentOS
  • Используем chronyd для синхронизация времени в CentOS 8
  • Распространённые ошибки при настройке времени в CentOS

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

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

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

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

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

[[email protected] etc]# hwclock --localtime

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

[[email protected] etc]# hwclock --utc

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

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

# hwclock --systohc

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

# hwclock --set --date "27 Nov 2019 17:30"

hwclock в linux centos

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

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

[[email protected] etc]# date

Wed Nov 27 17:40:56 +06 2019

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

# date MMDDhhmm

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

Например:

# date 11261740

date - изменить дату/время в centos

Для получения расширенной информации о дате, времени, поясе, синхронизации, настройках перехода на сезонное (летнее/зимнее) время (DST), используется утилита timedatectl. Она дает более подробную информацию о настройках времени на сервере.

timedatectl -текщие настройки времени

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

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

timedatectl set-time

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

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

  • timedatectl
  • tzdata

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

# timedatectl set-timezone Europe/Moscow

timedatectl set-timezone изменить часовой пояс в linux centos

Или же можно использовать tzdata. Чтобы воспользоваться данным методом, нужно заменить файл /etc/localtime на нужный вам. Весь список часовых поясов, расположен в директории /usr/share/zoneinfo/. Заменим часовой пояс на Asia/Almaty. Делаем бэкап файла locatime:

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

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

# ln -s /usr/share/zoneinfo/Asia/Almaty /etc/localtime

/etc/localtime - пааметры часового пояса

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

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

# yum install ntp -y

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

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

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

[[email protected] Asia]# service ntpd status

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.

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

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

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

# dnf install chrony

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

# systemctl start chronyd
# systemctl enable chronyd

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

systemctl start chronyd в centos

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

# timedatectl status

NTP Service: active

timedatectl status NTP Service: active

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

# chronyc tracking

chronyc tracking

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

# chronyc sources

chronyc sources

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

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

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

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

ntpdate [26214]: the NTP socket is in use, exiting

ntpdate [26214]: the NTP socket is in use, exiting

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

# service ntpd stop

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

service ntpd stop

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

Failed to set time: Automatic time synchronization is enabled.

timedatectl Failed to set time: Automatic time synchronization is enabled

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

# timedatectl set-ntp 0

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

timedatectl set-ntp

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

# yum install tzdata -y

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

28 Nov 10:12:39 ntpdate[897482]: sendto(185.217.191.98): Operation not permitted

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

Обновлено и опубликовано Опубликовано: 17.12.2020

Тематические термины: NTP, CentOS.

Сервер синхронизации времени NTP помогает актуализировать время на всех узлах сети. В инструкции рассказано о его установке и настройке на Linux CentOS 8.

Установка
Настройка
Тестирование
Настройка клиента Linux
    chrony
    ntp
    ntpdate
Настройка клиента Windows

Установка сервера

В CentOS 8 пакетом для синхронизации времени является chrony — он пришел на смену ntpd.

Устанавливаем его командой:

dnf install chrony

Разрешаем автозапуск и стартуем сервис:

systemctl enable chronyd —now

Настройка NTP

Открываем файл с настройками:

vi /etc/chrony.conf

Настраиваем серверы, с которых наш NTP будет брать эталонное время. Например:

#pool 2.centos.pool.ntp.org iburst
server 192.168.0.100 iburst prefer
server 192.168.0.110 iburst
server 127.127.1.0

* где:

  • pool — указывает на выполнение синхронизации с пулом серверов.
  • server — указывает на выполнение синхронизации с сервером.
  • iburst — отправлять несколько пакетов (повышает точность).
  • prefer — указывает на предпочитаемый сервер.
  • server 127.127.1.0 — позволит в случае отказа сети Интернет брать время из своих системных часов.

* в данном примере мы закомментировали указанный пул по умолчанию и добавили свои серверы 192.168.0.100 и 192.168.0.110.

Настраиваем безопасность:

allow 192.168.0.0/24

* в данном примере мы разрешаем синхронизацию времени с нашим сервером для узлов сети 192.168.0.0/255.255.255.0.

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

systemctl restart chronyd

Добавляем правило в брандмауэр:

firewall-cmd —permanent —add-service=ntp

firewall-cmd —reload

Тестирование

Проверить состояние получения эталонного времени можно командой:

chronyc sources

Мы должны увидеть, примерно, следующее:

210 Number of sources = 2
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^? 127.127.1.0                   0   6     0     —     +0ns[   +0ns] +/-    0ns
^* server-01.dmosk.local           2   6    17    55   +629us[+1184us] +/-  152ms

Отобразить текущее время можно командой:

date

Для настройки часового пояса применяем команду:

timedatectl set-timezone Europe/Moscow

* московское время (GMT+3).

Проверить отдачу времени сервером можно введя команду на другом Linux:

ntpdate 192.168.0.15

* где 192.168.0.15 — адрес нашего NTP-сервера.

Правильный ответ имеет следующий вид:

ntpdate[3576]: adjust time server 192.168.0.15 offset 0.017657 sec

* время было рассинхронизировано на 0.017657 секунд.

Настройка клиента Linux

Для клиентов можно выбрать несколько стратегий настройки — мы рассмотрим 3:

  1. С помощью Chrony.
  2. Сервис ntpd.
  3. Утилиты ntpdate.

Начнем с Chrony.

Chrony

Команда для установки зависит от типа дистрибутива Linux.

а) Ubuntu / Debian:

apt-get install chrony

б) CentOS 7,8

yum install chrony

После установки открываем /etc/chrony.conf:

vi /etc/chrony.conf

… и в качестве сервера оставляем только наш локальный сервер, например:

server 192.168.156.215 iburst

Разрешаем автозапуск сервиса:

systemctl enable chronyd || systemctl enable chrony

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

systemctl restart chronyd || systemctl restart chrony

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

chronyc sources

NTP

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

а) Ubuntu / Debian:

apt-get install ntp

б) CentOS 7:

yum install ntp

В настройка /etc/ntp.conf в качестве сервера оставляем только наш локальный сервер, например:

server 192.168.0.15

Остальные pool и server удаляем или комментируем.

Перезапускаем NTP:

systemctl restart ntp || systemctl restart ntpd

Проверить состояние можно командой:

ntpq -p

ntpdate

Утилита командной строки выполняет разовую синхронизацию. Ее можно установить из репозитория.

а) Ubuntu / Debian:

apt-get install ntpdate

б) CentOS 7:

yum install ntpdate

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

crontab -e

0 0 * * * /usr/sbin/ntpdate 192.168.0.15

* в данном примере задание будет выполняться раз в день в 00:00. /usr/sbin/ntpdate — полный путь расположения утилиты, в разных системах может быть разным — проверить стоит командой which ntpdate.

Настройка клиента Windows

В командной строке выполняем:

w32tm /config /manualpeerlist:»192.168.0.15,0×8″ /syncfromflags:manual /update

Многие онлайн-руководства показывают, как использовать Samba и Winbind для присоединения Linux к домену Active Directory.

В этой статье мы покажем альтернативный способ добавления компьютера или сервера Linux в домен с использованием realmd (Realm Discovery) и SSSD (System Security Services Daemon).

В этой статье мы покажем, как присоединить сервер CentOS 8.1 к вашему домену Active Directory (на основе Windows Server 2016).

Realmd позволяет настраивать аутентификацию и членство в домене (в AD или IPA / FreeIPA) без сложных настроек.

Информация о домене обнаруживается автоматически.

Realmd использует SSSD для аутентификации и проверки учетных записей пользователей.

Чтобы успешно присоединиться к домену Active Directory, вам необходимо выполнить следующие требования на вашем сервере CentOS:

  • Настройте синхронизацию времени с контроллером домена Active Directory (и ваш DC с ролью PDC должен синхронизировать время с внешним NTP-сервером). В противном случае SSSD не сможет работать правильно. Этот сервис поддерживает только Kerberos (и не может использоваться для аутентификации с использованием NTLM). Соответственно, разница во времени между DC и Linux-клиентом не должна превышать 5 минут.
  • В Linux Centos необходимо настроить DNS-клиент для использования службы DNS на контроллерах домена.

Установите клиент NTP (chrony) на CentOS:

# yum install -y chrony

Затем в файле конфигурации /etc/chrony.conf укажите полные доменные имена или IP-адреса серверов NTP для синхронизации (это могут быть контроллеры домена AD):

# nano /etc/chrony.conf

server dc01.test.com iburst

Запустите службу NTP и добавьте ее в автозапуск:

# systemctl start chronyd

# systemctl enable chronyd

Теперь добавьте адреса DNS-серверов, которые отвечают за разрешение имен в вашем домене Active Directory, в ваш файл /etc/resolv.conf:

# nano /etc/resolv.conf

search test.com

nameserver 192.168.1.201

nameserver 192.168.1.200

Теперь установите необходимые пакеты из репозитория CentOS:

# yum install adcli krb5-workstation realmd sssd

Заметка. Если вы используете другой дистрибутив Linux или более старую версию CentOS, убедитесь, что версия пакета SSSD новее 1.9.0. Полная поддержка AD в SSDD появилась только с этой версии. В нашем примере используется sssd-2.2.

Убедитесь, что инструмент realm может обнаружить ваш домен AD:

# realm discover test.com --verbos

Если утилита успешно обнаружит ваш домен AD, появится следующий ответ:

* Resolving: _ldap._tcp.test.com

* Performing LDAP DSE lookup on: 192.168.1.201

* Successfully discovered: test.com

test.com

type: kerberos

realm-name: TEST.COM

domain-name: test.com

configured: no

server-software: active-directory

client-software: sssd

required-package: oddjob

required-package: oddjob-mkhomedir

required-package: sssd

required-package: adcli

required-package: samba-common-tools 

Теперь укажите значения атрибутов AD operatingSystem и operatingSystemVersion в файле конфигурации /etc/realmd.conf:

# nano /etc/realmd.conf

[active-directory]

os-name = CentOS Linux

os-version = 8.1.1911 (Core)

Теперь вы можете присоединить свой сервер CentOS к домену Active Directory.

Для этого используйте команду realm join.

В следующей команде мы указали имя пользователя с разрешениями для добавления компьютера в домен и Organizational Unit , в который мы хотим поместить учетную запись своего компьютера Linux.

# realm join --user=jbrion --computer-ou="OU=Servers,OU=UK,DC=test,DC=com" test.com

Утилита предложит вам ввести пароль пользователя AD.

После выполнения команды откройте консоль Active Directory – пользователи и компьютеры (dsa.msc) и убедитесь, что учетная запись вашего сервера CentOS отображается в указанном контейнере AD.

Выполните команду realm list и убедитесь, что отображается строка server-software: active-directory.

Это означает, что этот сервер является членом домена Active Directory.

Чтобы не указывать полное доменное имя при входе пользователей в систему, вы можете добавить строку в файл /etc/sssd/sssd.conf:

use_fully_qualified_names = False

Содержание

  1. Установка и настройка NTP-сервера на Linux CentOS 8
  2. Установка сервера
  3. Настройка NTP
  4. Тестирование
  5. Настройка клиента Linux
  6. Chrony
  7. Настройка времени на Linux сервере CentOS
  8. Какие часы бывают в Linux
  9. Для чего нужно корректировать часы
  10. Как настроить время вашего сервера
  11. Несколько полезных команд установки времени аппаратных часов
  12. Значение временной зоны
  13. Системные часы операционной системы CentOS
  14. Изменение временной зоны (часового пояса) в CentOS
  15. Настройка сервера времени ntp
  16. CentOS: Настройка даты и времени, пояса, синхронизация с NTP
  17. Hwclock: настройка аппаратного (системного) времени
  18. Ручная настройка времени в CentOS
  19. Настройка часового пояса в CentOS
  20. Настройка синхронизация времени по NTP в CentOS
  21. Используем chronyd для синхронизация времени в CentOS 8
  22. Распространённые ошибки при настройке времени в CentOS
  23. Синхронизация времени в Linux: NTP, Chrony и systemd-timesyncd
  24. Устройства тоже следят за временем
  25. Время одно — часов много
  26. Что там у NTP?
  27. Различные реализации NTP
  28. Отключение служб NTP
  29. Проверка статуса перед запуском
  30. Установка часового пояса
  31. systemd-timesyncd
  32. Конфигурирование systemd-timesyncd
  33. Запуск timesync
  34. Установка аппаратных часов
  35. Зачем вам вообще RTC?
  36. Заключение
  37. На правах рекламы

Установка и настройка NTP-сервера на Linux CentOS 8

Сервер синхронизации времени NTP помогает актуализировать время на всех узлах сети. В инструкции рассказано о его установке и настройке на Linux CentOS 8.

Установка сервера

В CentOS 8 пакетом для синхронизации времени является chrony — он пришел на смену ntpd.

Устанавливаем его командой:

dnf install chrony

Разрешаем автозапуск и стартуем сервис:

Настройка NTP

Открываем файл с настройками:

Настраиваем серверы, с которых наш NTP будет брать эталонное время. Например:

#pool 2.centos.pool.ntp.org iburst
server 192.168.0.100 iburst prefer
server 192.168.0.110 iburst
server 127.127.1.0

* в данном примере мы закомментировали указанный пул по умолчанию и добавили свои серверы 192.168.0.100 и 192.168.0.110.

* в данном примере мы разрешаем синхронизацию времени с нашим сервером для узлов сети 192.168.0.0/255.255.255.0.

systemctl restart chronyd

Добавляем правило в брандмауэр:

Тестирование

Проверить состояние получения эталонного времени можно командой:

Мы должны увидеть, примерно, следующее:

Отобразить текущее время можно командой:

Для настройки часового пояса применяем команду:

timedatectl set-timezone Europe/Moscow

* московское время (GMT+3).

Проверить отдачу времени сервером можно введя команду на другом Linux:

* где 192.168.0.15 — адрес нашего NTP-сервера.

Правильный ответ имеет следующий вид:

ntpdate[3576]: adjust time server 192.168.0.15 offset 0.017657 sec

* время было рассинхронизировано на 0.017657 секунд.

Настройка клиента Linux

Для клиентов можно выбрать несколько стратегий настройки — мы рассмотрим 3:

Chrony

Команда для установки зависит от типа дистрибутива Linux.

apt-get install chrony

yum install chrony

После установки открываем /etc/chrony.conf:

. и в качестве сервера оставляем только наш локальный сервер, например:

server 192.168.156.215 iburst

Разрешаем автозапуск сервиса:

systemctl enable chronyd || systemctl enable chrony

systemctl restart chronyd || systemctl restart chrony

Источник

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

Покупая, а точнее арендуя, сервер за границей (у зарубежного хостинг-провайдера), Вы наверняка сталкивались с ситуацией, что время на нем не совпадает с вашим. Особенно если вы не устанавливали операционную систему самостоятельно, а развертывали ее из предлагаемого хостером образа. Как правило оно идет по времени дата-центра или по гринвичу. По-совести говоря не принципиально в каком часовом поясе сервер, и что показывают часы. Их показания всегда можно скорректировать. Но, согласитесь, что гораздо приятней, когда сервер находится в вашей временной зоне и/или в зоне большинства посетителей вашего сайта.
В этой статье на примере CentOS (red hat linux) я покажу как удаленно изменить время на сервере с операционной системой Linux. Она будет полезна всем кто администрирует Linux server.

Какие часы бывают в Linux

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

Для чего нужно корректировать часы

Как настроить время вашего сервера

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

Приведенный пример для случая когда аппаратные часы идут по UTC, а сервер настроен на Московский часовой пояс. Особых пояснений требует опция —utc вывод времени производится (формируется) с условием, что аппаратные часы идут по времени UTC. То есть показания должны совпадать с желаемым временем на сервере. Опция же —localtime наоборот показывает время аппаратных часов без всяких поправок.

Несколько полезных команд установки времени аппаратных часов

Устанавливаем время аппаратных часов равное системному:

Устанавливаем время системных часов на основании ЧРВ:

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

Значение временной зоны

Данные временной зоны для аппаратных часов в Centos хранятся в файле /etc/sysconfig/clock.
Для московской временной зоны в случае когда аппаратные часы идут по UTC он имеет следующее содержимое:

Где ZONE — это наш часовой пояс, UTC говорит о том, что аппаратные часы сервера идут по универсальному времени UTC, ARC в значении false — значит используется нормальное значение века (эпохи) UNIX.
Подробнее по конфигурации файла /etc/sysconfig/clock в CentOS можно почитать в официальной документации.

Системные часы операционной системы CentOS

Для системных (программных) часов CentOS используется команда date.

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

Изменение временной зоны (часового пояса) в CentOS

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

Это хорошая практика, когда вы делаете резервные копии оригинальных файлов конфигурации 🙂

Затем, создаем ссылку на необходимую временную зону.

где Europe/Moscow необходимая временная зона. Полный список доступных часовых поясов смотрим в каталоге /usr/share/zoneinfo/.
При необходимости можно установить значение времени вручную:

где MM – месяц, DD – день, hh – час, mm – минуты.
То есть чтобы задать, к примеру, 18 марта 20 часов 15 минут, нужно ввести следующее:

Более подробно о команде date, можно почитать в мануале, выполнив команду:

Настройка сервера времени ntp

Со временем часы могут убегать или отставать, поэтому время от времени их нужно синхронизировать с эталонными. Для этого в CentOS используется демон ntpd.
Установим демон ntpd если его нет в системе:

Однократно синхронизируем время:

Если получили что-то вроде the NTP socket is in use, exiting — значит ntpd демон уже запущен. В этом случае остановим его:

Настраиваем работу ЧРВ в BIOS на время по UTC:

Этой командой мы присвоили значение времени аппаратных часов равным системному времени. Как вы помните, системные часы мы синхронизировали командами выше.
Проверим содержимое файла /etc/sysconfig/clock чтобы система после загрузки правильно выставляла местное время. Для Москвы он должен содержать следующее:

Настраиваем демон ntpd на автозагрузку при старте операционной системы:

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

Проверяем системное время командой:

Источник

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

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

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

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

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

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

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

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

hwclock v linux centos

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

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

[root@server etc]# date

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

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

date izmenit datu vremya v centos

Для получения расширенной информации о дате, времени, поясе, синхронизации, настройках перехода на сезонное (летнее/зимнее) время (DST), используется утилита timedatectl. Она дает более подробную информацию о настройках времени на сервере.

timedatectl tekshie nastrojki vremeni

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

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

timedatectl set time

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

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

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

# timedatectl set-timezone Europe/Moscow

timedatectl set timezone izmenit chasovoj poyas v l

Или же можно использовать tzdata. Чтобы воспользоваться данным методом, нужно заменить файл /etc/localtime на нужный вам. Весь список часовых поясов, расположен в директории /usr/share/zoneinfo/. Заменим часовой пояс на Asia/Almaty. Делаем бэкап файла locatime:

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

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

etc localtime paametry chasovogo poyasa

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

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

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

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

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

[root@server Asia]# service ntpd status

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

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

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

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

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

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

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

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

# dnf install chrony

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

# systemctl start chronyd
# systemctl enable chronyd

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

systemctl start chronyd v centos

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

timedatectl status ntp service active

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

chronyc tracking

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

chronyc sources

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

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

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

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

ntpdate 26214 the ntp socket is in use

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

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

service ntpd stop

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

timedatectl failed to set time automatic time syn

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

# timedatectl set-ntp 0

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

timedatectl set ntp

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

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

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

Источник

Синхронизация времени в Linux: NTP, Chrony и systemd-timesyncd

m

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

Более того: некоторые из нас одержимы временем. Мои часы питаются от солнечной энергии и получают точное время из Национального института стандартов и технологий (NIST) в Форт-Коллинз (штат Колорадо) через длинноволновую радиостанцию WWVB. Сигналы времени синхронизируются с атомными часами, также расположенными в форте Коллинз. Мой Fitbit синхронизируется с моим телефоном, который синхронизируется с сервером NTP, который в конечном итоге синхронизируется с атомными часами.

Устройства тоже следят за временем

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

Наши телефоны, планшеты, автомобили, системы GPS и компьютеры требуют точной настройки времени и даты. Я хочу, чтобы часы на рабочем столе моего компьютера показывали правильное время. Я хочу, чтобы в моём локальном календаре напоминания появлялись в нужное время. Правильное время также гарантирует, что задания cron и systemd запускались в нужное время.

Дата и время также важны для ведения журнала, поэтому немного проще найти те или иные логи, ориентируясь по дате и времени. Например, однажды я работал в DevOps (в то время его так не называли) и занимался настройкой системы электронной почты в штате Северная Каролина. Раньше мы обрабатывали более 20 миллионов писем в день. Отслеживание электронной почты через серию серверов или определение точной последовательности событий с использованием файлов журналов на географически разнесенных хостах может быть намного проще, если соответствующие компьютеры синхронизированы по времени.

Время одно — часов много

Хосты Linux должны учитывать, что существует системное время и время RTC. RTC (Real Time Clock — часы реального времени) является немного странным и не особо точным названием для аппаратных часов.

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

Аппаратные часы не понимают концепцию часовых поясов; в RTC хранится только время, а не часовой пояс или смещение от UTC (Всемирное координированное время, которое также известно как GMT или среднее время по Гринвичу). Вы можете установить RTC с помощью инструмента, о котором я расскажу позже в этой статье.

Системное время — это время, которое ОС отображает на часах GUI на вашем рабочем столе, в выходных данных команды date, в метках времени журналов. Это также относится ко времени создания, изменения и открытия файлов.

На странице man для rtc есть полное описание RTC и системных часов.

Что там у NTP?

Компьютеры во всем мире используют NTP (сетевой протокол времени) для синхронизации своего времени со стандартными эталонными часами через интернет с помощью иерархии серверов NTP. Основные серверы времени находятся на уровне 1, и они напрямую подключены к различным национальным службам времени на уровне 0 через спутник, радио или даже модемы по телефонным линиям. Службы времени на уровне 0 могут быть атомными часами, радиоприёмником, который настроен на сигналы, передаваемые атомными часами, или приёмником GPS, использующим высокоточные сигналы часов, передаваемые спутниками GPS.

На подавляющем большинстве эталонных серверов открыто несколько тысяч общедоступных серверов NTP stratum 2, которые доступны для всех. Многие организации и пользователи (включая меня) с большим количеством хостов, которым требуется NTP-сервер, предпочитают устанавливать свои собственные серверы времени, поэтому только один локальный хост обращается к stratum 2 или 3. Затем они настраивают оставшиеся узлы в сети для использования локального сервера времени. В случае моей домашней сети это сервер уровня 3.

Различные реализации NTP

Первоначальная реализация NTP — это ntpd. Затем к ней присоединились две более новых, chronyd и systemd-timesyncd. Все три синхронизируют время локального хоста с сервером времени NTP. Служба systemd-timesyncd не так надёжна, как chronyd, но этого достаточно для большинства целей. Если RTC не синхронизирован, она может постепенно корректировать системное время, чтобы синхронизироваться с NTP-сервером, когда локальное системное время немного смещается. Служба systemd-timesync не может использоваться в качестве сервера времени.

Chrony — это реализация NTP, содержащая две программы: демон chronyd и интерфейс командной строки под названием chronyc. У Chrony есть некоторые функции, которые во многих случаях просто незаменимы:

RPM-пакеты NTP, Chrony и systemd-timesyncd доступны в стандартных репозиториях Fedora. RPM systemd-udev — это менеджер событий ядра, который в Fedora установлен по умолчанию, но не является обязательным для использования.

Вы можете установить все три и переключаться между ними, но это создаст лишнюю головную боль. Так что лучше не стоит. Современные релизы Fedora, CentOS и RHEL перешли на Chrony как стандартную реализацию, и кроме того, у них есть systemd-timesyncd. Я считаю, что Chrony работает хорошо, обеспечивает лучший интерфейс, чем служба NTP, предоставляет гораздо больше информации и повышает контроль, что безусловно понравится системным администраторам.

Отключение служб NTP

Возможно, на вашем хосте уже запущена служба NTP. Если это так, вам нужно отключить её перед переключением на что-то другое. У меня был запущен chronyd, поэтому я использовал следующие команды, чтобы остановить и отключить его. Запустите соответствующие команды для любого демона NTP, который вы используете на своем хосте:

Проверьте, что служба остановлена и отключена:

Проверка статуса перед запуском

Статус системной синхронизации часов позволяет определить, запущена ли служба NTP. Поскольку вы ещё не запустили NTP, команда timesync-status намекнёт на это:

Прямой запрос статуса даёт важную информацию. Например, команда timedatectl без аргумента или параметров выполняет подкоманду status по умолчанию:

Так вы получите местное время для вашего хоста, время UTC и время RTC. В данном случае системное время установлено на часовой пояс America / New_York (TZ), RTC установлено на время в местном часовом поясе, а служба NTP не активна. Время RTC начало немного отклоняться от системного времени. Это нормально для систем, часы которых не были синхронизированы. Величина смещения на хосте зависит от времени, прошедшего с момента последней синхронизации системы.

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

Установка часового пояса

Главное — знать официальное название часового пояса для вашего местоположения и соответствующую команду. Скажем, вы хотите изменить часовой пояс на Лос-Анджелес:

Теперь вы можете установить часовой пояс. Я использовал команду date для проверки изменений, но вы также можете использовать timedatectl:

Теперь вновь можете изменить часовой пояс своего хоста на местное время.

systemd-timesyncd

Демон systemd timesync предоставляет реализацию NTP, которой легко управлять в контексте systemd. Он устанавливается по умолчанию в Fedora и Ubuntu. Однако запускается он по умолчанию только в Ubuntu. Я не уверен насчёт других дистрибутивов. Вы можете проверить у себя сами:

Конфигурирование systemd-timesyncd

Файл конфигурации для systemd-timesyncd — это /etc/systemd/timesyncd.conf. Это простой файл с меньшим количеством включенных опций, чем в старых сервисах NTP и chronyd. Вот содержимое этого файла (без дополнительных изменений) на моей виртуальной машине с Fedora:

Единственный раздел, который он содержит, кроме комментариев, это [Time]. Все остальные строки закомментированы. Это значения по умолчанию, их не нужно менять (если у вас нет для этого причин). Если у вас нет сервера времени NTP, определенного в строке NTP =, по умолчанию в Fedora используется резервный сервер времени Fedora. Я обычно добавляю свой сервер времени:

Запуск timesync

Запустить и сделать systemd-timesyncd активным можно так:

Установка аппаратных часов

Вот как выглядит ситуация после запуска timesyncd:

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

В поисках дополнительной информации я проверил состояние systemd-timesync и обнаружил вот что:

Обратите внимание на сообщение журнала, в котором говорится, что системное время не установлено или сброшено назад. Служба Timesync устанавливает системное время на основе временной метки. Метки времени поддерживаются демоном timesync и создаются при каждой успешной синхронизации.

Команда timedatectl не имеет возможности взять значение аппаратных часов из системных часов. Она может установить время и дату только из значения, введённого в командной строке. Вы можете установить RTC на то же значение, что и системное время, используя команду hwclock:

Зачем вам вообще RTC?

Любая реализация NTP установит системные часы во время запуска. И зачем тогда RTC? Это не совсем так: это произойдет только в случае, если у вас есть сетевое соединение с сервером времени. Однако многие системы не имеют постоянного доступа к сетевому соединению, поэтому аппаратные часы полезны для того, чтобы Linux мог на их основе установить системное время. Это лучше, чем установка времени вручную, даже если оно может отклоняться от реального времени.

Заключение

В этой статье рассмотрены некоторые инструменты для управления датой, временем и часовыми поясами. Инструмент systemd-timesyncd предоставляет NTP-клиента, который может синхронизировать время на локальном хосте с NTP-сервером. Однако systemd-timesyncd не предоставляет серверную службу, поэтому, если вам нужен NTP-сервер в вашей сети, вы должны использовать что-то ещё — например, Chrony, для работы в качестве сервера.

Я предпочитаю иметь единственную реализацию для любой служб в моей сети, поэтому использую Chrony. Если вам не нужен локальный NTP-сервер или если вы не против использовать Chrony в качестве сервера и systemd-timesyncd в качестве SNTP-клиента. Ведь нет необходимости использовать дополнительные возможности Chrony как клиента, если вас устраивает функционал systemd-timesyncd.

Еще одно замечание: вы не обязаны использовать инструменты systemd для реализации NTP. Вы можете использовать старую версию ntpd, Chrony или другую реализацию NTP. Ведь systemd состоит из большого количества сервисов; многие из них являются необязательными, поэтому их можно отключить и использовать вместо них что-то ещё. Это не огромный монолитный монстр. Можно не любить systemd или его части, но вы должны принять обоснованное решение.

На правах рекламы

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

Источник

In this article, we’ll show you how to set time, date, timezone, synchronize time with an NTP server and fix typical issues in CentOS Linux.

Contents:

  • Hwclock: Hardware Time Configuration
  • Manual Time Configuration in CentOS
  • How to Set TimeZone in CentOS?
  • Configure CentOS to Sync Time with NTP Time Servers
  • How to Sync Time in CentOS 8 using Chronyd?
  • Common Time Syn Issues in CentOS

There are two types of clocks on the servers: hardware one (real-time clock) that are working even if a server is off and the operating system software clock. The time on these clocks may differ. After starting the operating system, the software clock is based on a hardware one and may be adjusted by the OS.
Most applications use software clock time in their operation.

Hwclock: Hardware Time Configuration

Hwclock is used to check the hardware time in Linux:

  • hwclock --localtime — check hardware time without correction
  • hwclock --utc – displays time if the hardware clock shows UTC time

# hwclock --localtime

2020-10-12 06:12:02.912866-04:00

# hwclock --utc

2020-10-12 02:12:18.915319-04:00

To set hardware time according to the system time, run this command:
# hwclock --systohc
To set the hardware time you want, run the following:
# hwclock --set --date "11 Oct 2020 17:30"

hwclock in linux

Manual Time Configuration in CentOS

In Linux, date or timedatectl tools are used to check and set software time. If you call date without any parameters, it will show the current time on your server:

# date

Sun Oct 11 22:14:54 EDT 2020

If you want to set time manually, you can use date with additional parameters:

# date MMDDhhmm

For example:

# date 10261740

set date centos

To get extended information about the date, time, timezone, synchronization settings, day-light saving time settings (DST), timedatectl is used. It gives more detailed information about time settings on a server.

timedatectl tool in linux centos

Timedatectl also allows to change time:

# timedatectl set-time '2020-10-11 17:51:00'

How to Set TimeZone in CentOS?

To set the time according to your timezone on a CentOS Linux, you can change it manually. To do it, you can use two tools:

  • timedatectl
  • tzdata

To change a time zone using timedatectl, run this command:

# timedatectl set-timezone Canada/Pacific
# date

timedatectl set-timezone

Or you can use tzdata. To use this method, replace the file /etc/localtime with the one you need. The entire list of time zones is located in /usr/share/zoneinfo/ directory. Let’s change a timezone to Canada/Pacific. Back up the current locatime file:

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

Create a symlink to the timezone you want to set:
# ln -s /usr/share/zoneinfo/Canada/Pacific /etc/localtime

Configure CentOS to Sync Time with NTP Time Servers

You can configure automatic time synchronization on your host with an external NTP (Network Time Protocol) server. To do it, you must install the ntp service. For example, you can install it using yum in CentOS 7:

# yum install ntp -y

After the installation, start the ntpd service and add it to startup:

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

Make sure that the service is running:

# service ntpd status

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 2020-10-11 15:37:33 +06; 5min ago
Main PID: 3057 (ntpd)
CGroup: /system.slice/ntpd.service
└─3057 /usr/sbin/ntpd -u ntp:ntp -g

Specify the NTP servers to synchronize time with in /etc/ntp.conf:

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

Time is synchronized in turn. If the first NTP server is not available, the second one is used, etc.

You can synchronize time with the specified NTP server manually using this command:

# ntpdate 192.168.1.23

By default, ntpd enables “11 minute mode”. It means that time will be synchronized every 11 minutes. If you cannot use the ntpd daemon, you can configure time synchronization using cron. Add the following command to cron:

# ntpdate pool.ntp.org

How to Sync Time in CentOS 8 using Chronyd?

In CentOS 8 you will have to use chrony to synchronize time, since ntp and ntpdate have been removed from the official repositories.

The main benefits of chrony are:

  • High speed and accuracy of time synchronization;
  • Proper operation if you don’t have access to master clock (ntpd requires regular requests);
  • By default, time is not modified right after the synchronization to prevent any problems for running programs;
  • Uses less resources.

By default, chrony is already installed in CentOS Linux, but if you don’t have it on some reason, install it:

# dnf install chrony

Like any other service, chrony needs to be started and added to startup after installation:

# systemctl start chronyd
# systemctl enable chronyd

Check the chronyd service status:

# systemctl status chronyd

systemctl status chronyd

To make sure that the time synchronization is working, run this command:

# timedatectl status

NTP Service: active

timedatectl status NTP Service: active

Chrony configuration file is /etc/chrony.conf. Specify the list of NTP servers you want to use for synchronization. Like ntp, chrony has a command-line interface: chronyc. To view the information about the current time synchronization options, run this command:

# chronyc tracking

To view the information about sync servers:

# chronyc sources

If you want to set the specific date and time manually, you can use date, but previously disable the chronyd daemon.

Common Time Syn Issues in CentOS

In this section, I will describe typical errors that appear when working with timedatectlntp.

During the manual time synchronization you may come across this error:

# ntpdate pool.ntp.org

ntpdate [26214]: the NTP socket is in use, exiting

This means that the ntpd daemon is running and is preventing manual time synchronization. To manually synchronize the time, stop the ntpd daemon:

# service ntpd stop

And run the synchronization again.

The same error may occur when working with timedatectl:

Failed to set time: Automatic time synchronization is enabled.

You must disable automatic sync in timedatectl:

# timedatectl set-ntp 0

And run this command to set the time and date you want:

# timedatectl set-time '2020-11-12 17:41:00'

When working with time zones, it may occur that they are not installed on your server and you are not able to create a symlink for localtime. To make time zones available on your host, install the tzdata tool:

# yum install tzdata -y

Also, you may face some errors during manual synchronization like the following one:

11 Oct 21:11:19 ntpdate[897482]: sendto(xx.xx.xx.98): Operation not permitted

In this case, check your firewalld/iptables rules and make sure that the UDP Port 123 is open on your server. Also, some NTP hosts may not be available during validation.

The
Network Time Protocol (NTP) is a networking protocol for system clock synchronization with remote internet time servers or other sources such as GPS or radio clocks. Accurate timekeeping is crucial in servers for application to work correctly or troubleshooting issues with the help of logs time stamp.

Chrony is an implementation of NTP, and it is a replacement for the old
Ntpd used in previous versions of enterprise Linux operating systems.

Here, we will see how to install
NTP (Chrony) On
CentOS 8 /
CentOS 7 &
RHEL 8 /
RHEL 7.

Chrony works as the default NTP server and client on CentOS 8 / RHEL 8. In CentOS 7/ RHEL 7, you have an option to choose either NTP or Chrony as an NTP daemon.

Install Chrony On CentOS 8 / CentOS 7 & RHEL 8 / RHEL 7

There are chances your server already has Chrony installed and configured as a client to use remote clock server(s).

yum install -y chrony

Install Chrony Package

Install Chrony Package

Configure NTP Server Using Chrony

In this section, we will configure the servers as an NTP server, which will act as a remote time server for all clients in your organization.

vi /etc/chrony.conf

Change the subnet value of allow directive as per your requirement to allow the clients from your organization network. In my case, clients who have IP addresses from 192.168.0.1 to 192.168.0.254 are allowed to connect to the NTP server for time synchronization.

allow 192.168.0.0/24

Restart the Chrony service to apply the configuration change.

systemctl restart chronyd

Enable Chrony service on system startup.

systemctl enable chronyd

Add the firewall rules to allow NTP requests from clients.

firewall-cmd --permanent --add-service=ntp

firewall-cmd --reload

Once you have configured the NTP server, go to the client machine and add this server as an NTP server.

Then, run the below command to check how many clients are accessing the NTP server.

chronyc clients

NTP Clients

NTP Clients

Configure NTP Client Using Chrony

Install the Chrony package if the package is not already installed.

yum install -y chrony

Now, we will configure this machine as an NTP client, which will reach the NTP server we configured earlier for time synchronization.

vi /etc/chrony.conf

Comment out the existing server directives and add a new server directive for our NTP server.

server 192.168.0.10

NTP Server

NTP Server

Then, restart the Chrony service.

systemctl restart chronyd

Enable Chrony service on system startup.

systemctl enable chronyd

Check the time source to ensure the client is reaching to correct NTP server.

chronyc sources
Output:

210 Number of sources = 1
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^? 192.168.0.10                  3   6     1    25  +2525us[+2525us] +/-   87ms

Time Source

Time Source

By default, NTP client will perform a time synchronization every 64 seconds. However, you can adjust the clock manually without waiting for the next time sync polling.

chronyc makestep

Conclusion

That’s All. Please share your feedback in the comments section.

Понравилась статья? Поделить с друзьями:
  • Centos 7 подключить к домену windows
  • Centos 7 монтирование сетевой папки windows
  • Cent браузер скачать на русском для windows 10
  • Cent browser версия для windows xp
  • Cellular data скачать для windows 10