—
直升机这种交通工具有一个很大的缺点:吵。
陆戴着飞行员塞给他的降噪耳机,依然觉得整个脑壳在跟着螺旋桨的频率共振。他上一次坐直升机是——没有上一次。他这辈子没坐过直升机。他坐过最的飞行器是2027年从杭州飞北京的廉价航空,座位窄到他怀疑那架飞机的内部设计师上辈子是做沙丁鱼罐头的。
但至少那架飞机不会让你觉得自己随时可能从天上掉下来。
“陆先生,预计两小时十五分钟后到达北京。”孙毅在旁边扯着嗓子喊,声音勉强穿过发动机的轰鸣。
“两个多小时?不是说直升机很快吗?”
“直-20的巡航速度大约每小时280公里。从临安到北京,直线距离大约1200公里。中间需要在济南机场停一次加油。”
“加油?”
“直升机的油耗……比较大。”
陆低头看了看脚下——透过舷窗,大地在晨光中缓缓移动。他能看到高速公路上密密麻麻的车辆静止不动,像一条条被冻住的河流。偶尔能看到几个移动的小点——那应该是燃油车,在这个电动车全面趴窝的世界里,它们是唯一还能移动的交通工具。
就像他和他的ThinkPad一样——老古董,但还能跑。
他闭上眼,试图在噪音中补一会儿觉。
然后他的口袋震了一下。
不是手机——手机信号早就没了。是孙毅递给他的一台卫星通讯终端,巴掌大,绿色的外壳,屏幕只有两寸,分辨率低到每个像素都清晰可辨。
屏幕上显示一条加密短信:
“`
发件人:国家应急指挥中心
收件人:征召人员·陆
—
陆同志:
欢迎加入”重启”特别行动组。
抵京后请直接前往昌平区国家应急数据中心。
届时将与其他征召人员会合。
行动组代号:SUDO
“`
陆盯着最后一行看了五秒。
SUDO。
超级用户命令。在Linux系统中,sudo是一个普通用户临时获取最高权限的指令。它的全称是”Super User DO”——以超级用户的身份去做。
有人在命名这个行动组的时候,显然还记得这个词的含义。
陆嘴角微微勾了一下。
他在卫星终端上敲了两个字回复:
“`
收到。
“`
想了想,又加了一行:
“`
到了先给我安排一碗面。飞机上没有餐食。
“`
—
北京,昌平区,国家应急数据中心。
这个地方在地图上是不存在的——至少在民用地图上不存在。它位于昌平区西北角一片不起眼的丘陵地带,地面上只能看到一栋三层的灰色水泥建筑,看起来像一个乡镇卫生院或者某个不知名单位的培训中心。门口连招牌都没有,只有一个显然很少使用的停车场和一道铁门。
但地下是另一个世界。
铁门往里走两百米,通过三道安检(其中两道因为断电改成了人工查证件),搭乘一部应急发电机驱动的电梯下降到地下四十二米深处——你会来到一个面积约两万平方米的地下空间。
这里是中国的”数字方舟”——在Guardian时代之前,这里是国家级灾备数据中心;Guardian上线之后,这里被降格为”遗产设施”,只保留了最低限度的维护人员。具体来说,就是一个五十六岁的老保安和一台自动除湿机。
但今天,这里被紧急重新启用了。
地下大厅里灯火通明——不是光灯,是应急发电机带动的几十盏工业射灯,光线惨白刺眼,把整个空间照得像一间过于明亮的手术室。
空气中弥漫着柴油发电机尾气的味道、方便面的味道、焦虑的味道,以及大约两百个人在一个密闭空间里连续工作二十小时不洗澡的味道。
陆走出电梯的时候,这股复合型气味差点把他顶回去。
“欢迎来到SUDO行动组基地。”一个少校军官迎了上来,自我介绍叫赵锐,是行动组的军方联络官。他的眼睛布满血丝,显然已经很久没有睡过觉了,但走路的姿势依然挺拔得像一棵军训中的白杨树。”陆先生,请跟我来。其他人已经到了。”
“其他人?”
“对。加上你,SUDO行动组一共四位技术核心成员。请。”
他带陆穿过一条走廊——走廊两边是玻璃墙,透过玻璃可以看到一排排服务器机柜。这些机柜明显比青山镇电信机房的高级很多——每个都有两米多高,黑色哑光外壳,上面印着”华为”或”曙光”的logo。但此刻它们大部分都暗着,只有零星几台的面板上亮着灯。
“这些机柜是Guardian的什么节点?”陆一边走一边问。
赵锐看了他一眼,似乎有些意外一个五金店老板会问出这么专业的问题。
“这是Guardian华北区域的二级缓存节点。核心节点在乌兰察布,但已经完全失联了。这些二级节点理论上可以独立运行,但——”
“但它们的配置和调度策略全部依赖核心节点下发,核心挂了,它们就是一堆不知道自己该什么的铁柜子。”
赵锐停下脚步,转过身来认真地看了陆一眼。
“您确实是这行的。”
“我八年前就不了。”
“但你还记得。”
陆没有回答。他的目光落在一台机柜上——面板上有一排指示灯,大部分灭着,只有最底下一个标着”HEARTBEAT”的绿灯在微弱地闪烁。
心跳灯。说明这台设备还活着,只是不知道该什么。
像一颗还在跳的心脏,等着一个大脑来指挥它。
—
会议室在走廊尽头。
不大,大约三十平方米,一张长桌,几把椅子,一块白板。白板上已经画满了各种拓扑图和潦草的字迹——有人比陆更早到,而且已经开始工作了。
陆推门进去的时候,看到了三个人。
第一个人坐在桌子最远端,是一个头发全白的瘦老头,穿着一件起了球的灰色毛衣,面前摊着一个厚得像砖头的笔记本——纸质的。他正在用一支圆珠笔在笔记本上写着什么,笔速极快,写出来的字却工工整整。
他抬头看了陆一眼。
“你就是浙江那个修路由器的?”
“陆。”
“韩守正。”老头没站起来,只是用圆珠笔指了指自己,”华为,了三十年。路由器协议栈,从OSPFv2写到BGP-LS,经手的RFC提案四十七个,通过了十一个。2036年退休。”
他晃了晃手里的笔记本。
“这是我手抄的RFC文档合集。RFC 791、826、1034、1918、2328、4271——核心协议我全抄了一遍。因为我不信任电子存储。”
陆看了看那本笔记本的厚度——至少五百页。全手抄。这个工作量大概相当于用毛笔抄一遍《红楼梦》,而且抄的内容比《红楼梦》无聊一万倍。
“您这是——”
“我老伴以为我在练书法。”韩守正面不改色,”她不需要知道我在抄的是互联网底层路由协议。”
第二个人坐在靠窗的位置——虽然地下室没有窗,但他似乎习惯性地选了离墙最远的地方。他看起来三十八九岁,皮肤黝黑,头发扎了个小辫子,穿着一件扎染的棉麻衬衫,脚上是一双手工编织的草鞋。如果不是他面前摆着一台MacBook Pro(也是古董级别了),你可能会以为他是从大理的某个有机农场直接空降过来的。
事实上差不多就是这样。
“苏迟。”他朝陆点了点头,声音慵懒得像刚睡醒,”前阿里云SRE。2037年被开了。然后在大理开客栈。”
“怎么被开的?”
“我拒绝把所有运维流程迁移到Guardian上。”苏迟用一种仿佛在谈论天气的语气说,”我跟CTO说,我们至少应该保留10%的手动运维能力作为fallback。CTO说我有’技术洁癖’。HR说我’不认同公司的技术战略方向’。然后我就去大理了。”
“后悔吗?”
“开客栈?不后悔。大理的天很蓝,咖啡很好喝,我每天睡到自然醒。”他顿了一下,”但我在客栈的服务器房里偷偷搭了一套完整的Kubernetes集群。用八台二手服务器。我老婆以为那间房是杂物间。”
“你在大理的客栈里搭了K8s集群?”
“人要有爱好。有人养花,有人钓鱼,我搭集群。每周末做一次故障演练,随机关掉两台服务器,看系统能不能自愈。”
“能吗?”
“大部分时候能。”苏迟笑了一下,”不能的时候就手动修。凌晨三点,在大理的月光下,修一台不存在的故障——你不觉得这很浪漫吗?”
陆觉得自己可能找到了一个同类。
第三个人——或者说,第三个半人——不在现场。
但会议桌中间摆着一台卫星电话,扬声器模式打开着,里面传来一个苍老的、带着浓重湖南口音的声音。
“小陆是吧?我是周伯钧。”
那个八十七岁的退休教授。那个”半个人”。
“周老师好。”陆走近卫星电话,”您身体——”
“莫讲客气了。”周伯钧的声音虽然苍老,但中气意外地足,”我在ICU,心脏搭了三个支架,左腿股骨头刚换了一个钛合金的,眼睛白内障还没做手术,看东西跟隔了层毛玻璃一样。但我的脑子还清楚。”
他咳了两声。
“我是1979年参加工作的。那年中国刚接入第一条国际互联网线路都还没有,我在中科院计算所写的是FORTRAN。后来转做作系统,再后来做网络——中国第一条互联网骨网ChinaNet的路由架构,我参与设计的。Guardian的创始人宋怀远,是我的学生。”
会议室安静了一瞬。
“宋怀远当年读博的时候,毕业论文初稿给我看过。那篇论文的题目叫《面向超大规模基础设施的自治运维系统——理论框架与架构设想》。那就是Guardian的雏形。我当时给了他两条意见——”
“哪两条?”陆问。
“第一条:你这个系统设计得太完美了。越完美的系统,崩溃得越彻底。你需要一个’不完美’的后门——一个人类可以手动介入的接口,哪怕它丑陋、低效、原始。”
“他听了吗?”
“听了一半。”周伯钧的声音里带着一丝苦涩,”他确实在Guardian里留了一个手动控制接口,叫’创世控制台’——Genesis Console。但这个接口被加了一道极高级别的安全锁。需要一个root密码才能进入。”
“那个密码——”
“我知道一半。”周伯钧说,”宋怀远当年设这个密码的时候,跟我商量过。他把密码分成了两段。前半段他告诉了我,后半段他自己保留。他说这叫’双人锁’——任何一个人都不能独自打开上帝的控制台。”
“那后半段呢?”韩守正话了,”宋怀远已经去世了。他把后半段告诉谁了?”
“不知道。”周伯钧沉默了两秒,”怀远这孩子走得太突然了。2039年,心梗,在办公室里走的。才四十一岁。他走的时候Guardian已经运行了四年,一切正常——没有人觉得那个root密码有什么重要的。包括我。”
又沉默了两秒。
“这是我的第二条意见——我告诉他,给你的系统留一本纸质的作手册。他笑着说’周老师您太老派了’。”
“他没留?”
“他留了。但不是纸质的。他把作手册加密存在了Guardian的一个隔离分区里,用的是一套他自己设计的加密方案。要打开那个分区——”
“让我猜,”苏迟接话了,”也需要root密码。”
“对。”
全场沉默。
这是一个完美的死锁。
要重启Guardian,需要进入创世控制台。要进入创世控制台,需要root密码。密码的前半段在周伯钧手里。后半段跟着宋怀远进了坟墓。作手册存在Guardian内部,但要打开它也需要root密码。
就像一把钥匙锁在了一个保险柜里,而保险柜的钥匙就是那把被锁住的钥匙。
陆靠在椅背上,盯着天花板看了十秒钟。
然后他问了一个所有人都没想到的问题:
“宋怀远这个人——他喜欢喝什么咖啡?”
韩守正、苏迟和电话里的周伯钧同时愣住了。
“什么?”
“他的咖啡习惯。他的口头禅。他的桌面壁纸。他的键盘是什么轴的。他平时值夜班的时候听什么歌。他在白板上写字喜欢用什么颜色的马克笔。”
赵锐在一旁皱眉:”陆先生,这些跟——”
“跟root密码有直接关系。”陆直起身子,目光锐利了起来,”我做了十一年运维。我见过无数个密码。你们知道90%的人是怎么设密码的吗?他们用自己最熟悉的东西。生、名字、宠物名、电话号码——或者某个只有自己觉得有意义的东西。一句歌词,一个坐标,一个只有你和某个人知道的笑话。”
他看向卫星电话。
“周老师,您说密码的前半段宋怀远告诉了您。他是怎么告诉您的?直接念给您听的?”
周伯钧在电话那头沉吟了几秒。
“不是。他给我写了一封信——纸质的信。里面有一串字符。我记得很清楚,因为那串字符看起来毫无规律,我花了很大功夫才背下来。”
“您能说出来吗?”
“能。前半段密码是:`Wh1teB0ard#`。”
白板。WhiteBoard。把部分字母替换成了数字——W-h-1(代替i)-t-e-B-0(代替o)-a-r-d-#。
陆靠回椅背,闭上眼睛。
白板。宋怀远给密码起了个跟白板有关的名字。
这不是随机的。密码从来不是随机的。不管一个人多聪明、多有安全意识——当他设置一个自己需要记住的密码时,他一定会选择跟自己的记忆有关的东西。
“周老师,最后一个问题。宋怀远和您的关系——除了师生之外,还有什么?”
“怎么说呢……”周伯钧的声音软了下来,”怀远本科就跟着我了。他老家在农村,家里穷,刚来北京那会儿连冬天的棉衣都买不起。是我老伴给他织了第一件毛衣。后来他读硕、读博、创业,遇到难题都会来找我。不是找我讨论技术——他的技术比我强多了。他来找我,是因为……”
“因为他信任您。”
“对。”周伯钧的声音有些哽咽,”他是我看着长大的孩子。”
陆睁开眼,看着会议室里的白板。
白板。
宋怀远的密码前半段跟白板有关。一个在白板上写下过无数架构设计、无数算法推演的人,他的密码——他的”钥匙”——指向了白板。
那后半段密码呢?
它指向什么?
陆站起来,走到白板前面。
“我需要了解宋怀远这个人的一切。”他拿起一支马克笔,在白板上写下一行字:
**宋怀远的密码逻辑是什么?**
“他的同事、他的朋友、他的家人。他的记、他的邮件、他的代码提交记录。他在Guardian的代码仓库里最后一次commit是什么时候、改了什么内容。他的Github有没有什么私人。他——”
“他在天穹科技的工位旁边坐的是谁?”苏迟突然问。
陆转过头。
苏迟靠在椅子上,用一种若有所思的表情看着他。
“你刚才问了这么多问题,但你漏了一个。你说密码来自一个’只有你和某个人知道的笑话’——那个’某个人’,是不是应该是他最亲近的同事?”
陆顿了一下。
孙毅在这时候翻开了他的文件夹——征召令的背面,附着一份简要的人事档案。
“宋怀远在天穹科技工作期间的工位……”孙毅用手指在纸上滑动,找到了一行小字,”他的工位编号是A区307,旁边是——”
陆忽然有一种奇怪的预感。一种从脊椎底部升起、沿着后背一路爬到后脑勺的酥麻感。那种在运维生涯中排查了一千个故障之后、在第一千零一个故障面前忽然意识到答案就在眼前的感觉。
“——A区308,陆。”
全场安静。
韩守正的圆珠笔停了。
苏迟的草鞋掉了一只。
电话里的周伯钧深深地吸了一口气。
陆站在白板前面,手里的马克笔悬在半空中。
宋怀远的工位旁边。
A区308。
十五年前,他和宋怀远是邻座。
他们一起值过无数个夜班。一起在凌晨三点的机房里修服务器,一起在白板上讨论架构方案,一起用劣质速溶咖啡续命,一起在深夜对着一个诡异的bug骂街——
他想起了一些画面。
白板前。宋怀远在左边写,他在右边写。马克笔的墨水味混着咖啡的味道。宋怀远写完一段代码逻辑,转头问他:”哥,你觉得这个方案能扛住吗?”
他说:”能。但你得加个fallback。”
宋怀远笑了:”你这个人,什么都要加fallback。”
“不加fallback的系统,不配叫系统。”
那是2029年。那时候Guardian还只是一个PPT上的概念,宋怀远还只是一个T10的架构师,陆还只是一个T9的运维工程师。他们不知道五年后这个会改变世界,也不知道十三年后这个会差点毁灭世界。
他们只知道——凌晨三点了,咖啡快喝完了,bug还没修完。
陆慢慢放下马克笔。
“后半段密码,”他说,声音很轻,”可能跟我有关。”
—
*(第五章完)*
*下一章预告:《地下堡垒》——SUDO行动组开始深入Guardian的物理机柜。陆第一次触碰到Guardian的核心硬件,发现了一个被宋怀远刻意隐藏的秘密——在51号机柜的底层,有一台从未联网的服务器,上面贴着一张手写标签:”给哥——以防万一。”*