在 OpenWrt 配置 Cloudflare DDNS

/ 0评 / 0

写在开始

前几天给 NAS 换了基于 Docker 的 CasaOS,想着装一个frpc 以备不时之需,结果在应用商店看到了 Cloudflared(cloudflare/cloudflared),原来 Cloudflare 也有提供类似 frp 的 Tunnel 服务,而且目前是有免费计划可以使用的。
这个 Tunnel 比 frp 配置起来更简单,客户端只需要开好对应的 Docker 后运行,并输入由 Cloudflare 生成的 Token,就不需要再操作了。剩下的端口映射以及域名绑定都是在 Cloudflare 网页操作。
但是,若想绑定自己的域名,就必须先将整个域名添加到 Cloudflare,想了想也挺合理的,都免费提供穿透服务了,附带着给自己的产品增下用户量也没啥问题。
只不过,这样就得把我对应域名的域名服务器(NS)修改过去了。此前这个域名用 DNSPod 的时候我在路由器上配置过 DDNS,折腾了很久。这次换了 Cloudflare 之后,没想到又折腾了半天,网上没有找到完整的教程,因此在这里记录一下折腾的心得和踩过的一些坑。

参数配置

Cloudflare-DDNS-OpenWrt配置
查询主机名直接填自己解析的域名就行;
域名这里必须得用“@”分隔自己的主域名和子域的名字(Cloudflare奇奇怪怪的规则);
用户名填写自己 Cloudflare 账号的邮箱;
密码填写自己 Cloudflare 账号的 Global API Key(点右上角头像→个人资料→ API 令牌)

此外,为确保稳妥,还需要进入高级设置,修改获取 IP 地址的方法
修改获取IP地址的方法
按照图上的设置,修改为通过 URL 获取 IP 地址,然后填写下方的例子即可

折腾心得

OpenWrt 我已使用一个多月,可以说它能够实现所有需要的功能,只不过网上现成的教程和参考比较少,很多功能需要自己不断尝试才能实现,有时也需要一些 Linux 基本功。
在配置 DDNS 时,luci-app-ddns 提供的这些服务商接口的用法各不相同,就比如它提供的这个 Cloudflare 与我在网上找到的一篇文章所使用的 DDNS 接口就不一样。遇到这种问题时,最有效的方法就是查看日志(编辑自己添加的 DDNS 服务→日志查看器→读取/重新读取日志文件),可以在这里查看接口是否和自己配置的是同一接口。如果接口配置是正确的,但仍报错,也可查看具体是何种错误(luci-app-ddns 主页就只会显示一个 XHR Error -_-)。
如果中文搜索引擎无法搜寻到有帮助的信息,可以试试用 Google 或者 Bing 搜索英文关键词,有时也能找到国外论坛的有用的帖子。

参考文章

python3利用cloudflare api批量解析域名及配置page rules

CloudFlare DDNS OpenWrt 配置的一些坑

声明:本文使用 知识共享署名 4.0 国际许可协议 [CC BY-NC-SA 4.0] 进行授权

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注