家用动态IP配置DDNS

动态公网IP配置DDNS

家里有台老旧的笔记本电脑闲置着,功耗很低,闲着也是闲着,将它改造了一番,加了内存条、硬盘,重装了个CentOS7系统,用来跑跑docker,挂NAS还是挺不错的。以前给家里电信宽带申请了动态的公网IP,给域名配置个DDNS,让其映射到这个笔记本服务器上,就可以通过外网访问。

DDNS程序使用Java编写,项目已经开源,地址在文章末尾。

申请域名API访问密钥

以腾讯云为例,在DNSpod中创建访问token,等会写代码时要用到。需要注意的是,使用的腾讯云/阿里云的账号要具备访问域名的权限。
在这里插入图片描述

编写Java代码,定时更新域名IP

具体步骤为:
1.通过token调用接口,查询域名的IP
2.获取当前主机的最新公网IP,并判断和域名的IP是否一致
3.如果不一致,说明当前主机所在的公网IP已发生变化,通过token调用接口更新域名的IP
4.每隔3分钟执行1次上述步骤

省略1、2步骤的代码,下面只贴出修改域名IP部分的代码,项目已开源,地址在文章末尾。

public class DDNSTask {

    public static void TencentDDNSTask() {

        try {

            //3.不一致,执行修改
            Map<String,String> params2=new HashMap<String, String>();
            params2.put("domain",DOMAIN);
            params2.put("record_id",record.getString("id"));
            params2.put("record_line_id",record.getString("line_id"));
            params2.put("login_token",DNSPOD_TOKEN_ID+","+DNSPOD_TOKEN);//接口需要tokenID+token组合发送
            params2.put("value",ip);
            String resJson = HttpUtil.post("https://dnsapi.cn/Record.Ddns", null, params2, "utf-8");

            //如果请求失败,打印失败信息
            JSONObject jsonObject = JSONObject.parseObject(resJson);
            JSONObject statusRes2 = JSONObject.parseObject(jsonObject.getString("status"));
            if(!statusRes2.getString("code").equals("1")){
                LogUtil.writeErrorLog(statusRes2.getString("message"));
                return;
            }

            LogUtil.writeInfoLog("已修改为最新IP:"+ip);


        }catch (Exception e){
            LogUtil.writeErrorLog(e.getMessage());
        }
    }
}

DDNS程序打包上传服务器,配置为开机自启动

执行maven打包,将jar包上传到服务器,然后直接运行,并配置成开机自启动。
在这里插入图片描述

然后在DNSpod中查看当前域名的操作日志,可以看到,IP更新已经在定时执行了
在这里插入图片描述

开源代码的使用说明

gitee地址
整个项目只引入了json解析的依赖,HTTP请求、日志打印的工具类都是楼主自己写的。非常轻量级,项目打包后 jar 文件只有600KB,运行占用内存也只有70MB左右。
目前项目中只支持腾讯云的DDNS解析,后续会增加阿里云、华为云的解析代码。使用起来也十分方便,下载项目后只需要把配置文件中的域名和token改成自己的,就可以打包运行了。

1.项目下载到本地,找到配置文件 src / main / resources / application.properties,将token-id、token、域名改成自己的,然后就可以使用maven打包了
在这里插入图片描述

2.打包完成后在/target目录下会生成两个jar,请使用jar-with-dependencies这个jar包,将其上传到服务器运行就可以了,建议配置成开机自启动。
在这里插入图片描述

3.如果想修改定时执行周期,只需要把main方法中的线程休眠时间改一下就可以。代码非常简单。
在这里插入图片描述

贴出我这台吃灰多年的笔记本电脑
在这里插入图片描述

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值