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

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

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

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

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

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

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

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

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

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

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

# date
Mon Aug 10 17:40:05 MSK 2015
Monдень недели, в данном случае понедельник
Aug 10месяц август, 10-е число
17:40:05текущее время часы:минуты:секунды
MSKчасовой пояс
2015текущий год

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

# date MMDDhhmm

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

# date 08091645
Sun Aug  9 16:45:00 MSK 2015

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

# date --utc
Mon Aug 10 15:03:14 UTC 2015

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

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

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

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

# yum -y install tzdata

Сделать резервную копию текущей timezone:

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

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

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

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

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

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

  • ручной с помощью утилиты ntpdate
  • автоматический при помощи сервиса ntp

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

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

# ntpdate pool.ntp.org
10 Aug 19:27:34 ntpdate[24141]: step time server 83.143.51.50 offset 48.649431 sec

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

# ntpdate -u pool.ntp.org

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

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

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

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

# yum -y 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

настройка ntp centos

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

# cat /var/log/messages | grep ntpd

centos ntp server

# cat /var/log/ntp.log

настройка ntpd centos

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

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

# systemctl enable ntpd

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

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

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

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

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

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

Онлайн-курс по Kubernetes – для разработчиков, администраторов и технических лидеров, которые хотят изучить платформу Kubernetes. Очень востребованный навык, который хорошо оплачивается. Курс не для новичков – нужно пройти вступительный тест. Для кого этот курс: Разработчиков, администраторов, СТО и техлидов:
  • Которые устали тратить время на автоматизацию;
  • Которые хотят единообразные окружения;
  • Которые хотят развиваться и использовать современные инструменты;
  • Которым небезразлична надежность инфраструктуры;
  • Которым приходится масштабировать инфраструктуру под растущие потребности бизнеса;
  • Которые хотят освободить продуктовые команды от части задач администрирования и автоматизации и сфокусировать их на развитии продукта.
Проверьте себя на вступительном тесте и смотрите программу детальнее по .

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

Автор Zerox

Zerox
Владимир, системный администратор, автор сайта. Люблю настраивать сервера, изучать что-то новое, делиться знаниями, писать интересные и полезные статьи. Открыт к диалогу и сотрудничеству.

10 комментариев

  1. Аватар

    Спасибо за статью.
    Подскажите, пожалуйста, почему после перезагрузи ОС ntp может не стартовать?
    Команду systemctl enable ntpd выполнил.

    • Zerox

      Не знаю, логи надо смотреть. Можно настроить логирование ntp. Я ни разу с подобным не сталкивался. Может с сетью что-то не так, ntp все время ругается на проблемы с сетевыми интерфейсами.

      • Аватар

        Разобрался. Дело в том что CentOS7 для синхронизации времени по умолчанию использует сервис chrony. ntpd не будет стартовать автоматически пока не отключишь chrony.
        Что бы отключить chrony нужно выполнить команду: systemctl disable chronyd.service
        А вообще chrony по функциям очень сильно напоминае ntpd.

  2. Аватар

    в 7ке есть специальная утилита для изменения зоны

    timedatectl set-timezone Europe/Moscow

    не используйте ntp, также в 7ке есть chrony

    • Zerox

      Спасибо за информацию. У меня учтены эти замечания в статье про базовую настройку:
      https://serveradmin.ru/centos-7-nastroyka-servera
      Эта статья писалась гораздо раньше, уже не стал переделывать, потому что по сути не имеет принципиального значения.

  3. Аватар

    Здравствуйте. Спасибо Вам. Сайт на Друпал 7. (мой уровень -очень начинающий). Ошибка вроде понятна мне. И вообще место на вдс закончилось. Буду пробовать с SCP как-то решить. Скопировать /opt (os Centtos 7) Потом удалить содержимое. Там 1.5 гб. Если получится и скопировать и удалить. Мало ли что.

  4. Аватар
    Александр

    Спасибо. Все подробно и доступно.

  5. Аватар

    В Centos 7 уже

    timedatectl set-timezone UTC

    работает

  6. Аватар

    Добрый день,
    Чтобы избежать проблем с расхождением времени с виндой, я воспользовался командой.
    ln -sf /usr/share/zoneinfo/UTC/etc/localtime

Добавить комментарий

Ваш e-mail не будет опубликован.

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.