拾遗

自建 DNS 之后踩过的坑

2026-08-02 · 笔记

把家里的解析从运营商 DNS 换到自建之后,网页打开确实快了一截。但接下来两个月,出问题时排查的难度也涨了一截。记几个印象深的。

fake-ip 不是万能的

用了 fake-ip 之后,客户端拿到的是一个假地址,真正的解析推迟到连接建立时。好处是快,坏处是任何"先解析再判断"的逻辑都会失灵——比如某些应用会先 getaddrinfo 拿到 IP,再拿这个 IP 去做地域判断,结果拿到的是 198.18.x.x,判定成内网,直接拒绝。

这类问题最烦的地方在于它不报错,只是行为不对。加了几个域名到 fake-ip-filter 里才慢慢修好。

上游选谁

一开始全走 DoH,后来发现某些国内域名解析出来的地址绕了远路。改成按域名分流:国内走国内的 DoH,国外走国外的。麻烦在于名单要维护,而且 geo 数据库更新有延迟。

自建 DNS 最大的成本不是搭起来,是之后每次"某个网站打不开"你都要先怀疑是不是自己。

缓存与 TTL

换了 DNS 之后有一阵子,某些服务的地址变了但我这边还在连旧的。查了半天是本地缓存 TTL 设得太长。DNS 缓存是个好东西,但它让你看到的世界比真实世界慢一拍。

现在的做法

保留自建,但把它当成"一个可选的加速层",而不是唯一入口。出问题的时候能一键切回运营商 DNS,比什么都重要。

另外给解析服务本身加了监控——它挂掉的时候,表现是整个局域网"没有网",但 ping 网关又是通的,很容易误判成宽带故障。