FastCDN说明文档
前言
最近几天一直再写一个小程序(其实去年11月就有想法了,但是这两天才有时间真真完善了一下),这两天终于写完了v0.1版本了,并且也达到了一个正常使用的范围
FastCDN简介
一款自动优选CloudFlare的Anycast IP以及第三方反代IP或亚马逊CDN服务器IP并自动DDNS到CLoudFlare托管的域名上的工具,并且可根据地区选择同步到对应域名
使用文档
当前文档适用版本:v0.1.1
若版本不同,具体功能实现可能会有差异
准备工作
- FastCDN项目地址:https://github.com/Akimio521/FastCDN,可以通过Git Clone或者打包下载的方式下载到本地
- 安装Python,推荐使用Python3.10及以上版本
- 安装依赖库:
- 手动安装以下依赖:
- pandas == 2.1.4
- requests == 2.31.0
- PyYAML == 6.0.1
- 通过Pip安装:
1
pip install -r requirements.txt
下载CloudFlareSpeedTest
回到FastCDN的文件夹中,运行以下命令
1 | python start.py |
获取账户信息以及DomainID
CloudFlare网站部分
如果你熟悉CloudFlare可以查看大致步骤,详细步骤可以跳过
大致步骤
- 获取CloudFlare邮箱
- 获取
Global API Key
- 获取对应一级域名的
区域ID
也就是zone_id
- 解析需要的子域名的A记录,值任意
详细步骤
首先需要去CloudFlare注册一个账号,并托管域名到CloudFlare(这一步大家应该都做好了吧)
假设我需要把优选的IP解析到a.com这个一级域名的子域名下,可以进入管理域名a.com
的页面—>侧边栏点击概述
->右下方的API页面可以找到a.com
的区域ID
也就是zone_id
,记录该值备用;再点击下方的获取您的API令牌
,查看全局API令牌,即Global API Key
,记录该值备用
然后回到DNS解析部分,解析两个域名(也可以更多),我这里解析了hk.a.com
和us.a.com
,均为A记录,值可以任意,我这里就填1.1.1.1
获取DomainID
v0.1.1以上版本无需获取
~~回到FastCDN的文件夹中,运行以下命令
1 | python get_zone_id.py |
按要求依次填入CloudFlare账户邮箱、全局API令牌、区域ID以及域名,这样就能获取该域名的域名ID
如有多个域名,请重新执行以上操作,分别获取域名对应的域名ID~~
配置Config文件
在FastCDN/config
目录下创建一个文件config.yaml
以下是内容模板,按照要求填写
- setting
- account这部分的三个值已经在之前的步骤中获取过
- CFST:这几个参数已经有简单的描述,详细描述可见XIU2/CloudflareSpeedTest: 🌩「自选优选 IP」(github.com) - SpeedTest
- 标识名1(任意,自己看得懂就好)
- domain:需要解析的子域名,我这里就是hk.a.com
- cfcolo:机场三字码(具体值可以自行搜索),填写此值可以获取到对应地区的IP(可以填写多个值,用英文逗号间隔)
- 标识名2
- 标识名3
下面是参考的配置文件
1 | setting: |
YAML对缩进要求严格,请正确对齐
运行FastCDN
回到FastCDN的文件夹中,运行以下命令
1 | python main.py |
可能会遇到的问题
问题 | 解决方法 |
---|---|
无法获取CloudFlare域名ID(v0.1.1及以上现象可能是无法更新DNS) | 大概率是未解析初始值,需要先去网页端解析一个初始A记录 |
如何优选亚马逊CDN | 需手动替换IP集FastCDN/temp/ipv4.txt |
如何优选IPv6并解析到域名 | 目前只支持IPv4,お楽しみに |
致谢
XIU2/CloudflareSpeedTest 为本项目提供测试程序
snowfall9/CloudflareST_auto_selector 为本项目提供思路
https://zip.baipiao.eu.org 为本项目提供反代IP
- 感谢您的赞赏。