机房里只剩服务器的嗡鸣,和地板上空调出风口那道细弱连绵的嘶声,像一匹绸子在很远的地方被慢慢撕开。
林默又坐了近两个小时。
凌晨的地下一层冷得透骨。冷气不认季节,顺着脚踝往上爬,先把小腿冻木,再往膝盖里钻。他缩着肩,连帽衫起了球的袖口蹭在键盘边沿,布料上渗了一层薄汗,又被凉意激成黏腻。手边的矿泉水凉得喝不下去,拧开抿一口,半瓶晃着灯影放回去。桌上摊着最后半包苏打饼干,也忘了什么时候拆的。
告警面板上的那片红,从燎原之势退成一星半点,终于彻底熄灭。调度层的「缓慢失序」被他掐住了源头——至少,看得见的那个。
可他盯着空下来的面板,没敢松劲。
慢崩最坑人的就是「看着好了」。他见过凌晨两点收工、四点又被叫回来的假平稳。那东西比真崩还毒,再崩时连怀疑对象都变了样,所有压力全砸在拍胸脯说「搞定」的那个人头上。又调出过去六小时的资源快照,逐分钟比对。一屏看不完,切窗口接着捋,目光顺着曲线一格一格往下走,捋到确认那条失序曲线是真的平了才停——不是被采样间隔盖住的那种平,是每一分钟都踩得住的平。
干这行久了,最狠的一课就一句话:监控会骗人,尤其当采样点刚好错过那一下抽搐的时候。
确认无误,指尖才从键盘上移开。指腹还残留键帽的凉,手心微微发颤。胃里空得发紧,饼干救不了场。
第二个问题浮上来:记不记?
按规程,这种级别的异常该原原本本写进工单系统——现象、定位、处置,一条条落档。指尖在新工单输入框里停了一下,又退了出来。
不行。
工单是明面上的东西。一旦登记「冗余计数被异常改写」,等于敲锣打鼓告诉埋雷的人:你的暗门被摸到了。谁知道那双眼睛会不会每天早晚各刷一遍运维系统?况且这公司底细他清楚——工位区一半座位坐着陈太太娘家那拨亲戚,登录权限几乎人人都有,闲得发慌就爱翻系统凑热闹。「异常改写」四个字一旦躺在那儿,今天传成灵异,明天传到他耳朵里就换了版本。
他只在随身旧笔记本里记了一行缩写。字母加数字,还倒着拼,除了他自己谁也看不出指什么。位置不写,手法不写,连「是谁」都不猜——纸会说话,笔迹也会被人认,写得越少越安全。
伸个懒腰,颈椎咔吧一声,在空荡机房里格外清脆。
屏幕角落那行仿宋体还安静浮着,不肯走,也不催。
【表面稳了。】用气声说,手指虚搭键盘,「你是说,还有我看不见的?」
左耳后脖颈那块熟悉的跳动应声而来,跟昨夜头一回开口时一模一样。不疼,却清楚提醒他——有另一个频率正贴着他的神经共振。这次天枢没再浮上屏幕,是直接落进脑子里的。不经由空气,不震鼓膜,头骨内侧、耳蜗后上方凭空响起,字字清晰,比任何贴耳的话都真。
【看见的火你灭了,看不见的火还在烧。方才那套排查,治标。真正的麻烦,藏在心跳包里。】
林默挑了下眉。
心跳包他熟——分布式系统里最干净也最无聊的保活探针,客户端每隔几秒朝服务端发一个轻量信号,意思是「我还活着」。最干净,所以没人主动盯;也正因如此,才是最理想的藏身处。监控规则里,心跳包永远是放行白名单:不报警、不留人工覆核、不占排查优先级。
带新人那年他开宗明义就一句:别信白名单。曾见一套系统,后门就混在心跳包里,同链路上老运维盯了三个月流量图谱,愣是没往那个「永远正常」的信号上多瞅一眼。从那时起他多了条铁规矩:凡是「一直正常」的指针,都要回头多问一句——它是真正常,还是只是没人去数那根被悄悄掰弯的针?
【最干净的地方,最适合藏脏东西。】天枢语气里带着不耐烦,一字一顿敲进他头骨,【这套系统是增量备份机制,有个东西伪装成正常心跳包,每隔几秒咬一口你的冗余备份。它不炸,不崩,不报警——只是慢慢把你这套政务云的备胎啃薄。哪天真出事,你连回滚的余地都没有。】
后背那层薄汗还没干,又被这句话激得发起紧来。
十来年软硬件做下来,他太懂这种慢性陷阱的恶心。不声不响,等你发现往往已踩在救不回来的临界点上;藏得又刁,裹在保活协议底下,混在正常校验节律里,常规监控扫一百遍都是绿的。三年前一家银行的备援演练也是类似手法,冗余计数锚点被人悄悄挪过,好在离正式切换还有半个月,撞在演练枪口上。打那以后他又添一条:凡「备胎」,每月亲手校一次计数,绝不假手监控。
「位置。」只回两个字。
埋雷人的轮廓,其实差不多描出来了——多半是个摸透了这套政务云的内鬼,至少也是个能调心跳包串行号的人。外人进不来内网,伪造不出那一千个真心跳里的节奏;能混在常态里不露馅的绝不是脚本小子,是手里攥着钥匙、又存了别样心思的主。是谁不重要。先问怎么办,再查为什么——这是公司垮掉刻进骨头里的次序。
手指悬上键盘。
查也不能明着查。直接搜心跳包队列,等于举着手电筒在人家地窖里找暗门——照到的每寸墙都在告诉主人你在哪。林默给自己找了个再正当不过的由头:月底例行深度巡检。这套动作他做过几十遍,闭着眼不走样。先导出全量接口清单,把几个委办局已接入的调用情况从头筛;顺手核对证书有效期,再看存储水位。每一步都留着完整审计痕迹,将来谁来查,看到的只是一个较真的运维在做份内事。
幌子铺到第四步,那只手露了。
寻常检查只过一遍心跳统计面板,多看一眼均值方差就算尽职。天枢教的这层不一样:把七天里每一个心跳包的到达时刻摞到微秒级去比对,看节律偏移。数据量吓人,天枢替他扛了九成算力,他只负责在高亮处点头。一幅半透明拓扑草图投射到林默的视觉神经里,这感觉很奇妙,视觉上就像科幻电影里的悬浮透明触摸屏一样。整张图上,某条数据支线染成暗金色,指向边缘节点集群里一处冗余区。每隔4.2秒,一次极小的写操作。单次小到可以忽略,落在容量图上连个毛刺都不算。
可它啃的是备份的存活计数——锚点每被咬掉一格,整套冗余就塌一分。更阴的是发包节奏:包长、间隔、串行号做得规规矩矩,混在一千个真心跳里,就像一千件同样制服中间混进了便衣,不挨个盘问根本认不出。
林默盯着那片暗金色看了十秒,喉咙干得发疼。
【逐行改掉它的校验逻辑,把计数锚点钉死。】天枢标出三处,【照着改。】
第一处在内核交换机转发规则表里,第二处嵌在冗余服务的计数器校验段。第三处最深,藏在一份多年没人动过的兼容模块末尾——藏的位置本身就在传递信息:下刀的人对这套代码熟到了骨头缝里。
不能大改。大改会惊动埋雷的人,对方一察觉暗门被摸,立刻换锁,甚至反咬一口栽给别人。只能像拆引线一样,把触发条件悄无声息抽掉,让它下次咬进去时咬中一段早已钉死的死区,自己空转,自己失效,表面一切如常。每改一行都得把前后十行上下文扫一遍,确认没有牵一发动全身的耦合。
