使用 DNControl 用代码管理 DNS 记录
共计 1222 个字符,预计需要花费 4 分钟才能阅读完成。
看见别人介绍了一下 DNControl,感觉挺有意思,就尝试使用了一下,效果还不错。它可以通过自己写配置文件,通过 DSL(Domain Specific Language)同时管理多个厂商的 DNS 记录。
支持的 DNS 厂商列表:https://docs.dnscontrol.org/service-providers/providers
看了下介绍,似乎还不支持 dnspod,但是支持 cf,所以这里以托管在 cf 的域名为例。
首先创建一个文件夹,存放配置文件。
mkdir /home/docker/dc/
然后创建 cf 的配置文件。这里有两种方式可以使用。
# 方式一(推荐)
cat > creds.json <<EOF
{
"cloudflare": { // 在 dnsconfig.js 文件中需要用到的厂商名称
"TYPE": "CLOUDFLAREAPI", // cloudflare 的认证类型
"accountid": "account-id", // 账户 id,即管理域名右下角那个帐户 id
"apitoken": "api-token", // token,需要在 https://dash.cloudflare.com/profile/api-tokens 创建,以便给此认证方式最小的权限
}
}
EOF
# 方式二 - 这种方式权限很大,因为这些凭据允许 DNSControl 访问所有内容
cat > creds.json <<EOF
{
"cloudflare": { // 在 dnsconfig.js 文件中需要用到的厂商名称
"TYPE": "CLOUDFLAREAPI", // cloudflare 的认证类型
"accountid": "account-id", // 账户 id,即管理域名右下角那个帐户 id
"apiuser": "api-user", // cloudflare 登陆的邮箱
"apikey": "api-key" // 这个页面下的 Global API Key
}
}
EOF
配置完凭据,然后就是配置具体的域名和其解析记录,这里根据自己的需要配置。
cat > dnsconfig.js <<EOF
var REG_NONE = NewRegistrar("none");
var DNS_CF = NewDnsProvider("cloudflare");
D("xxx.com", REG_NONE, DnsProvider(DNS_CF),
A("@", "1.2.3.4", CF_PROXY_ON)
);
EOF
然后执行命令检查配置是否有误。
docker run --rm -it -v /home/docker/dc/:/dns ghcr.io/stackexchange/dnscontrol preview
如果没有报错会提示新增或修改删除了哪些记录,然后执行修改命令即可。
docker run --rm -it -v /home/docker/dc/:/dns ghcr.io/stackexchange/dnscontrol push
提醒:本文发布于294天前,文中所关联的信息可能已发生改变,请知悉!
Tips:清朝云网络工作室
阅读剩余
THE END