全平台 Cloudflare 优选 IP 自动同步工具。自动寻找 Cloudflare 最快 IP 并实时更新您的域名解析记录。
- 全平台支持:原生支持 Windows (PowerShell) 及 Linux/iStoreOS (Shell)。
- 多样化数据源 (IPSource):
- 本机测速 (
local):使用本地运行的cfst内核,精准测试并选取适合您当前宽带的 IP。 - 第三方优选 API (
api):拉取全国范围内的综合优选 IP,解决本地网络偏颇、不具备高宽带测速的痛点。 - 影子优选 (
saas):从高可用的大厂 SaaS 域名(如 Discord, Zoom, Pages 等)中自动抓取并扩展活跃的企业级 /24 网段,在不耗费大量外部接口流量下本地优选。
- 本机测速 (
- 目录归档与隔离:所有生成的中间 CSV 结果、最终 Markdown 报告和日志,都将按照配置中的
Domain分门别类存储在output/<Domain>/目录下,保持项目目录整洁。 - 精细化线路安全隔离:DNS 同步删除逻辑仅对配置在
Lines中的解析线路生效。这能让您安全地在 DNSPod 中把"默认"(Default) 或"境外"(Overseas) 线路配置为 CNAME 记录回源(防止影响 Cloudflare SaaS 证书校验),同时放心地让脚本只托管国内的"境内"(A 记录) 或各运营商线路。 - 智能同步逻辑:
- 安全锁:测速失败自动停止同步,防止误删现有解析。
- 增量更新:仅当 IP 发生变动时才调用 API,极大减少 API 消耗。
- 限流保护:内置写操作延时,避开 DNS 提供商的频率限制。
- 架构适配:Linux 版脚本自动识别并下载
x86_64或aarch64(R4S/R5S) 架构的测速内核。 - 多提供商计划:目前已支持 DNSPod (腾讯云),即将支持 阿里云 DNS、Cloudflare API 等。
- PowerShell 5.1+ 或 PowerShell 7+ (Windows) / Bash (WSL)
- 已经获取腾讯云 API 密钥 (
SecretId,SecretKey)
- 安装必要依赖:
opkg update && opkg install jq curl openssl-util - 自动化安装:
sh linux/optimize.sh install
-
克隆项目
git clone https://github.com/Shirolin/cf-speedtest-sync.git cd cf-speedtest-sync -
配置信息 将
config.example.json复制为config.json并填写你的信息。参数项 默认值 释义 DNSProvider"dnspod"DNS 解析提供商。当前支持 "dnspod"(腾讯云)。IPSource"local"优选 IP 来源。 "local"本机测速 /"api"第三方优选 API /"saas"大厂影子网段优选。Api.IPv4"https://ipdb.api.030101.xyz/?type=bestcf"第三方优选 IPv4 接口地址(仅在 IPSource设为"api"时生效)。Api.IPv4Fallback内置 GitHub 镜像 主接口重试仍失败时启用的兜底源数组,按顺序尝试。默认内置 ymyuuu/IPDB 的 BestCF/bestcfv4.txt(与主接口同源、但走 GitHub 独立基建,实测主接口返回 400 的 15 天里它仍在每小时更新);显式设为[]可关闭兜底。注意兜底与主接口同源:若上游整体停摆,镜像只会停在旧列表,最坏结果是"IP 与现网相同"(同步判定为无变动,不改动 DNS)。Api.Retries3主接口失败时的重试次数(退避 5s / 10s),仅覆盖单次抖动。 SecretId"YOUR_SECRET_ID"腾讯云 API 密钥 SecretId。改用下方的密钥文件时可留空。 SecretKey"YOUR_SECRET_KEY"腾讯云 API 密钥 SecretKey。改用下方的密钥文件时可留空。 Domain"example.com"托管的主域名。 SubDomain["cdn"]待优选绑定的子域名数组(支持多个)。 Lines["电信", "联通", "移动"]托管解析的运营商线路。如用 CNAME 回源 SaaS,推荐仅托管 ["境内"],并保持默认线路为 CNAME。IPv4.Enabletrue是否启用 IPv4 测速与同步。 IPv4.File"ip.txt"本机测速时使用的 CF 原始 IP 范围文件(位于 core/下)。IPv4.Threads50测速并发线程数。 IPv4.DownloadCount2最终在 DNS 中绑定的优选 IP 数量。 IPv4.LatencyLimit250延迟上限门槛(单位 ms),超过该延迟的 IP 丢弃。 IPv4.SpeedTestURL"https://speed.cloudflare.com/__down?bytes=100000000"测速下载接口(使用 Cloudflare 官方测速大文件,按需截断不消耗整包)。 - 支持 IPv4 和 IPv6 分别配置。
-
运行脚本
- Windows:
- 默认运行:
powershell -ExecutionPolicy Bypass -File optimize.ps1 - 指定数据源:
powershell -ExecutionPolicy Bypass -File optimize.ps1 -Source [local|api|saas]
- 默认运行:
- Linux/iStoreOS:
- 默认运行:
sh linux/optimize.sh - 指定数据源:
sh linux/optimize.sh --source [local|api|saas] - 安全测试模式(不修改 DNS):
sh linux/optimize.sh test
- 默认运行:
- Windows:
建议每天凌晨运行一次。在 iStoreOS 中只需运行:
sh linux/optimize.sh install该命令会自动将脚本加入系统计划任务(每天凌晨 4 点执行)。
- 安全测试模式:支持
test参数进行 Dry Run,在不修改真实 DNS 的情况下验证逻辑。 - 双栈支持:同时支持 IPv4 和 IPv6 (AAAA) 记录同步。
- 环境变量安全:
CF_SECRET_ID/CF_SECRET_KEY优先于配置文件。三个脚本启动时会自动加载${CFSYNC_ENV_FILE:-/etc/cf-speedtest.env}(若存在),推荐把密钥写进该文件并chmod 600、config.json中留空,这样配置文件可以随意备份或分发。 - 自动加锁:防止多个进程同时运行导致冲突;锁冲突与残留锁都会写进日志,不再静默跳过。
- 智能日志:
optimize.sh/speedtest.sh/sync.sh共用linux/common.sh里的统一日志函数,所有环节的输出与失败原因都落到output/<你的域名>/sync.log,并自动轮转防止占用过多空间。 - 失败可观测:任一环节出错都会返回非零退出码并写明原因;
>>> Sync completed.仅在真正同步成功时输出,空跑/失败会记[ERROR]而不会谎报成功。 - 接口降级(
IPSource=api):主接口先按Api.Retries重试;仍失败则改用Api.IPv4Fallback(默认内置 GitHub 镜像)。降级成功仍会正常同步 DNS,但整轮退出码为2,日志里同时有[WARN] Degraded run。数据源全部失败时退出码1,不动现有 DNS。- 退出码约定:
0正常 /2降级(兜底源数据)/1失败(DNS 未被改动,保留上一轮结果)。 - 抓取失败会记录 HTTP 状态码与响应开头(例如
HTTP 400+ HTML 帮助页),便于区分"接口侧故障"与"网络不通"。
- 退出码约定:
项目会自动将 IP 同步记录写入到 output/<你的域名>/sync.log。测速模块与主控脚本共用同一个日志文件,因此优选 API 超时、cfst 无结果、锁冲突等失败原因也都能在这里看到。判断某天是否真的改写过 DNS,看当日是否同时存在 >>> Syncing IPv4 与 >>> Sync completed. 两行。为了方便查看历史轨迹,项目提供了查询过去一周(7天内)IP 同步日志的脚本:
在项目根目录下运行:
powershell -ExecutionPolicy Bypass -File view_logs.ps1在项目根目录下运行:
sh linux/view_logs.sh本项目的本地测速模块依赖并集成了优秀的开源项目 XIU2/CloudflareSpeedTest(简称 cfst)。在此向原作者 XIU2 表达诚挚的感谢!
- 测速内核 (cfst):基于 GPL-3.0 License 协议发布。
- 本同步脚本 (Wrapper):采用 GPL-3.0 License 协议发布,与上游测速内核保持一致。
如果您有任何建议或发现了 Bug,欢迎提交 Issue。后续计划增加更多 DNS 提供商支持,欢迎提交 Pull Request!
本项目完全基于 GPL-3.0 License 开源协议。