|
Использование NTP в Linux с Chrony
NTP обозначает Network TIME Protocol и является стандартом для синхронизации времени между двумя устройствами по сети. Точное время имеет решающее значение для вычислений. Это гарантирует, что ваши журналы имеют правильную метку времени, что упрощает поиск и диагностику проблем, возникших в определенное время. Он также используется для многих методов безопасности, таких как двухфакторная аутентификация , когда токен действителен только в течение определенного времени. Использование NTP считается одним из лучших способов поддерживать точность системного времени. Единственным недостатком является то, что вам нужно поддерживать сетевое соединение. Он также стал важным элементом для устройств IoT, которые могут не иметь собственных аппаратных часов реального времени для экономии энергии и места на печатной плате. Чтобы настроить NTP на вашем устройстве Linux, мы покажем вам, как использовать пакет под названием Chrony.
Что такое Хрони?
Chrony - это реализация протокола сетевого времени, который изначально был написан Ричардом Керноу. Эта реализация была разработана как более современная замена ntpd. Он обладал дополнительными функциями, такими как возможность синхронизации системных часов с использованием аппаратных меток времени. Это помогает повысить точность синхронизации времени по локальной сети (LAN). Кроме того, Chrony может синхронизировать время даже при прерывистом сетевом подключении или перегруженных сетях. Это делает Chrony очевидным выбором по сравнению с исходной реализацией ntp. Chrony стал реализацией NTP по умолчанию для различных операционных систем, включая RHEL 8 и SUSE 15.
Установка клиента Chrony NTP
Прежде чем мы начнем, мы должны убедиться, что у нас установлены демон и клиент Chrony NTP. К счастью для нас, Chrony доступен практически во всех основных дистрибутивах и относительно прост в установке.
1. Поскольку в дистрибутивах Linux используются разные менеджеры пакетов, способ установки Chrony может незначительно отличаться. В операционной системе на основе Debian / Ubuntu , такой как ОС Raspberry Pi, вы можете установить Chrony, используя следующие aptкоманды.
sudo apt install chrony
Если вы используете CentOS или RHEL , вам нужно будет использовать yumpackage mange для установки Chrony.
sudo yum install chrony
Наконец, если вы используете Fedora 22 или новее , вам придется использовать dnfдля установки Chrony в вашей операционной системе.
sudo dnf install chrony
2. После установки Chrony нам нужно будет включить его службу демонов для автоматического запуска при загрузке. Пока мы это делаем, мы также запустим службу, чтобы немедленно запустить Chrony. Демон - это то, что будет работать в фоновом режиме и обновлять время вашего устройства Linux с помощью серверов NTP.
sudo systemctl enable chrony
sudo systemctl start chrony
3. Теперь, когда демон Chrony NTP запущен на нашем устройстве Linux, давайте проверим статус служб. Все, что нам нужно сделать, чтобы получить статус службы, - это выполнить следующую команду.
sudo systemctl status chrony
Используя команду status, вы должны получить что-то похожее на то, что показано ниже.
$ sudo systemctl status chrony
● chrony.service - chrony, an NTP client/server
Loaded: loaded (/lib/systemd/system/chrony.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2020-09-08 15:41:17 AEST; 12min ago
Docs: man:chronyd(8)
man:chronyc(1)
man:chrony.conf(5)
Main PID: 6826 (chronyd)
Tasks: 2 (limit: 4915)
Memory: 1.0M
CGroup: /system.slice/chrony.service
├─6826 /usr/sbin/chronyd -F -1
└─6827 /usr/sbin/chronyd -F -1
Sep 08 15:41:17 pimylifeup systemd[1]: Starting chrony, an NTP client/server...
Этот текст указывает на то, что служба в настоящее время активна и работает, и что она была включена.
4.Мы также можем использовать пакет командной строки Chrony « chronyc» для получения активности. Чтобы получить активность, вы можете выполнить следующую команду, указав « chronyc» и ее параметр « activity».
chronyc activity
Эта команда Chrony предоставит вам статус клиента NTP, работающего на вашем устройстве Linux.
$ chronyc activity
200 OK
4 sources online
0 sources offline
0 sources doing burst (return to online)
0 sources doing burst (return to offline)
0 sources with unknown address
Он покажет свой текущий статус и покажет, к скольким серверам он подключен в настоящее время и находятся ли они в сети. Эта команда может быть полезна, чтобы убедиться, что вы не подключены к плохому пулу NTP.
Настройка источников NTP для Chrony
Если есть конкретный пул или сервер NTP, к которому вы хотите подключиться, то настройка Chrony - простая задача. В этом разделе мы будем использовать текстовый редактор nano, но вы можете использовать любой редактор, который вам удобнее.
1. Чтобы настроить пул NTP, к которому мы подключаемся, нам нужно будет изменить файл конфигурации Chrony. Файл конфигурации может находиться в двух разных местах. Для CentOS , RHEL или Fedora вы можете редактировать файл конфигурации в папке « /etc/chrony.conf».
sudo nano /etc/chrony.conf
Если вы используете систему на основе Ubuntu или Debian , вы можете использовать nano для редактирования файла, расположенного по адресу « /etc/chrony/chrony.conf«.
sudo nano /etc/chrony/chrony.conf
Если вы не нашли файл конфигурации в одном месте, обязательно попробуйте другое.
2. В этом файле есть два разных способа найти указанный NTP-сервер. Первая - это serverдиректива « ». Эта директива позволяет вам указать отдельные NTP-серверы, с которыми вы хотите синхронизировать время. Вы также можете использовать это, чтобы указать несколько серверов NTP. Программа Chrony автоматически выберет лучший.
server 0.pool.ntp.org iburst
server 1.pool.ntp.org iburst
server 2.pool.ntp.org iburst
server 3.pool.ntp.org iburst
Альтернативный метод - использовать poolдирективу « ». Вы используете эту директиву для доменных имен, которые разрешаются в несколько адресов.
pool 0.pool.ntp.org iburst
Как видите, настройка серверов NTP для подключения Chrony - относительно простой процесс.
3. После того, как вы добавили свои конфигурации NTP в файл, сохраните его. Если вы используете nano, вы можете сохранить файл, нажав CTRL+ X, а Yзатем, затем ENTER.
4. Чтобы изменения вступили в силу, необходимо перезапустить службу Chrony. Вы можете перезапустить Chrony, выполнив следующую команду.
sudo systemctl restart chrony
5. Вы можете проверить, что Chrony теперь использует ваши новые источники NTP, используя следующую команду. Эта команда использует инструмент командной строки Chrony для вывода списка активных источников.
chronyc sources
Ниже приведен пример результата, который вы получите от этой команды.
$ chronyc sources
210 Number of sources = 4
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^- dns01.syd01.privatecloud> 2 10 377 824 +2125us[+1813us] +/- 60ms
^- ec2-13-55-50-68.ap-south> 3 10 377 33m +3654us[+3436us] +/- 151ms
^+ ntp3.ds.network 4 9 377 237 -553us[ -553us] +/- 29ms
^* time.cloudflare.com 3 10 377 798 -82us[ -396us] +/- 15ms
Проверка синхронизации времени NTP с помощью Chrony
В этом разделе мы покажем вам, как вы можете использовать Chrony, чтобы проверить, как ваша система использует NTP для синхронизации своего времени. Используя эти методы, вы можете многое узнать о том, что происходит между Chrony и серверами NTP.
Проверка учета времени Хрони
Первая команда, которую мы покажем вам, предоставит вам подробную информацию о сервере NTP, к которому в настоящее время подключен Chrony, и о том, как он влияет на системное время. Используя trackingаргумент « », мы можем Chronyраскрыть детали синхронизации времени нашей системы.
1. Чтобы получить информацию об отслеживании от Chrony, выполните на своем устройстве следующую команду.
chronyc tracking
2. Из этой команды вы должны получить что-то вроде того, что мы показали ниже.
$ chronyc tracking
Reference ID : A29FC801 (time.cloudflare.com)
Stratum : 4
Ref time (UTC) : Tue Sep 08 06:21:18 2020
System time : 0.000133173 seconds fast of NTP time
Last offset : +0.000149029 seconds
RMS offset : 0.000352518 seconds
Frequency : 14.469 ppm fast
Residual freq : +0.000 ppm
Skew : 0.137 ppm
Root delay : 0.027979819 seconds
Root dispersion : 0.001329423 seconds
Update interval : 256.0 seconds
Leap status : Normal
Мы рассмотрим некоторую информацию, предоставленную этой командой, и вы сможете понять, о чем она вам сообщает.
Referenced ID: Это поле сообщает нам идентификатор и доменное имя (или IP-адрес) NTP-сервера, с которым Chrony в настоящее время синхронизируется. В этом примере вы можете видеть, что в настоящее время мы подключаемся к серверам времени Cloudflare. Обратите внимание, что если этот идентификатор равен « 127.127.1.1», ваше устройство в настоящее время не синхронизирует время с какими-либо внешними серверами NTP.
Stratum: Это число указывает вам, насколько далеко от исходного времени находится ваш сервер. В этом примере наше устройство классифицируется как источник слоя 4, поскольку мы подключаемся к источнику слоя 3. Это значение не показатель того, насколько точным или надежным может быть NTP-сервер, а просто то, насколько он удален от исходного сервера времени (слой 0). Источником слоя 0 может быть что-то сверхточное, например атомные часы.
Ref time (UTC): Это поле дает нам время в формате UTC, в которое Chrony обработал последнее измерение с исходного сервера NTP.
System Time: Это значение указывает, насколько ваше системное время быстрее или медленнее, чем время сервера NTP. Вместо того чтобы устанавливать это время на системных часах, Chrony медленно корректирует их, слегка ускоряя или замедляя их. Chrony будет продолжать делать это до тех пор, пока системное время не совпадет со временем серверов NTP. Программное обеспечение делает это, чтобы перестать вызывать ошибки в программном обеспечении, чувствительном ко времени, из-за внезапного сдвига во времени.
Проверка источников NTP Chrony
Используя простую команду, мы также можем отобразить информацию об источниках NTP, которые использует Chrony. Все, что нам нужно сделать, это запустить следующую команду, используя chronycинструмент командной строки «», за которым следует « sources».
chronyc sources
Кроме того, мы будем использовать -vфлаг « ». Этот флаг является необязательным и используется для добавления дескрипторов в каждый из столбцов, чтобы вы могли понять, для чего они используются. Используя эту команду, вы должны получить результат, аналогичный приведенному ниже. Он покажет ваши различные источники и их статус.
$ chronyc sources -v
210 Number of sources = 4
.-- Source mode '^' = server, '=' = peer, '#' = local clock.
/ .- Source state '*' = current synced, '+' = combined , '-' = not combined,
| / '?' = unreachable, 'x' = time may be in error, '~' = time too variable.
|| .- xxxx [ yyyy ] +/- zzzz
|| Reachability register (octal) -. | xxxx = adjusted offset,
|| Log2(Polling interval) --. | | yyyy = measured offset,
|| \ | | zzzz = estimated error.
|| | | \
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^- dns01.syd01.privatecloud> 2 10 377 779 +6038us[+5985us] +/- 70ms
^- ec2-13-55-50-68.ap-south> 3 10 377 367 +4505us[+4447us] +/- 113ms
^+ ntp3.ds.network 4 10 377 677 +725us[ +671us] +/- 30ms
^* time.cloudflare.com 3 10 377 256 +55us[-4399ns] +/- 15ms
Эта команда перечисляет данные о ваших источниках, такие как частота опроса, что этот источник для вас, синхронизируется ли он в настоящее время и многое другое. В нашем примере выше вы можете видеть, что в настоящее время мы используем time.cloudflare.comсервер NTP для синхронизации времени на нашем устройстве Linux.
Получение статистики сервера NTP с помощью Chrony в Linux
Последняя особенность, Chronyкоторую мы собираемся использовать, - это команда « sourcestats». Эта команда отображает некоторую статистику из источников, которые Chrony постоянно опрашивает.
chronyc sourcestats -v
Как и в случае с sourcesкомандой « -v», флаг « » не является обязательным. Однако это помогает понять, для чего используются некоторые столбцы. Ниже приведен пример данных, возвращаемых с помощью этой команды.
$ chronyc sourcestats -v
210 Number of sources = 4
.- Number of sample points in measurement set.
/ .- Number of residual runs with same sign.
| / .- Length of measurement set (time).
| | / .- Est. clock freq error (ppm).
| | | / .- Est. error in freq.
| | | | / .- Est. offset.
| | | | | | On the -.
| | | | | | samples. \
| | | | | | |
Name/IP Address NP NR Span Frequency Freq Skew Offset Std Dev
==============================================================================
dns01.syd01.privatecloud> 6 3 86m -0.135 1.675 +3292us 979us
ec2-13-55-50-68.ap-south> 14 6 241m -0.040 0.082 +4483us 287us
ntp3.ds.network 13 6 309m +0.080 0.119 +527us 593us
time.cloudflare.com 13 9 224m -0.065 0.103 -316us 354us
Используя информацию, предоставленную этой командой, вы можете увидеть количество предоставленных точек выборки, длину измерения, предполагаемую частоту ошибок, а также дополнительную информацию.
Эти значения могут помочь диагностировать данные, которые ваше устройство Linux получает из этих служб NTP.