Рейтинг:0

ntpd -g не синхронизирует часы

флаг cn

От нтпд справочная страница

Если время отличается от времени сервера более чем на 1000 с, ntpd предполагает, что что-то ужасно неправильное, и единственным надежным действием является вмешательство оператора и установка часов вручную. Это приводит к выходу ntpd с сообщением о панике в системном журнале. Параметр -g отменяет эту проверку, и часы будут установлены на время сервера независимо от времени чипа..

Я провел небольшой эксперимент, чтобы проверить вариант с ntpd. Сначала я изменил системные часы на какое-то старое время с помощью команды date.

дата -с 2021.06.15-19:10:21

После этого я создал небольшой /etc/ntp.conf файл с приведенной ниже информацией

файл дрейфа /etc/ntp.drift
logconfig = состояние синхронизации
сервер time.google.com minpoll 3 maxpoll 4

После этого я побежал нтпд с приведенной ниже командой

ntpd -g -n -4 -c /etc/ntp.conf &

Обратите внимание, что мой ntp.дрифт файл был пуст.

Я не вижу изменений в системном времени, фактически статус ntp показывает, что часы не синхронизированы.

GW:/# ntpq -p
     удаленный refid st t при достижении опроса джиттер смещения задержки
  ================================================== =============================
    time2.google.co .GOOG. 1 ед - 64 1 0,000 +0,000 0,000


Часы не синхронизированы, слой 16, ссылка INIT
частота +0,000 Гц, точность -19
время отсчета (нет времени),
смещение часов составляет +0,000000 мс, корневая задержка составляет 0,000 мс
корневая дисперсия N/A

Может кто-нибудь, пожалуйста, помогите мне. Я пропустил какую-либо конфигурацию или некоторые другие данные.

Кроме этого у меня есть один маленький вопрос

Нужно ли синхронизировать часы ntp для проверки подлинности ntp? Если часы ntp не синхронизированы, то в этом случае аутентификация сервера ntp будет пройдена.

Редактировать:

Ниже приведены журналы, когда я запускаю ntpd

GW:~/var/log# cat ntpd.log
15 июня, 19:21:03 ntpd[14560]: Прослушайте и запустите 0 v4wildcard 0.0.0.0:123
15 июня, 19:21:03 ntpd[14560]: нормально слушайте 1 час 127.0.0.1:123
15 июня, 19:21:03 ntpd[14560]: нормально слушать на 2 srcr2 192.168.0.2:123
15 июня, 19:21:03 ntpd[14560]: нормально слушайте 3 log0 1.0.0.1:123
15 июня, 19:21:03 ntpd[14560]: прослушивание сокета маршрутизации на fd #20 для обновлений интерфейса
15 июня, 19:21:03 ntpd[14560]: ядро ​​сообщает TIME_ERROR: 0x2041: часы не синхронизированы
15 июня, 19:21:03 ntpd[14560]: ядро ​​сообщает TIME_ERROR: 0x2041: часы не синхронизированы

Обновлять:

@Джон, я сделал все, что ты предложил, но все равно вижу ту же проблему.

GW:~/var/log# статус systemctl ntpd
ntpd.service — демон NTPD


Загружено: загружено (/etc/systemd/system/ntpd.service; отключено; предустановка поставщика: включена)
Активен: активен (работает) с пт 09.07.2021 08:17:46 UTC; 6 минут назад
Процесс: 21151 ExecStart=/bin/sh -c /sbin/ntpd -g >> /var/log /ntpd.log 2>&1 (code=exited, status=0/SUCCESS)
Основной PID: 21153 (ntpd)
Группа CG: /system.slice/ntpd.service
       â21153 /sbin/ntpd -g
       

кот /etc/ntp.conf 
 # использовать случайный выбор из 4 общедоступных серверов stratum 2
 # см. http://twiki.ntp.org/bin/view/Servers/NTPPoolServers
 #restrict по умолчанию nomodify notrap noquery
 #ограничить noquery по умолчанию

лог-файл /var/log/ntpd.log
файл дрейфа /etc/ntp.drift
logconfig = состояние синхронизации

сервер time1.google.com iburst
сервер time2.google.com iburst
сервер time3.google.com iburst
сервер time4.google.com iburst
#tried pool time.google.com также


GW:~/var/log# ntpq -c как
ind assid status conf достичь условия аутентификации last_event cnt
================================================== =========
1 8426 9014 да да нет отклонение доступное 1
2 8427 9014 да да нет отклонение доступное 1
3 8428 9014 да да нет отклонение доступное 1
4 8429 9014 да да нет отклонение доступное 1

