在喵窝偶遇一位叫做茶栗的大佬,翻了下 GitHub 看到写了一个 cf-ddns-worker,感觉有意思。

之前我一直都是傻乎乎用脚本直接扔 API 金轮,但是所有子域名都可能被改,丢了就不妙了;这个玩意能把 API 金轮放在 cf 自家的 worker 上面,安心多了。

毕竟经常要开 vultr 机器,IP 可能会变,要用的子域名是却是一样的,勉强算是目标用户吧。不过因为暂时不用家宽机器了,就没有定时执行的需求了,虽然也就一行 crontab 的事情。

我想了想,虽然原 repo 基本是用 wrangler 的,自己也是这样部署的,但我还是试着跑一下在网页上点点点的路子吧

创建 worker

俺稍微多加了点料,把一些 workers.dev 和遥测关了,顺便开了日志,可以直接 fork 我的 fork

如果 GitHub 没给权限的话先 在这 给一下

一通点点点把 worker 开出来,选好 repo 以后直接部署就行了

环境变量

以下环境变量必须都以 Secret 形式存储

回去域名 overview 抄一下 ZONE_ID

然后开个 API 金轮(CF_API_TOKEN)给 worker,scope 控制到你要用的 zone 以内,尽量不要包括所有 zone,比较危险。

AUTH 是所有用户信息拼成的 JSON 最小化以后的 base64. 这个建议另外找个密码管理器备份一份,不然以后要改或者要查阅可能会有麻烦

[
  {
    "id": "随便起",
    "token": "随机一个,比如用 `openssl rand -base64 <Byte>`"
    "allowed": "要改的域名,比如 myservice.yourdomain.tld,可以野卡"
  },
  {
    //还可以继续加 114514 个
  }
]

然后用赛博大厨 minify 一下,再转成 base64

然后就是到 worker 设置里面添加环境变量了

自定义域名

加个自定义域名,相对来说不太容易被扫,还能开 WAF,毕竟 workers 一天只能 20w 次,被扫就不妙了




最终效果

客户端

原作是个 powershell-phile,提供的 agent 是用 pwsh 写的……但我真不想往我寸土寸金的小硬盘上再塞一个 DotNET Runtime,干脆 vibe 了一个 python 写的 客户端

sudo apt install python3-venv -y

git clone https://github.com/h3arn/cf-ddns-worker-agent
cd cf-ddns-worker-agent
curl -vL https://$USER:$TOKEN@[REDACTED]/[REDACTED]/cf-ddns-worker-agent-config/raw/branch/master/config.py -o config.py

python3 -m venv .venv
source .venv/bin/activate
pip3 install -r requirements.txt
python3 agent.py
deactivate