我家是联通的宽带,在路由器上给某台内网的主机设置了 DMZ 映射暴露给公网,为了动态的获取家里的外网 IP,尝试使用 DNSPod 做动态域名解析。
-
说明
API_TOKEN
: DNSPod 的 API Token,应该是ID,Key
的组合DOMAIN_ID
: 某个域名的 IDRECORD_ID
: 某个域名的记录 IDSUB_DOMAIN
: 需要设置 DDNS 的域名名称, 例如:www
-
注册 DNSPod 帐号
请去这里: http://dnspod.cn
-
增加域名及记录
请去这里: http://dnspod.cn
-
设置 API Token
请去这里: http://dnspod.cn, 在帐号设置哪里。DNSPod 默认不保存 Key,需要自己保存一下,否则后面查不到了。
本来可以用其他认证方式,比如用户名和密码,但是在一些公共机器上,用这个不太安全,DNSPod 最近提供了 API KEY 的功能,推荐大家用这个。以后应该会根据域名提供 API Key 权限的功能,这样就更安全了。
另外,如果开启了 D 令牌,那认证很麻烦,为了使用 API 我关闭了 D 令牌。。。
-
查询 domain id & record id
- 获取 domain id
curl -v https://dnsapi.cn/Domain.List -d "login_token=API_TOKEN&format=json"
- 获取 domain id 下面的 record id
curl -k https://dnsapi.cn/Record.List -d "login_token=API_TOKEN&domain_id=DOMAIN_ID&format=json"
-
在 Linux 主机上加一个 cron
我设置的是一个小时更新一次,另外,在访问 Recorde.Ddns 这个 URL 的时候,DNSPod 会自动记录你的公网 IP 的,所以用起来非常方便。注意不要访问太频繁,否则会被封禁的。
cat /etc/cron.d/dnspod
* /1 * * * root curl -X POST https://dnsapi.cn/Record.Ddns -d "login_token=API_TOKEN&format=json&domain_id=DOMAIN_ID&record_id=RECORD_ID&record_line=默认&sub_domain=SUB_DOMAIN"
-
测试
sudo run-parts -v /etc/cron.d