Skip to content

jqknono/cloudflare-doh

Repository files navigation

Cloudflare DoH 转发代理

使用演示

这是一个基于 Cloudflare Workers 的 DNS over HTTPS (DoH) 转发代理服务。本服务可以根据路径将请求转发到不同的 DoH 提供商,同时保留查询参数。

功能特点

  • 基于路径的请求转发:根据请求路径将请求转发到对应的 DoH 服务提供商
  • 自定义路径映射:可以通过 Cloudflare Worker 的环境变量配置路径映射
  • 保留查询参数:转发时会保留原始请求中的查询参数
  • 轻量级实现:简单高效的实现方式,易于部署和维护

工作原理

该 Worker 根据请求的路径前缀确定转发目标,然后将请求转发到相应的 DoH 服务提供商。例如,当访问 doh.example.com/google/query-dns?name=example.com 时,该请求会被转发到 dns.google/dns-query?name=example.com

默认路径映射

Worker 内置了以下默认映射规则:

  • /google/query-dnsdns.google/dns-query(Google 的 DoH 服务)
  • /cloudflare/query-dnsone.one.one.one/dns-query(Cloudflare 的 DoH 服务)

配置说明

基础配置

Worker 可以使用默认配置直接部署使用。

自定义配置

可以在 Cloudflare Workers 控制台中添加名为 DOMAIN_MAPPINGS 的环境变量来自定义路径映射规则。该变量接受符合以下格式的 JSON 字符串:

{
	"/path-prefix": {
		"targetDomain": "target.domain.com",
		"pathMapping": {
			"/source-path": "/target-path"
		}
	}
}

例如,若要添加对 Quad9 DoH 服务的支持,配置可能如下:

{
	"/google": {
		"targetDomain": "dns.google",
		"pathMapping": {
			"/query-dns": "/dns-query"
		}
	},
	"/cloudflare": {
		"targetDomain": "one.one.one.one",
		"pathMapping": {
			"/query-dns": "/dns-query"
		}
	},
	"/quad9": {
		"targetDomain": "dns.quad9.net",
		"pathMapping": {
			"/query-dns": "/dns-query"
		}
	}
}

部署方法

方法一:使用 Cloudflare Workers

  1. 登录到 Cloudflare 控制台
  2. 进入 Workers and Pages, 点击"创建"
  3. 选择 Worker, 输入服务名称并选择"Hello World"模板
  4. _worker.js 中的代码粘贴到编辑器中
  5. (可选) 在"变量和机密"部分添加 DOMAIN_MAPPINGS 变量来自定义路径映射
  6. 点击"部署"按钮

方法二:使用 Cloudflare Pages

  1. Fork 本库
  2. 登录到 Cloudflare 控制台
  3. 进入 Workers and Pages, 点击"创建"
  4. 选择 Pages, "连接到 Git",并连接到您的 Fork 库
  5. (可选)在"变量和机密"部分添加 DOMAIN_MAPPINGS 变量来自定义路径映射
  6. 点击"保存并部署"

部署完成后,Cloudflare Pages 会自动检测 _worker.js 文件并将其用作 Worker 函数。

使用示例

假设您已将此 Worker 部署到 doh-proxy.workers.dev,您可以通过以下方式使用:

  • 使用 Google 的 DoH 服务:

    https://doh-proxy.workers.dev/google/query-dns?name=example.com
    
  • 使用 Cloudflare 的 DoH 服务:

    https://doh-proxy.workers.dev/cloudflare/query-dns?name=example.com
    

注意事项

  • 该服务仅转发请求,不会修改或存储您的 DNS 查询内容
  • 请确保遵守各 DoH 服务提供商的使用政策
  • 此服务适合个人或小规模使用,对于大规模部署,请考虑各提供商的使用限制
  • Cloudflare 免费版用户每日的免费请求数量为 10w 次, 仅够个人使用, 注意避免暴漏 DoH 连接
  • 关闭 Cloudflare 代理可以大幅降低延迟, DoH 服务通常不需要代理

许可协议

本项目采用 MIT 许可协议。您可以自由地使用、修改和分发本代码,但需要在您的项目中包含原始许可证和版权声明。

赞助商

感谢以下服务提供商的支持:

AdGuard Private - 提供企业级 DNS 解析服务

主要特性:

  • 无限制的 DNS 查询请求
  • 增强的隐私保护机制
  • 智能广告及追踪器过滤
  • 灵活的 DNS 记录配置
  • 内置动态 DNS (DDNS) 支持
  • 专业的技术支持

详情请访问 AdGuard Private 了解更多。

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published