Skip to content
Erning.write()
Go back

动态域名解析服务

有自己的 VPS,很多服务都可以自己来做了,例如我自己安装一个 VPN 用来穿墙。今天用PowerDNS做了一个动态域名解析服务,替换过去老旧的方法。现在不仅可以自己用,还可以提供给其他有动态域名解析需求的同学。

更新域名的 API 很简单,一个 HTTP 请求即可。API 地址是: http://dynamic.wacao.com/api/plain.php,参数为,

其中hostshared_key需要我来提供。这里提供一个的 host 和 shared_key 给大家测试。testing, d035cdac09dd866ed8f4a244567c4daf。域名为 testing.dynamic.wacao.com.。

由于仅是一个 HTTP 请求,客户端很容易用各种语言实现。我自己用的是一个简单的 shell 脚本。

#!/bin/bash
 
function usage {
    echo "Usage: $0 {host} {shared_key}"
}
 
if test -z $1 || test -z $2
then
    usage
    exit 1
fi
 
HOST=$1
SHARED_KEY=$2
ENDPOINT="http://dynamic.wacao.com/api/plain.php"
 
TIME=`date +%s`
SIGN=`echo -n "${HOST}${TIME}${SHARED_KEY}" | sha1sum -t | awk '{print $1}'`
URL="${ENDPOINT}?host=${HOST}&time=${TIME}&sign=${SIGN}"
curl "$URL"

执行后立即能够解析,TTL 为 5 秒。

$ update-dynamic-dns.sh testing d035cdac09dd866ed8f4a244567c4daf
ok. 58.33.69.77
$ host testing.dynamic.wacao.com.
testing.dynamic.wacao.com has address 58.33.69.77

我将这个脚本加到 crontab 里,每 5 分钟更新一次。

*/5 * * * * /usr/local/sbin/update-dynamic-dns.sh ${HOST} ${SHARED_KEY}

如果觉得 testing.dynamic.wacao.com 这样的域名不好看,而且你有自己的域名,可以想我一样,给自己的域名加一个 CNAME。例如我把 alcohol.swanpan.com 做了一个 CNAME 指到 alcohol.dynamic.wacao.com

;; ANSWER SECTION:
alcohol.swanpan.com.    86400   IN  CNAME   alcohol.dynamic.wacao.com.
alcohol.dynamic.wacao.com. 5    IN  A   58.33.69.77

这样我在各个地方都能用 alcohol.swanpan.com 这个域名访问家里的机器,方便用它穿墙

想试试的朋友告诉我你要的 host,我给你发送 shared_key。


Share this post on:

Previous Post
工程师普遍采用的时区是当地时区-8
Next Post
USB 硬盘的固定设备名和自动休眠