- ⏲️ Как проверить, работают ли настройки NTP (синхронизация) или нет в Linux?
- Способ 1: Как проверить состояние NTP с помощью команды ntpq?
- Способ 2: Как проверить состояние NTP с помощью команды ntpstat?
- Способ 3: Как проверить состояние NTP с помощью команды timedatectl?
- NTP сервер на Linux Ubuntu
- Установка сервера
- Настройка NTP
- Дополнительные настройки
- Тестирование
- Настройка клиента Linux
- ntpdate
- Настройка клиента Windows
- Некоторые ошибки
- 1. the NTP socket is in use, exiting
- 2. Connection refused
- 3. no server suitable for synchronization found
- Как проверить, успешно ли NTPD обновляет время машины с помощью оболочки?
- How to verify NTP is working Or not (Check Status of NTP)
- How to check NTP is working?
- Verify NTP is working or not with ntpstat command
- exit status of ntpstat command
- Checking the status of NTP with ntpq command
- A note about timedatectl command
- systemd-timesyncd configuration
⏲️ Как проверить, работают ли настройки NTP (синхронизация) или нет в Linux?
NTP это сетевой протокол времени, который синхронизирует часы между компьютерными системами по сети.
NTP-сервер поддерживает синхронизацию всех серверов в вашей организации с точным временем выполнения заданий.
NTP-клиент синхронизирует свои часы с сетевым сервером времени.
Мы уже написали статью об установке и настройке NTP-сервера и клиента.
Я предполагаю, что мы уже настроили NTP-сервер и NTP-клиент, используя вышеуказанные ссылки.
Теперь, как проверить, правильно ли работает настройки NTP?
В Linux доступны три команды для проверки синхронизации NTP.
В этой статье мы расскажем вам, как проверить синхронизацию NTP с помощью всех этих команд.
- ntpq: ntpq – стандартная программа запросов NTP.
- ntpstat: показывает состояние синхронизации времени в сети.
- timedatectl: управляет системным временем и датой в systemd.
Способ 1: Как проверить состояние NTP с помощью команды ntpq?
Утилита ntpq используется для мониторинга операций NTP-демона ntpd и определения производительности.
Программа может быть запущена в интерактивном режиме или управляться с помощью аргументов командной строки.
Он выводит список пиров, которые соединились, отправив несколько запросов на сервер.
Если NTP работает правильно, вы получите вывод, аналогичный приведенному ниже.
- -p: выводит список пиров, известных серверу, а также сводку их состояния.
Способ 2: Как проверить состояние NTP с помощью команды ntpstat?
ntpstat сообщит о состоянии синхронизации демона NTP (ntpd), работающего на локальной машине.
Если будет установлено, что локальная система синхронизирована с эталонным источником времени, ntpstat сообщит о приблизительной точности времени.
Команда ntpstat возвращает три вида кода состояния на основе синхронизации NTP. Подробности ниже.
- 0: возвращает 0, если часы синхронизированы.
- 1: Возвращает 1, если часы не синхронизированы.
- 2: Возвращает 2, если состояние часов не определено, например, если ntpd не доступен.
Способ 3: Как проверить состояние NTP с помощью команды timedatectl?
Команда timedatectl используется для запроса и изменения системного времени и его настроек в системе systmed.
Chrony это замена NTP-клиента.
Он может синхронизировать системные часы с большей точностью и может быть особенно полезен для систем, которые не подключены к сети все время.
chronyd меньше, он использует меньше памяти и пробуждает процессор только при необходимости, что лучше для экономии энергии.
Он может работать хорошо, даже если сеть перегружена в течение более длительных периодов времени.
Источник
NTP сервер на Linux Ubuntu
Следить за актуальностью времени на всех узлах локальной сети удобнее с помощью сервера синхронизации времени NTP. В инструкции рассказано об установке и настройке такого сервера на Linux Ubuntu Server 16.04. Данное руководство можно использовать для настройки ntpd на любом другом Linux (например, Debian или CentOS).
Установка сервера
Устанавливаем ntp сервер следующей командой:
apt-get install ntp
Разрешаем автозапуск и стартуем сервис:
systemctl enable ntp || update-rc.d ntp defaults
systemctl start ntp || service ntp start
Настройка NTP
Открываем файл с настройками:
Настраиваем серверы, с которых наш NTP будет брать эталонное время. Например:
pool ru.pool.ntp.org iburst
server ntp2.vniiftri.ru iburst prefer
pool 0.ubuntu.pool.ntp.org iburst
pool 1.ubuntu.pool.ntp.org iburst
server 127.127.1.0
* 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 notrap nomodify nopeer noquery
restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap
restrict 127.0.0.1
restrict ::1
- 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:
restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery
systemctl restart ntp || service restart ntp
Если используется брандмауэр, добавляем правило:
iptables -I INPUT 1 -p udp —dport 123 -j ACCEPT
или с помощью ufw:
ufw allow in on enp2s0 to any port 123 proto udp
* где enp2s0 — сетевой интерфейс, на котором слушает наш сервер.
Дополнительные настройки
Настройка файла хранения логов:
Тестирование
Проверить состояние получения эталонного времени можно командой:
Мы должны увидеть, примерно, следующее:
remote refid st t when poll reach delay offset jitter
==============================================================================
ru.pool.ntp.org .POOL. 16 p — 64 0 0.000 0.000 0.000
ntp.ubuntu.com .POOL. 16 p — 64 0 0.000 0.000 0.000
*91.189.94.4 17.253.34.253 2 u 58 64 377 55.802 3.790 0.412
-91.189.91.157 132.246.11.231 2 u 56 64 377 113.456 -1.746 0.334
+91.189.89.198 192.53.103.108 2 u 1 64 377 54.595 4.229 0.608
+91.189.89.199 17.253.34.253 2 u 61 64 377 54.061 2.637 0.557
- remote — адрес сервера времени, с которым синхронизируется наш сервер;
- refid — вышестоящий сервер (с которым сервер из графы выше получает время);
- st — уровень сервера (stratum);
- t — пир (unicast или multicast);
- when — когда последний раз сверялось время;
- poll — периодичность синхронизации с этим сервером;
- reach — состояние работоспособности. Если удалось произвести синхронизации восемь раз в подряд становится равным 377;
- delay — время задержки;
- offset — разница между нашим временем и временем на сервере; положительное — наши часы спешат, отрицательное — отстают;
- jitter — смещение времени на удаленном сервере;
- * — с этим сервером синхронизирует время наш ntpd;
- + — сервер можно использовать для сверки часов;
- — — не рекомендован для синхронизации;
- x — не доступен.
Проверить отдачу времени сервером можно введя команду на другом Linux:
Правильный ответ имеет следующий вид:
ntpdate[3576]: adjust time server 192.168.0.15 offset 0.017657 sec
* время было рассинхронизировано на 0.017657 секунд.
Отобразить текущее время можно командой:
Если после синхронизации время некорректно, настраиваем правильный часовой пояс:
cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime
* московское время (GMT+3).
Настройка клиента Linux
Для клиентов можно выбрать 2 стратегии настройки — с помощью ntp или утилиты ntpdate.
apt-get install ntp
CentOS / Red Hat:
yum install ntp
В настройка /etc/ntp.conf в качестве сервера оставляем только наш локальный сервер, например:
Остальные pool и server удаляем или комментируем.
systemctl restart ntp || service restart ntp
ntpdate
Утилита командной строки выполняет разовую синхронизацию. Чтобы автоматизировать процесс, добавляем задание в cron:
0 0 * * * /usr/sbin/ntpdate 192.168.0.15
* в данном примере задание будет выполняться раз в день в 00:00. /usr/sbin/ntpdate — полный путь расположения утилиты, в разных системах может быть разным — проверить стоит командой which ntpdate.
Настройка клиента Windows
В командной строке выполняем:
w32tm /config /manualpeerlist:»192.168.0.15,0×8″ /syncfromflags:manual /update
Некоторые ошибки
1. the NTP socket is in use, exiting
Как правило, данная ошибка возникает при попытке синхронизировать время с помощью ntpdate, когда в системе работает демон ntp.
Причина: NTP сокет в системе уже занят, как правило, ntpd.
Решение: либо не использовать ntpdate, так как ntp умеет сверять время, либо отключить сервис ntpd командой service ntp stop.
2. Connection refused
Возникает при попытке выполнить команду ntpq -p.
Причина: нет разрешения на обращение к серверу.
Решение: проверьте, удастся ли выполнить запрос командой ntpq -pn 127.0.0.1 или ntpq -pn ::1. Также убедитесь, что настройка restrict позволяет серверу подключаться к самому себе по нужному протоколу.
3. no server suitable for synchronization found
Ошибка появляется при попытке синхронизировать время с другим сервером синхронизации.
Причина: сервер синхронизации не доступен по одной из причин: 1) не работает или выключен, 2) установлен restrict, 3) на сервере не запущен ntpd, 4) нет сетевой доступности из-за проблем на сети или брандмауэра.
Источник
Как проверить, успешно ли NTPD обновляет время машины с помощью оболочки?
Я пытаюсь использовать NTPD для обновления времени моего компьютера с Linux на указанный NTP-сервер.
Вот сценарий:
Каждый раз, когда машина Linux запускается, я хочу обновить время с NTP-сервера, и если это не удастся, я хочу повторить попытку каждые 5 минут до успешного завершения (макс. 2 часа).
Я искал вокруг и обнаружил, что я должен (?) Использовать NTPD и использовать некоторые команды, такие как:
#ntpdate ntp.server.com (до запуска NTPD)
#ntpd some_options_to_start
- Как я могу узнать, было ли время успешно обновлено этими командами?
- Могу ли я установить интервал обновления времени с ntpd? (или я должен использовать что-то вроде sleep и цикл с do .. while / for в оболочке?)
Обратите внимание, что я хочу выполнить вышеупомянутые команды в сценарии оболочки и поместит оболочку на веб-сервер. Затем клиенты (с браузером веб-браузера) выполнят скрипт на сайте. Поэтому мне нужно проверить, было ли обновление успешным или нет, чтобы отправить результат клиенту (через Интернет).
Использование сценария для мониторинга ntpd обычно не делается. Обычно инструмент мониторинга, такой как nagios или munin используется для мониторинга демона. Инструмент может отправить вам уведомление, когда что-то пойдет не так. Я munin пишу мне, если смещение превышает 15 миллисекунд.
Обычно вы должны использовать нечетное количество серверов, чтобы демон мог выполнить выбор между серверами, если он отключится. Три обычно достаточно, а более пяти — чрезмерно. Клиенты вашей внутренней сети должны иметь возможность обойтись с одним внутренним сервером, если вы его контролируете. Используйте легальные серверы или NTP или DNS-серверы вашего интернет-провайдера в качестве источников синхронизации. Есть публичные пулы, а также публичные серверы.
ntpd является самонастраивающимся, и вам не нужно настраивать его после его настройки и запуска. В последних ntpd реализациях вы можете полностью отказаться от использования, так ntpdate как они могут выполнять начальную настройку даты.
Следующий скрипт проанализирует смещения в выводе ntpd и сообщит о чрезмерном смещении. Вы можете запустить его из cron, чтобы отправить вам электронное письмо в случае возникновения проблем. Сценарий по умолчанию оповещает о смещении в 0,1 секунды.
Источник
How to verify NTP is working Or not (Check Status of NTP)
How to check NTP is working?
- ntpq – standard NTP query program
- ntpstat – show network time synchronisation status
- timedatectl – show or set info about ntp using systemd
Tutorial details | |
---|---|
Difficulty level | Easy |
Root privileges | No |
Requirements | None |
Est. reading time | 2m |
Let us see all commands and examples in details
Occasionally you may not find the following tools installed by default on your Linux/Unix distro. If you get a “command not found” error. Search for those tools and install them.
Verify NTP is working or not with ntpstat command
The ntpstat command will report the synchronisation state of the NTP daemon running on the local machine. If the local system is found to be synchronised to a reference time source, ntpstat will report the approximate time accuracy.
exit status of ntpstat command
You can use the exit status (return values) to verify its operations from a shell script or command line itself:
- If exit status 0 – Clock is synchronised.
- exit status 1 – Clock is not synchronised.
- exit status 2 – If clock state is indeterminant, for example if ntpd is not contactable.
Type the command as follows:
$ ntpstat
Sample outputs:
Use the echo command to display exit status of ntp client:
$ echo $?
Sample outputs:
Checking the status of NTP with ntpq command
The ntpq utility program is used to monitor NTP daemon ntpd operations and determine performance. The program can be run either in interactive mode or controlled using command line arguments. Type the following command on your Linux or Unix-based system:
$ ntpq -pn
OR
$ ntpq -p
Sample outputs:
* the source you are synchronized to (syspeer). The above is an example of working ntp client. Where,
- -p : Print a list of the peers known to the server as well as a summary of their state.
- -n : Output all host addresses in dotted-quad numeric format rather than converting to the canonical host names.
A note about timedatectl command
If you are using systemd based system, run the following command to check the service status
# timedatectl status
Sample outputs:
Is my NTP (systemd-timesyncd) Working?
systemd-timesyncd configuration
If NTP enabled is set to No . Try configuring by editing /etc/systemd/timesyncd.conf file as follows:
# vi /etc/systemd/timesyncd.conf
Append/edit [Time] as follows i.e. add time servers or change the provided ones, uncomment the relevant line and list their host name or IP separated by a space (default from my Debian 8.x server):
Save and close the file. Finally, start and enable it, run:
# timedatectl set-ntp true
# timedatectl status
Sample outputs:
Источник