# aliddns **Repository Path**: dus/aliddns ## Basic Information - **Project Name**: aliddns - **Description**: 阿里云实现 DDNS - **Primary Language**: Rust - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-07-19 - **Last Updated**: 2025-12-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 基于阿里云的云解析实现的DDNS功能 ## 使用流程 - 申请一个阿里云的 accessKey - 在阿里云的“云解析DNS”中配置对应的解析记录 - 在对应的主机上运行本程序 ## 场景说明 我有一台自建NAS在家里运行,域名通过阿里云托管,在阿里云的“云解析DNS”将域名 `nas.xxx.cn` 解析到我家里的NAS主机上。IP是由中国移动提供的IPv6接入访问。由于中国移动每隔几天就会重新分配IPv6地址给我,导致我每隔几天就要手动登录阿里云更新IP地址,这样操作非常繁琐,而且由于IP地址变更,我在外面根本没法获取到最新的IP地址。 有没有一种方法可以及时获取到最新的IP地址呢? 我首先想到了使用“花生壳”等厂商提供的DDNS服务,这确实是一个可行方案,而且我也几乎采用了它。 由于需要注册账号,而且还要安装一个服务运行,而且解析的域名需要通过CNAME方法转换,这样虽然是一个可行方案,但是比较繁琐。 难道提供云解析功能的阿里云就没有提供这个功能吗? 经过在阿里云开发者中心中搜索,我发现有不少人有我这类似的需求,而且阿里云也提供了SDK来提供给开发者,让开发者自行开发。 可是阿里云的SDK是没有提供 `Rust` 语言的。于是我通过分析 `Java SDK` 使用 `Rust` 的HTTP库模拟 `Java SDK` 的行为让这件事情成为了可能。 > 说实话,阿里云提供了Java、C++、Python等语言的SDK,我完全可以使用这些SDK来实现,而不是通过“破解”的方式使用Rust来实现。 > 我这确确实实的在造轮子做无用功。 ## 使用方法 ``` shell aliddns 0.1.0 基于阿里云API实现的动态DNS客户端,可自动识别IPv4和IPv6。 使用简单灵活,几乎不占用资源。 FLAGS: --help Prints help information -V, --version Prints version information OPTIONS: -a, --access-key 访问阿里云的 access_key -d, --domain 域名 -h, --host 主机名,二级域名 -s, --secret-key 访问阿里云的 secret_key USAGE: aliddns --access-key --domain --host --secret-key ``` ## 例子 ### 手动更新 ``` shell aliddns --access-key xxxxxxx --secret-key wwwwwwww --domain baidu.com --host www ``` ### 自动更新 使用 Linux 的 cron 定时任务来自动更新IP ``` shell crontab -e # 每30分钟获取一次本机IP,如果有变更则更新到阿里云 */30 * * * * ~/aliddns -a LTAI5t9tTt54Zxxxxxxx -s Sh19fcBDC3xxxxxxx -d baidu.com -h www >> ~/aliddns.log ``` ## 末尾 ### 编译方式 编译前请确认本地是否安装了 openssl 库。 > RedHat 系为 `openssl-devel` ``` shell cargo build --release ``` ### 最后 这是我写的第一个有实际功能的Rust程序,对Rust的使用还比较生疏。 请各位大佬勿喷,谢谢。 ### 如果本项目给您节省了一些时间,可以考虑打赏一下 ![付款码](/qrcode.jpg)