🚀 搞了个小工具:自动优选 Cloudflare IP 的 DDNS

起因

用 Cloudflare CDN 的都知道,虽然免费香,但国内访问经常抽风。每次都要手动测速、找最快的 IP、然后改 DNS,太麻烦了。

于是就整了这么个脚本,自动帮你搞定这事儿。

能干啥?

  • 定时跑 CloudflareSpeedTest 测速
  • 自动把最快的 IP 通过 API 更新到域名 DNS
  • 支持多域名、IPv4/IPv6
  • 有变化才更新,不瞎折腾
  • 可以推送通知到手机(Bark/Telegram)

快速上手

Docker 三步走(推荐):

# 1. 下载配置
mkdir -p cfst-ddns/data && cd cfst-ddns
curl -O https://raw.githubusercontent.com/lonelyman0108/cfst-ddns/main/docker-compose.yml
curl -o data/config.sh https://raw.githubusercontent.com/lonelyman0108/cfst-ddns/main/config.example.sh

# 2. 改配置(填你的 Cloudflare Token 和域名)
vim data/config.sh

# 3. 起飞
docker-compose up -d

默认每 6 小时跑一次,想改频率就改 docker-compose.yml 里的 CRON_SCHEDULE

或者本地跑:

git clone https://github.com/lonelyman0108/cfst-ddns.git
cd cfst-ddns
./install.sh          # 自动下载测速工具
cp config.example.sh config.sh
vim config.sh         # 填配置
./cfst_ddns.sh        # 跑一次试试

配置示例

# ========== DNS 提供商选择 ==========
DNS_PROVIDER="cloudflare"

# ========== 要更新的域名列表 ==========
DNS_RECORD_NAMES="test1.example.com test2.example.com"

# ========== Cloudflare API 配置 ==========
# 方式一:使用 API Token(推荐)
CF_API_TOKEN="your_api_token_here"
CF_ZONE_ID="your_zone_id_here"

# 方式二:使用 Global API Key
# CF_API_EMAIL="[email protected]"
# CF_API_KEY="your_global_api_key"
# CF_ZONE_ID="your_zone_id_here"

# ========== DNSPod API 配置 ==========
# 格式:ID,Token(例如:12345,1234567890abcdef1234567890abcdef)
DNSPOD_TOKEN="your_id,your_token"

# 可选:测速参数
CFST_PARAMS="-n 200 -t 4 -sl 5"  # 默认就挺好

# 可选:通知
ENABLE_BARK="true"
BARK_KEY="your_key"

亮点

  1. 智能更新:IP 没变就不动,省 API 调用
  2. 调试友好:可以跳过测速直接用上次结果(调试神器)
  3. 多架构镜像:x86/ARM64/ARMv7 都能跑,树莓派也 OK
  4. 日志清晰:每次执行完都给你个表格汇总,一目了然

适合谁用?

  • 自建服务套了 CF CDN,想优化国内访问速度
  • 懒得手动测速改 DNS
  • 有树莓派/NAS/VPS 想挂个长期任务
  • 管理多个域名的 DDNS

链接

最后

基于 XIU2 大佬的 CloudflareSpeedTest ,感谢原作者 :folded_hands:

觉得有用就给个 Star 呗,有问题欢迎提 Issue~

54 个赞

感谢分享~

原来这么能水,才发现

没有很水啦,水不过大水哥,我一般都是点个赞就跑的,偶尔回复一下,但是现在点赞冷却了 :tieba_087:

感谢佬分享

太强了,大佬

感谢分享

大佬太强了

真的很有帮助啊

没看懂,这个是相当于把优选CloudflareIP绑定在cdn.domain.com

然后怎么使用呢,cname到cdn.domain.com,和下面这个教程一样?

https://linux.do/t/topic/1052945

感谢分享

感谢佬 之前是定时运行脚本

差不多就是这样的 我的这个就是选出最好的他这个域名的解析结果的

已Star,感谢分享

太好了,一会拿我的小鸡试试

正好需要,谢谢

感谢分享, 这下原来的脚本可以停掉了哈哈

感谢技术大佬

更新了下 支持DNSPOD的解析了

如果能自定义TG代理就更好了