Установка сервера точного времени NTP в Ubuntu
Установка сервера точного времени NTP в Ubuntu 16.04
NTP — Network Time Protocol — специальный сетевой протокол,используемый для синхронизации внутренних часов компьютера по сети.
До недавнего времени за синхронизацию времени отвечал демон ntpd. Он подключал сервер к пулу серверов NTP, что обеспечивало точное хронометрирование.
В Ubuntu 16.04 вместо ntpd по умолчанию использует timesyncd. Сервис timesyncd подключается к тем же серверам времени и работает примерно таким же образом, но он легче ntpd и интегрирован с systemd.
В большинстве случаев сервис timesyncd подходит для работы, но если ваши приложения чувствительны к малейшим колебаниям времени, лучше обслуживать их с помощью ntpd, так как этот демон использует более сложные методы синхронизации системного времени.
Прежде чем установить ntpd, отключите timesyncd:
Убедитесь, что timesyncd отключился:
В выводе должна быть строка:
Установка NTP и конфигурирование NTP сервера в Ubuntu 16.04 для синхронизации точного времени через интернет
В своей работе NTP использует порт 123 по протоколу UDP. Клиенты запрашивают текущее время на сервере и используют его для установки своих собственных часов.
В зависимости от настроек, указанных в конфигурационном файле, он может выступать как в качестве сервера, так и в качестве клиента, т.е может как принимать время с удаленных хостов, так и раздавать его другим хостам.
Конфигурирование NTP сервера
В конфигурационном файле указывается список NTP-серверов, с которыми будет осуществляться синхронизация. По умолчанию он выглядит так:
Каждая строка означает группу серверов, которые будут cообщать нашему серверу корректное время. Повысить точность синхронизации можно с помощью опции iburst (она указывает, что на сервер для синхронизации нужно посылать не один, а несколько пакетов):
Можно также указать предпочитаемый сервер при помощи опции prefer:
Работу общедоступных серверов точного времени координирует проект pool.ntp.org — это огромный кластер серверов точного времени, предоставляющий надежный и простой в использовании NTP-сервис для миллионов клиентов.
Чтобы обеспечить более точную установку системных часов, рекомендуется синхронизироваться только с ntp-серверами того региона, в котором географически расположен наш сервер.
Правим файл настроек NTP — /etc/ntp.conf:
Резервный сервер точного времени
NTP-сервер, по какой-либо причине отключенный от Интернета, может передавать для синхронизации данные своих системных часов. Для этого в конфигурационный файл нужно добавить следующую строку:
Перестартуем NTP сервер:
И в завешении установки проверим статус NTP сервера:
Должно выдать что-то типа:
В заголовке указываются следующие параметры:
remote — адрес сервера точного времени (в этой графе отображаются серверы из списка в конфигурационном файле);
refid — вышестоящий сервер (тот, от которого сервер из предыдушей графы получает синхронизацию);
st — уровень (stratum) сервера;
t — тип пира (u- unicast, m- multicast);
when — время последней синхронизации;
poll — время в секундах, за которое демон NTP синхронизируется с пиром;
reach — состояние доступности сервера; после восьми успешных попыток синхронизации значение этого параметра становится равным 377;
delay — время задержки ответа от сервера;
offset — разница времени между нашим сервером и сервером синхронизации; положительное значение этого параметра означает, что наши часы спешат, отрицательное — что отстают;
jitter — смещение времени на удаленном сервере.
Слева от адреса сервера могут быть указаны следующие символы:
* сервер выбран для синхронизации;
+ сервер, пригодный для обновления (с которым можно синхронизироваться);
— с сервером синхронизироваться не рекомендуется;
х сервер недоступен.
Для защиты от DDoS-атак по умолчанию в файлe /etc/ntp.conf установлены следующие ограничения:
Параметры nomodify, notrap, nopeer и noquery запрещают сторонним клиентам изменять что-либо на сервере. Параметр kod (эта аббревиатура означает kiss of death — «поцелуй смерти») обеспечивает дополнительную защиту: клиент, отправляющий слишком частые запросы, сначала получит так называемый kod-пакет (предупреждение об отказе в обслуживании), а затем будет отключен от сервера.
Чтобы с NTP-сервером могли синхронизироваться машины из локальной сети, в конфигурационный файл следует добавить следующую строку:
Для локального хоста можно установить доступ к NTP-серверу без ограничений:
Как установить время, часовой пояс и синхронизации системных часов с помощью команды timedatectl
Вы знаете, как установить время, часовой пояс из командной строки Linux ли? Если нет, то команда timedatectl помогает установить время и часовой пояс , и он приходит в составе Systemd системы и сервис — менеджер. В данной статье описывается "Как установить время, часовой пояс и синхронизации системных часов с помощью timedatectl Command"
Найти и Установить локальный часовой пояс в Linux
Для отображения времени и текущей даты на Linux, используйте следующую команду —
Пример вывода должен быть таким —
Системное время управляется через Timezone. Чтобы получить часовому поясу вашей системы, используйте следующую команду —
Пример вывода должен быть таким —
Чтобы получить доступные часовых поясов, используйте следующую команду —
Пример вывода должен быть таким —
Чтобы установить локальный часовой пояс в Linux, используйте следующий Command-
Чтобы проверить полученный результат команды, используйте следующую команду —
Пример вывода должен быть таким —
Для того, чтобы установить наш часовой пояс в соответствии с UTF, используйте следующую команду —
Для проверки выше результата команды, используйте следующую команду —
Пример вывода должен быть таким —
Установка времени и даты
Для того, чтобы установить время и дату, используйте следующую команду —
Чтобы проверить полученный результат команды, используйте следующую команду —
Пример вывода должен быть таким —
Чтобы установить дату из командной строки, используйте следующую команду —
Чтобы проверить полученный результат команды, используйте следующую Command-
Пример вывода должен быть таким —
Чтобы проверить полученный результат команды, используйте следующую команду —
Пример вывода должен быть таким —
Установить аппаратные часы в Linux
Для отображения аппаратные часы даты и времени, используйте следующую команду —
Пример вывода должен быть таким —
Чтобы скопировать системное время времени оборудования, с помощью следующей Command-
Чтобы проверить это, используйте следующий-команд
Пример вывода должен быть таким —
В приведенном выше результате и аппаратные часы и системные часы и тот же результат.
Синхронизация Linux System Clock с удаленным сервером NTP
NTP означает протокол времени сети , которая является интернет — протокол используется для синхронизации системных часов между компьютерами. Утилита timedatectl позволяет автоматически синхронизировать системные часы Linux с удаленными серверами с помощью NTP. Чтобы запустить автоматическую синхронизацию времени с NTP удаленным сервером, используйте следующий Command-
Чтобы отключить синхронизацию времени NTP, используйте следующую команду —
Поздравления! Теперь вы знаете , "Как установить время, часовой пояс и синхронизации системных часов с использованием timedatectl Command". Мы узнаем больше об этих типах команд в нашем следующем посте Linux. Продолжай читать!
Сервер времени на Linux Ubuntu | ntp server
Сегодня разберём установку и настройку ntp сервера или сервера времени на Linux |Ubuntu | Debian. Данное руководство применима и для настройки ntpd на любом другом Linux дистрибутиве (например CentOS).
Установка ntp сервера
Устанавливаем ntp сервер следующей командой:
Настройка NTP сервера
После успешной установки нашего ntp сервера переходим к его настройке. Открываем файл с настройками:
Настраиваем серверы, с которых наш NTP будет брать эталонное время. Например:
- iburst — отправлять несколько пакетов (повышает точность);
- ru.pool.ntp.org / 0.ubuntu.pool.ntp.org / 1.ubuntu.pool.ntp.org — адреса серверов, с которыми наш сервер будет сверять время;
- server — указывает на выполнение синхронизации с сервером, а не пулом серверов;
- prefer — указывает на предпочитаемый сервер.
- server 127.127.1.0 — позволит в случае отказа сети Интернет брать время из своих системных часов.
- где: restrict default — задает значение по умолчанию для всех рестриктов.
- kod — узлам, которые часто отправляют запросы сначала отправить поцелуй смерти (kiss of death), затем отключить от сервера.
- notrap — не принимать управляющие команды.
- nomodify — запрещает команды, которые могут вносить изменения состояния.
- nopeer — не синхронизироваться с хостом.
- noquery — не принимать запросы.
- restrict 192.168.0.0 mask 255.255.255.0 — разрешить синхронизацию для узлов в сети 192.168.0.0/24.
- IP адреса 127.0.0.1 и ::1 позволяют обмен данные серверу с самим собой.
Настройки по умолчанию могут быть разные для IPv4 и IPv6:
Если используется брандмауэр, добавляем правило:
или с помощью ufw:
- где enp0s8 — сетевой интерфейс, на котором слушает наш сервер.
Дополнительные настройки
Настройка файла хранения логов:
Тестирование ntp сервера
Проверить состояние получения эталонного времени можно командой:
Мы должны увидеть, примерно, следующее:
- где: remote — адрес сервера времени, с которым синхронизируется наш сервер;
- refid — вышестоящий сервер (с которым сервер из графы выше получает время);
- st — уровень сервера (stratum);
- t — пир (unicast или multicast);
- when — когда последний раз сверялось время;
- poll — периодичность синхронизации с этим сервером;
- reach — состояние работоспособности. Если удалось произвести синхронизации восемь раз подряд — становится равным 377;
- delay — время задержки;
- offset — разница между нашим временем и временем на сервере; положительное — наши часы спешат, отрицательное — отстают;
- jitter — смещение времени на удаленном сервере.
Проверить отдачу времени сервером можно введя команду на другом Linux:
Правильный ответ имеет следующий вид:
- время было рассинхронизировано на 0.017657 секунд.
Отобразить текущее время можно командой:
Если после синхронизации время некорректно, настраиваем правильный часовой пояс:
- московское время (GMT+3).
Настройка клиента Linux
Для клиентов можно выбрать 2 стратегии настройки — с помощью ntp или утилиты ntpdate.
CentOS / Red Hat:
В настройка /etc/ntp.conf в качестве сервера оставляем только наш локальный сервер, например:
Остальные pool и server удаляем или комментируем.
Утилита командной строки выполняет разовую синхронизацию. Чтобы автоматизировать процесс, добавляем задание в cron:
- в данном примере задание будет выполняться раз в день в 00:00. /usr/sbin/ntpdate — полный путь расположения утилиты, в разных системах может быть разным — проверить стоит командой which ntpdate.
Ошибки ntp
- the NTP socket is in use, exiting
Как правило, данная ошибка возникает при попытке синхронизировать время с помощью ntpdate, когда в системе работает демон ntp.
Причина: NTP сокет в системе уже занят, как правило, ntpd.
Решение: либо не использовать ntpdate, так как ntp умеет сверять время, либо отключить сервис ntpd командой
- Connection refused
Возникает при попытке выполнить команду ntpq -p.
Причина: нет разрешения на обращение к серверу.
Решение: проверьте, удастся ли выполнить запрос командой ntpq -pn 127.0.0.1 или ntpq -pn ::1. Также убедитесь, что настройка restrict позволяет серверу подключаться к самому себе по нужному протоколу.
- no server suitable for synchronization found
Ошибка появляется при попытке синхронизировать время с другим сервером синхронизации.
Причина: сервер синхронизации не доступен по одной из причин: 1) не работает или выключен, 2) установлен restrict, 3) на сервере не запущен ntpd, 4) нет сетевой доступности из-за проблем на сети или брандмауэра.
Убедиться, что сервер доступен по сети. Проверить настройки ntp.conf — наличие соответствующего restrict. Проверить состояние сервиса командой service ntp status. Проверить настройки брандмауэра — убедиться в наличие правила, которое разрешает UDP порт 123.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Системное время
Системное время использует системные часы и используется в Unix системах для слежения за временем. Его можно установить с помощью аппаратных часов или с помощью внешнего сервера времени.
Contents
Предисловие
Программные или аппаратные часы
Системные часы, предоставляемые ядром, реализуются простым подсчетом числа секунд, прошедших с 1 января 1970 года 00:00:00 UTC по настоящее время. Это число называется Unix-время.
Аппаратные часы, также известные как часы реального времени (real-time clock или RTC), обычно представляют из себя элемент материнской платы. Они работают все время, независимо от состояния операционной системы, даже когда компьютер выключен.
UTC или местное время
Настройка времени аппаратных часов может быть осуществлена исходя из двух стандартов: локальное время или время UTC. Локальное время — это реальное время часового пояса, учитывающее переход на DST. Предпочтительно использовать UTC, поскольку системное время вычисляется посредством прибавления к нему разницы времени часового пояса с учётом летнего времени. Благодаря этому перевод часов на летнее время учитывается автоматически, а изменение часового пояса возможно без изменения значения аппаратных часов. Исключение может быть сделано при использовании систем с двойной загрузкой, когда одна операционная система не поддерживает или не настроена для аппаратных часов с UTC (по умолчанию Windows настроена на использование локального времени).
Конфигурация
Часовой пояс
Для поддержания правильного исчисления времени необходимо выбрать соответствующий часовой пояс, чтобы системе было известно её текущее местоположение.
OpenRC
systemd
В systemd существует команда timedatectl для настройки часового пояса:
Проверка текущего часового пояса:
Вывод доступных часовых поясов:
Чтобы изменить часовой пояс, пример для Германии:
LC_TIME
Эта переменная окружения определяет форматирование даты и времени. Для более детальной информации смотрите The GNU C Library
Системные часы
Обычно время системных часов устанавливается аппаратными часами во время загрузки системы. Также системные часы возможно установить вручную либо с помощью сервера сетевого времени.
Для изменения системного времени можно воспользоваться командой date :
Вывод текущего времени программных часов:
Установка нового системного времени, например на 6 мая 2016 года в 12:34:
Сервер времени
Смотрите статью NTP, чтобы получить информацию по использованию сервера времени.
systemd
systemd существует команда timedatectl для управления системным временем:
Вывод текущего времени программных часов:
Установка системного времени:
Аппаратные часы
Чтобы получить доступ к аппаратным часам, нужно собрать ядро со следующими включенными параметрами:
Следующая команда выводит текущее на данный момент время аппаратных часов:
Следующая команда устанавливает время аппаратных часов в соответствии с системным временем:
Синхронизация аппаратных часов и системного времени
Обычно аппаратные часы используются при загрузке для установки системного времени. Это может быть осуществлено ядром самостоятельно, либо с помощью загрузочного сервиса init-скрипта при загрузке. Завершение работы ядра или сервиса также может вызвать сохранение времени системных часов в аппаратные часы. Благодаря этому у системы будет правильное время при следующей загрузке.
Синхронизация с помощью ядра
В свежих версиях (3.9 и выше) ядро Linux можно сконфигурировать таким образом, чтобы оно устанавливало системное время автоматически. Чтобы добиться этого, необходимо включить в ядре параметры Set system time from RTC on startup and resume ( CONFIG_RTC_HCTOSYS ) и Set the RTC time based on NTP synchronization ( CONFIG_RTC_SYSTOHC ):
Параметр ядра Set the RTC time based on NTP synchronization на данный момент поддерживается chrony [1] , NTP и OpenNTPD начиная с версии 5.9p1 [2] .
Чтобы убедиться, что время аппаратных часов обновилось, установите пакет net-misc/adjtimex и запустите следующую команду:
Выведенное число 64 бит должно быть не задано (0). Более подробная информация в man-странице hwclock (ищите ’11 minute mode’).
OpenRC
При использовании OpenRC для установки системного времени во время загрузки и синхронизации аппаратных часов во время завершения работы можно воспользоваться init-скриптом hwclock . Данная сервис включен по умолчанию и должен быть отключен при использовании вышеуказанного способа синхронизации ядром. Скрипт hwclock не следует запускать при использовании часов реального времени ядра.
Однако, если необходимо синхронизировать время с помощью OpenRC, в файле /etc/conf.d/hwclock для <va>clock_hctosys и clock_systohc следует установить значение в YES . По умолчанию сервис настроена на стандарт UTC. Чтобы изменить это на использование стандарта местного времени (localtime) необходимо добавить clock=»local» .
Перезапустите сервис hwclock и добавьте его init-скрипт в уровень запуска boot:
systemd
Для установки системного времени во время загрузки можно использовать systemd. Для управления аппаратными часами используйте команду timedatectl :
Вывод текущего времени аппаратных часов:
Следующая команда устанавливает аппаратные часы в соответствии с системным временем (в стандарте времени UTC):
Следующая команда устанавливает аппаратные часы в соответствии с системным временем в стандарте времени localtime (местное время):
Устранение проблем
Двойная загрузка с Windows
Системы с возможностью загрузки другой операционной системы, например Windows, обычно будут испытывать проблемы с переназначением аппаратных часов. Чтобы сделать так, чтобы Windows не меняла аппаратные часы назад в локальное время, добавьте в реестр следующую запись.
В 64-битной версии Windows откройте regedit и перейдите в раздел HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTimeZoneInformation . Создайте запись RealTimeIsUniversal с типом QWORD и установить её значение в 1 . После этого перезагрузите систему. Теперь системные часы будут в формате UTC.