用Cloudflare实现DDNS

DDNS(动态域名服务)存在很多年了,比如著名的花生壳,甚至像群晖这种都提供了自己的DDNS,用法也都很简单,但是这些服务都有个问题,就是免费的话只能用它们自己的域名,虽然你也可以用CNAME把自己的域名解析到它们的域名上——我以前也一直是这么用的,但这样多转一道总是感觉不太好,增加稳定性问题。

因为前一阵搞fail2ban研究过Cloudflare的API,大概知道了它的API是很强大的,可以干很多事情,DDNS这种小事当然不在话下,放狗搜了一下,也的确有很多解决方案,但是如我在之前的文章里所说,我不喜欢使用全局token去调API做操作,感觉风险比较大,所以没有用这些现成的方案,而是自己写了一个。

本来是用shell写的,但是因为解析JSON有点麻烦(用的是调用python的方式),所以索性用python重写了一版,发在了gayhub

用法很简单,如README所说,准备好那些基本条件之后运行:

python3 cfdns.py <token> <zone_id> <dns_name>

默认通过httpbin取得外网IP,然后检查当前解析的IP,如果不同则更新解析记录。

如果自己有其它方式可以取得外网IP,也可以通过命令行传入。

通过dns_type参数还可以试试用IPV6(不过我没测试过)。

推送到[go4pro.org]