Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

splitdns

主域名留在 Cloudflare,只把一个子域名委派给 DNSPod 做国内外分流 —— 这套流程的配置、执行与巡检工具。

📖 使用教程(带截图) · 背后的原理与纯手动做法

它解决什么

Cloudflare 的权威 DNS 不支持普通记录按地区返回不同答案,而记录一旦是橙云,返回的又是全球一致的 anycast IP。 想让一个子域名「海外走 CF CDN、国内走别的 CDN」,只能把这一个名字委派给支持线路的 DNS 服务商, 再用 Cloudflare for SaaS 让 CF 继续代理这个已经不在它手里的主机名。

流程本身不难,但环节多、每步都要等生效、还有几个不看文档就会踩的坑:

  • 委派后留在父区的记录会变成 shadowed records,看得见但一条都不生效
  • CF 的 DCV TXT 在证书带通配符 SAN 时是多条同名不同值,少一条证书就签不出来
  • CF 那条解析必须挂在「默认」线兜底,只配境内 + 境外会让部分解析器拿不到记录
  • 用了自定义源服务器,源站必须能路由那个 SNI,否则回源直接 403

这个工具把流程拆成带验证的步骤,能自动做的直接调 API,做不了的给出精确指令并轮询确认。

功能

  • 域名列表:所有委派出去的访问域名及其线路落点
  • 配置向导:一步步把域名配到位。每步标明是程序执行还是手动操作、预计多久生效、已经等了多久;关掉页面回来能续上
  • 巡检:随时核对三个平台的实际状态,报告委派、遮蔽记录、验证 TXT、线路落点、证书等问题
  • 数据搬家:整库导出 / 导入,换机器、备份都靠它

快速开始

Releases 下载。

Windows

数据存在哪 适合
安装版 *-installer.exe %APPDATA%\splitdns 常用,升级重装不动数据
绿色版 *-portable.zip exe 同级 data/ 解压即用,整个文件夹拷走就带走全部配置

机器上没有 WebView2 会自己拉起来装。

macOS

*-macos-universal.zip 解压出 splitdns.app,Intel 与 Apple Silicon 通用,数据在 ~/Library/Application Support/splitdns

没有做签名和公证,首次打开会被 Gatekeeper 拦下——右键点 .app → 打开 → 再点一次「打开」即可, 或者 xattr -dr com.apple.quarantine /Applications/splitdns.app

不需要域名,不需要登录——它不监听任何端口,密钥只存在你自己机器上。

怎么用:一个完整例子

目标:img.example.com 默认线走 Cloudflare CDN 回源到海外源站,境内线走腾讯云 EdgeOne。

1. 凭据

「凭据」页各加一条,密钥保存后不再回显,只能覆盖。

  • Cloudflare:API Token,需要 Zone → Zone → ReadZone → DNS → EditZone → SSL and Certificates → Edit, 作用范围要同时覆盖父区 example.com 和 SaaS 区 mycdn.net
  • 腾讯云 DNSPod:SecretId / SecretKey

2. 回源

「回源」页建两条。一个回源可以被多个访问域名共用,以后换机器只改这一处。

名称 类型 落点值 源站 IP
海外源站 CF SaaS 落点 origin.mycdn.net 203.0.113.10
EdgeOne 国内 第三方 CDN CNAME img.example.com.eo.dnse2.com

「源站 IP」只在 SaaS 区里还没有那条橙云记录、需要程序替你建的时候才填;已经建好了就留空。

用自定义源服务器时,在「SNI」里填那个源服务器名字——填了程序就知道这个域名要额外提醒你去源站补路由。

3. 域名

「域名 → 新增域名」:

  • 访问域名填 img.example.com,选好 Cloudflare 凭据——父区会自动推导(拿访问域名去凭据可见的 zone 里找最长后缀匹配),填完就显示推导结果
  • SaaS 区从下拉里选 mycdn.net;不走 CF 就选「不使用 CF for SaaS」
  • 选 DNSPod 凭据
  • 线路:默认 → 海外源站境内 → EdgeOne 国内。线路落点可以引用「回源」库里的条目,也可以直接填—— EdgeOne 那种一个域名一个 CNAME、不会复用的落点,不必先去回源库建条目

「默认」线是兜底。只配境内 + 境外,识别不出归属的解析器会一条记录都拿不到,所以把覆盖面最广的那条挂在「默认」上。

4. 跟着流程走

保存后自动进入配置流程。每步下面的按钮:

  • 自动执行 —— 程序调 API 替你做
  • 我自己做完了 —— 你在 CF / DNSPod 面板里做完后点,等待计时从这一刻开始
  • 确认完成 —— 只出现在程序验不了的步骤(比如源站的 SNI 路由)

不管哪种方式,做完都会重新去三个平台核对一遍,平台接口返回成功不算数,巡检查到生效才算完成。所以:

  • 关掉页面隔天回来,进度还在,而且会按当前真实状态重新判定
  • 已经通过的步骤如果线上被人改了,会自动退回「等待生效」并说明差在哪
  • 唯一不可逆的「清理父区被遮蔽的记录」会先列出要删的每一条,点确认才动手

5. 已经配好的域名怎么办

照样在「域名」里建条目、填线路,进流程会发现每一步都已完成,直接当巡检面板用。 存量域名建议都录进来,出问题时一眼能看到差在哪。

6. 换机器 / 备份

「数据」页可以整库导出和导入。换机器、重装、想留个备份,都走这里—— 导出的是一致性快照,导入前会自动把现有数据另存一份。

导出文件里有明文的平台密钥,当作密钥文件对待。

开发

cd desktop && wails dev

server/ 是业务本体(API + 巡检 + 平台客户端),web/ 是界面,desktop/ 只是把它们装进一个原生窗口。 前端静态导出后嵌进 exe,运行时摊到数据目录由 Go 托管,生产不跑 Node。

许可

MIT

About

把一个子域名从 Cloudflare 委派到 DNSPod 做国内外分流, 并用 Cloudflare for SaaS 让其中一条线路继续走 CF , 也能分流优选—— 带验证的配置向导与巡检工具

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages