前言
我有一台日本的aws服务器,ip经常不能访问,好在aws可以免费更换静态ip,但是随之而来的问题来了,更换完ip,域名解析也得修改。
可不可以每次我修改完服务器的ip,域名解析也自动修改?
当然可以!
解决问题的原理
可以在服务器上写一个脚本,每隔5分钟,检查一下服务器的公网ip和域名解析的ip是否一致,不一致的话修改成一致,一样的话就不用操作
工具选择
代码语言 NODEJS
因为域名是在cloudflare上注册,所以在npm库里搜索了一下有没有现成的工具,这样就避免重复制造轮子
我搜关键词 cloudflare ddns
找到了一个叫cloudflare-ddns-sync的npm包
一 安装nodejs
在之前的文章中已经提到过,这里不再赘述,需要的朋友可以查看链接
二 node代码编写
新建项目文件夹并进入项目
mkdir cloudflare-ddns && cd cloudflare-ddns
初始化项目
npm init -y
npm安装需要的包
npm install cloudflare-ddns-sync
vim index.mjs
import Cddnss from 'cloudflare-ddns-sync'
//实例化
const cddnss = new Cddnss({
token: '你自己的cloudflare网站的token',
});
// 获取本地ip
const localIp = await cddnss.getIp()
//获取解析的域名
const recordsOnline = await cddnss.getRecordDataForDomain('youdomain.com')
const oneRecordArr = recordsOnline.filter(record=>{
return record.name == 'youdomain.com' && record.type == 'A'
})
// dns解析的ip
const onlineIp = oneRecordArr[0].content
console.log('本地ip',localIp)
console.log('dns解析的ip',onlineIp)
if(localIp != onlineIp ){
const myRecord = {
name: "youdomain.com",
type: "A",
content: localIp
}
const result = await cddnss.syncRecord(myRecord)
}
三 crontab定时任务编写
查看当前定时任务
crontab -l
编辑定时任务
crontab -e
//分 时 天 月 周
*/5 * * * * node /path/to/cloudflare-ddns/index.mjs
这里需要注意一个问题就是,有可能定时任务没有找见node,没有执行成功,我们需要找到node的目录,并加入到全局路径中$PATH
which node
发表回复
要发表评论,您必须先登录。