连 VPS 都省了?用 Cloudflare Workers 零成本白嫖一个自带抗 D 的专属 DNS

以前一提到自建 DNS 服务器,不管是搞内网解析还是弄个防污染的 SmartDNS,老刘我的第一反应就是去开台便宜的 VPS,装上 Docker,然后拉个 CoreDNS 或者 Bind9 跑起来。
但折腾过的人都知道,维护一台常年暴露在公网上的 DNS 服务器,心智负担其实挺重的。除了要时刻盯着进程防崩溃,最让人头疼的是 53 端口极容易被网络上的扫描器盯上,甚至被黑客拿去当做 DNS 放大攻击的肉鸡。一旦流量异常,云厂商反手就把你的机器给封了。
我最近几年越来越倾向于把个人的各种轻量级工具迁移到 Cloudflare Workers 和 Pages 上去,主打一个“扔上去就不管了”。既然 Web 服务能 Serverless 化,那为什么 DNS 不行呢?

Serverless-DNS 到底是个啥?
今天在 GitHub 上翻到的这个 Serverless-DNS 项目,可以说是极其对我的胃口。
简单粗暴地解释,它就是一个用 JavaScript/TypeScript 编写的开源 DNS 服务器端。但它不要求你拥有一台 Linux 主机,而是原生设计用来跑在 Cloudflare Workers、Deno Deploy 这类 Serverless 边缘计算平台上的。它接收基于 HTTPS 的 DNS 请求(也就是 DoH,DNS over HTTPS),在边缘节点进行解析和规则匹配,然后再把结果返回给客户端。
戳中痛点的核心爽点
1. 降维打击的稳定性与顶级抗 D 保护 这是把 DNS 放在 Cloudflare 上跑最大的优势。你的这套解析服务瞬间拥有了 CF 遍布全球的边缘节点,不仅响应延迟极低,而且你根本不需要担心被 DDoS 攻击打瘫。CF 庞大的基础设施就是你这套服务的“免费高防壳”。
2. 真正的零运维,极度舒服的“白嫖”体验 没有 Linux 系统需要你打安全补丁,没有 Docker 容器会因为内存泄漏而 OOM 重启。部署完代码,它就老老实实地在那里处理请求。配合 CF Workers 每天免费提供的 10 万次请求额度,对于个人、家庭甚至小型团队自用来说,这辈子都很难把免费额度跑完。
3. 用写代码的方式管理解析规则 传统的 DNS 区域文件(Zone File)改起来死板且枯燥。但在 Serverless-DNS 里,一切都是代码。你可以非常灵活地写几行 JS 逻辑:比如根据请求的 IP 地区返回不同的解析结果实现分流;结合 CF 的 D1 数据库搞一个超低延迟的动态 DDNS;或者是写个正则,把各种追踪器和广告域名的请求直接全部掐断在云端。
怎么折腾跑起来?
得益于前端生态的成熟,这类项目的部署往往就是几行命令的事儿。如果你本地已经配好了 Node.js 环境和 Cloudflare 的命令行工具 wrangler,整个部署过程不超过两分钟:
# 1. 克隆代码到本地
git clone https://github.com/serverless-dns/serverless-dns.git
cd serverless-dns # 2. 安装依赖包
npm install # 3. 如果需要自定义规则,去修改 src 下的配置文件
# 4. 一键起飞,推送到你的 Cloudflare Worker 节点
npx wrangler deploy部署完成后,你会得到一个类似 https://your-worker-name.your-subdomain.workers.dev/dns-query 的地址。直接把它填进你的浏览器(Chrome/Edge/Firefox 的安全 DNS 设置里)或者家里的旁路由 DoH 设置中,你的专属无服务器 DNS 就正式接管网络了。
总结
对于习惯了传统服务器运维思维的人来说,Serverless-DNS 提供了一个非常清奇且极具现代感的解法。它把沉重的网络基建,变成了一段跑在边缘节点上的轻巧脚本。
如果你平时也像我一样重度依赖 Cloudflare 的生态,且厌倦了自己维护底层的服务器环境,这个项目绝对值得你拉下代码,用两分钟时间推上去体验一把。
项目地址:https://github.com/serverless-dns/serverless-dns