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

Обновлено: 03.07.2024

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

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

В этой статье описывается, как установить или изменить часовой пояс в системах CentOS 8.

Проверка текущего часового пояса

На выходе отображается часовой пояс системы. В этом примере часовой пояс установлен на UTC:

Если вы получили предупреждение: «Система настроена на считывание времени RTC в местном часовом поясе», выполните следующую команду, чтобы использовать RTC в UTC:

Изменение часового пояса в CentOS

Перед изменением часового пояса вам необходимо узнать длинное название часового пояса, который вы хотите использовать. Часовые пояса указаны в формате «Регион / Город».

Чтобы timedatectl список всех доступных часовых поясов, вызовите команду timedatectl с опцией list-timezones :

Как только вы определите, какой часовой пояс соответствует вашему местоположению, выполните следующую команду от имени пользователя root или пользователя с привилегиями sudo :

Например, чтобы изменить часовой пояс системы на America/Toronto :

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

Изменение часового пояса путем создания символической ссылки

Если вы используете более старую версию CentOS и в timedatectl системе timedatectl команды timedatectl , вы можете изменить часовой пояс, установив символическую ссылку /etc/localtime на файл часового пояса в каталоге /usr/share/zoneinfo .

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

Проверьте изменения, указав файл /etc/localtime или timedatectl команды timedatectl или date :

Выводы

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

Если вы столкнулись с какой-либо проблемой, не стесняйтесь оставлять комментарий.

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

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на . Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Цели статьи

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

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

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

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

  • Для корректного логирования событий той или иной службы. Например, у вас в сети случился какой-то инцидент и вы его расследуете. Удобно, когда время на всех машинах сети одинаковое, это упрощает проверку и сопоставление различных действий.
  • Могут возникнуть проблемы с работой в доменной среде 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.

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

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

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

Это актуально только для 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. Ниже представлен минимум настроек, необходимых, чтобы он работал в качестве локального сервера времени для клиентов.

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

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

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

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

Есть ли принципиальная разница, что использовать для синхронизации времени, ntp или chrony?

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

Нужно ли перезагружать сервер после изменения времени?

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

У меня никак не синхронизируется время на сервере. С чем это может быть связано?

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

Возможна ли одновременная работа chrony и ntpd?

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

Как лучше сделать - синхронизировать время всех серверов с внешним источником или настроить сервер времени внутри своей локальной сети?

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

Заключение

Не понравилась статья и хочешь научить меня администрировать? Пожалуйста, я люблю учиться. Комментарии в твоем распоряжении. Расскажи, как сделать правильно!

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

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

date

10.12.2019

directory

CentOS, Linux

comments

Комментариев пока нет

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

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

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

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

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

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

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

hwclock в linux centos

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

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

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

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

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

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

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

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

timedatectl set-time

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

systemctl start chronyd в centos

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

timedatectl status NTP Service: active

chronyc tracking

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

chronyc sources

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

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

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

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

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

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

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

service ntpd stop

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

timedatectl Failed to set time: Automatic time synchronization is enabled

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

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

timedatectl set-ntp

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

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

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

infoitcomua1

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

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

Настройте NTP-сервер с помощью Chrony на CentOS 8

Запустить обновление системы

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

Установка Chrony на CentOS 8

Пакет Chrony по умолчанию устанавливается на производных от RHEL, включая CentOS 8. Однако вы можете проверить это, выполнив команду ниже;

Если пакет установлен, вы должны получить такой вывод:

В противном случае вы получите такой результат:

Чтобы увидеть больше информации о Chrony;

Если по каким-то причинам он не установлен по умолчанию, вы всегда можете установить его, выполнив команду ниже;

Настройте Chrony как NTP-сервер в CentOS 8

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

Установить серверы времени

Чтобы получить список серверов NTP, близких к вашему региону, перейдите на страницу « Интернет-кластер серверов NTP» и выберите свой регион. Например, если вы находитесь в Европе, ниже перечислены доступные серверы NTP;

Настройка контроля доступа к серверу NTP

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

Например, чтобы разрешить всем серверам в сетевой подсети 192.168.56.0/24 доступ к вашему серверу NTP;

Подробнее на man chrony.conf ,.

Откройте порт 123 UDP NTP на брандмауэре

Чтобы разрешить клиентам NTP доступ к вашему серверу NTP, вам необходимо открыть порт 123 / UDP на брандмауэре.

Открыть доступ NTP клиенту и серверу в IPTables необходимо добавить правила:

Чтобы открыть доступ только конкретной сети, например 10.0.0.0/24:

Удалить правило укажем ту же команду, заменив -A на -D, например:

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

Запуск Chrony на CentOS 8

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

Проверьте синхронизацию хронического времени

Команды chronyc используются для проверки синхронизации времени Chrony с помощью параметров командной строки, таких как sources, tracking, sourcestats .

Чтобы отобразить информацию об источниках текущего времени, к которым обращается chronyd, выполните команду;

М колонка указывает режим источника;

S колонка показывает состояние источников;

  • “*” Указывает на источник, с которым в настоящее время синхронизируется хронид.
  • “+” Указывает на приемлемые источники, которые объединены с выбранным источником.
  • “-” Допустимые источники, которые исключаются алгоритмом объединения.
  • “?” Источники, подключение к которым было потеряно или чьи пакеты не проходят все тесты. Это состояние также отображается при запуске, пока не будет собрано по крайней мере 3 образца.
  • “x” Обозначает часы, которые хронид считает фальшивыми (их время несовместимо с большинством других источников).

Для отображения параметров о тактовой работе системы;

Дополнительные параметры команды см man chronyc . В.

Настройка клиента NTP с помощью Chrony на CentOS 8

Поскольку наш NTP-сервер, использующий Chrony в CentOS 8, настроен и работает, пришло время проверить, может ли он обслуживать наших клиентов NTP, как ожидалось.

В этой демонстрации мы используем другую виртуальную машину CentOS 8 в качестве нашего NTP-клиента.

Проверьте, установлен ли Chrony;

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

Откройте файл конфигурации и настройте сервер NTP, как показано ниже;

Убедитесь, что имя хоста сервера NTP разрешимо, в противном случае используйте IP-адрес.

Проверьте подключение к NTP-серверу UDP-порт 123

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

Для проверки подключения к UDP-порту 123;

Отлично. Теперь вы можете перейти к перезагрузке и разрешить запуск chronyd при загрузке системы.

Проверить синхронизацию времени NTP

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

Используя команду sources;

Проверить статистику источников

Клиент NTP теперь подключен к нашему серверу NTP. На этом мы подошли к концу нашего руководства по настройке NTP-сервера с использованием Chrony на CentOS 8. Мы надеемся, что это было информативным.

Читайте также: