Loading... ## 前言 折腾家庭网络, 和宽带运营商申请到公网IP后, 还要苦于分配的公网IP经常变化导致外部访问困难. DDNS(动态域名解析)可以帮助我们自动监控出口IP变化, 并更新IP到绑定的域名中, 之后可以方便的借助域名来访问家庭网络. 这类需求的存在, 国内外大神开发了很多的此类项目, 目前比较活跃的开源项目有: * [ddns-go](https://github.com/jeessy2/ddns-go) * [ddns-updater](https://github.com/qdm12/ddns-updater) ## ddns-go *部署* * 挂载Docker磁盘卷, 保存信息, 默认会生成一个隐藏的yaml配置文件 * 监控IP变化间隔: 默认缺省设置5分钟检查一次, 示例指定10分钟, 即`-f 600` ```bash # 创建磁盘卷挂 docker volume create ddns_go_data docker run --restart=unless-stopped --name ddns-go -d -p 9876:9876 -v ddns_go_data:/root jeessy/ddns-go -f 600 ``` *配置* * 通过http://ip:9876打开webui设置页面 * 以Aliyun云解析DNS配置为例, 在官网获取`AccessKey ID`以及`AccessKey Secret` ![Aliyun云解析DNS配置](https://zoe.red/usr/uploads/2024/01/251647951.png) *运行日志* ![Aliyun域名解析配置成功后运行](https://zoe.red/usr/uploads/2024/01/939834161.png) ## ddns-updater *部署* ```bash # 本地磁盘创建配置文件 mkdir ddns_updater_data touch ddns_updater_data/config.json # 可选: 为了创建一个 json 数据库, 记录IP更新信息: data/updates.json # echo "{}" > ddns_updater_data/updates.json # chmod 777 ddns_updater_data/updates.json # 以Aliyun为例编辑配置文件填入信息 # 将目标域名与获取的Aliyun access_key_id与access_secret替换后填入 # domain部分: 填写的是主域名!!! # host字段部分: 默认@, 如果是其他的子域名, 这里应该替换为对应的前缀 vim ddns_updater_data/config.json """ { "settings": [ { "provider": "aliyun", "domain": "domain.com", "host": "@", "access_key_id": "your access_key_id", "access_secret": "your access_secret", "ip_version": "ipv4" } ] } """ docker run --restart=unless-stopped --name ddns-updater -d -p 8000:8000/tcp -v "$(pwd)"/ddns_updater_data:/updater/data qmcgaw/ddns-updater ``` *Web页面:* * http://IP:8000 * 缺点: 提供的web页面只能查看少量信息,无法进行设置. ![image.png](https://zoe.red/usr/uploads/2024/01/486619513.png) THE END 本文作者:将夜 本文链接:https://zoe.red/2024/249.html 版权声明:本博客所有文章除特别声明外,均默认采用 CC BY-NC-SA 4.0 许可协议。 最后修改:2024 年 01 月 25 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏
2 条评论
总觉得暴露家庭网络到公网不是很安全,个人还是倾向用zerotier走虚拟局域网访问家中网络。
有道理. 不过对于一般个人(家庭)使用场景, 便捷与安全平衡下就好. 对于有些应用, 例如基于P2P的文件同步工具, 或者黑裙之类系统, 它们有些必须对外直接开放访问才能正常工作,有些是应用本身安全性较高, 不用过于担心安全问题. 综合考量, 还是要结合自身获取公网IP的难度, 以及被访问应用本身的要求和安全性等多方面因素, 选择适合自己的技术路线去折腾.