Как изменить время в debian 8. Некорректное время на Ubuntu или Debian - проблемы с NTP синхронизацией времени. Настройка логов cron

26 октября 2014 года был принят закон о смене часовых поясов в России. С данным законопроектам повсеместно возникали проблемы с синхронизацией местного времени по протоколу NTP.

Сегодня мы рассмотрим один из способов решения проблемы синхронизации системного времени на серверах и десктопных машинах Ubuntu\Debian. Решение о котором сегодня будет идти речь, самое логичное, верное и эффективное.

Все просто!

За часовые пояса в системе Ubuntu и Debian отвечает пакет tzdata. Для корректной работы NTP синхронизации и системного времени нужно обновить базу часовых поясов tzdata. Так же, мы рассмотрим установку и настройку NTP клиента для синхронизации системного времени с NTP серверами или кластерами на примере Ubuntu,Debian.

Обновление tzdata - исправляем системного время на Ubuntu или Debian

На сегодняшний день обновления для tzdata появились с стандартных репозиториях системы Ubuntu или Debian. Обновление базы часовых поясов tzdata не составляет, абсолютно, никаких сложностей.

Для обновления tzdata из репозиториев необходимо проделать следующую последовательность операций:

1. Обновляем дерево пакетов подключенных репозиториев.

Sudo apt-get update

2. Производим установку более новой версии tzdata.

Sudo apt-get install tzdata

3. Делаем конфигурацию tzdata и выбираем наш часовой пояс

Sudo dpkg-reconfigure tzdata

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

Sudo reboot

Установка и настройка NTP клиента на Ubuntu или Debian

Периодическая синхронизация и корректировка системного времени необходима для серверов и желательна для десктопных систем, т.к. аппаратные часы BIOS имеют значимую погрешность и с закономерной периодичностью "убегают" в большую или меньшую сторону.
Установка и настройка NTP клиента в Ubuntu или Debian можно считать тривиальной задачей, не вызывающая никаких сложностей и вопросов. Установка и настройка Клиента проходит в 3 этапа:

1. Установка NTP клиента:

Sudo apt-get install ntp

2. Настройка NTP клиента при помощи текстового редактора и файла конфигураций

# Проверьте и, при необходимости, замените в файле конфигураций список NTP # серверов для синхронизации. По умолчанию они такие: server 0.ubuntu.pool.ntp.org server 1.ubuntu.pool.ntp.org server 2.ubuntu.pool.ntp.org server 3.ubuntu.pool.ntp.org # Если вы не знаете какие сервера лучше использовать для синхронизации - # рекомендуем воспользоваться данным кластером серверов: http://www.pool.ntp.org/

3. Проверяем пул адресов для синхронизации, который выдает кластер или сервера синхронизации, указанные в файле конфигураций /etc/ntp.conf:

Если у вас будет вывод аналогичный этому - все впорядке, ntp синхронизация системного времени корректно работает:

Remote refid st t when poll reach delay offset jitter =========================================================== *webhost2.mitht. 193.67.79.202 2 u 52 64 17 16.412 -35.137 0.886 mail.sonur.ru .PPS. 1 u 48 64 17 79.297 -58.992 1.493 guard.qword.ru .INIT. 16 u - 64 0 0.000 0.000 0.000 ns.davydkovo.ne 130.173.91.58 2 u 45 64 17 23.343 -40.480 1.351 golem.canonical 192.93.2.20 2 u 45 64 17 66.089 -34.140 1.669

4. Перезапускаем систему для корректно работы ntp клиента и синхронизации времени при загрузке. В принципе, все корректно работает и после установки, но при использовании стороннего или специфического программного обеспечения, необходима перезагрузка, проще перезагрузить систему:

Sudo reboot

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

Вот мы и решили 2 основных вопроса, связанных с точным временем на вашем сервере или десктопной системе Ubuntu, Debian:

  • Первый вопрос корректировки связан со сменой часовых поясов на территории Россий, связанный с законодательством, вступившим в силу 26 октября 2014 года, и базой данных часовых поясов tzdata.
  • Второй вопрос корректировки точного системного времени связан с установкой и настройкой NTP клиента и NTP синхронизацией системного времени с более точными серверами или кластерами.

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

