Компьютерная грамотность, помощь и ремонт

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

На сервере важно поддерживать более или менее точное время. Чтобы было удобно читать логи, что бы ваш сервер не присылал другим письма из прошлого или из будущего, чтобы… да пофиг — просто важно и всё.
Из-за разных глюков, ошибок в железе, выключений-включений, время на сервере может отставать-спешить относительно атомного времени. Обычно — не более чем на секунду за сутки, на практике — на секунду за месяц, а то и меньше. Но хреново работающее железо может болтать время намного сильнее (вообще сильные колебания времени — повод задуматься о здоровье железки).
Существует два популярных способа синхронизации времени в 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 мы конфигурируем часовой пояс с помощью пакета . В дальнейшем синхронизация времени и часового пояса можно выполнить командами:

$ su $ пароль $ dpkg-reconfigure tzdata

Стрелками выбираем Европа и нажимаем Enter .

Также выбираем часовой пояс.

В результат синхронизация получаем универсальное (время по Гринвичу ) и местное время .

Конфигурационный файл хранится в /etc/timezone . Открыть файл можно с помощью команды:

$ gedit /etc/timezone

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

В компьютере два источника времени: на материнской плате аппаратные часы — "CMOS " и в ядре операционной системы, контролируемые серверами времени через сеть. На практике существует проблема, так как часы CMOS является не более чем счетчиком и не содержат никакой информации о часовом поясе.

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

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

Поскольку компьютеры регулярно запускаются и перезагружаются (для экономии электроэнергии), машины удобно синхронизировать с помощью NTP при загрузке. Для этого просто установите ntpdate пакет он позволяет быстро синхронизировать часы компьютера с серверами точного времени, подсоединёнными ко Всемирной Паутине. Установку ntpdate из репозитория произведем с помощью менеджера пакетов Synaptic или путем выполнения команд в терминале:

$ su $ пароль $ apt-get install ntpdate

Для рабочих станций вы можете изменить сервер NTP , используемый при необходимости путем модификации /etc/default/ntpdate файла.

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

Установка NTP

$ aptitude install ntp ntpdate

В конфигурации по умолчанию сервер будет синхронизировать с ресурсом pool.ntp.org и обеспечит время в ответ на запросы, поступающие из локальной сети. Вы можете настроить его путем редактирования/etc/ntp.conf файла.

В целях безопасности, для доступа к Вашему серверу извне, требуется добавить в файл /etc/ntp.conf следующие строки (данные строки уже могут присутствовать):

Disable monitor restrict default kod nomodify notrap nopeer noquery restrict -6 default kod nomodify notrap nopeer noquery restrict 127.0.0.1 restrict -6::1

disable monitor - отключение запросов monlist, которые возвращают список из последних 600 клиентов ntp. restrict default kod nomodify notrap nopeer noquery

restrict -6 default kod nomodify notrap nopeer noquery - отключение запросов статуса сервера.

Так же вы можете указать свои сервера для синхронизации времени, например, адреса NTP серверов Pоссии: https://www.ntp-servers.net/servers.html и отредактируйте файл /etc/ntp.conf, выполнив команду:

$ gedit /etc/ntp.conf

Разовая синхронизация времени

В качестве примера используется сервер ntp1.stratum1.ru :

$ ntpdate ntp1.stratum1.ru

До синхронизации

После синхронизации

Для того, чтобы организовать постоянную синхронизацию времени произведем установку демона (сервера) ntp

Отредактируйте файл /etc/ntp.conf или создайте его, если такого файла нет.

$ server ntp1.stratum1.ru iburst

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

$ /etc/init.d/ntp start $ update-rc.d ntp defaults

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 серверами или кластерами.

|

Точное хронометрирование – очень важный аспект корректной работы многих современных программ. Из-за неправильного времени на сервере могут возникнуть ошибки, и данные могут быть повреждены (например, при обновлении БД или логировании).

