单车拐上主路时,林悦的手机还在响。她单手扶着车把,另一只手划开语音消息,张锐的声音立刻炸出来:“服务器被打了三波ddoS,防火墙快扛不住了!你们到哪儿了?”
沈墨渊骑在前头,听见了也回头喊:“十分钟!别切主控权!”
“他们想接管调度系统!”林悦回了一句,脚下一用力,车轮转得更快。
二十分钟后,两人冲进实验楼机房。张锐正对着三块屏幕来回切窗口,额头上全是汗,看见他们进门,直接甩了鼠标:“你们再不来我就要手动断网了!”
林悦一把接过键盘,手指在触板上滑得飞快。日志滚动的速度几乎看不清,但她一眼就锁定了异常Ip的来源路径——不是外部攻击,而是内部模拟测试环境被误开了端口。
“谁动了测试容器?”她抬头问。
张锐举手:“我……我刚才想跑个新模型,顺手启了一下。”
“你启的是旧版沙盒,它和生产环境共用一个跳板机。”沈墨渊站到另一台终端前,调出拓扑图,“现在攻击流量正通过这个通道倒灌。”
“那怎么办?”张锐声音都变了。
“关容器,切备用链路。”林悦边说边敲命令,“沈墨渊,你去物理层拔一下b区交换机的冗余线,防止回流。”
沈墨渊点头,转身就往设备间走。
林悦盯着屏幕,等他确认断开,立刻执行了隔离策略。警报声渐渐停了,红色告警框一个个变灰。
张锐长出一口气:“活过来了……”
林悦靠在椅背上,抬手擦了把额头的汗,这才发现手心全是湿的。
“你手抖了。”沈墨渊不知什么时候回来了,手里拿着两瓶水,递给她一瓶。
“刚才是有点慌。”她接过拧开喝了一口,“我以为交接完就没事了,结果你们第一天就差点把系统干趴。”
“我这不是……想试试新功能嘛。”张锐挠头,“下次我先发群里问。”
“下次?”林悦挑眉,“你还想有下次?”
三人正说着,姜悦兮的消息跳出来:【听说你们在抢救系统?需要我带奶茶支援吗?】
林悦回了个“不用”,顺手把手机倒扣在桌上。
沈墨渊看了眼时间,“已经九点多了。”
“总不能让张锐一个人回去。”林悦站起来,“我再检查一遍日志,确保没有残留后门。”
接下来两个小时,他们三人围在一台终端前,逐条排查可疑记录。林悦负责读数据流,沈墨渊分析行为模式,张锐做标记和备份。
凌晨十一点,终于确认系统安全。
“可以收工了。”林悦伸了个懒腰,脖子发出轻微的咔哒声。
“你肩膀歪了。”沈墨渊忽然说。
“啊?”
他走过来,伸手按了按她右肩,“坐太久,肌肉绷着。”
“真的?”她试着动了动,果然有点酸胀。
“我帮你松一下。”他说着已经绕到她身后。
“等等——”她刚想回头,他的手已经搭上来。
不是捏也不是揉,而是用掌根缓缓压住肩胛骨边缘,一点点往下推。力道不轻不重,刚好卡在“有点痛但很舒服”的临界点。
“你还会这个?”她声音低了些。
“以前打比赛通宵多了,队里谁肩膀僵了我都按。”他另一只手托住她左臂,“放松点,别绷着。”
她慢慢垂下头,发丝垂下来遮住半边脸。
“左边也一样。”他换手操作,指节顺着脊柱两侧滑下去一寸,“这里也有结块。”
“你别往下按啊!”她猛地直起身子,耳根有点热。
“紧张什么。”他收回手,“我又不是没见过你穿队服打代码。”
“那也不行。”她转身瞪他,“下次提前说一声。”
“刚才你都快睡着了。”他笑,“再说,你不是挺享受的?”
“谁享受了!”她抓起桌上的笔袋砸过去,被他轻松躲开。
张锐在旁边默默收拾背包,假装什么都没听见。
“行了,送你们回去。”沈墨渊拿起外套,“张锐住南门,我先送他。”
“我自己骑车就行。”张锐摆手。
“这么晚了,不安全。”林悦站起来,“一起走吧。”
三人下楼时,夜风已经凉得刺骨。林悦拉高领口,沈墨渊看了她一眼,把自己的围巾解下来递过去。
“你不怕冷啊?”她问。
“我体温高。”他说,“你戴着。”
她没再推辞,把围巾绕上脖子,还带着他身上的热气。
到南门后,张锐挥手告别。林悦和沈墨渊继续往宿舍方向骑。
路上没什么人,路灯一盏盏掠过,照得地面忽明忽暗。
“今天谢谢你。”她忽然说。
“谢我按肩膀?”
“谢你一直在。”
他没接话,只是骑得慢了些,等她并上来。
“其实我知道,你们可以不用管这个系统的。”她低头看着车把,“毕业了,各走各的路也正常。”
“但它是我们一起做的。”他说,“就像……家里的盆栽,没人浇水就会死。”
她想起阳台上的那排多肉,笑了下:“你还真当它是活的。”
“它有心跳。”他指了指胸口,“每次报警,我都觉得像有人在喊我。”
她没说话,只把围巾又裹紧了些。
到她宿舍楼下时,已经快一点。
“上去吧。”他说。
“你不走?”她问。
“等你进楼。”
她转身要走,又停住,“明天……要不要一起去趟机房?我想教他们怎么设置自动熔断。”
“几点?”
“九点。”
“我八点半到。”
“不用那么早。”
“我想看看你教人的样子。”
她愣了下,“你是不是有点变态?”
“是。”他点头,“专一的那种。”
她翻了个白眼,快步走上台阶。
刚到二楼拐角,手机又响了。是系统监控群的消息:【自动巡检发现新异常,请相关人员确认】
她点开一看,是数据库连接池的负载曲线突然飙升。
“沈墨渊!”她冲楼下喊。
他立刻抬头。
“别走了,上来!”
他二话不说转身跟上。
两人重新打开笔记本,连上远程终端。这次问题更隐蔽——某个缓存键被反复读取,像是有人在暴力试探核心数据。
“不是攻击。”沈墨渊盯着日志,“是有人用脚本在刷用户权限表。”
“内部人员?”林悦皱眉。
“可能性大。”他调出登录记录,“最近三次异常访问,都来自同一个工位Ip。”
“张锐今天坐哪儿?”
“c区第七台。”他放大监控截图,“就是这台。”
林悦立刻拨通电话。响了五声,才被接起。
“张锐,你现在在哪?”
“我在……在网吧。”声音有点虚,“我朋友生日,我们在通宵打游戏。”
“那你电脑关了吗?”
“啊?我……好像没关。”
林悦和沈墨渊对视一眼。
“远程锁机,重置密码。”沈墨渊说,“明天让他写检讨。”
“还得做一次全员安全培训。”林悦叹气,“本来想让大家轻松接手,结果一个个都跟闯祸精似的。”
“新手都这样。”他靠在椅背上,“你当初第一次部署集群,不也把dNS配错了,导致全校断网两小时?”
“你怎么还记得!”她瞪他。
“我记得你被导师骂哭的样子。”他笑,“然后晚上躲在机房改配置,我陪你改到四点。”
“谁要你陪了?”
“你说‘一个人会睡着’。”
“那是……特殊情况!”
他不说话,只是看着她笑。
她被看得心烦,低头关电脑,“看什么看?”
“看你嘴硬。”他说,“明明每次遇到事,第一个想到的就是我。”
“我那是……”她卡了一下,“是出于效率考虑!”
“嗯,效率。”他点头,“那你现在效率够了吗?要不要我再给你按会儿肩?”
“你闭嘴!”她抓起枕头砸过去。
他笑着躲开,起身去拿外套。
“真走了?”她问。
“明天还要培训。”他拉开门,“八点半见。”
“别迟到。”
“从没迟过。”
门关上前,他又探头:“对了,围巾还我吗?”
“不还。”她抱紧枕头,“脏了,洗完再说。”
他笑了笑,关门离开。
脚步声在走廊尽头消失后,林悦走到窗边,看见他走出楼门,抬头看了眼她的窗口,才转身走远。
她低头摸了摸脖子上的围巾,指尖蹭到一处缝线——那里绣了个极小的“Z”,是之前她不小心剪破后自己补的。
原来他一直留着。
电脑屏幕还亮着,监控曲线平稳下来。她正要关机,忽然发现刚才被标记的Ip地址,在五分钟后又活跃了一次。
不是登录,而是一条加密请求,目标指向他们未公开的ApI调试接口。
她瞳孔一缩,立刻截图保存。
窗外,一辆共享单车停在路灯下,车筐里还躺着半瓶没喝完的水。