域名动态解析到动态IP

作者: setfocus | 来源:发表于2017-08-05 23:10 被阅读562次

一般宽带用户的IP都是动态IP,重连之后IP可能会发生变化。
如果想在其他地方连接家里的设备,或者在家中搭建服务器,就会受到影响。
现在提供一种动态解析域名的方式,只要检测到IP的变化,那么就调用阿里云的开放api,更新域名解析

github(欢迎star):https://github.com/liuyinglong/aliyun;
npm(aliCloudClient):https://www.npmjs.com/package/aliyun-apisign

说明

每分钟获取一次公网 IP,如果检测到公网IP发生了变化,则调用aliyun的开放接口进行更新


let AliCloudClient = require("../aliCloudClient");
let Req = require("../request");
let request = new Req();
let schedule = require("node-schedule");

let aliClient = new AliCloudClient({
    AccessKeyId: "your AccessKeyId",
    AccessKeySecret: "your AccessKeySecret",
    serverUrl: "http://alidns.aliyuncs.com"
});

let domainNameValue = "www";
let recordId,       //记录ID
    ip;


function getMyIp() {
    return request.post("http://ip.taobao.com/service/getIpInfo2.php", {
        ip: "myip"
    }).then(function (data) {
        return data.body.data.ip;
    }).catch(function (err) {
        return Promise.reject(err);
    })
}

function getDomainRecords() {
    return aliClient.get("/", {
        Action: "DescribeSubDomainRecords",
        SubDomain: "www.yourDomain.cn"
    }).then(function (data) {
        let body = data.body;
        let record = body.DomainRecords.Record[0];
        recordId = record.RecordId;
        return record.Value;
    }).catch(function (err) {
        return Promise.reject(err);
    })
}

function upDateRecords() {
    return aliClient.get("/", {
        Action: "UpdateDomainRecord",
        RecordId: recordId,
        RR: domainNameValue,
        Type: "A",
        Value: ip
    }).then(function (data) {
        console.log(new Date() + ip + " 修改成功");
    }).catch(function (err) {
        console.log(err)
    })
}

function watchIpChange() {
    return getMyIp().then(function (tempIp) {
        if (ip === tempIp) {
            return;
        }
        if (!ip) {
            return;
        }
        console.log(new Date()+ ip + "=>"+ tempIp);
        ip = tempIp;
        upDateRecords();
    }).catch(function(err){
        console.log(err);
    })
}


Promise.all([getMyIp(), getDomainRecords()]).then(function (result) {
    ip = result[0];
    let domainValue = result[1];
    if (ip !== domainValue) {
        upDateRecords();
    }
});

schedule.scheduleJob("0 * * * * *", function () {
    watchIpChange();
});

相关文章

  • 域名动态解析到动态IP

    一般宽带用户的IP都是动态IP,重连之后IP可能会发生变化。如果想在其他地方连接家里的设备,或者在家中搭建服务器,...

  • 如何实现动态域名解析(附源码)

    阿里云动态域名解析工具ddn ddn是基于阿里云开发接口实现的一个动态域名解析工具,如果你在阿里云的域名解析记录中...

  • 阿里云域名+DDNS API实现动态域名

    由于家用宽带都是动态IP,所以想在外面访问家里的设备就需要动态域名,像花生壳这类的动态域名要么收费要么限制很多,用...

  • 远程连接DNS域名系统

    DNS(domain name system)域名系统,主要作用域名解析。正向解析:域名到IP(A记录)逆向解析:...

  • DDNS——动态DNS

    动态DNS,也叫ddns是指不具固定IP的主机,利用动态DNS服务,帮助主机可以随着IP的改变去对应网域名称与IP...

  • Java动态代理

    通过以下几种方式介绍动态代理 动态代理涉及到的类 动态代理用法 Proxy类解析 动态代理类解析 动态代理涉及到的...

  • 分享一个动态域名解析服务

    该小工具用node.js开发,可以自动的解析到动态ip到固定的域上,ip变更后也会相应的更新解析。在没有固定ip的...

  • A记录与Cname

    1、什么是域名解析? 域名解析就是国际域名或者国内域名以及中文域名等域名申请后做的到IP地址的转换过程。IP地址是...

  • Linux系统脚本命令修改动态域名解析记录

    Linux为基础的各种路由器和电脑,均可以自己写脚本命令来解析动态域名,支持IPV4和IPV6的动态域名解析 去w...

  • 华硕、老毛子固件配置DDNS教程

    DDNS设置在某些路由器中又叫做动态DNS设置,目的是为了将动态IP绑定到一个域名上,便于外网访问(家庭宽带中即便...

网友评论

    本文标题:域名动态解析到动态IP

    本文链接:https://www.haomeiwen.com/subject/xqgwlxtx.html