В Debian 9 синхронизация времени встроена и включена по умолчанию; за неё отвечает стандартный сервер ntpd, предоставляемый пакетом ntp. Данный мануал ознакомит вас с базовыми командами для управления временем, научит проверять состояние ntpd и устанавливать другие сервисы сетевого времени.

Требования

Для работы вам понадобится сервер Debian 9 и пользователь с доступом к sudo (мануал нужно выполнить в сессии этого пользователя). Все необходимые инструкции по настройке вы найдете .

Основные команды для управления временем

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

date
Tue Sep 4 17:51:49 UTC 2018

Обычно по умолчанию серверы используют часовой пояс UTC (Coordinated Universal Time) – это всемирное координированное время. UTC последовательно устанавливает время на серверах и минимизирует ошибки в случае если сервера инфраструктуры находятся в разных часовых поясах.

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

Запросите список доступных поясов:

timedatectl list-timezones

Перемещаться вниз по списку можно с помощью клавиши пробела, а вверх – с помощью b. Выберите часовой пояс, запишите его и нажмите q, чтобы закрыть список.

Теперь установите часовой пояс с помощью timedatectl set-timezone. Используйте следующую команду, указав в ней требуемый часовой пояс:

sudo timedatectl set-timezone America/New_York

Примечание: Вместо America/New_York укажите необходимый часовой пояс.

Убедитесь, что пояс изменился:

date
Tue Sep 4 13:52:57 EDT 2018

Аббревиатура часового пояса будет отражать новое значение.

Состояние ntpd

По умолчанию для синхронизации времени с пулом внешних серверов Debian 9 использует стандартный сервер ntpd. Проверить его состояние можно с помощью systemctl:

sudo systemctl status ntp
ntp.service - LSB: Start NTP daemon
Loaded: loaded (/etc/init.d/ntp; generated; vendor preset: enabled)
Active: active (running) since Tue 2018-09-04 15:07:03 EDT; 30min ago
Docs: man:systemd-sysv-generator(8)
Process: 876 ExecStart=/etc/init.d/ntp start (code=exited, status=0/SUCCESS)
Tasks: 2 (limit: 4915)
CGroup: /system.slice/ntp.service
└─904 /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 105:109
. . .

Строка active (running)указывает, что сервер работает правильно. Получить больше информации можно с помощью команды ntpq:

ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
0.debian.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000
1.debian.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000
2.debian.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000
3.debian.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000
-eterna.binary.n 204.9.54.119 2 u 240 256 377 35.392 0.142 0.211
-static-96-244-9 192.168.10.254 2 u 60 256 377 10.242 1.297 2.412
+minime.fdf.net 83.157.230.212 3 u 99 256 377 24.042 0.128 0.250
*t1.time.bf1.yah 98.139.133.62 2 u 31 256 377 11.112 0.621 0.186
+x.ns.gin.ntt.ne 249.224.99.213 2 u 108 256 377 1.290 -0.073 0.132
-ord1.m-d.net 142.66.101.13 2 u 473 512 377 19.930 -1.764 0.293

ntpq – это инструмент запросов ntpd. Флаг –p собирает информацию о серверах NTP, к которым подключен ntpd. Ваш вывод будет немного другим, но в нем будут стандартные серверы пула Debian и несколько других серверов. У ntpd может уйти несколько минут на установку соединения.

Переход с ntpd на systemd-timesyncd

Для замены ntpd можно использовать встроенный демон timesyncd systemd. timesyncd – простая альтернатива ntpd, интегрированная с systemd. Однако при переходе следует учитывать, что timesyncd не работает в качестве сервера времени и использует менее сложные методы синхронизации системного времени. Если вы используете сложные распределенные системы реального времени, лучше оставаться с ntpd.

Чтобы перейти на timesyncd, сначала удалите ntpd.

sudo apt purge ntp

Затем запустите timesyncd:

sudo systemctl start systemd-timesyncd

Проверьте его состояние:

sudo systemctl status systemd-timesyncd
systemd-timesyncd.service - Network Time Synchronization
Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: enabled)
Drop-In: /lib/systemd/system/systemd-timesyncd.service.d
└─disable-with-time-daemon.conf
Active: active (running) since Tue 2018-09-04 16:14:23 EDT; 1s ago
Docs: man:systemd-timesyncd.service(8)
Main PID: 3399 (systemd-timesyn)
Status: "Synchronized to time server 198.60.22.240:123 (0.debian.pool.ntp.org)."
Tasks: 2 (limit: 4915)
CGroup: /system.slice/systemd-timesyncd.service
└─3399 /lib/systemd/systemd-timesyncd

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

timedatectl
Local time: Tue 2018-09-04 16:15:34 EDT
Universal time: Tue 2018-09-04 20:15:34 UTC
RTC time: Tue 2018-09-04 20:15:33
Time zone: America/New_York (EDT, -0400)
Network time on: yes

NTP synchronized: yes
RTC in local TZ: no

Команда выведет местное время, универсальное время (которое может совпадать с местным, если вы не переключались с часового пояса UTC) и информацию о состоянии времени в сети. Network time on: yes означает, что сервис timesyncd включен, а NTP synchronized: yes указывает, что время было успешно синхронизировано.

Заключение

Теперь вы умеете управлять системным временем сервера Debian 9.

Точное время на компьютере, вещь приятная.. но по моему наблюдению многие даже и не пытаются это использовать.. в лучшем случае корректировка вручную.. :(
В линуксе есть замечательная служба ntp, но настроить ее многим не под силу, для этого нужно прочитать энное количество документации, чтоб понять "как это работает" (с)
Я постараюсь кратко объяснить как настраивать и использовать эту службу, в первую очередь для тех кто не хочет или не может тратить много времени на это.
Для чего это нужно?
При правильно настроенной службе на сервере, вы сможете локально синхронизировать часы на всех компьютерах в локальной сети, при чем как OS Linux так и Windows.
Что приятно, нет необходимости постоянно получать доступ в интернет, когда у сервера он будет, тогда он и сделает поправку по времени.. остальные синхронизацию получат локально от него.
Так же очень часто на старых компьютерах батарейки на материнских платах уже подсевшие, и время сильно уходит, при старте компьютера, время будет автоматически скорректировано..
Что нужно установить?
В стандартном репозитарии Debian есть пакеты: ntp и ntpdate
apt-get install ntp ntpdate
в принципе после установки сервер начинает работать уже сразу..
но синхронизироваться с ним у вас не получиться..
для этого в /etc/ntp.conf необходимо кое что исправить..
ниже привожу конфиг и комментарии к нему, свои исправления вы сможете сделать сами:
#=============================================================================
# /etc/ntp.conf, configuration for ntpd; see ntp.conf(5) for help driftfile /var/lib/ntp/ntp.drift statsdir /var/log/ntpstats/ statistics loopstats peerstats clockstats filegen loopstats file loopstats type day enable filegen peerstats file peerstats type day enable filegen clockstats file clockstats type day enable server 0.debian.pool.ntp.org server 1.debian.pool.ntp.org server 2.debian.pool.ntp.org server 3.debian.pool.ntp.org server 2.ru.pool.ntp.org server 1.ru.pool.ntp.org server 3.europe.pool.ntp.org server 2.europe.pool.ntp.org restrict -4 default kod notrap nomodify nopeer noquery restrict 127.0.0.1 # наша сеть restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap restrict 192.168.255.0 mask 255.255.255.240 nomodify notrap # а это волшебная штука, которая выставляет уровень доверия серверу (strata) самому себе равный 3 # в двух словах чем выше уровень-тем меньше число. 0 - это атомные часы, # 1 - это синхронизированные с ними, 2 - с первым, и так далее. server 127.127.1.1 fudge 127.127.1.1 stratum 3 ===================================================================================

На компьютерах Windows XP например можно в настройках даты времени теперь указать свой сервер, или его ipdaares и синхронизироваться..
с Windows 98, 200 сложнее.. нужна специальная программа, типа D4,
что в принципе решабельно..
С Linux - практически все мне известные версии имеют такую службу.. не думаю, что конфиг там сильно отличается.. :)

Похожие публикации