Андрей Смирнов
Время чтения: ~15 мин.
Просмотров: 36

Установка времени и даты в Centos, за минуту



Установка времени и даты в Centos, за минуту

Установка времени и даты в Centos, за минуту

centos-ustanovit-datu.png

Добрый день уважаемые читатели и гости блога pyatilistnik.org, продолжаем изучать админские операционные системы, в частности CentOS. В прошлый раз мы ее установили и подробнейшим образом познакомились с ее файловой структурой и общими элементами управления. Азы изучены, двигаемся к реальной практике, очень часто бывает ситуация, что в момент установки вы не правильно указали дату или время, либо ваши системные часы отстают получая не правильное время с NTP сервера, вот в таких моментах вам может потребоваться умение устанавливать, менять дату и время на CentOS 7.

На что влияет время в CentOS 7

Я хочу до вас донести, для чего нужно иметь всегда актуальное время на сервере.

  • Представить будни системного администратора без аварий, просто не возможно. Это у руководства компаний в мозгу все хорошо и все должно работать 365 дней в году, без отпуска и обеда :), но в реальности желез может сломать, может произойти хакерская атака или глюк операционной системы. Все эти инциденты, всегда оставляют в CentOS 7 системные события или просто логи и вот, чтобы их правильно идентифицировать (момент срабатывания) вы обязаны иметь корректную дату и время в системе. Я много раз в своей практике встречал моменты, когда системные администраторы, на сетевом оборудовании или некоторых серверах, оставляли стандартные, заводские настройки, которые изначально имели не тот часовой пояс, после чего когда нужно было изучать логи, они садились в лужи, так как видели кривую дату.
  • Если у вас CentOS является членом домена Active Directory, то там могут быть проблемы. Простой пример у вас есть файловый сервер на CentOS, если разница на нем и на контроллере домена более 5 минут, то люди не смогут получать доступ к своим папкам, так как будут проблемы с аутентификацией по протоколу Kerberos.
  • Еще одна большая беда, это запланированные задачи в планировщике cron.

<center></center>

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

Если вы сами устанавливали сервер с CentOS 7, то в мастере инсталляции вы должны били видеть пункт «Дата и время или Date $ Time»

centos-ustanovit-datu-i-vremya.png

В данном пункте вы можете настроить:

  • Часовой пояс
  • Время
  • Дату

centos-7-date-time.png

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

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

Первый раз попав на сервер, я вам советую выработать привычку вводить команду timedatectl. Обратите внимание, что тут есть все данные о времени, дате с учетом часового пояса и без него, сам часовой пояс, в моем примере это GMT, показан NTP сервер, статус синхронизации.

komanda-timedatectl-Centos-7.png

Теперь у вас на выбор два метода, утилитой date или timedatectl.

Установка даты с помощью date

Посмотрим команду date.

date

  • Sat — это день недели, в моем случае суббота
  • Nov — месяц ноябрь
  • 11 — число
  • 22:06:25 — часы, минуты и секунды
  • GMT 2017 — год

komanda-date-v-CentOS.png

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

date MMDDhhmm

  • MM — месяц
  • DD — число
  • hh — час
  • mm — минуты

Я например, хочу дату 04 июня 10:00 2017

date 06041000

novaya-data-v-CentOS-7.png

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

date —utc

Установка даты с помощью timedatectl

Тут все так же просто, есть синтаксис timedatectl set-time ‘YYYY-MM-DD HH:MM:SS’

  • YYYY — год
  • MM — месяц
  • DD — число
  • HH:MM:SS — часы, минуты, секунды.

timedatectl set-time ‘2017-11-12 01:58:00’

Ustanovka-datyi-s-pomoshhyu-timedatectl.png

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

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

Для того, чтобы задать нужный вам часовой пояс в операционной системе CentOS 7, есть два метода.

  1. Через утилиту timedatectl
  2. Через утилиту tzdata

Утилита timedatectl

Что хорошо, ее можно сразу использовать из коробки. И так как помните у меня часовой пояс GMT это +0, я хочу изменить на Москву, это +3. Для начала посмотрим доступный список часовых поясов в Centos, делается это ключомlist-timezones.

timedatectl list-timezones

Список будет огромный, поэтому сделаем фильтрацию по европе.

timedatectl list-timezones | grep Europe

Нахожу тут Europe/Moscow, то что мне и нужно.

nastroyka-chasovogo-poyasa-v-CentOS-7.png

Далее его задаем, командой;

timedatectl set-timezone Europe/Moscow

Как видите, все прекрасно поменялось.

izmenennyiy-chasovoy-poyas-v-Centos-7.png

Утилита tzdata

