本文转载自 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 服务中非常常见的特征路径,识别度较高;使用自定义路径可以降低服务暴露的特征,整体上也更灵活。

事前准备

🖼️ 图文教程

  1. 🧩 创建规则

前往 站点加速 -> 规则引擎 -> 创建规则 -> 新增空白规则。

  1. ⚙️ 填写规则内容

规则名称:可按自己的习惯填写,例如 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

填写规则

  1. ✅ 保存并发布

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

等待生效

  1. 🎉 部署完成

至此,基于 EdgeOne CDN 的 DoH 服务已经部署完成。

访问非 /CMLiussss 的路径,例如 https://eo.blog.cmliussss.com/,会正常访问你原本的站点。

请求 /CMLiussss 路径时,则会进入 DoH 转发规则。例如访问 https://eo.blog.cmliussss.com/CMLiussss?name=www.google.com,即可返回对应的 DNS 解析结果。

  1. 📱 配置使用

后续只需要将你的 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,需要您的支持。如果这篇文章对你有帮助,欢迎帮我点赞、关注、打开小铃铛,十分感谢!!! 🙏