如何将Win7做为NTP服务器
将计算机作为NTP服务器,可以让其他设备以该设备为时间基准进行时间校正,比如我当前的应用是目标板上有时钟芯片进行计时,但是由于目标板面积有限,无法在板上布置纽扣电池,所以上电时需要利用时钟基准对其进行校正,因此利用一台计算机作为NTP服务器
 
NTP(Network Time Protocol,网络时间协议)是用来使网络中的各个计算机时间同步的一种协议。
 
1、启用 NTPServer。为此,请按照下列步骤操作: 
a. 单击“开始”,单击“运行”,键入“regedit”,然后单击“确定”进入注册表; 
b. 找到并单击下面的注册表子项: 
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/W32Time/TimeProviders/NtpServer 
c. 在右窗格中,右键单击“Enabled”,然后单击“修改”; 
d. 在“编辑 DWORD 值”的“数值数据”框中键入“1”,然后单击“确定”;     
 
2、如果使用NTP Server,建议关闭NTP Client,找到并单击下面的注册表子项: 
a.HKEY_LOCAL_MACHINE/SYSTEM/CurrentControl/SetServices/W32Time/TimeProviders/NtpClient 
b. 在右窗格中,右键单击“Enabled”,然后单击“修改”; 
c. 在“编辑 DWORD 值”的“数值数据”框中键入“0”,然后单击“确定”; 
 
3、强制主机将自身宣布为可靠的事件源,从而使用内置的CMOS时钟 
a. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config 
b. 在右窗格中,右键单击“AnnounceFlags”,然后单击“修改”; 
c.  在“编辑 DWORD 值”的“数值数据”框中键入“5”,然后单击“确定”;    
 
4、按照以上步骤设置完成后,经测试windows系统的客户端均能正常同步NTP服务器的时间
 
5、但此时网络设备(如cisco、h3c交换机……)仍然不能正常同步NTP服务器时间,始终显示unsynchronized
 
6、经过一番捣腾后,发现修改注册表能解决以上问题: 
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config\LocalClockDispersion值修改为0 
 
7、禁用防火墙或设置例外,UDP 123端口。
 
8、运行 services.msc,将Windows Time服务设置成自动(延迟启动);
Win7下如果设置成自动,下次重启后此服务会被停止,原因不详。 
经实验,延迟启动也并不需要用户登录即可启动。
 
9、重启动校时服务(在windows的cmd下输入如下指令):net stop w32time && net start w32time 。从cmd的返回可知ntp服务器是否打开。
 
设置完成。
 
题外话:
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControl/SetServices/W32Time/TimeProviders/NtpClient/SpecialPollInterval为客户端同步时间,单位为秒。
 
2018.03.21