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

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

    Точное время на компьютере служит не только для сверки человеком даты и времени, но так же выполняет много других важных задач. Например, попробуйте перевести своё время на несколько часов назад или вернуться в прошлое указав в настройках 19хх год. Теперь зайдите с такой датой на google.com. Скорее всего вы потерпите полное фиаско.

    В корпоративной среде неправильно настроенное время может вызывать массу других ошибок: от невозможности аутентификации пользователя в системе до… не будем о грустном.

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

    Способ №1

    Представляет из себя самый простой способ. Наиболее предпочтителен для новичков. Настройка осуществляется через мастер в псевдографическом режиме.

    Dpkg-reconfigure tzdata

    Способ №2

    Практически идентичен способу №1. Прост и удобен, но на сей раз только в текстовом режиме. Всё что от вас требуется следовать подсказкам мастера

    Способ №3

    Одна из утилит systemd

    Timedatectl set-timezone <название зоны>

    Просмотр доступных зон

    Timedatectl list-timezones

    Способ №4

    С помощью утилиты ntpdate . По умолчанию данная утилита не установлена.

    Apt install ntp ntpdate

    Добавьте ntp-сервер в конфигурационный файл /etc/ntp.conf ищите строки начинающиеся с pool. Более подробно о синтаксисе этого файла man ntp.conf

    Остановим службу сетевого времени для обновления

    Service ntp stop

    Получаем данные с ntp-сервера

    Ntpdate -s <адрес ntp-сервера>

    Запускаем службу обратно

    Service ntp start

    Способ №5

    Ручная настройка. Пишем в файл /etc/timezone нужную временную зону, например Europe/Moscow

    Echo Europe/Moscow > /etc/timezone

    Перезаписываем данные о временной зоне.

    Ln -sf /usr/share/zoneinfo/Europe/Moscow /etc/localtime

    Получаем данные с 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). Знак # (октоторп, решетка, диез, хеш) как раз говорит об этом.

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

    |

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

    В 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 - практически все мне известные версии имеют такую службу.. не думаю, что конфиг там сильно отличается.. :)