В моей сети есть надежный NTP-сервер, с которым синхронизируются все ПК. Из-за различных проблем, которыми известна служба времени Windows (по крайней мере, в Windows 7 и более ранних версиях), я отключил ее на машинах Windows и вместо этого установил порт NTPD Майнберга для Windows.
Это надежно работало в течение многих лет на всех ПК, которые я когда-либо тестировал, но сегодня у меня возникла проблема с одним из моих компьютеров с Windows (Windows 7 Pro x64, все обновления применены на момент написания этой статьи).
Обратите внимание, что C:\Program Files (x86)\NTP\etc\ntp.conf
на этом компьютере буквально такой же, как и на всех других ПК с Windows в этой сети, за исключением последней строки (см. Ниже).
ntpd.conf
(на проблемной машине некоторые комментарии удалены):
restrict default noquery nopeer nomodify notrap
restrict -6 default noquery nopeer nomodify notrap
# allow status queries and everything else from localhost
restrict 127.0.0.1
restrict -6 ::1
# if you need to allow access from a remote host, you can add lines like this:
# restrict <IP OF REMOTE HOST>
# Use drift file
driftfile "C:\Program Files (x86)\NTP\etc\ntp.drift"
# Use specific NTP servers
server timeserver.in.my.local.network iburst minpoll 6 maxpoll 7
# End of generated ntp.conf --- Please edit this to suite your needs
interface ignore wildcard
interface ignore ipv6
interface listen 127.0.0.1
interface listen 192.168.20.100
Конечно, последняя строка отличается на разных компьютерах. И да, я действительно не хочу, чтобы ntpd
прослушивал каждый интерфейс / IP-адрес, а только "основной" IP-адрес и localhost
.
Эта проблема:
В качестве первого быстрого теста, который я делаю на каждом ПК после установки, я открыл cmd32
качестве administrator
на рассматриваемом ПК и запустил
C:\Program Files (x86)\NTP>ntpq -p
Это привело к следующему сообщению об ошибке:
ntpq: read: No such file or directory
Я сначала поверил тому, что он сказал, и проанализировал его поведение с помощью ProcessMonitor
, но безрезультатно. Я не мог найти ни одного намека на то, что он не может открыть файл. Я почесал голову некоторое время, а затем попытался
C:\Program Files (x86)\NTP>ntpq -p 192.168.20.100
На этот раз я получил
192.168.20.100: timed out, nothing received
***Request timed out
Итак, очевидно, в соответствии с моими выводами из ProcessMonitor
, нет проблем с чтением файла, но, возможно, с открытием сетевого устройства.
Как ни странно,
C:\Program Files (x86)\NTP>ntpq -p 127.0.0.1
дал ожидаемый результат:
remote refid st t when poll reach delay offset jitter
==============================================================================
*192.168.20.10 ( 192.53.103.108 2 u 8 128 377 0.977 0.194 0.977
Это заставило меня снова почесать голову. Для тестирования я отключил брандмауэр Windows на этом компьютере (и там не было установлено никакого другого брандмауэра), но ntpq -p
и ntpq -p 192.168.20.100
прежнему выдавали те же сообщения об ошибках, что и раньше.
В качестве последнего теста я побежал
C:\Program Files (x86)\NTP>netstat -abno
и получил
Active Connections
...
UDP 127.0.0.1:123 *:* 5076
[ntpd.exe]
...
UDP 192.168.20.100:123 *:* 5076
[ntpd.exe]
...
Таким образом, ntpd
прослушивает IP-адреса из файла конфигурации, как и ожидалось.
Конечно, перезапуск службы и даже перезагрузка этого компьютера не помогли.
Теперь у меня заканчиваются идеи. Что может быть причиной того, что ntpq
может общаться с одним из IP-адресов, которые слушает ntpd
, но не с другим, даже когда брандмауэр полностью отключен?