В CentOS 7, все настройки о часовых поясах, хранятся  файле /etc/localtime и способ с использованием утилиты tzdata, заключается в том, чтобы его подменить на нужный.

fayl-localtime-v-CentOS.png

Делаем резервную копию файла localtime, командой:

mv /etc/localtime /etc/localtime.bak

Устанавливаем пакет tzdata

yum -y install tzdata

Посмотрим список часовых поясов в папке /usr/share/zoneinfo/ 

spisok-chasovyih-poyasov-v-zoneinfo.png

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

ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime

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

Ноя 12, 2017 02:25

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

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «Администратор Linux» в OTUS. Курс не для новичков, для поступления нужно пройти .

Цели статьи

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

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

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

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

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

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

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

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

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

# date Mon Oct 21 11:17:03 MSK 2019

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

# timedatectl

centos-timezone-clock-01.png

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

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

# date MMDDhhmm

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

# date 10221710 Sun Oct 22 17:10:00 MSK 2019

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

# date --utc Mon Oct 21 08:22:19 UTC 2019

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

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

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

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

# yum install tzdata

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

# timedatectl set-timezone Europe/Moscow

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

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

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

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

# ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime

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

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

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

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

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

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

# ntpdate pool.ntp.org 21 Oct 11:50:37 ntpdate[8473]: adjust time server 85.21.78.8 offset -0.001664 sec

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

-bash: ntpdate: command not found

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

# yum install ntpdate

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

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

# ntpdate -u pool.ntp.org

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

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

# yum install chrony

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

# systemctl start chronyd # systemctl enable chronyd # systemctl status chronyd

centos-timezone-clock-02.png

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

# timedatectl status

centos-timezone-clock-03.png

systemd-timesyncd

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

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

# timedatectl set-ntp true Failed to set ntp: NTP not supported

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

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

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

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

# yum install ntp

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

# cat /etc/ntp.conf  driftfile /var/lib/ntp/drift restrict default nomodify notrap nopeer noquery restrict 127.0.0.1 restrict ::1  server 0.centos.pool.ntp.org iburst server 1.centos.pool.ntp.org iburst server 2.centos.pool.ntp.org iburst server 3.centos.pool.ntp.org iburst  disable monitor logfile /var/log/ntp.log
Параметр Описание
server Список серверов для синхронизации времени
driftfile Задает адрес файла, в котором хранится история изменений времени во время синхронизации. Если по каким-то причинам синхронизация времени с внешними источниками станет невозможна, служба времени изменит системные часы в соответствии с записями в этом файле.
restrict 127.0.0.1 Указывает, что пользоваться нашим сервером времени можно только непосредственно с локального интерфейса. Если вам необходимо разрешить другим компьютерам в вашей локальной сети синхронизировать время с текущей машины, то укажите в данном параметре адрес вашей сети, например:
restrict  192.168.10.0 mask 255.255.255.0
restrict default nomodify notrap nopeer noquery Параметры указывают на то, что клиентам данного сервиса времени запрещено изменять его настройки, получать его статус. Они могут только забрать с него значения точного времени.
disable monitor Данный параметр повышает безопасность, предотвращая использования одной из уязвимостей сервиса ntpd, которую можно использовать для проведения DDoS атак.
logfile Указывает путь к файлу с логами сервиса

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

# systemctl start ntpd

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

# netstat -tulnp | grep 123

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

# cat /var/log/messages | grep ntpd
# cat /var/log/ntp.log

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

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

# systemctl enable ntpd

Наблюдать за работой службы 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, то сделайте это и добавьте его в автозагрузку.

# yum install chrony # systemctl start chronyd  # systemctl enable chronyd

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

pool 2.centos.pool.ntp.org iburst driftfile /var/lib/chrony/drift makestep 1.0 3 rtcsync allow 10.20.1.0/24 local stratum 10 logdir /var/log/chrony

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

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

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

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

# systemctl restart chronyd

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

# ntpdate pool.ntp.org 21 Oct 11:50:37 ntpdate[8473]: adjust time server 85.21.78.8 offset -0.001664 sec

Заключение

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

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

Онлайн курс по Linux

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «Администратор Linux» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров. Что даст вам этот курс:

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

Проверьте себя на вступительном тесте и смотрите подробнее программу по .

Помогла статья? Есть возможность отблагодарить автора

Используемые источники:

  • http://pyatilistnik.org/setting-the-centos-time-and-date/
  • https://serveradmin.ru/ustanovka-nastroyka-i-sinhronizatsiya-vremeni-v-centos/

Рейтинг автора
5
Подборку подготовил
Максим Уваров
Наш эксперт
Написано статей
171
Ссылка на основную публикацию
Похожие публикации