На сервере важно поддерживать более или менее точное время. Чтобы было удобно читать логи, что бы ваш сервер не присылал другим письма из прошлого или из будущего, чтобы… да пофиг — просто важно и всё.
Из-за разных глюков, ошибок в железе, выключений-включений, время на сервере может отставать-спешить относительно атомного времени. Обычно — не более чем на секунду за сутки, на практике — на секунду за месяц, а то и меньше. Но хреново работающее железо может болтать время намного сильнее (вообще сильные колебания времени — повод задуматься о здоровье железки).
Существует два популярных способа синхронизации времени в linux — ntpdate по крону, или постоянно запущенный ntpd. Вы вольны выбрать любой из них, я напишу про оба. Но от себя я всё же советую использовать именно ntpdate по крону, особенно если вам не сильно критично постоянно держать на сервере время с погрешностью менее 0.1с.
C ntpd была связана проблема, когда уязвимость в нём позволяла использовать серверы ntpd для проведения udp amplification-атаки (когда маленький пакет, пущенный в сторону вашего сервера позволял сгенерировать большой udp-пакет в сторону чужого атакуемого сервера) — http://habrahabr.ru/post/209438/
Конечно, ту уязвимость пофиксили (да и написали, как от неё спастись без обновлений ntpd), но где гарантии, что там не осталось подобных проблем? Да и, опять же, ntpd всё ещё работает по udp и атаки похожего типа возможны, хоть и без большого усиления трафика (зато это позволит скрыть атакующего, подставив ваш сервер под абузу). Кстати, я сталкивался с тем, что ntpd, встроенный в ipmi-модуль сервера был подвержен этой атаке и весело ддосил соседей по стране =)
Поэтому, если вы не готовы постоянно читать рассылки безопасности, следить за обновлениями и так далее — всё же не стоит ставить ntpd.
Итак, первый способ: запускаем ntpdate раз в сутки по крону.
Сносим ntpd, если он есть:

root@server:~# apt-get remove --purge ntpd

Ставим ntpdate:

root@server:~# apt-get install ntpdate

И создаём файл /etc/cron.d/ntpdate со следующим содержимым:

0 6 * * * root ntpdate ntp.ubuntu.com 1>/dev/null 2>&1

Теперь каждый день в 6 утра (время и периодичность сами подставьте) часики будут подводиться до актуального состояния.

Второй способ: nptd.
Нам нужно наоборот его поставить:

root@server:~# apt-get install ntpd

И написать в конфиг /etc/ntpd.conf более или менее правильную конфигурацию:

disable auth
disable stats
server 0.ubuntu.pool.ntp.org
server 1.ubuntu.pool.ntp.org
server 2.ubuntu.pool.ntp.org
server 3.ubuntu.pool.ntp.org

После чего перезапускаем его:

root@server:~# /etc/init.d/ntp restart

Всё, теперь наши часики подводятся в режиме реального времени синхронизируются с пулом ntp-серверов.

Я использую операционную систему Debian GNU/Linux на серверах для хостинга сайтов. Когда летом 2017 года вышла версия 9 Stretch, я обрадовался тому, что для нее в репозиториях «из коробки» был доступен PHP 7. Который, как известно, работает быстрее PHP 5.

В этой статье я покажу, что и с настройкой времени на Debian 9 так же стало лучше, не нужно ничего качать и устанавливать дополнительно, в частности демон ntp или утилиту ntpdate. Все отлично настраивается и работает на стандартном наборе ПО Debian 9 благодаря обновлённой версии systemd , в котором имеется отдельная служба, отвечающая за синхронизацию времени системы по протоколу NTP .

Как настроить время Debian 9

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

# timedatectl set-timezone Europe/Volgograd

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

# This file is part of systemd. # # systemd is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation; either version 2.1 of the License, or # (at your option) any later version. # # Entries in this file show the compile time defaults. # You can change settings by editing this file. # Defaults can be restored by simply deleting this file. # # See timesyncd.conf(5) for details. NTP=ru.pool.ntp.org FallbackNTP=pool.ntp.org

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

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

# systemctl restart systemd-timesyncd

Состояние настройки времени можно проверить следующей командой:

# timedatectl status

Результат ниже говорит о том, что часы на моем сервере настроены верно и синхронизируются по протоколу NTP.

Local time: Tue 2018-12-18 16:36:33 +04 Universal time: Tue 2018-12-18 12:36:33 UTC RTC time: Tue 2018-12-18 12:36:33 Time zone: Europe/Volgograd (+04, +0400) Network time on: yes NTP synchronized: yes RTC in local TZ: no

здесь,
Local time - это местное время;
Universal time - время UTC (всемирное координированное время). Это отправная точка для отсчета всех часовых поясов;
RTC time - время в аппаратных часах сервера (компьютера);
Time Zone - ваш часовой пояс;
Network time on - указывает, включен ли ntp-клиент, входящий в состав systemd;
NTP synchronized - сообщает, синхронизировано ли время с ntp-сервером;
RTC in local TZ - показывает, какое время хранится в аппаратных часах: локальное или всемирное. При этом, yes означает локальное время, no - всемирное;

Информация для новичков

Меня иногда спрашивают, где вводить (выполнять) приводимые мною команды?

Все приведенные в данной статье команды нужно выполнять в консоли сервера от имени привилегированного пользователя (root). Знак # (октоторп, решетка, диез, хеш) как раз говорит об этом.

В качестве консольного клиента для удаленного подключения к серверам я использую программу