# LyMbl_AliyunDDNS_Java *开源技术栏* aliyun DNS 解析的 DDNS Java 软件,可以实现自动获取 ipv4 和 ipv6 公网 然后在阿里云进行 ddns 操作! ## 目录 [TOC]  aliyun DNS 解析的 DDNS Java 软件,可以实现自动获取 ipv4 和 ipv6 公网 然后在阿里云进行 ddns 操作! ## 操作之前的准备工作 ### 安装 aliyun 客户端 > 您需要下载和安装 aliyun 的客户端软件哦! 安装好 aliyun 客户端之后,您可以使用 `aliyun` 命令,然后会像下面一样打印出很多的日志,这个时候,前期准备任务就算是成功了! ``` 阿里云CLI命令行工具 3.0.231 Usage: aliyun <product> <operation> [--parameter1 value1 --parameter2 value2 ...] Commands: configure 配置身份认证和其他信息 oss 阿里云OSS对象存储 auto-completion 启用自动完成 Flags: --mode 使用 `--mode {AK|StsToken|RamRoleArn|EcsRamRole|RsaKeyPair|RamRoleArnWithRoleName}` 指定认证方式 --profile,-p 使用 `--profile <profileName>` 指定操作的配置集 --language 使用 `--language [en|zh]` 来指定语言 --region 使用 `--region <regionId>` 来指定访问大区 --config-path 使用 `--config-path` 指定配置文件路径 --access-key-id 使用 `--access-key-id <AccessKeyId>` 指定AccessKeyId --access-key-secret 使用 `--access-key-secret <AccessKeySecret>` 指定AccessKeySecret --sts-token 使用 `--sts-token <StsToken>` 指定StsToken --sts-region 使用 `--sts-region <StsRegion>` 指定StsRegion --ram-role-name 使用 `--ram-role-name <RamRoleName>` 指定RamRoleName --ram-role-arn 使用 `--ram-role-arn <RamRoleArn>` 指定RamRoleArn --role-session-name 使用 `--role-session-name <RoleSessionName>` 指定RoleSessionName --private-key 使用 `--private-key <PrivateKey>` 指定RSA私钥 --key-pair-name 使用 `--key-pair-name <KeyPairName>` 指定KeyPairName --read-timeout 使用 `--read-timeout <seconds>` 指定I/O超时时间(秒) --connect-timeout 使用 `--connect-timeout <seconds>` 指定请求连接超时时间(秒) --retry-count 使用 `--retry-count <count>` 指定重试次数 --skip-secure-verify 使用 `--skip-secure-verify` 跳过https的证书校验 [不推荐使用] --expired-seconds 使用 `--expired-seconds <seconds>` 指定凭证过期时间 --process-command 使用 `--process-command <ProcessCommand>` 指定外部程序运行命令 --oidc-provider-arn 使用 `--oidc-provider-arn <OIDCProviderARN>` 来指定 OIDC 提供者 ARN --oidc-token-file 使用 `--oidc-token-file <OIDCTokenFile>` 来指定 OIDC Token 文件路径 --secure 使用 `--secure` 开关强制使用https方式调用 --force 添加 `--force` 开关可跳过API与参数的合法性检查 --endpoint 使用 `--endpoint <endpoint>` 来指定接入点地址 --version 使用 `--version <YYYY-MM-DD>` 来指定访问的API版本 --header 使用 `--header X-foo=bar` 来添加特定的HTTP头, 可多次添加 --body 使用 `--body $(cat foo.json)` 来指定在RESTful调用中的HTTP包体 --pager 使用 `--pager` 在访问分页的API时合并结果分页 --output,-o 使用 `--output cols=Field1,Field1 [rows=jmesPath]` 使用表格方式打印输出 --waiter 使用 `--waiter expr=<jmesPath> to=<value>` 来轮询调用OpenAPI,直到返回期望的值 --dryrun 使用 `--dryrun` 在执行校验后打印请求包体,跳过实际运行 --quiet,-q 使用 `--quiet` 关闭正常输出 --method 使用 `--method {GET|POST}` 来指定 RPC 请求的 Method --help 打印帮助信息 Sample: aliyun ecs DescribeRegions Use `aliyun --help` for more information. ``` ### 在阿里云的DNS解析创建您要解析的子域 DNS 这里我们可以直接前往 [阿里云 DNS 解析](https://wanwang.aliyun.com/domain/dns) 网页中进行 DNS 解析操作,在其中创建出 `A` 或者 `AAAA` 记录,并指向您的服务器 IP 地址(若您没有 ipv6 可以不指定 AAAA 解析类型) IP地址的位置可以写服务器当前的 IP 地址,但是也可以写错误的,DDNS 程序会自动的将您的 IP 地址进行更改!只要新增了 DNS 解析记录就可以了 ## 做为软件使用的 启动方法 ### 启动 jar 程序 您可以在[LyMbl_AliyunDDNS_Java仓库中](https://github.com/BeardedManZhao/LyMbl_AliyunDDNS_Java.git)下载好您需要的 jar 包,然后使用下面的命令启动即可! ```shell java -jar ./LyMbl_AliyunDDNS_Java.jar [日志目录] [动态更新DNS间隔(ms) 不要太短,会导致性能浪费] [需要被动态更新的子域名(如 www)] [需要被动态更新的顶级域名(如 baidu.com)] ``` #### 启动示例 在这里我们展示了部分日志,且对其中的数据进行了脱敏,您启动之后看到类型下面的日志,则代表成功运行了! ``` # 这代表 以当前的 logs 目录为日志文件存储目录,并且每 3600000 ms 更新一次,子域名为 ***,顶级域名为 ********** root@gust-desktop:/opt/app/LyMbl_DDNS_Java# java -jar ./LyMbl_AliyunDDNS_Java.jar ./logs 3600000 *** ********** [INFO] [1731472913323] RR: lsb value: **** [INFO] [1731472913325] 初始化 ipv6: **** [INFO] [1731472913327] RR: lsb value: **** [INFO] [1731472913329] 初始化 ipv4: **** [INFO] [1731472913331] DDNS running updateTimeMS=3600000 [INFO] [1731472913333] AliYunDDnsManager [INFO] [1731472913915] DDNS update type: A ip: **** same with last [INFO] [1731472914293] DDNS update type: AAAA ip: **** same with last ...... ``` ## 做为依赖包组件的使用方法 ### 添加依赖 ```xml <dependency> <groupId>io.github.BeardedManZhao</groupId> <artifactId>LyMbl_AliyunDDNS_Java</artifactId> <version>2024.11.13</version> </dependency> ``` ### maven 组件包中的 main 函数调用 这样的方式中,您可以在您自己的main函数中调用 LyMbl_AliyunDDNS_Java 中的 main 函数,以启动服务。 ```java import top.lingyuzhao.lyMbl.ddns.aliyun.LyMbl_DDNS_Java; /** * @author zhao */ public class Main { public static void main(String[] args) { // "请输入参数:【logDir】【更新时间间隔(MS)】【RR参数:代表子域名字,如 www】【顶级域名:如 baidu.com】" LyMbl_DDNS_Java.main("./logs", "3600000", "www", "baidu.com"); } } ``` ### maven 组件包中的组件开发调用 这样的方式中,您可以在您自己的项目代码中装载我们的 D DNS 管理器,灵活性最高,下面是一个示例 ```java import top.lingyuzhao.lyMbl.ddns.aliyun.AliYunDDnsManager; import java.util.logging.Logger; /** * @author zhao */ public class Main { public static void main(String[] args) { final Logger test = Logger.getLogger("test"); try ( // 实例化 DDNS 管理器 final AliYunDDnsManager aliYunDDnsManager = new AliYunDDnsManager( // 传递日志对象 以及域名信息 test, "baidu.com", "www" ) ) { // 启动 每3600s 检查一次 DNS 信息 aliYunDDnsManager.start(3600000); } } } ``` ------ ***操作记录*** 作者:[zhao](https://www.lingyuzhao.top//index.html?search=4 "zhao") 操作时间:2024-11-14 00:31:27 星期四 【时区:UTC 8】 事件描述备注:保存/发布 中国 天津 [](如果不需要此记录可以手动删除,每次保存都会自动的追加记录)