NTP 服务器【Network Time Protocol(NTP)】是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS 等等) 做同步化,它可以提供高精准度的时间校正(LAN 上与标准间差小于 1 毫秒,WAN 上几十毫秒)。
在一个与外界网络隔离的局域网内需要搭建一个 NTP 服务器给该局域网内的其他设备使用。尝试了一些 Windows 下的 NTP 服务器小软件之后,最后查到了 Windows 默认带有 NTP 服务器,只是默认没有开启,我们可以通过修改注册表的方式打开 Windows 默认的 NTP 服务器。
从 Windows 2000 起的所有 Microsoft Windows 版本都包括 Windows 时间服务(W32Time),其具有将计算机时钟同步到 NTP 服务器的能力。
W32Time 服务最初是为实现 Kerberos 第五版的身份验证协议,它需要误差 5 分钟内正确时间值以防止重放攻击。Windows 2000 和 Windows XP 中只实现了简单的 NTP,并在几个方面违反了 NTP 第 3 版的标准。从 Windows Server 2003 和 Windows Vista 开始,已包括匹配完整 NTP 的实现。微软称 W32Time 服务不能可靠地将同步时间保持在 1 至 2 秒的范围内。如果需要更高的精度,微软建议使用其他 NTP 实现。
Windows Server 2016 现在在某些操作条件下支持 1ms 的时间精度。
1、在 Windows 服务器下,按住 “ windows+r
” 打开 “运行
” 对话框,输入 regedit
,点击 “确定” 打开注册表。
2、在注册表中依次展开:HKEY_LOCAL_MACHINE、SYSTEM、CurrentControlSet、Services、W32Time、TimeProviders、NtpServer,
在 NtpServer 项的右侧键值 ENablied,将默认的 0 改为 1,1 为启用 NTP 服务器。
3、再在注册表中依次展开:HKEY_LOCAL_MACHINE、SYSTEM、CurrentControlSet、Services、W32Time、Config
找到 Config 项右侧的 AnnounceFlags。
把默认的 10 改为 5,5 的意思就是自身为可靠的时间源。
4、修改完以上之后关闭注册表编辑器,win7 下 以管理员身份打开命令行如下图。Windows10 则用 Windows+X+A 以管理员身份打开命令行。
5、在命令提示符中输入:net stop w32Time
,回车
等待 NTP 服务停止。
然后再输入:net start w32Time
,回车
启动 NTP 服务。
6、测试,局域网内 windows 电脑同步成功!
7、测试,在 ubuntu 虚拟机中,在终端输入命令 “sudo ntpdate 192.168.10.241
,” 出现如下界面则同步成功!