本文转载自 CMLiussss Blog,作者:杨幂的脚,原文链接:https://blog.cmliussss.com/p/eo-doh/
本文采用 CC BY-NC-SA 4.0 许可协议转载,原文内容未作修改。
🔐 通过 EdgeOne CDN 搭建专属于你的隐蔽纯净 DoH 服务
本文介绍一种基于 EdgeOne CDN 规则引擎的 DoH(DNS over HTTPS)部署思路:在不额外准备服务器的前提下,将一个已经正常接入 EdgeOne CDN 的 HTTPS 站点扩展为自定义路径的 DoH 服务。
这种方式的核心优势在于,DoH 请求会经过你现有的 CDN 域名与自定义路径转发到上游 DNS 服务。对外看起来仍然是一个普通 HTTPS 站点,既能降低额外运维成本,也能让服务形态更加自然、可控。
🧰 事前准备
一个正在使用 EdgeOne CDN 加速的网站,并且已经完成 HTTPS 证书配置。例如:eo.blog.cmliussss.com
🎯 本文最终要实现的效果是:让 https://eo.blog.cmliussss.com/CMLiussss 这个地址对外提供 DoH 服务。
⚠️ 建议不要直接使用 /dns-query 作为公开访问路径。该路径是 DoH 服务中非常常见的特征路径,识别度较高;使用自定义路径可以降低服务暴露的特征,整体上也更灵活。

🖼️ 图文教程
🧩 创建规则
前往 站点加速 -> 规则引擎 -> 创建规则 -> 新增空白规则。

⚙️ 填写规则内容
规则名称:可按自己的习惯填写,例如 DoH 服务。
IF₁
匹配类型:HOST,运算符:等于,值:eo.blog.cmliussss.com(替换成你自己的域名)
匹配类型:URL path,运算符:等于,值: /CMLiussss(替换成你需要实现 DoH 服务的路径)
操作
修改源站,源站类型:IP/域名,值:cloudflare-dns.com,回源协议:HTTPS,HTTPS 回源端口:443
Host Header 重写,模式:自定义,目标值:cloudflare-dns.com
回源 URL 重写,类型:替换完整路径,目标路径:/dns-query
IF₂
匹配类型:请求方法,运算符:等于,值:GET
匹配类型:查询字符串,参数名称:name,运算符:存在
匹配类型:HTTP 请求头,头部名称:自定义 > accept,运算符:不等于,值:application/dns-message,忽略大小写
操作
修改 HTTP 回源请求头,类型:设置,头部名称:自定义 > accept,头部值:application/dns-json
修改 HTTP 节点响应头,类型:设置,头部名称:自定义 > content-type,头部值:application/json

✅ 保存并发布
点击 保存并发布 后返回 域名管理,等待配置状态变为 已生效。

🎉 部署完成
至此,基于 EdgeOne CDN 的 DoH 服务已经部署完成。
访问非 /CMLiussss 的路径,例如 https://eo.blog.cmliussss.com/,会正常访问你原本的站点。
请求 /CMLiussss 路径时,则会进入 DoH 转发规则。例如访问 https://eo.blog.cmliussss.com/CMLiussss?name=www.google.com,即可返回对应的 DNS 解析结果。
📱 配置使用
后续只需要将你的 DoH 服务地址 https://eo.blog.cmliussss.com/CMLiussss 配置到支持自定义 DoH 的客户端、浏览器或网关中即可使用。
💡 建议根据自己的实际域名和路径进行替换,并定期检查 EdgeOne 规则是否仍然生效。如果后续更换上游 DoH 服务,也只需要调整源站、Host Header 和回源路径等相关配置。
🌐 更换谷歌DoH上游
⚙️ 填写谷歌规则内容
规则名称:可按自己的习惯填写,例如 DoH 服务。
IF₁
匹配类型:HOST,运算符:等于,值:eo.blog.cmliussss.com(替换成你自己的域名)
匹配类型:URL path,运算符:等于,值: /CMLiussss-Google(使用不同路径即可实现同域名下的不同上游DoH)操作修改源站,源站类型:IP/域名,值:dns.google,回源协议:HTTPS,HTTPS 回源端口:443Host Header 重写,模式:自定义,目标值:dns.google
回源 URL 重写,类型:替换完整路径,目标路径:/dns-query
IF₂
匹配类型:请求方法,运算符:等于,值:GET
匹配类型:查询字符串,参数名称:name,运算符:存在
匹配类型:HTTP 请求头,头部名称:自定义 > accept,运算符:不等于,值:application/dns-message,忽略大小写
操作
修改 HTTP 回源请求头,类型:设置,头部名称:自定义 > accept,头部值:application/dns-json
修改 HTTP 节点响应头,类型:设置,头部名称:自定义 > content-type,头部值:application/json
回源 URL 重写,类型:替换完整路径,目标路径:/resolve (注意谷歌上游需要多设置一个 回源URL重写 参数)

📱 配置使用
后续只需要将你的 DoH 服务地址 https://eo.blog.cmliussss.com/CMLiussss-Google 配置到支持自定义 DoH 的客户端、浏览器或网关中即可使用。
🏠 备案域名配置
⚙️ 填写修改规则内容
国内的备案域名在使用 EdgeOne CDN 时,通常会被分配到国内节点。为了让 DoH 服务能够顺利回源到 Cloudflare 的 DoH 上游,需要将源站设置为 .cloudflare-gateway.com 的 DoH 域名,其中 为通配符,例如 cmliussss.cloudflare-gateway.com。
IF₁
操作
修改源站,源站类型:IP/域名,值:cmliussss.cloudflare-gateway.com,回源协议:HTTPS,HTTPS 回源端口:443
Host Header 重写,模式:自定义,目标值:cmliussss.cloudflare-gateway.com
其余操作照旧即可
新人 Youtuber,需要您的支持。如果这篇文章对你有帮助,欢迎帮我点赞、关注、打开小铃铛,十分感谢!!! 🙏