鲍志飞的技术笔记

记录自己真实踩过的坑:云上部署、备案实操、以及那些「看起来通过了其实没有」的时刻。

ICP 备案实测:五段审核,实际怎么走的

2026-08

网上说备案「1~3 周」,官方流程图写「4~5 周」。我这次个人主体、非经营性网站,从提交到拿号实际用了 10 天。但过程里有两个点值得单独记下来。

第一,审核是五段不是三段。中间多一环「待提交管局」——阿里云初审通过后才往通信管理局递。容易让人以为还要点什么,其实不用:它和初审通过盖的是同一个时间戳,系统自动递交,中间没有任何人工动作。

第二,唯一一个「你必须在窗口期内动手」的步骤,窗口极短。工信部短信核验的规矩是「收到起 24 小时内不完成,整单作废」。而从时间戳看,初审通过和短信下发几乎同时发生——你没有提前预警。递交管局那天手机千万别静音。

另外两个反直觉的观察:

管局审核那一段,页面明写这期间既不能催审、也不能撤回,没有任何能加速的操作。承认这一点反而轻松:这段时间该干别的就干别的。

dig 说域名解析到 198.18.x.x?那是你本机在骗你

2026-08

排查一台服务器为什么访问不了,我先在本机跑了两条命令:

dig +short example.com A       # → 198.18.1.19
nc -z -G 5 <server-ip> 22 80 443   # → 三个端口全部 succeeded

结论看起来很清楚:域名解析正常、端口全开。但两条都是假的。

198.18.0.0/15 是 RFC 保留给网络设备测试的地址段,正常公网域名不可能解析到这里。这是本机代理软件 fake-ip 模式的特征:它接管了 DNS,对任何域名都先返回一个假 IP 占位,等你真去连的时候再按域名转发。换 @8.8.8.8 也没用——请求根本没出本机。

更阴的是第二条。fake-ip 模式下,代理会先接受 TCP 连接再决定怎么转发,所以 nc 探什么端口都「succeeded」。我后来去云控制台看安全组,入方向只放行了 ICMP —— 22/80/443 一个都没开。

教训:本机装了代理之后,dig / nc / curl 这类「从我这儿测一下」的验证全部失去意义。要么去控制台看配置,要么用外部检测服务,要么换一条没走代理的网络(比如手机流量)。

三条会「假绿」的命令

2026-08

都是自己踩过的。共同点是:它们会给你一个「通过了」的信号,而实际上什么都没检查。

1. 用了 project references 的 TypeScript 项目,裸跑 tsc --noEmit 一个文件都不检查。如果根 tsconfig.json"files": [] 加 references 的形式,裸跑它永远「通过」。要用 tsc -b,或者显式指定子配置。所以「build 成功」是可信的,「tsc --noEmit 通过」不是。

2. gofmt -l 列出了未格式化的文件,退出码仍然是 0。于是 gofmt -l . && echo 干净 恒为真。判断依据是有没有输出,不是退出码。

3. Go 的 go vet ./...golangci-lint run 都不看带 build tag 的文件。如果集成测试带 //go:build integration,改完函数签名跑一遍 vet,普通包全绿,集成测试里漏改的调用点一个都抓不出来——因为它们压根没被编译。要加 -tags=integration / --build-tags=integration 再跑一遍。

第三条里 lint 那半条更容易漏,因为「0 issues」看起来比 vet 更像「全都查过了」。

测试绿 ≠ 它守住了你以为的东西

2026-08

一条测试通过,不代表它在守你以为它在守的那道防线。它可能是因为别的原因绿的。

唯一可靠的判据是做对照:把那道防护拿掉,这条测试必须变红。但这个对照实验本身也会骗人,我遇到过四种形态:

还有一条不对称的经验:「我验证过、没问题」比「我验证时发现了问题」可信度低。后者是撞上来的,前者可能只是实验设计得刚好会成功——因为你当时想证明的是「它有效」,于是构造出的是一个能产生期望结果的实验,而不是一个严格的对照。

所以报告「一切正常」之前,先问自己一句:如果它是坏的,我这个实验会失败吗?