序
你应该见过Windows7里这个界面
或者Mac里这个界面
几乎不用多想,我们都知道只要电脑能够上网,不论是PC还是MAC都会自动和互联网上对应的时间同步服务器——time.windows.com/time.asia.apple.com进行时间校准,完全不用人工介入,多么轻松加愉快。要是平时对时间精度要求不高,也许好多人从来都没有打开过这样的界面。
今天我们要来研究的是,在一个对时间精度有一定要求的局域网中,如何保持网内设备时间的一致性。
理想与现实
从原理上来说,所谓自动时间同步,就是开启设备的NTP(Network Time Protocol)——网络时间协议后,使其与时间服务器进行时间同步,默认情况下设备是作为时间同步的客户端(Client)。
回到我们今天的问题,要保证局域网内设备时间的一致性,就要开启所有设备的NTP服务,然后配置对应的时间服务器地址,如time.windows.com/time.asia.apple.com。理想状态下,基于NTP服务器的时间一致性,那么局域网内的各个设备各自进行时间同步后时间也应该是一致的。不过,现实情况下,不同的设备默认配置NTP服务器地址各不相同。
- Windows:time.windows.com
- MAC:time.asia.apple.com
- 路由器:pool.ntp.org
- 服务器A:time.google.com
- 服务器B:0.de.pool.ntp.org
- 服务器C:……
国内不同地区、不同网络运营商,NTP服务器地址的可达性也各不相同。换一个说法就是,我们没有办法保证局域网内的所有设备的NTP服务能正常工作,也就不能保证所有设备的时间一致性。那怎么解决这个问题呢?
方法一
测试局域网内某个设备到NTP服务节点的可达性,可尝试配置NTP服务器地址为:
- 0.cn.pool.ntp.org
- 0.asia.pool.ntp.org
- cn.ntp.org.cn
- ……
确保NTP服务器可达且NTP时间同步正常后,将局域网内所有设备的NTP服务器地址均调整为该地址。这样一来,网内设备的时间一致性就可以得到保证了。
方法二
按照方法一配置后,如果配好的NTP服务节点又不可达怎么办?难道说要又要重头来一遍吗?局域网内只有1台、2台设备还好说,100台、200台岂不是要人命吗?因此我们在方法一的基础上做了一个优化,那就是——在局域网内建一个NTP服务器,让所有设备同这个服务器进行时间同步,即使出现了上游NTP服务节点不可达的情况,也只需要调整该NTP服务器的配置就可以了。理论上来说,局域网内节点间的通信质量很好,因此NTP同步效率和响应速度会更好。这里没有做量化测试,有兴趣的朋友可以搭建环境试试看。
NTP服务是一个十分轻量的服务,在一个典型的局域网中可以部署在NAS上,或业务量较轻的服务器上,甚至可以直接部署在路由器上。
局域网内所有设备时间一致性方法探究就告一段落,大家可以参看《华硕ASUS RT-AC66U无线路由器部署NTP Server最佳实践》、《群晖NAS如何开启NTP服务》来进一步了解路由器和NAS上部署NTP Server的方法。
网友评论