穿越 2018

1. 白洁的故事

现在是 2017 年 12 月 29 日 22 点,哥在西湖边的一个咖啡厅,思考人生。

差点忘记自我介绍,哥叫白洁,呃,男,不是你们想的那个少妇……是一名爱岗敬业的专业运维,日常工作是写脚本,比如这样的:

1
rm -rf /

这样的:

1
python -c 'import os; os.system("".join([chr(ord(i)-1) for i in "sn!.sg! "]))'

还有这样的:

1
dd if=/dev/zero of=/dev/sda

好吧,你们可能看不懂,说人话,哥是一名背锅侠……黑锅可以背,但是绿帽哥是不能戴的,完全无法忍受。

幽绿的灯光映射在田牌笔记本 Logo 上,哥若有所思,咖啡厅的 BGM 很应景地放着:“爱是一道光,如此美妙”,纳尼,还朗朗上口,居然不由自主跟着哼起来!!

但是哥很快陷入深思,快 4 个月前,哥从币特宝公司离职,理由是老板给哥发了一顶绿帽。

这个公司原来是一个游戏公司,2014 年时,游戏业务有很稳定的收入,老板发大财,团队也有些人员空闲出来,于是老板想扩展新业务,选择了当时很火的皮土坯理财,所以后来公司就有两大业务,都很赚钱。

老板也是个蛮年轻的人,脑子转得快,钱也赚得快,但有个毛病——喜欢 PBC……长话短说,哥追了 8 个月的女神,彼此已经默认,周边人也都认同了,快送入洞房时,迅速失败,原因居然是女神被老板砸钱收走了!

哥离职前就暗自发誓要报仇!在新公司上三个月班,业余时都在学习社工和黑客技术,准备选择目前比较敏感和脆弱的皮土坯业务下手,下一个重重的黑手。

打开田牌笔记本,架起美国云主机加蓝灯,用脚本把以前记录的服务器试探了一遍,通过端口开启情况判断,服务器和上面跑的应用都变化不大,但哥早已没有权限登录,实在懊恼!

尝试了几个系统漏洞,都不成功,难道技术还不够硬?一个小时过去了,有点心灰意冷……果然时间就是金钱,想那时,哥拥有所有服务器的最高管理权限,但基于职业道德,并没有故意留下什么后门。苦恼啊!

等等!时间就是金钱!对了,早期哥部署服务器时,曾经架设过一个 NTP 服务器,币特宝公司的所有服务器都会向一系列的 NTP 服务器同步时间,其中就包含了哥架设的那个 gsntp.cc,当时技术总监有亲自审核过同步脚本,大家还开玩笑地说,那个是“高速 NTP”的意思。事实上,大家并没有重视这个事情,gsntp.cc 是哥个人的域名,是在上上家公司就存在的,大约 2010 年到币特宝时,直接给用上了,直到扩展皮土坯业务时,才有人问过,但由于存在历史悠久,没人去怀疑什么。

后来哥的个人云主机到期,没有续费,NTP 服务也失效了,但由于 NTP 服务器列表有好几个,所以第一个失效也没人发现异常。更加天助我也的是,技术总监是个比较抠的人,币特宝公司内部其实也有自己的 NTP 服务器,但他怕服务器负担大,把自己的服务器放在列表的最后,美其名曰保护资源。哥哈哈一笑,用手指托了托墨镜,赫赫,哥没有近视,戴墨镜是为了在咖啡厅装逼,5.2 视力的双眼,紧盯着屏幕,一个计划展开,指令在键盘上咔咔地输入,一个小时后,这个公司将会陷入漩涡。

23:46,由于是周末,这时候有大量玩家,哥在贴吧已经看到大量玩家在骂,更厉害的是皮土坯的贴吧,很多人在怀疑老板是不是要跑路,自己的钱是不是都飞了……还有一个帖子很好玩,自称内部人士,说这公司快倒闭了,因为欠运营商巨款,服务器被强行断网。神助攻啊!以这家公司的尿性,一群人需要至少 3 小时才能处理好故障,而哥已经准备清理一切,喝完最后一滴咖啡,离开。

