利用GoDNS和DNSPod设置DDNS

不管是自己家里的运行在公网IP路由器背后的NAS或是买的NAT主机需要连接的时候需要动态DDNS来确定真正的IP地址,再通过端口转发就可以访问了。

DDNS简单介绍

DDNS是 dynamic DNS(动态DNS)的简写,如果我们普通用户的主机的公网IP地址是一个动态的IP地址的话,在NameServer(DNS托管商)那里不可能每次都手动修改IP地址。想要用自动更新DNS地址的话可以采取的是CNAME主机商分配给你的DDSN主机名,因为主机商采用的是自己的DNS软件可以采集到IP地址,或者家里路由器也有一些DDNS主机名功能,如果想要使用自己的域名的话可以采取CNAME这些,当然也可以用我们今天介绍的GoDNS等DDNS程序。如何使用Linux命令知道自己的真正公网IP地址呢?参考以下:
curl whatismyip.akamai.com
curl http://members.3322.org/dyndns/getip
curl ip.cip.cc

安装GoDNS

GoDNS是我从网上看到的一个DDNS软件,支持的版本有Mac的OS X系统、Windows系统、Linux系统、Arm架构,同时他支持的DNS托管商有DNSPod、Cloudflare、HE.net。当然还有最棒的是他现在开始支持泛域名解析跟多个IP同时更新,同时还可以Email通知IP变更。他的GitHub官网地址是https://github.com/TimothyYe/godns。

这个教程我简单介绍下如果通过GoDNS跟DNSPod给自己的Linux配置DDNS。DNSPod需要提前准备自己的API Token。地址为https://www.dnspod.cn/console/user/security。生成后保存id跟Token值备用。同时域名example.com中需要设置动态DNS的子域名www、test也要先建立一个随机的IP地址1.2.3.4。

1、手动编译

GoDNS是根据Go语言写的,可以在GitHub官网整个库打包下来然后用go语言运行,这种方式可以保证是最新的版本。
yum -y install go git
git clone https://github.com/timothyye/godns.git
cd cmd/godns
go get -v
go build

运行完毕以后就会生成godns的一个二进制文件,可以直接运行。

2、下载运行

当然也可以通过https://github.com/TimothyYe/godns/releases地址来下载最新版。

mkdir /usr/local/godns
cd /usr/local/godns
wget https://github.com/TimothyYe/godns/releases/download/V1.6/godns-linux64-1.6.tar.gz
wget -N --no-check-certificate https://raw.githubusercontent.com/TimothyYe/godns/master/config_sample.json
wget -N --no-check-certificate https://raw.githubusercontent.com/TimothyYe/godns/master/systemd/godns.service

接下来解压文件,把配置文件重命名。


tar zxvf godns-linux64-1.6.tar.gz
mv config_sample.json config.json

修改config.json文件
以下几行是必须修改的范例:
{
"login_token": "your_id,your_token",
"domains": [{
"domain_name": "example.com",
"sub_domains": ["www","test"]
},{
"domain_name": "example2.com",
"sub_domains": ["www","test"]
}
],
}

your_id和your_token都是DNSPod API token中的配置,www、test都是需要配置动态DNS的example.com和example2.com的子域名。这里的子域名还可以修改为*,变成泛域名解析。

接下来就可以直接运行godns了。
./godns
以下为运行结果。

可以看出来这个每个5分钟检查 一遍IP地址是否有变化,如果有变化就按照config配置文件中的API更新IP地址,这样可以避免频繁使用API造成超出限制。

添加服务

为了方便系统自动启动的时候运行与常驻后台,建议把godns添加成系统服务。之前我们已经把服务文件下载下来了,现在还需要修改里面的配置。
vi godns.service
然后根据自己godns的地址修改
[Unit]
Description=GoDNS Service
After=network.target

[Service]
ExecStart=/usr/local/godns/godns -c=/usr/local/godns/config.json
Restart=always
KillMode=process
RestartSec=2s

[Install]
WantedBy=multi-user.target

接下里拷贝到系统服务中并添加到自动启动中,并启动服务。妥!
cp godns.service /lib/systemd/system
sudo systemctl enable godns
sudo systemctl start godns

至于Cloudflare、 HE.net的使用方法请参考官网。Email通知跟代理服务器也请参考官网配置。

发表评论

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

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据