DDNS Worker
背景
DDNS可实现具有公网IP(重启路由器后会变化)家庭路由器IP到域名的动态绑定。很多朋友使用花生壳或tp-link自带的tpddns.cn来实现此功能,最近收到通知2025.6.1以后tp-link不再提供服务。本文介绍使用Cloudflare Worker实现的ddns的方法和代码。
代码地址
移步Github ddns-worker
前提条件
- 已经有自己的域名,购买申请有多种方式,自查方法
- 如主域名为example.com
- ddns地址为my.example.com
- worker的地址为worker.example.com(也可使用cf的默认域名但会墙,如何修改见下文)
- 在cloudflare上托管,注册一个账户,免费plan,把域名配置上
- cloudflare的操作参见后文:Cloudflare Workers 简介
部署方法
worker的代码部署
- 将本ddns-worker工程fork到自己的github账户下(也可以通过将index.js直接上传到worker的代码编辑框,就不用执行以下步骤了)
- 在 Cloudflare Dashboard 中创建一个新的 Worker 项目
- 进入 Workers & Pages > 创建应用程序 > 连接到 Git(或在settings界面中设置build)
- 连接到您的 GitHub 账户并选择包含 DDNS Worker 代码的仓库
- 配置构建设置:
- Build command: 留空(None)
- Deploy command:
npx wrangler deploy - Root directory:
/
- 设置生产分支(默认为
main) - 配置必要的环境变量(见下文的worker中配置环境变量)
- 点击"保存并部署"
完成上述步骤后,每当您推送代码到指定的分支,Cloudflare 将自动构建和部署您的 Worker。
woker中配置环境变量
在 Cloudflare Dashboard 中配置:
- 进入 Workers & Pages > your-worker-name > Settings > Variables
- 添加相应的变量或加密变量
- 重要:所有变量都应设置为加密变量(Secret),以确保在自动部署过程中不会丢失
本程序可支持多域名,每个域名需要配置以下三个环境变量:
{
your_dns_record_name}__zone_id - 域名所在的 Cloudflare 区域 ID(应设置为加密变量,否则部署时会覆盖)
{
your_dns_record_name}__api_token - 用于 Cloudflare API 认证的令牌(应设置为加密变量)
{
your_dns_record_name}__access_key - 用于客户端访问验证的密钥(应设置为加密变量)
例如,要为 my.example.com 配置 DDNS 更新:
my.example.com__zone_id
my.example.com__api_token
my.example.com__access_key
使用方法
手工调用:
- 查询当前 IP:直接访问
https://your-worker-domain.workers.dev/(修改route后可以为https://worker.example.com) - 更新 DNS 记录:访问
https://your-worker-domain.workers.dev/update?name=your_dns_record_name&key=your_access_keyname:需要更新的 DNS 记录名称,使用完整域名(如my.example.com)key:访问密钥,用于验证更新请求,要等于worker中的my.example.com__access_key值
使用 crontab 自动更新
您可以在Linux主机(希望将其所在网络的公网出口IP作为dns解析ip)上使用 crontab 设置定时任务,自动更新您的 DNS 记录:
-
编辑 crontab:
crontab -e -
添加定时任务:
每分钟更新一次:
* * * * * /usr/bin/curl -4 -s "https://worker.example.com/update?name=your.example.com&key=your_access_key" > /dev/null 2>&1每小时更新一次(推荐):
0 * * * * /usr/bin/curl -4 -s "https://worker.example.com/update?name=your.example.com&key=your_access_key" > /dev/null 2>&1注意:
- 使用完整路径
/usr/bin/curl避免环境变量问题(可通过which curl命令查找您系统上的curl路径) - 使用
-4参数强制使用 IPv4 连接 -s参数使 curl 静默运行,不输出进度或错误信息> /dev/null 2>&1将所有输出重定向到空设备,防止 cron 发送邮件
- 使用完整路径
Cloudflare Workers 简介
Cloudflare Workers 是一个无服务器计算平台,允许您在 Cloudflare 的边缘网络上部署和运行代码,无需管理服务器。
必要的 Cloudflare 设置
-
创建 Cloudflare 账户
- 访问 Cloudflare 官网 注册账户
- 参考:Cloudflare 注册指南
-
添加域名到 Cloudflare
- 将您的域名添加到 Cloudflare 进行管理
- 参考:

最低0.47元/天 解锁文章
2271

被折叠的 条评论
为什么被折叠?



