У меня есть внутренняя сеть с серверами, на которых работают разные операционные системы, и все они предположительно синхронизируются через NTP, но я хотел бы проверить, действительно ли они синхронизированы. Есть ли для этого инструмент (желательно Linux)?
Это зависит от множества серверов, разрешающих запросы статуса извне. Не все. В частности, Windows не может отвечать на стандартные запросы статуса NTP. Если они этого не сделают, вам придется добавить сервер опроса в разрешенный список конфигурации NTP, если это вообще возможно.
Для тех, кто отвечает, ntpq
команда предназначена именно для этого.
ntpq -c lo $target
Вам нужно будет проанализировать вывод, но это можно комбинировать с небольшим количеством сценариев nmap для определения запущенных хостов с открытыми хостами NTP для запроса.
Или вы можете использовать реальную структуру мониторинга.
У Nagios есть плагин для NTP. Он подключится к серверу NTP в целевой системе и сравнит свое время с местным временем. Вы можете установить предупредительный и критический уровни для разницы во времени.
Предполагая, что серверы не настроены для игнорирования локальной сети, вы можете из центрального окна сделать
central% /usr/sbin/ntptrace remotehost
И вы должны увидеть что-то вроде
remotehost: stratum 3, offset 0.002664, synch distance 0.120534
Если ваш локальный брандмауэр разрешает случайный трафик NTP в Интернет, вы увидите больше, возможно, что-то вроде:
remotehost: stratum 3, offset 0.005108, synch distance 0.085819
maverick.mcc.ac.uk: stratum 2, offset -0.000428, synch distance 0.032754
ntp2.ja.net: stratum 1, offset 0.000083, synch distance 0.002045, refid 'MSF'
Если вы ничего не видите, это означает, что ntp настроен так, чтобы игнорировать вас; Возможно, вам придется войти в систему, чтобы запустить там ntptrace. Проблемы возникают, когда кто-то освободился:
bustedbox: stratum 16, offset 0.000000, synch distance 0.000015