Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

idevsig/cfdns

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

21 Commits

Repository files navigation

以下是整理后的文档:


CloudflareDNS

依赖 CloudflareSpeedTest (v2.3.4)

Docker 构建与拉取

本地构建

docker buildx bake

使用本项目提供的镜像

版本: latest, main, <TAG>

Registry Image
Docker Hub idevsig/cfdns
GitHub Container Registry ghcr.io/idev-sig/cfdns
Tencent Cloud Container Registry(SG) sgccr.ccs.tencentyun.com/idevsig/cfdns
Aliyun Container Registry(GZ) registry.cn-guangzhou.aliyuncs.com/idevsig/cfdns

拉取镜像:

docker pull idevsig/cfdns:latest
# 或者
docker pull ghcr.io/idev-sig/cfdns:latest

使用

Docker 方式

运行命令:

docker run --rm idevsig/cfdns:latest cfspeedtest -a user@example.com -k api_key -d example.com -p cf -s 5 -n -o
# gcore
docker run --rm idevsig/cfdns:latest cfspeedtest -a user@example.com -k api_key -d example.com -p cf -s 5 -n -o -i gc -u https://hk2-speedtest.tools.gcore.com/speedtest-backend/garbage.php?ckSize=1000

docker compose 方式

  1. docker-compose.yml
services:
 cfdns:
 image: idevsig/cfdns:latest
 container_name: cfdns
 restart: unless-stopped
 environment:
 - CLOUDFLARE_EMAIL=user@example.com
 - CLOUDFLARE_API_KEY=api_key
 - TZ=Asia/Shanghai
 command: ["daemon"]

运行:

docker compose up -d
  1. 设置定时计划:
# 添加定时计划
docker exec cfdns sh -c "echo '15 4 * * * cd /app; cfspeedtest -d example.com -p cf -r -n' | crontab -"
# 启用
docker exec -d cfdns crond -b -l 8
# 停止计划任务
docker exec cfdns pkill crond
# 强制停止计划任务
docker exec cfdns killall crond
# 重启计划任务
docker exec cfdns pkill -HUP crond
# 或者
docker exec cfdns pkill crond && crond

脚本方式(位于文件夹 scripts)

e.g.: 
 ./cfspeedtest.sh -a user@example.com -k api_key -d example.com -p cf -s 2 -n -o
e.g.:
 export CLOUDFLARE_API_KEY="api_key"
 export CLOUDFLARE_EMAIL="user@example.com"
 ./cfspeedtest.sh -d example.com -p cf -s 2 -n -o

export CLOUDFLARE_API_KEY="api_key"
export CLOUDFLARE_EMAIL="user@example.com"
cd $(mktemp -d) && curl -L https://fastfile.asfd.cn/https://raw.githubusercontent.com/idev-sig/cfdns/refs/heads/dev/scripts/cfspeedtest.sh -O && chmod +x cfspeedtest.sh
DEBUG=1 ./cfspeedtest.sh -d 222029.xyz -p xf -n -r -i cf

帮助

usage: ./cfspeedtest.sh [ options ]
 -h, --help print help
 -a, --account <account> set Cloudflare account
 -k, --key <key> set API key
 -t, --type <type> set zone type
 -d, --domain <domain> set domain
 -p, --prefix <prefix> set prefix
 -s, --speed <speed> set download speed (default: 2)
 -c, --cdn <cdn> set cdn url
 -i, --ipurl <ip_url> set ip url (cf,gc,ct,aws)
 -u, --url <url> set speed test url
 -P, --port <port> set speed test port
 -q, --quantity <quantity> set record quantity
 -e, --extend <string> set extend string
 -r, --refresh refresh result.csv
 -n, --dns update DNS records 
 -o, --only only refresh one host

-h / --help: 帮助信息
-a / --account: Cloudflare 账号
-k / --key: Cloudflare API 密钥
-t / --type: 域名主机名类型
-d / --domain: 域名
-p / --prefix: 域名前缀
-s / --speed: 下载速度下限,单位 M,低于此速度则不记录(默认为 2)
-c / --cdn: CDN URL,更新脚本时不需再扶梯
-i / --ipurl: IP 数据源 URL(以支持 GCore, CloudFront, AWS,可使用 (cf,gc,ct,aws))
-P / --port: 速度测试端口
-u / --url: 速度测试 URL
-q / --quantity: 记录至 Cloudflare 解析记录的条数
-e / --extend: 扩展参数字符串
-r / --refresh: 强制刷新 result.csv
-n / --dns: 更新 DNS 解析记录
-o / --only: 只刷新一条主机前缀记录

  • key, CLOUDFLARE_EMAIL 为 CloudFlare 账号
  • account, CLOUDFLARE_API_KEY-> API Keys -> Global API Key

示例说明

  1. 更新 DNS 记录:参数 -n 存在时,结果将更新到域名解析记录中。

  2. 过滤下载速度:若不带 -o 参数,从 result.csv 中筛选下载速度大于 -s 指定的速度并更新 DNS。 例如:

    # result.csv
     IP 地址,已发送,已接收,丢包率,平均延迟,下载速度 (MB/s)
     104.18.31.111,4,4,0.00,169.69,6.36
     103.21.244.82,4,4,0.00,182.95,4.63
     104.19.84.89,4,4,0.00,184.91,3.82
    export CLOUDFLARE_API_KEY="api_key"
    export CLOUDFLARE_EMAIL="user@example.com"
    ./cfspeedtest.sh -d example.com -p cf -s 4 -n
    # 将 104.18.31.111 A 记录到 cf1.example.com
    # 将 103.21.244.82 A 记录到 cf2.example.com
    ./cfspeedtest.sh -d example.com -p cf -s 4 -n -o
    # 仅将 104.18.31.111 A 记录到 cf.example.com
  3. 扩展参数:CloudflareSpeedTest 支持通过 -e 参数传递额外的设置。

  4. IP 数据源格式:每行一个数据,如:

    173.245.48.0/20

速度测试 URL(-u--url 参数)

CloudFlare(cfst 已默认。若无下载速度,可使用此)

https://speed.cloudflare.com/__down?bytes=25000000

GCore

  • 香港:
https://hk2-speedtest.tools.gcore.com/speedtest-backend/garbage.php?ckSize=1000
  • 日本:
https://cc1-speedtest.tools.gcore.com/speedtest-backend/garbage.php?ckSize=1000
  • 新加坡:
https://sg1-speedtest.tools.gcore.com/speedtest-backend/garbage.php?ckSize=1000

ckSize 为文件大小,可以自行修改。

CacheFly

https://cachefly.cachefly.net/100mb.test

仓库镜像


About

提取最佳的 CloudFlare IP 并更新到 CloudFlare DNS

Resources

License

Stars

Watchers

Forks

Packages

Contributors

AltStyle によって変換されたページ (->オリジナル) /