近日,本人想在局域网内通过普通的windows 7 PC搭建一台NTP服务器,可看似简单的配置却给我捣腾了了半天。初期,参考了互联网的上相关的配置文档,可网络设备就是死活不同步NTP服务器的时间。实在没办法,只有通过来抓包分析了,经过一番研究后,终于找到问题,现将这个文档与大家分享:
通过windows系统为局域网搭建NTP服务器,为局域网内网络设备提供时间服务,经过测试,使用于windows xp、windows 2003、windows 7。
1、启用 NTPServer。为此,请按照下列步骤操作:
a. 单击“开始”,单击“运行”,键入“regedit”,然后单击“确定”进入注册表;
b. 找到并单击下面的注册表子项:
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/W32TimeTime/Providers/NtpServer
c. 在右窗格中,右键单击“Enabled”,然后单击“修改”;
d. 在“编辑 DWORD 值”的“数值数据”框中键入“1”,然后单击“确定”;
2、如果使用NTP Server,建议关闭NTP Clinet,找到并单击下面的注册表子项:
a.HKEY_LOCAL_MACHINE/SYSTEM/CurrentControl/SetServices/W32TimeTime/Providers/NtpClinet
b. 在右窗格中,右键单击“Enabled”,然后单击“修改”;
c. 在“编辑 DWORD 值”的“数值数据”框中键入“0”,然后单击“确定”;
3、强制主机将自身宣布为可靠的事件源,从而使用内置的CMOS时钟
a、HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config
b. 在右窗格中,右键单击“AnnounceFlags”,然后单击“修改”;
c. 在“编辑 DWORD 值”的“数值数据”框中键入“5”,然后单击“确定”;
4、按照以上步骤设置完成后,经测试windows系统的客户端均能正常同步NTP服务器的时间,通过抓包可以看到:
(10.160.13.252为windows xp客户端,10.160.13.73为NTP服务器)
client--server:
server—client:
5、但此时网络设备(如cisco、h3c交换机……)仍然不能正常同步NTP服务器时间,始终显示unsynchronized,通过抓包可以看到:
从网络设备(NTP客户端)到到NTP服务端的数据包里面,NTP协议中字段为:Reference ID:unidentified reference source
(10.160.13.237为网络设备)
client--server:
server—client:
6、经过一番捣腾后,发现修改注册表能解决以上问题:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config\LocalClockDispersion值修改为0
此时可以看到client—server的数据包中,NTP协议的字段Reference ID携带了NTP服务器的IP地址,为下图:(即此时网络设备可以正同步NTP服务时间)
Reference ID:10.160.13.73(NTP服务器IP地址)
client —server:
server—client: