Cloudflare DDNS 配置
这页适合谁
如果你的域名托管在 Cloudflare,而你又希望 fknock 自动把域名解析更新到当前公网 IPv4 / IPv6,这页就是给你的。
它主要适用于:
- 直连模式
- 公网 IP 可能变化
- 想通过固定域名访问 fknock
如果你走的是:
FRPCloudflared
那么反代教程本身通常不需要先做 Cloudflare DDNS。
先理解:fknock 会怎样更新 Cloudflare 记录
fknock 会定期检查本机当前公网 IPv4 / IPv6,然后调用 Cloudflare DNS Records API:
- 先按完整域名查询现有
A/AAAA记录 - 找到就更新
- 找不到就创建
也就是说,Cloudflare DDNS 的本质不是“神秘黑盒同步”,而是:
用 Cloudflare 官方 DNS API,把你的域名记录持续改成当前公网地址。
fknock 页面里要填的 4 个字段
| 字段 | 填什么 | 去哪里拿 |
|---|---|---|
API Token | 用于调用 Cloudflare API 的令牌 | My Profile → API Tokens |
Zone ID | 目标域名所在 Zone 的唯一标识 | Cloudflare 账号 Overview 页的 API 区域 |
域名 | 要更新的完整域名 | 你自己决定,例如 home.example.com |
Cloudflare 代理 | 仅解析 或 橙色云朵 | 在 fknock 里直接选 |
第 1 步:创建 API Token
Cloudflare 官方当前推荐的做法是创建 API Token,而不是使用 Global API Key。
最省事的路线是:
- 登录 Cloudflare Dashboard
- 进入
My Profile → API Tokens - 点击
Create Token - 选择官方模板:
Edit zone DNS
- 把资源范围限制到你真正要更新的那个 Zone
- 创建后立刻复制 token
如果你不用模板,而是自己建自定义 token,那么至少要保证:
Zone > DNS > Edit
并把作用范围限制在目标 Zone。
第 2 步:获取 Zone ID
Cloudflare 官方当前文档给出的路径是:
- 进入
Account home - 打开对应账号的
Overview - 在页面里的
API区域找到Zone ID - 点击复制
请注意:
Zone ID不是域名本身- 也不是
Account ID - 它是这个域名 Zone 的唯一标识
如果你有多个域名,一定要确认复制的是目标域名所属 Zone 的 ID。
第 3 步:确定 域名 应该怎么填
这里要填的是:
- 完整域名
例如你要更新的是:
home.example.com
那就直接填:
home.example.com
而不是只填:
home
是否需要你先在 Cloudflare 里手动创建记录,取决于你的习惯。即使记录不存在,fknock 也可以在首次更新时直接创建对应的 A / AAAA 记录。
第 4 步:决定 Cloudflare 代理 怎么选
对 fknock 的 7999 直连入口,通常应选 仅解析
也就是灰云。
原因不是“文档习惯”,而是 Cloudflare 官方当前只默认代理一组固定的 HTTP / HTTPS 端口,例如:
8044380808443
而 fknock 直连入口常见的是:
7999
它不在 Cloudflare 默认代理端口列表里。
因此,在下面这种典型场景里:
- 域名直接指向你家的公网 IPv4 / IPv6
- 访问的是 fknock 的
7999
通常建议:
- 选择
仅解析
什么时候才考虑橙色云朵
只有在你的外部链路本来就是围绕 Cloudflare 代理设计的情况下,才值得再评估:
- 访问端口是否受支持
- 是否应该改用 Cloudflare Tunnel
- 是否属于 Spectrum 等别的产品能力范围
对 fknock 的直连教程来说,默认不建议把 7999 做成橙色云朵。
第 5 步:回到 fknock 填写并测试
路径:DDNS 管理
推荐顺序:
- 选择提供商为
Cloudflare - 填入
API Token - 填入
Zone ID - 填入完整域名
Cloudflare 代理先选仅解析- 保存并执行一次测试更新
测试成功后,建议再同时检查:
- fknock 的更新日志
- Cloudflare DNS 记录页
- 真实外网访问结果
双栈用户要特别注意什么
如果设备同时拿到了公网:
- IPv4
- IPv6
那么 fknock 会分别尝试更新:
A记录AAAA记录
所以你在 Cloudflare 里可能会看到两条记录都被维护,这属于正常行为。
如果你的真实需求不是双栈,而是:
- 只维护 IPv6
- 或只维护 IPv4
那么可以回到 DDNS 管理 页面,把:
更新范围
改成对应模式。
如果你的设备上有多张网卡,或者你明确希望通过某个 WAN 口去完成检测和更新,也可以在同一页面里额外指定:
出站网卡
常见错误
保存后提示权限不足
优先检查:
- token 是否真的用了
Edit zone DNS模板,或至少具备Zone > DNS > Edit - token 是否授权到了正确的 Zone
- token 复制时是否带了空格或换行
一直提示更新不到记录
优先检查:
域名是否填成完整域名Zone ID是否对应这个域名所属 Zone- 当前网络是否真的拿到了公网 IPv4 / IPv6
更新范围是否和当前网络能力匹配- 多网卡设备上,
出站网卡是否选错
开了橙色云朵后,7999 就不正常了
这正是直连场景里最常见的误区之一。
更稳妥的做法通常是:
- 保持
仅解析 - 让域名直接解析到公网地址
- 再由 fknock 负责登录入口与后续访问控制
反代教程里到底要不要来配这页
一般不用。
如果你当前走的是:
FRPCloudflare Tunnel
请优先看反代教程和隧道教程,不要把 DDNS 当成反代前置条件。
官方参考
- Dynamically update DNS records
- Create API token
- API token templates
- Find account and zone IDs
- DNS records API: list
- DNS records API: create
- DNS records API: edit
- Network ports
