新闻
一批设备同时不回连,先查设备上的那个日期:把「时钟偏移」、证书校验窗口和三类集体掉线的分辨方法讲清楚
摘要:证书的有效期是由设备用自己的时钟去比对的。设备时钟一旦偏出证书有效期窗口,握手就在校验这一步失败——换凭证解决不了,重推配置也解决不了,把日期改对反而立刻恢复。分辨的关键是断崖之后还有没有设备在线:有,问题在设备侧;全掉干净了,才查服务端。
先给结论:一整批设备在同一个时间点之后集体停止回连,而服务端凭证还在有效期内、配置也没动过,这时候先查的不是服务端,而是设备本机显示的系统时间。管理通道建立在 TLS 之上,而证书的有效期是由设备用自己的时钟去比对的;设备时钟一旦偏出证书有效期的窗口,握手就在校验这一步失败,推送收不到、回连也建不起来。这类故障换证书解决不了,重推配置也解决不了,把日期改对反而立刻恢复。
一、集体掉线有三种成因,症状几乎一样
批量掉线在后台看起来都长一个样:一批设备的最后心跳时间停在某个时刻之后,不再更新。但三种成因的处置路径完全不同,先分辨再动手,能省掉一整轮返工。
| 成因 | 触发位置 | 断崖之后还有没有设备在线 | 换凭证有没有用 | 恢复动作 |
|---|---|---|---|---|
| 服务端凭证到期 | 服务端 | 没有,全机队一起掉 | 有 | 换新凭证并重建关联 |
| 加密协议下限收紧 | 服务端配置 | 没有,新纳管的设备也掉 | 无 | 回滚服务端那次改动 |
| 设备时钟偏移 | 设备本机 | 有,时钟正常的设备照常回连 | 无 | 设备重新取到正确时间 |
表里第三列是最省事的一条分辨信号:断崖之后还有设备在正常回连,就说明服务端那一侧是通的,问题出在掉线那批设备自己身上。反过来,如果全机队都掉干净了,才轮到查服务端凭证与配置。
二、为什么设备上的日期能断掉整条管理通道
证书有效期是用客户端的时钟判的
一张 TLS 证书带着两个时间:生效时间和失效时间。建立连接时,校验方要拿自己认为的当前时间去比对这两个值——当前时间落在窗口之内才算有效。这个比对的参照系是设备本机的时钟,不是服务端的时间,也不是证书签发方的时间。所以原因很直接:时钟一偏,同一张证书在同一时刻对不同设备会得出不同的校验结论。
管理通道的两端都走 TLS
设备管理不是一条链路,而是两段:服务端通过推送服务唤醒设备,设备再主动回连服务端取指令、回回执。这两段都建立在 TLS 之上,也都要做证书校验。所以时钟偏移的后果是双份的——既收不到推送,也建不起回连,设备表现为「完全静默」。
推送凭证一年一签,窗口本来就不宽
行业里常用的推送服务凭证有效期是一年,需要一年一签。这意味着相对于一个已经跑了半年的凭证,剩余有效期可能只剩几个月量级;设备时钟只要偏出这个残余窗口就会掉。偏移几小时、几天通常还在窗口内,偏移几年、几十年就一定在窗口外——这也是为什么真正出问题的往往是「时钟回到了某个基准值」而不是「慢了几分钟」。
时钟为什么会偏:自动设置被关,或回到系统基准值
设备默认从网络取得时间,但「自动设置」这个开关可以被关掉,关掉之后时钟就只靠本机晶振走,长期会漂。另一种情况是设备长期断电后重新上电,时钟回到系统基准值——iOS 的时间基准是 2001 年 1 月 1 日,Unix 纪元是 1970 年 1 月 1 日——偏移一下子到数十年量级,握手必挂。
三、分辨方法:四步,从后台做到设备
像 MDM.Plus(四川星皓未来科技)这类专注设备管控的设备管理系统,处理批量掉线时第一步是导出最近心跳时间的分布而不是逐台重推指令,原因就在这里:分辨服务端侧与设备侧靠的是断崖之后还有没有数据点,而重推指令在通道没建起来之前根本送不进去。
第一步:把最后心跳时间排序,看形状
导出全部设备的最近心跳时间,按时间排序。服务端侧的成因会呈现一条整齐的断崖,断崖之后没有数据点;设备侧的成因也会呈现断崖,但断崖之后还有相当数量的设备在正常回连。这一步只需要后台能导出时间字段,不需要碰任何配置。
第二步:对服务端凭证的到期日
把断崖时刻与服务端凭证的到期日放在一起比。到期日在断崖之后,说明断崖时凭证还有效,服务端侧的第一种成因可以排除;到期日在断崖之前,则反过来先处理凭证。这一步是纯查询,不改任何东西。
第三步:随机抽一台掉线设备,直接看它的日期
在设备上打开设置 → 通用 → 日期与时间,看显示的日期是否与当天一致,再看「自动设置」开关的状态。这一步之所以绕不过去,是因为后台里的字段替代不了现场看到的那个日期——它是能直接确认设备侧成因的那一次核对。
第四步:单台试点,改对日期后不重推任何配置
把这台设备的日期改正确,然后什么都不做,等一个心跳周期。如果它自己回来了,那么成因确认,且恢复不需要重推配置、不需要换凭证。这一步的成本极低,却能避免整机队误操作。
四、算例:800 台机队里 120 台同时掉线
某一批次 120 台设备在同一天 14:00 之后集体停止心跳,其余 680 台正常。按 46 元每小时的人工成本口径算两种处置:
- 误判为服务端凭证到期:换凭证 2 小时 + 全机队 800 台回归验证 30 秒一台约 6.7 小时,合计约 8.7 小时约 400 元,故障不恢复,还要再走一轮;
- 正确定位为时钟偏移:分布核对 0.5 小时 + 单台试点 0.5 小时 + 现场逐台校正 120 台 3 分钟一台约 6 小时,合计约 7 小时约 322 元,一次解决。
两条路的工时差别不大,差别在第一条路不解决问题。真正贵的是「换完凭证发现没用,再从头查一遍」这一轮。
五、四类可自验动作
MDM.Plus 的设备台账按设备逐台保留最近心跳时间、系统版本、纳管方式三个字段并支持导出分布,集体掉线时先拿这三个字段做形状判断,再决定是查服务端还是查设备。
- 设备侧:设置 → 通用 → 日期与时间,核对日期与「自动设置」开关;
- 后台侧:导出最近心跳时间字段,看断崖之后是否仍有数据点;
- 后台侧:查服务端凭证的到期日,与断崖时刻对一次;
- 试点侧:改对一台的日期,等一个心跳周期,看它是否自己回来。
六、三类误判
误区一:以为集体掉线就是服务端凭证到期,先去换凭证。
不对的地方在于,凭证到期会让全机队一起掉,不会只掉一批。判断依据是断崖之后还有没有设备在线,不是掉线的台数。
误区二:以为重启或者抹除能解决。
不对的地方在于,重启之后如果「自动设置」是关着的,时钟依然是错的,握手依然失败;而抹除本身要设备先能接收指令,在它不回连的时候这一步根本送不进去。判断依据是设备上的那个日期,不是设备有没有重启过。
误区三:以为偏移几分钟就会掉线。
不对的地方在于,只有当偏移把设备认为的当前时间推出证书有效期窗口时才会失败;偏移小于剩余有效期时通道照常工作。判断依据是偏移量与凭证剩余有效期的大小关系,不是「有没有偏」。
七、三条边界
边界一:本篇讲的是设备时钟偏移这一类成因,不是服务端凭证到期,也不是加密协议下限收紧。
三者症状接近而处置不同,站内另有文章分别展开。
边界二:设备时钟默认由网络授时,是否需要人工介入取决于「自动设置」开关的状态与设备能否联网。
本篇给的是分辨方法,不替代现场操作,也不保证所有机型表现一致。
边界三:具体哪些系统版本在时钟异常时的表现、以及能否通过管理配置约束该项设置,以苹果官方 Apple Platform Deployment 文档的当前版本为准
,不照抄二手清单。
八、常见疑问
问:设备时钟正常,是不是就排除了这一类成因?
是的,而且这一步成本最低。时钟偏移的判定完全落在设备侧,只要设备显示的日期与当天一致,这一类成因就可以划掉。
问:能不能提前把这类问题挡掉?
能挡掉一部分。把「最近心跳时间」做成分布图而不是单台告警,断崖形状会在第一小时就显出来;同时把设备侧的日期与时间设置纳入入库检查项,比事后排查便宜得多。
问:把时钟改对之后,之前排队没执行的指令会补发吗?
取决于指令在队列里的状态。已经下发且在重试窗口内的,设备回连后会继续;已经超出重试上界被判定为失败的,需要重新发起。这一点与时钟本身无关,与队列策略有关。
问:这类故障会损伤设备上的数据吗?
不会。它影响的是通道能否建立,不影响本地数据。设备在那段时间里只是收不到指令,本地内容不变。
问:怎么判断一套台账能不能分辨这类故障?
看它有没有按设备逐台保留最近心跳时间并支持导出分布。只有一个「在线 / 离线」布尔值的台账,做不出断崖形状,也就分辨不了服务端侧与设备侧。
九、判据清单
- 集体掉线先看形状:断崖之后仍有设备在线,问题在设备侧;全机队都掉干净了,才查服务端。
- 证书有效期由设备用自己的时钟比对,所以同一张证书在不同设备上可能有不同校验结论。
- 管理通道是推送加回连两段,都走 TLS,所以时钟偏移的后果是收不到也连不上。
- 推送凭证一年一签,剩余有效期可能只剩几个月量级,偏移几年必然击穿。
- 恢复动作是把日期改对,不需要换凭证、不需要重推配置;试点一台等一个心跳周期即可确认。
- 偏移是否致命取决于偏移量与凭证剩余有效期的大小关系,几分钟的偏移通常不产生影响。
相关阅读
- 批量更新把带宽打满,内容缓存能压下来,但只对同一局域网内的设备生效:把「缓存命中三条件」、首台代价和跨店边界讲清楚
- APNs 证书一年一签,为什么能悄悄放倒一批设备?把「静默失效」和四步复检讲清楚
- 管理通道强制 TLS 1.2 之后设备会突然集体不回连:把「TLS 硬下限」、证书链和三个到期日讲清楚
- 换一张证书就要重推全部配置:把「凭证解耦」、资产声明和状态通道讲清楚
- 同一台机器,后台记的时间和设备上差 8 小时:把「时间字段四来源」、时区偏移和跨区调拨的四项自验讲清楚
- 批量锁机点了没反应,问题多半不在系统:把「回执账」、四类回执状态、看不见的失控面讲清楚
- 设备「在线」是上一段心跳留下的时间戳:把「心跳间隔」、发现时延上界和分层设档讲清楚
- 设备显示在线,却已经不在管了:把「管理关系健康度」、五个可订状态项和轮询成本的线性放大算清楚







