Как настроить NTP сервер с помощью Chrony на CentOS 8

Как настроить NTP сервер с помощью Chrony на CentOS 8

 

В этом руководстве мы узнаем, как установить и настроить NTP-сервер с помощью Chrony на CentOS 8. Chrony  — это реализация протокола сетевого времени (NTP). По сравнению с реализацией NTP , chrony  хорошо работает в широком диапазоне условий, включая:

  • прерывистые сетевые соединения,
  • сильно перегруженные сети
  • изменение температуры
  • системы, которые не работают постоянно

Chrony можно использовать для синхронизации системных часов с NTP-серверами, эталонными часами. Он также может работать как сервер NTPv4 и одноранговый узел, чтобы обеспечивать обслуживание времени другим компьютерам в сети.

Настройте NTP-сервер с помощью Chrony на CentOS 8

Запустить обновление системы

Чтобы синхронизировать системные пакеты с их последними версиями, просто выполните команду;

dnf update

Установка Chrony на CentOS 8

Пакет Chrony по умолчанию устанавливается на производных от RHEL, включая CentOS 8. Однако вы можете проверить это, выполнив команду ниже;

rpm -q chrony

Если пакет установлен, вы должны получить такой вывод:

chrony-3.5-1.el8.x86_64

В противном случае вы получите такой результат:

package chrony is not installed

Чтобы увидеть больше информации о Chrony;

rpm -qi chrony
Name        : chrony
Version     : 3.5
Release     : 1.el8
Architecture: x86_64
Install Date: Sun 01 Mar 2020 08:07:16 PM EAT
Group       : System Environment/Daemons
Size        : 692391
License     : GPLv2
Signature   : RSA/SHA256, Thu 05 Dec 2019 01:51:32 AM EAT, Key ID 05b555b38483c65d
Source RPM  : chrony-3.5-1.el8.src.rpm
Build Date  : Tue 19 Nov 2019 06:32:41 PM EAT
Build Host  : x86-01.mbox.centos.org
Relocations : (not relocatable)
Packager    : CentOS Buildsys <[email protected]>
Vendor      : CentOS
URL         : https://chrony.tuxfamily.org
Summary     : An NTP client/server
Description :
chrony is a versatile implementation of the Network Time Protocol (NTP).
It can synchronise the system clock with NTP servers, reference clocks
(e.g. GPS receiver), and manual input using wristwatch and keyboard. It
can also operate as an NTPv4 (RFC 5905) server and peer to provide a time
service to other computers in the network.

Если по каким-то причинам он не установлен по умолчанию, вы всегда можете установить его, выполнив команду ниже;

dnf install chrony

Настройте Chrony как NTP-сервер в CentOS 8

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

Файл конфигурации Chrony по умолчанию — /etc/chrony.conf. Поэтому мы внесем большинство изменений конфигурации в этот файл.

Установить серверы времени

По умолчанию Chrony использует в 2.centos.pool.ntp.orgкачестве сервера времени по умолчанию. Вам необходимо определить серверы времени, близкие к вашему региону.

Чтобы получить список серверов NTP, близких к вашему региону, перейдите на страницу « Интернет-кластер серверов NTP» и выберите свой регион. Например, если вы находитесь в Европе, ниже перечислены доступные серверы NTP;

server 0.europe.pool.ntp.org
server 1.europe.pool.ntp.org
server 2.europe.pool.ntp.org
server 3.europe.pool.ntp.org

