2 块钱,我学会了比 异地组网 和 SSH 更重要的一课
今天是我新实习的第二天。
上午的状态堪称完美,灵感迸发,顺手修复了团队内部工具的几个历史遗留 Bug,提交了几个赏心悦目的 PR。午饭后,我泡了杯咖啡,准备按照计划,深入学习一下性能分析领域的圣经——Brendan Gregg 的‘perf’教程。
就在我打开perf 圣经的那一刻,那个“旧世界”的幽灵,通过手机震动,精准地找到了我。
班长在群里艾特全体成员,语气急促地催促我们完成一个“全员心理测试”,并马上提交反馈截图。
“哇哦”,我想,“不想耽误时间,赶紧搞定它。”
我熟练地打开了手机上的“今日校园”App,点击了那个心理测评的链接。然后,屏幕上出现了一行熟悉的、令所有系统工程师血压飙升的错误提示。
打不开。
基于一个计算机人的直觉,我瞥了一眼无法访问的 URL:https://xljkzx.neau.edu.cn/...
。
NEAU 内网。
妈呀,我在千里之外的宁波,一个只能访问公共互联网的地方,你要我如何访问一个大学的内网服务?我的大脑瞬间开始高速运转,一场与愚蠢设计之间的战争,就此打响。
第一回合:我的“星际舰队”——Zerotier 全球组网与 SSH 动态隧道
我马上想到了我之前为了校外租房,精心部署的一套“杀手级”远程访问方案。
在哈尔滨校内的某台实验室电脑上,我在 Hyper-V 虚拟机和宿主机中都安装了 Zerotier 客户端,并且接入了我自己部署在全球各地的 Moon 中继节点。理论上,我可以随时随地,将自己置身于那个熟悉的10.10.x.x
网段。
我的计划堪称完美:
1 | # 1. 通过Zerotier的虚拟网络,SSH连接到校内主机 |
然后,我只需要让我的安卓手机,通过我现在单位的 WiFi,连接到我笔记本电脑上这个10086
端口的代理。数据包将穿越层层网络,最终从东农的内网出口访问那个心理测试页面。优雅,太优雅了。
至于为什么不直接在远程电脑的浏览器里打开?天真!它有 SSO 单点登录和 UA 双重验证。在不知道Cookie
和 App 原生User-Agent
的情况下,任何模拟都无从下手。
然而,理想很美好,物理定律很骨感。
1 | ping 10.10.52.9 |
这条横跨大半个中国的 TCP 连接,脆弱得像风中的烛火。我的“星际舰队”,在出发前就搁浅了。
第二回合:降维打击的无奈——远程桌面与模拟器的“囚徒困境”
方案一失败,我立刻启动了更符合直觉的 Plan B:通过 AnyDesk 远程操作那台 Windows 电脑,在上面直接安装一个安卓模拟器。
但新的问题接踵而至。由于那台电脑开启了 Hyper-V,Windows 平台上的绝大多数安卓模拟器,都无法在不关闭 Hyper-V(需要重启)的情况下运行。唯一能“幸存”的,似乎只有蓝叠模拟器。
然而,当我费力地装好蓝叠,再装好“今日校园”后,App 启动的瞬间,它闪退了。
虚拟机验证。
妈呀,我幻灭了。我能想象到,这个垃圾软件的开发者,是如何通过各种手段,检测自己是否运行在虚拟环境中。而我,没有时间,也没有兴趣,去进行一场毫无意义的逆向工程战争。
就在这时,班长的微信电话打了过来,催促我快点提交。我看了看表,为了这个扯淡的问题,我已经浪费了一个多小时。
(我后来得知,当时还有很多在校内的同学也交不上,因为学校升级了锐捷 AP,现在不认证连内网都打不开了。我甚至还怀念起以前那个可以用 53 端口穿透校园网的“旧时代”。)
最终回合:顿悟——“社会工程学”的胜利
就在我准备研究更复杂的 VPN 方案时,第三种方法,如同神启般浮现在我的脑海——花钱。
我打开了校园墙,输入了关键词。一条广告,像一道圣光,照亮了我愚蠢的执念:
“代做心理测评,2 元全包,秒出截图。”
我愣住了。
我,一个能部署全球虚拟网络、能熟练运用各种远程和虚拟化技术的“专家”,在一个愚蠢的系统面前,折腾了一个多小时,心力交瘁,一无所获。
而“专业人士”,只需要两块钱。
我速加微信,转账,发送手机号。两分钟后,一张完美的反馈截图,出现在了我的聊天窗口里。
我把它发给了班长。世界,清净了。
和那个代做的女生聊了几句,她也抱怨学校的种种险恶,说快待不下去了,也想出来。我笑着告诉她,不止计算机,可能每个专业都一样。我们相视一笑,尽在不言中。
今天,我没有学到太多perf
的知识。但我用一个多小时的宝贵时间和两块钱的“学费”,深刻地理解了一个道理:
一个优秀的工程师,不仅要懂得如何用技术解决复杂的问题。更要懂得,在什么时候,技术,恰恰是最低效、最愚蠢的解决方案。