GW:~/var/log# ntpq -c lpeer
     удаленный refid st t при достижении опроса джиттер смещения задержки
================================================== =============================
 time1.google.co .GOOG. 1 ед - 64 377 0,000 +0,000 0,000
 time2.google.co .GOOG. 1 ед - 64 377 0,000 +0,000 0,000
 time3.google.co .GOOG. 1 ед - 64 377 0,000 +0,000 0,000
 time4.google.co .GOOG. 1 ед - 64 377 0,000 +0,000 0,000


GW:~/var/log# cat ntpd.log
9 июля, 08:17:46 ntpd[21153]: Прослушайте и бросьте на 0 v6wildcard [::]:123
9 июля, 08:17:46 ntpd[21153]: Прослушайте и запустите 1 v4wildcard 0.0.0.0:123
9 июля, 08:17:46 ntpd[21153]: нормально слушайте 2 часа 127.0.0.1:123
9 июля, 08:17:46 ntpd[21153]: нормально слушать на 3 srcr2 192.168.0.2:123
9 июля, 08:17:46 ntpd[21153]: нормально слушать на 4 log0 1.0.0.1:123
9 июля, 08:17:46 ntpd[21153]: прослушивание сокета маршрутизации на fd #21 для обновлений интерфейса
9 июля, 08:17:46 ntpd[21153]: ядро ​​сообщает TIME_ERROR: 0x41: часы не синхронизированы
9 июля, 08:17:46 ntpd[21153]: ядро ​​сообщает TIME_ERROR: 0x41: часы не синхронизированы

GW:~/var/журнал#

Не могли бы вы проверить один раз. Я что-то пропустил?

Обновлять

Вставка вывода ассоциации ntpd

GW:/# ntpq -c как
ind assid status conf достичь условия аутентификации last_event cnt
================================================== =========
  1 47211 9014 да да нет отклонение доступное 1
  2 47212 9014 да да нет отклонение доступное 1
  3 47213 9014 да да нет отклонение доступное 1
  4 47214 9014 да да нет отклонение доступное 1

ГВ:/# ГВ:/#

 GW:/# ntpq -c "rv 47211"
 associd=47211 status=9014 conf, охват, sel_reject, 1 событие, достижимо, 
srcadr=time1.google.com, srcport=123, dstadr=192.168.0.2, dstport=123,
скачок = 00, слой = 1, точность = -20, задержка корня = 0,000, вывод корня = 0,107,
refid=GOOG, reftime=e4a0073d.cba4777a Пн, 19 июля 2021 г., 14:14:21.795,
rec=e4a0073d.cba4777b Пн, 19 июля 2021 г., 14:14:21.795, охват=017,
unreach=0, hmode=3, pmode=4, hpoll=6, ppoll=6, прогресс=347,
flash=400 peer_dist, keyid=0, смещение=+0,000, задержка=0,000,
дисперсия = 15937,500, джиттер = 0,000, xleave = 0,033,
filtdelay= 2833222 2833222 2833222 2833222 2833222 2833222 2833222 2833222,
filtoffset= +141661 +141661 +141661 +141661 +141661 +141661 +141661 +141661,
filtdisp= 16000,0 16000,0 16000,0 16000,0 16000,0 16000,0 16000,0 16000,0
флаг jp
Dom
Вы уверены, что между вашим ntp и google нет брандмауэра? Если время, установленное в аппаратном обеспечении, установлено правильно, может ли ntpd связаться с Google и правильно установить время?
vivek avatar
флаг cn
@Dom, когда я делаю ntpdate -u time.google.com, он обновляет время, поэтому я думаю, что брандмауэра нет. Есть ли какая-нибудь быстрая команда, я могу проверить брандмауэр
Gerard H. Pille avatar
флаг in
Я бы удалил строку logconfig из ntp.conf, возможно, вы скрываете некоторые сообщения, которые могут быть полезны.
vivek avatar
флаг cn
@Dom У меня есть еще один вопрос, не могли бы вы поделиться своими мыслями по моему вопросу. Нужно ли синхронизировать часы ntp для проверки подлинности ntp? Если часы ntp не синхронизированы, то в этом случае аутентификация сервера ntp будет пройдена.
Gerard H. Pille avatar
флаг in
Единственное упоминание об аутентификации в руководстве по ntpd касается аутентификации клиентов на сервере. Требует ли time.google.com аутентификацию?
флаг jp
Dom
@vivek извините, я не знаю о действительных часах, необходимых для аутентификации. Я предполагаю, что это не нужно, но я никогда не использую auth. Вы можете добавить новый сервер, например «pool.ntp.org», чтобы посмотреть, изменит ли он что-то.
John Mahowald avatar
флаг cn
Пожалуйста, добавьте переменные из ассоциации: `ntpq -c "rv 8426"`, из которых мы можем интерпретировать состояние флэш-памяти https://www.eecis.udel.edu/~mills/ntp/html/decode.html.
vivek avatar
флаг cn
@JohnMahowald Я добавил переменные из ассоциации
Рейтинг:3
флаг cn

