即使GPS已经普及,为什么仍然需要NTP
GPS接收器能提供极其精确的时间,但笔记本电脑、室内的手机、物联网传感器、数据中心里的服务器等日常设备大多既没有内置GPS接收器,也未必有条件接收到卫星信号。这时候层级结构就派上了用场:少数与GPS或原子钟直连的Stratum 1服务器,通过庞大的公共及机构NTP服务器网络逐级分发时间,让几乎所有联网设备都能获得精确时间,而无需自备基准时钟。
需要留意的一点:NTP的精度也有上限
常见的NTP同步精度在几毫秒到几十毫秒之间,这对于网页浏览、身份验证和日常日志记录来说已经绰绰有余。但金融交易系统、电信网络,以及需要微秒甚至纳秒级精度的科研仪器,通常会改用PTP(精确时间协议)——这是一套专为受控、低延迟网络而非开放互联网设计的更严格标准。如果项目对时间精度的要求达到毫秒以下,仅靠NTP通常是不够的。
如何检查并修复走偏的时钟
在Windows上,先在日期和时间设置中确认已开启自动设置时间,用命令w32tm /query /status可以查看同步来源和上次同步时间。在Linux上,timedatectl能显示系统时钟是否已同步,使用chrony时chronyc tracking可以查看当前偏差。如果同步失败,依次检查出站UDP 123端口是否放行、时间服务器域名能否被DNS解析、硬件时钟是否偏差过大。在虚拟机里,宿主机和客户机可能争夺对时,应当只保留一种同步方式。在自己管理的网络中,让所有机器指向同一个内部时间源,各机器日志的时间才能彼此对得上。
提前应对2036年的回绕
NTP用一个从1900年开始计数的32位秒计数器,这个数值会在2036年回绕。协议用“纪元”(era)编号来处理这个问题,现代实现会假定时间接近当前日期来消除歧义。但无法升级的老旧嵌入式设备可能出问题,所以像工业控制器这类长期使用的设备,最好提前清点。这与更有名的32位Unix时间戳2038年问题类似,但二者是不同的问题。
常见问题
电脑时钟不准,实际会造成什么问题?
常见的表现包括:访问本来正常的HTTPS网站却弹出证书错误、双重验证(OTP)验证码反复被判定为无效,以及难以按正确的时间顺序比对多台服务器的日志。
手机也是用NTP来对时的吗?
是的。大多数手机只要在设置中开启类似"使用网络提供的时间"这样的选项,就会通过运营商网络或互联网自动同步时间。如果关闭这项设置,手机就只能依赖自身内部时钟,时间可能会随着使用逐渐产生偏差。
NTP放大攻击现在还是问题吗?
最著名的案例源于旧版ntpd的monlist命令会返回一长串最近的客户端列表,后来的版本已修复。已更新、并且只应答预期客户端的服务器,对攻击者的价值要小得多。仍有风险的是暴露在互联网上、长期没有更新的旧设备。
手机从运营商网络获取的时间和NTP是一回事吗?
移动网络本身也会下发时间,手机会根据设置使用运营商时间或NTP式的互联网对时。两者都以UTC为基准,但运营商时间有时精度较粗,需要更精细的精度时通常使用互联网对时。
客户端应该配置几台时间服务器?
配置三四台以上独立的服务器,即使其中一台出错也能被识别并剔除。只用一台会形成单点故障,用两台则在结果不一致时无法判断哪一台正确。