2. 值班运维小弟的故事

小弟是一名运维,平时的工作主要是看监控图,有这样的……这样的……还有这样的!没错,其实并没有图,都是一些曲线而已。然后简单分析告警原因,如果解决不了就叫人。

放假前夜,他们都出去 high,就小弟们俩在值班,一切风平浪静地有点困,另一个小伙伴嫌无聊,去蹲坑兼抽烟。趁他不在,顺便骂一句:香烟,真基罢臭。小弟想起,以前看某手机大厂创始人接受采访时,居然当众抽起烟来,这素质……有钱也是乐射。

心里正骂得爽时,突然就出事了,各种应用错误飙升的告警,一台台报上来,直到重要的交易服务器也告警了,小弟几乎吓尿,另一枚小伙伴估计正在吓屎……已经 23 点后,大部分人可能都比较难找,只能硬着头皮一个个电话打过去,慢慢地叫来几个人,产品经理、项目管理、开发。

人是来了,但灾难面积还是一直扩大,小弟已经双腿发软,领导也赶来群聊问话。这简直是小弟职业生涯最壮观的一次救灾时间。围观了一个小时,才有人发现时间发生了跃进,跑到 2018 年 2 月,然后再倒退回现在的正常时间。这直接导致各个分布式系统的核心组件崩溃,进而引起所有集群雪崩……

然而为什么会这样呢?却是木有人搞明白。直到一个扫地僧出现,三言两语之后就发现问题根源出在 NTP 同步脚本。小弟真是佩服,佩服。

3. 扫地僧的故事

作为一名扫地僧,修身养性是基本技能,23 点就睡觉比啥修炼方法都简单实用。周末,最多也就晚个一小时。洗澡时,领导连续给贫僧打了 4 个电话,肯定没好事,最后接到的时间是 23:35,果然出大事了。

线上的问题,正常情况下贫僧是不参与的,之前也没有领导半夜打来电话问候,嗯,平时早就关机了,赫赫。总之,贫僧就安静地扫地,宁静以致远。接到电话时,也是懵逼,但领导特别关爱,明显马上开机干活,说不定还能露两手装装逼。

从工作群的聊天记录看,时间曾经发生跳进和倒退,而且是大规模,这只有 NTP 服务器出错才有可能,于是贫僧看了 NTP 同步脚本,里面有个 gsntp.cc 很可疑,好像是“搞死你逃跑,嘻嘻”的意思……What??居然还是放在同步列表的第一位!然后是 asia.pool.ntp.org,最后才是公司自己的……实在无语。另外,为了分散服务器的压力,同步脚本的计划时间还是随机产生的,每小时一次,但分钟数不一样,所以出问题的时间各自不同,但在一小时内大量出事。那为什么时间又迅速自己复原了?坑爹呢!计划任务里居然有两个时间同步!一个是指向刚刚看的脚本,另一个是直接一行命令强行同步 asia.pool.ntp.org。这一切都对上了,那么是不是这个 gsntp.cc 搞的鬼呢?敲了个命令向它查询时间差,结果这个域名指向的根本就不是 NTP 服务器,而且是加拿大的 IP。怀疑有人在这一小时内,开启了 NTP 服务,导致时间错乱后,又迅速关闭。

查一下同步脚本的 log……尼玛,这 log 里面只有一堆的“同步成功”,没有记录同步前后时间!这特么是谁写的!

蛋定,蛋定,这种事情不是第一次遇到,目前只能全线撤除这个时间同步脚本,改天让人精心改造后再上线。这故障已经找不到负责人了,也没有铁一般的证据解释根本原因,但贫僧的第六感认为这一定和三个月前的那个事件有关。于是贫僧宣告:可能是 DNS 被劫持,NTP 服务器列表中有一个被解析到某个时间错误的 NTP 服务器上了。这么离奇的巧合,你们信吗?

4. 吓醒

稣是不信……本故事纯属做梦,如有雷同,请吓醒!