Обычно после разрешения NTP через любой брандмауэр обрабатываются первые несколько пакетов (увеличение охвата), выбирается одноранговый узел системы, и на начальном этапе фиксируется время. Эта система имеет достижимых пиров, но отвергла их всех, что странно.

Просмотрев вывод readvar, корень задержки = 0,000 не имеет смысла. Удаленно через Интернет, не может быть нулевым. Возможно, поэтому вы получили сообщение о превышении порога расстояния.

Теория из IRC заключается в том, что пакеты NTP искажаются каким-то промежуточным устройством. Что, если это правда, было бы плохо, поскольку это, по-видимому, сломало NTP. ntpd применяет dscp своим пакетам, а ntpdate — нет. Пытаться дскп 0 в ntp.conf Спросите, есть ли в пути блоки, поддерживающие дифференцированные услуги. Возьмите пакетный захват (tcpdump) пакетов NTP и просмотрите его в Wireshark. Посмотрите, может ли он анализировать оба любых поля DSCP, оборачивая пакеты NTP временными метками NTP.

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

Мой оригинальный ответ с критикой конфигурации следует.


Ваш зарегистрированный охват там всего 1. Подождите 3 минуты после запуска ntpd. Требуется некоторое время, чтобы вернуть первые пару пакетов.

Что касается вашей конфигурации:

сервер time.google.com minpoll 3 maxpoll 4

Рассмотрите возможность добавления взрыв к вашему серверу и линиям пула. Начальный всплеск при запуске нескольких пакетов с небольшой задержкой.

Я не уверен в настройке минпул и макспул это хорошая идея, ни красная шляпа. Слишком частые в течение длительного периода, и общедоступные службы NTP могут заблокировать вас. ntpd уже умеет динамически выбирать интервал пула.

Нужно больше NTP-серверов, в идеале 4 для обнаружения фальшивомонетчиков с избыточностью n+1. Публичный NTP Google имеет 4 интерфейса, которые вы можете использовать либо с бассейн директива или несколько строк сервера. Не стесняйтесь добавлять другие службы NTP в качестве второго мнения, например 2.pool.ntp.org. (Однако у вас будет грязный второй мазок если ваши серверы NTP не согласны с этим.)

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

Мое предлагаемое изменение для строки сервера больше похоже на это:

бассейн time.google.com iburst

Что касается того, как вы запускаете ntpd:

ntpd -g -n -4 -c /etc/ntp.conf &

опция необходима, чтобы исправить такое большое смещение на много часов, сохраните его. Разрешает бесконечный шаг один раз при запуске. Обычно большое смещение вызывает панику ntpd. Использовать в любом скрипте, который запускает ntpd, поэтому время будет зафиксировано при загрузке.

Я не вижу смысла в отсутствии форка и фоновой оболочки. Для запуска в фоновом режиме я использую диспетчер служб системы или сценарий инициализации. Например, модуль ntpd.service для Linux с systemd.

Удалить -4. Google поддерживает IPv6.

Если вы хотите установить время один раз и выйти, -q вариант полезный. Для интерактивного использования при устранении неполадок нормальная работа оставляет ntpd работающим. Не используйте ntpdate, который устарел.

ntpd -g -q
vivek avatar
флаг cn
Я согласен, что общедоступный сервер не нуждается в аутентификации. Я имею в виду, что если предположить, что мои часы отстают от фактического времени на 1 день, а ntpd также не синхронизирует часы, если временной разрыв настолько велик (если мы не используем -g и ntpdate), то в этом случае будет аутентификация пройдена, иначе произойдет сбой из-за большого временного промежутка. Я имею в виду, проходит ли аутентификация, если разрыв во времени большой?
John Mahowald avatar
флаг cn
Опция -g позволяет такой большой скачок, и только при запуске ntpd. У вас был этот вариант, поэтому мой первый ответ не обсуждал его, см. Правку.
John Mahowald avatar
флаг cn
Изменить, чтобы добавить теорию искаженных пакетов. Немного необычно, но я упомянул все обычные вещи, о которых только мог подумать.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.