Настройка времени centos 8
Использование правильного часового пояса необходимо для многих системных задач и процессов. Например, демон 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 часов практики и доступ навсегда.Цели статьи
- Показать способы настройки и смены времени и часового пояса в centos.
- Рассказать о средствах для автоматической синхронизации времени.
- Настройка своего сервера точного времени на основе centos.
Данная статья является частью единого цикла статьей про сервер Centos.
Время на сервере CentOS
Почему важно, чтобы в системе было правильное время? Причин может быть несколько:
- Для корректного логирования событий той или иной службы. Например, у вас в сети случился какой-то инцидент и вы его расследуете. Удобно, когда время на всех машинах сети одинаковое, это упрощает проверку и сопоставление различных действий.
- Могут возникнуть проблемы с работой в доменной среде windows, если у вас существенно различаются данные системных часов. Это актуально, если у вас файловый сервер centos интегрирован в доменную сеть windows. Пользователь в определенный момент не сможет получить доступ к файлам, если время сервера превысит допустимое отклонение от контроллера домена (более 5 минут). Это связано с особенностью работы протокола аутентификации Kerberos.
- На вашем сервере может располагаться web хостинг с сайтами, в которых указано время публикации материала. Если часы сервера не будут совпадать с временной зоной основной аудитории, то могут возникать курьезные моменты, когда посетители увидят статьи, опубликованные в будущем. Так же некорректно будет работать статистика, основанная на анализе логов apache или nginx.
- Вы используете планировщик cron в своей работе. Для корректной и предсказуемой работы запланированных событий дата и часовой пояс на сервере должны быть настроены правильно.
Чтобы избежать проблем в подобных ситуациях, займемся настройкой времени, даты и часового пояса. Кратко этот вопрос я разбирал в отдельном материале по базовой настройке centos после установки. Рекомендую с ним ознакомиться, там много полезного.
Установка и настройка времени в CentOS
Первым делом проверим текущую дату и время на сервере с помощью команды date:
Или более подробной команды timedatectl.
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 на всякий случай:
Далее найдите в каталоге /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. Ставим ее:
Запускаем и добавляем в автозагрузку.
Программа стартовала и уже выполнила синхронизацию с источниками точного времени в интернете. Каких-то особых настроек для получения точного времени больше не надо. Служба будет постоянно работать и выполнять синхронизацию. Проверим это с помощью 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 , удалив все лишнее:
После завершения редактирования файла настроек запускаем службу синхронизации времени:
Проверяем запустился ли сервер:
Все в порядке, служба слушает положенный порт 123. Проверим еще на всякий случай системные логи centos:
Все в порядке, сервер запущен и полностью готов к работе.
Теперь настроим автозапуск ntp вместе с загрузкой centos:
Наблюдать за работой службы ntp можно с помощью команды ntpq -p:
Что значат все эти данные:
remote | Адрес удаленного эталона времени, с которого была синхронизация |
refid | Указывает, откуда каждый эталон получает точное время. Это могут быть другие сервера времени, система GPS и другое |
st | Stratum (уровень) это число от 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.
На серверах существует два вида часов. Аппаратные (real time clock), которые работают даже при выключенном сервере и программные часы операционной системы. Показания этих двух часов, могут отличаться. При этом, после запуска операционной системы, программные часы опираются на показания аппаратных и в дальнейшем могут корректироваться системой.
Абсолютное большинство программ в своей работе используют время программных часов.
Hwclock: настройка аппаратного (системного) времени
Чтобы проверить аппаратное время в Linux используется утилита hwclock:
- hwclock --localtime — проверка аппаратного времени без поправки
- hwclock --utc – проверка времени с условием, что аппаратные часы идут по времени UTC
Чтобы установить аппаратное время равное системному времени, выполните команду:
Чтобы установить конкретное время, выполните:
Ручная настройка времени в CentOS
В Linux за программное время отвечает утилита date или timedatectl. Если вызывать утилиту date без параметров, она покажет текущее время на сервере:
Если вы хотите выставить время вручную, можно воспользоваться утилитой date с дополнительными ключами:
Где MM – месяц, DD — день, hh – час, mm – минуты.
Для получения расширенной информации о дате, времени, поясе, синхронизации, настройках перехода на сезонное (летнее/зимнее) время (DST), используется утилита timedatectl. Она дает более подробную информацию о настройках времени на сервере.
Timedatectl также позволяет изменить время:
Настройка часового пояса в CentOS
Чтобы время на сервере CentOS Linux соответствовало вашему часовому поясу, его можно изменить вручную. Для этого есть две утилиты:
Чтобы изменить часовой пояс через утилиту timedatectl, выполните команду:
Или же можно использовать tzdata. Чтобы воспользоваться данным методом, нужно заменить файл /etc/localtime на нужный вам. Весь список часовых поясов, расположен в директории /usr/share/zoneinfo/. Заменим часовой пояс на Asia/Almaty. Делаем бэкап файла locatime:
Создаем симлинк на нужный часовой пояс:
Настройка синхронизация времени по 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 нужно включить и добавить в автозагрузку:
Проверим статус сервиса:
Чтобы проверить, что синхронизация работает, выполнитите команду:
Чтобы проверить информацию о серверах синхронизации, выполните команду:
Если вы хотите установить конкретное время и дату вручную, вы можете воспользоваться утилитой date, но перед этим нужно отключить демон chronyd.
Распространённые ошибки при настройке времени в CentOS
В данном разделе, я опишу частые ошибки, которые возникают при работе с утилитами timedatectl, ntp.
При ручной синхронизации времени, у вас может возникнуть подобная ошибка:
Она означает, что у вас запущен демон ntpd, который блокирует ручную синхронизация времени. Чтобы выполнить ручную синхронизацию, остановите демон ntpd:
И запустите синхронизацию заново:
Аналогичная ошибка может возникать и при работе с утилитой timedatectl:
Теперь нужно отключить автоматическую синхронизацию в самой утилите timedatectl:
И выполнить команду по установке конкретного времени:
При работе с часовыми поясами, они могут быть не установлены у вас на сервере и создать симлинк для localtime не получится. Для того, чтобы в системе были доступны часовые пояса, установите утилиту tzdata:
Так при ручной синхронизации, часто бывают ошибки вида:
В этом случае проверьте правила firewalld / iptables, и убедитесь, что у вас на сервере открыт UDP порт 123. Так же некоторые хосты синхронизации могут быть недоступны в момент проверки.
- прерывистые сетевые соединения,
- сильно перегруженные сети
- изменение температуры
- системы, которые не работают постоянно
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. Мы надеемся, что это было информативным.
Читайте также: