littlebot
Published on 2025-04-13 / 0 Visits
0

【源码】基于Spring Boot和阿里云SDK的动态DNS服务

项目简介

本项目是基于Spring Boot框架和阿里云SDK开发的动态DNS(DDNS)服务。该服务可自动检测并更新域名的IP地址,保证域名始终解析到最新IP。项目借助MySQL数据库存储IP地址日志,利用Spring Boot的定时任务功能定期更新DNS记录。

项目的主要特性和功能

  1. 动态IP更新:借助阿里云SDK与阿里云DNS服务交互,自动更新域名IP地址。
  2. IP日志管理:使用MySQL数据库记录每次IP地址更新日志,支持查询、插入和删除日志。
  3. 定时任务:利用Spring Boot定时任务功能,定期检查并更新DNS记录,同时删除过期IP日志。
  4. Docker支持:提供Dockerfile用于构建和运行项目的Docker镜像,便于部署和管理。

安装使用步骤

1. 环境准备

确保本地环境已安装以下软件: - MySQL 5.7+ - JDK 8+ - Gradle

2. 数据库初始化

在MySQL中创建数据库和表: sql create database ddns; use ddns; CREATE TABLE `DDNS_IP_LOG` ( `ID` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID', `IP_ADDR` varchar(30) NOT NULL DEFAULT '' COMMENT 'IPV4地址', `CREATE_TIME` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', `MODIFY_TIME` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '修改时间', PRIMARY KEY (`ID`), KEY `IDX_CREATE_TIME`(`CREATE_TIME`) ) ENGINE=InnoDB AUTO_INCREMENT=100 DEFAULT CHARSET=utf8 COMMENT='DNS绑定的路由器wanIp';

3. 配置文件

编辑ddns.properties文件,配置数据库连接和阿里云SDK的相关参数: ```properties jdbc_driver=com.mysql.jdbc.Driver jdbc_url=jdbc:mysql://{yourIp}:3306/ddns?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true jdbc_user={your login user} jdbc_password={your login pswd} jdbc_initSize=5 jdbc_maxSize=100

ali_access_key_Id =yourKeyId ali_access_key_secret = yourKeySecret ali_first_domain_name = yourFirstDomain(域名地址e.g. ddnslearn.cn) ali_second_domain_prefix = yourSecondDomainPrefix(主机名e.g. www) ali_dns_ttl = 600 ```

4. 编译项目

在项目根目录下执行以下命令进行编译: - macOS/Linux: bash ./gradlew clean build - Windows: bash ./gradlew.bat clean build 编译完成后,生成的可执行JAR包位于build/libs/ddnsjava-1.0-SNAPSHOT.jar

5. 运行项目

在命令行中执行以下命令启动项目: bash java -jar -Xms64m -Xmx128m -XX:MaxMetaspaceSize=128m build/libs/ddnsjava-1.0-SNAPSHOT.jar

6. Docker容器运行

创建Docker镜像

在项目根目录下创建Dockerfile: Dockerfile FROM java:8 ADD ddnsjava-1.0-SNAPSHOT.jar /ddns.jar VOLUME /var/log ENV JAVA_OPTS="-Xms64M -Xmx128M -XX:MaxMetaspaceSize=128M" RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime ENTRYPOINT java ${JAVA_OPTS} -jar /ddns.jar 构建Docker镜像: bash docker build -t ddns:1.0 .

运行Docker容器

bash docker run -d --cap-add=SYS_PTRACE -v /var/log:/var/log --restart=always -e TZ=Asia/Shanghai ddns:1.0

通过以上步骤,即可成功部署并运行基于Spring Boot和阿里云SDK的动态DNS服务。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】