使用 Linode API v4 部署自己的动态域名

在 Linode (已被 Akamai 收购) 有个小的 VPS 挂着这个博客网站,便宜且稳定。顺便把域名解析的服务也免费托管到了 Linode。自己家里的宽带是动态 IP 的。为了方便在外的时候能够连接到家里的网络,就利用 Linode 的 API 来将自己家里宽带的 IP 更新到 Linode 的 DNS 解析服务上,自建动态域名解析(DDNS)。这个方案在之前的博文「使用 Linode VPS 部署自己的动态域名」中做了记录。提示一下,现在新注册 Linode VPS 可以获得 $100 的代金券,够使用 $5/月的 VPS 20 个月了。

前些日子 Linode 通知说 v3 版本的 API 要停止服务了,敦促我更新使用版本 4(v4)的 API。到这个月底,旧的 v3 版本的 Linode API 就不能用了。当时偷懒的代价4年后终于要还上了。v4 版本的 Linode API 使用了标准的 REST 架构。这两天才有时间把之前的自动更新二级域名 IP 地址的脚本更新到 Linode API v4。

整体方案还是跟以前的一样,只是更改一下使用 curl 来提交更新请求的方式。

首先,原来的 API key 不能用了。这个需要登录 Linode Manager(现在叫 Akamai Cloud Manager),到右上角自己的用户名那里的下拉菜单中点击「API Tokens」,然后创建该用户的的一个 Personal Access Token 即可。与原来的方法一样,只是换了个叫法。(好像这一串字符的规则也变了,但是对我们来说无所谓。)注意,令牌生成之后需要记下来,因为它只显示一次。

第二,更新到 API v4 的 curl 方法官方支持文档里有例子。将「使用 Linode VPS 部署自己的动态域名」中那个脚本里的 最后的 curl 命令改成新的格式即可。

先准备 token(也就是之前说的 LINODE_API_KEY)

~> TOKEN=上面获取的新令牌那一串字符

查询 DNS 的 curl 格式为(见文档),

~> curl -H "Authorization: Bearer $TOKEN" \
https://api.linode.com/v4/domains

返回的结果是 json 格式。如果本地电脑使用的是 Linux 系统并且安装了 jq 软件包,可以按照下面的方式来让返回的结果更美观,(注意上面我们已经准备好了 TOKEN)

~> curl -H "Authorization: Bearer $TOKEN" \
https://api.linode.com/v4/domains | jq .

将本地 IP 地址更新到域名记录中的方式(使用 PUT 方法),(前几行先准备一下要用的几个参数,下面例子里面的数字是我瞎编的,TOKEN 前面已准备)

~> DOMAIN_ID=123456 # 这个还跟以前一样,也就是顶级域名,如 domain.com,在 Linode 域名管理系统中的编号
~> RECORD_ID=12345678 # 这个跟以前的 RESOURCE_ID 一样,也就是子域名,如 test.domain.com, 的编号
~> name=test # 对应前面那篇博文中的子域名名称,那就是 test.domain.com 中的 test 了
~> WAN_IP=127.0.0.1 # 这里就是要更新到记录上去的新 IP 地址了
~> curl -H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-X PUT -d '{
"type": "A",
"name": "'${name}'",
"target": "'${WAN_IP}'"
}' \
https://api.linode.com/v4/domains/$DOMAIN_ID/records/$RECORD_ID

虽然官方文档的例子中列出来了很多参数,但是我们并不需要用那么多。©

本文发表于水景一页。永久链接:<https://cnzhx.net/blog/https-cnzhx-net-blog-ddns-with-linode-api-v4/>。转载请保留此信息及相应链接。

1 条关于 “使用 Linode API v4 部署自己的动态域名” 的评论

  1. 引用通告: 使用 Linode VPS 部署自己的动态域名 | 水景一页

雁过留声,人过留名

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

特别提示:与当前文章主题无关的讨论相关但需要较多讨论求助信息请发布到水景一页讨论区的相应版块,谢谢您的理解与合作!请参考本站互助指南
您可以在评论中使用如下的 HTML 标记来辅助表达: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>