Чтобы использовать пул серверов NTP в вашем регионе, просто закомментируйте ( добавьте # в начале ) строку, pool 2.centos.pool.ntp.org iburstзаменив ее следующим образом;

vim /etc/chrony.conf
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
# pool 2.centos.pool.ntp.org iburst
server 0.europe.pool.ntp.org
server 1.europe.pool.ntp.org
server 2.europe.pool.ntp.org
server 3.europe.pool.ntp.org

Настройка контроля доступа к серверу NTP

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

Например, чтобы разрешить всем серверам в сетевой подсети 192.168.56.0/24 доступ к вашему серверу NTP;

# Allow NTP client access from local network.
#allow 192.168.0.0/16
allow 192.168.56.0/24

Подробнее на man chrony.conf,.

Откройте порт 123 UDP NTP на брандмауэре

Чтобы разрешить клиентам NTP доступ к вашему серверу NTP, вам необходимо открыть порт 123 / UDP на брандмауэре.

firewall-cmd --add-port=123/udp --permanent
firewall-cmd --reload

Открыть доступ NTP клиенту и серверу в IPTables необходимо добавить правила:

sudo iptables -A OUTPUT -p udp -m udp -m multiport --dports 123 -m state --state NEW -j ACCEPT
sudo iptables -A INPUT -m state --state NEW -p udp --dport 123 -j ACCEPT

Чтобы открыть доступ только конкретной сети, например 10.0.0.0/24:

sudo iptables -A OUTPUT -p udp -m udp -m multiport --dports 123 -m state --state NEW -j ACCEPT
sudo iptables -A INPUT -s 10.0.0.0/24 -m state --state NEW -p udp --dport 123 -j ACCEPT

Удалить правило укажем ту же команду, заменив -A на -D, например:

sudo iptables -D OUTPUT -p udp -m udp -m multiport --dports 123 -m state --state NEW -j ACCEPT
sudo iptables -D INPUT -m state --state NEW -p udp --dport 123 -j ACCEPT

Посмотреть список правил можно командой:

sudo iptables -nvL
sudo iptables -nvL | grep 10.0.0

Запуск Chrony на CentOS 8

Chronydдемон управляет реализацией NTP. Таким образом, вы можете запустить и разрешить его запуск при загрузке системы, выполнив команду ниже;

systemctl enable --now chronyd
systemctl status chronyd
● chronyd.service - NTP client/server
   Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2020-03-01 20:59:01 CET; 10s ago
     Docs: man:chronyd(8)
           man:chrony.conf(5)
  Process: 6685 ExecStartPost=/usr/libexec/chrony-helper update-daemon (code=exited, status=0/SUCCESS)
  Process: 6681 ExecStart=/usr/sbin/chronyd $OPTIONS (code=exited, status=0/SUCCESS)
 Main PID: 6683 (chronyd)
    Tasks: 1 (limit: 5047)
   Memory: 828.0K
   CGroup: /system.slice/chronyd.service
           └─6683 /usr/sbin/chronyd
...

Проверьте синхронизацию хронического времени

Команды chronyc используются для проверки синхронизации времени Chrony с помощью параметров командной строки, таких как sources, tracking, sourcestats.

Чтобы отобразить информацию об источниках текущего времени, к которым обращается chronyd, выполните команду;

chronyc sources
210 Number of sources = 4
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^+ 85.129.0.126                  2   6    77    30  -1023us[-1499us] +/-  124ms
^+ valoo.patate.ninja            2   6    77    29  +3687us[+3687us] +/-  123ms
^* leeto.nicolbolas.org          2   6    77    30    -79us[ -555us] +/-   75ms
^+ backup.kabelnetveendam.nl     2   6    77    30  -3653us[-4129us] +/-  146ms

М  колонка указывает режим источника;

  • ^ означает сервер
  • = означает одноранговый
  • # указывает на локально подключенные опорные часы

S  колонка показывает состояние источников;

  • “*” Указывает на источник, с которым в настоящее время синхронизируется хронид.
  • “+” Указывает на приемлемые источники, которые объединены с выбранным источником.
  • “-” Допустимые источники, которые исключаются алгоритмом объединения.
  • “?” Источники, подключение к которым было потеряно или чьи пакеты не проходят все тесты. Это состояние также отображается при запуске, пока не будет собрано по крайней мере 3 образца.
  • “x” Обозначает часы, которые хронид считает фальшивыми (их время несовместимо с большинством других источников).
  • “~” Указывает на источник, время которого кажется слишком изменчивым.

Для отображения параметров о тактовой работе системы;

chronyc tracking
Reference ID    : C39AAED1 (leeto.nicolbolas.org)
Stratum         : 3
Ref time (UTC)  : Sun Mar 01 18:14:38 2020
System time     : 0.001563942 seconds fast of NTP time
Last offset     : +0.001314329 seconds
RMS offset      : 0.002229846 seconds
Frequency       : 2.614 ppm fast
Residual freq   : +0.147 ppm
Skew            : 24.449 ppm
Root delay      : 0.150412217 seconds
Root dispersion : 0.008927128 seconds
Update interval : 128.5 seconds
Leap status     : Normal

Дополнительные параметры команды см man chronyc. В.

Настройка клиента NTP с помощью Chrony на CentOS 8

Поскольку наш NTP-сервер, использующий Chrony в CentOS 8, настроен и работает, пришло время проверить, может ли он обслуживать наших клиентов NTP, как ожидалось.

В этой демонстрации мы используем другую виртуальную машину CentOS 8 в качестве нашего NTP-клиента.

Проверьте, установлен ли Chrony;

rpm -q chrony
chrony-3.5-1.el8.x86_64

Настройка клиента NTP в CentOS 8 аналогична настройке сервера NTP, как описано выше, за исключением того, что у клиента не установлены разрешения на доступ, поэтому ни один сервер не может запрашивать у него информацию о времени.

Откройте файл конфигурации и настройте сервер NTP, как показано ниже;

vim /etc/chrony.conf
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
#pool 2.centos.pool.ntp.org iburst
server ntp.kifarunix-demo.com iburst

Убедитесь, что имя хоста сервера NTP разрешимо, в противном случае используйте IP-адрес.

Проверьте подключение к NTP-серверу UDP-порт 123

Чтобы убедиться, что клиент NTP подключен к серверу NTP через порт 123 UDP, просто используйте команду netcat, как показано ниже;

dnf install nc -y

Для проверки подключения к UDP-порту 123;

nc -uzv ntp.kifarunix-demo.com 123
Ncat: Connected to 192.168.56.133:123.
Ncat: UDP packet sent successfully
Ncat: 1 bytes sent, 0 bytes received in 2.14 seconds.

Отлично. Теперь вы можете перейти к перезагрузке и разрешить запуск chronyd при загрузке системы.

systemctl restart chronyd
systemctl enable chronyd

Проверить синхронизацию времени NTP

Чтобы убедиться, что синхронизация времени работает,можна использовать команду отслеживания источников с командой chronyc, как показано ниже;

chronyc tracking
Reference ID    : C0A83885 (ntp.kifarunix-demo.com)
Stratum         : 4
Ref time (UTC)  : Sun Mar 01 18:56:03 2020
System time     : 0.000000034 seconds slow of NTP time
Last offset     : +0.000032892 seconds
RMS offset      : 0.000032892 seconds
Frequency       : 2.246 ppm fast
Residual freq   : +14.373 ppm
Skew            : 0.564 ppm
Root delay      : 0.151499271 seconds
Root dispersion : 0.001610240 seconds
Update interval : 2.0 seconds
Leap status     : Normal

Используя команду sources;

chronyc sources
210 Number of sources = 1
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^* ntp.kifarunix-demo.com        3   6    37     7   -671ns[  -12us] +/-   77ms

Проверить статистику источников

chronyc sourcestats
210 Number of sources = 1
Name/IP Address            NP  NR  Span  Frequency  Freq Skew  Offset  Std Dev
==============================================================================
ntp.kifarunix-demo.com      5   3    70     +0.408      4.663    +24us    27us

Клиент NTP теперь подключен к нашему серверу NTP. На этом мы подошли к концу нашего руководства по настройке NTP-сервера с использованием Chrony на CentOS 8. Мы надеемся, что это было информативным.

Прокрутить вверх