OpenWRT / iStoreOS 阿里腾讯云 DDNS 动态域名解析配置完全指南 (2026 年最新版)
💡 个人观点与核心价值: 玩家庭软路由必须要折腾的一项核心技术,就是外网对内网的公网访问。鉴于目前国内绝大多数家庭宽带分配的都是“动态公网 IP”(即每次路由器重新拨号或过了 24 小时,宽带的 IP 就会随机更换),使得我们在外游玩或办公时,根本不可能通过记住一串变来变去的 IP 去访问家里群晖 NAS 或者路由器后台。“DDNS(动态域名解析服务)”正是为解决这个痛点而生!通过借助极其低廉乃至免费的云服务商开放的 API,路由器一检测到自己的 IP 变了,就会自动跑去云端更新域名指向,自此你这辈子只需记住自己那几块钱买的域名,便能畅通无阻地“永远连回家”。
腾讯云设置
创建子域名
在 腾讯云控制台,选择要使用的域名
在其下创建一个新的 A 记录,如 dev,记录值随便填写一个,后面会被 ddns 插件覆盖为正确的值。
由于是免费套餐,TTL 最小只能设置为 600 (单位秒,也就是十分钟)。
📝 使用实例与避坑提醒: 实际上,在这个界面你直接把 IP 设为
1.1.1.1或者127.0.0.1都可以当做一个初始的“占位符”。稍后当你的路由器成功发出了握手请求并携带真实的本地公网 IP 给腾讯云时,它就会瞬间覆盖掉这条初始伪装。至于那个无法突破 10 分钟的免费 TTL——别焦虑,这只代表解析到全国各地的最慢生效同步时间,对于家庭宽带平时好几天才会被逼迫重拨一次的低频断网现状来说,这十分钟的空窗期几乎感觉不到影响日常使用。
创建 API token
由于 ddns 插件是通过 API token 来执行 dns 记录更新,因此需要提前创建 API token。
注意: 使用的 DNSPod Token,不是 腾讯云 API 密钥
创建密钥
ID :383XXX
Token :3de14556b8a8bXXXXXXXXXXXXXX阿里云设置
创建子域名
在其下创建一个新的 A 记录,如 dev,记录值随便填写一个,后面会被 ddns 插件覆盖为正确的值。
创建Access Key
- 登录阿里云,找到
AccessKey管理 - 你可以使用管理账号的 AccessKey,但为安全起见,本案例使用
子用户AccessKey。 - 创建子用户,填入登录名称和显示名称,访问方式勾选
Open api调用访问。 - 创建完成后,点击
AccessKey,复制AccessKey ID和AccessKey Secret。
添加权限
选择 AliyunDNSFullAccess,并添加。
💡 安全权限管控原理: 为什么这里在阿里云建议大费周折去建一个专门的“子用户 AccessKey”,而不直接图省事抄官方原本主账号的呢?设想一个可怕的场景:如果你哪天这个路由器的插件文件被泄露(可能是发固件给朋友或者是外网被直接爆破了),因为主账号 AccessKey 往往具有阿里云下云服务器 ECS、云盘清空乃至全部计费账单的生杀大权,你可能会遭受无可估量的损失!所以,对于任何需要提供授权给家用路由折腾环境的云端凭证,请永远秉公采用新建一个只有基础 DNS 查询修改权限“子账户”的最安全做法!
设置openwrt/istore os
进入 openwrt/istore os 管理后台 — 服务 — 动态DNS — myddns_ipv4 — 编辑
基本设置
- 查询主机名: 设置的子域名 如:
dev.theojs.cn - DDNS服务提供商: 腾讯云-
dnspod/ 阿里云-aliyun.com - 域名: 设置的子域名 如:
dev.theojs.cn - 用户名: 腾讯云-
ID/ 阿里云-AccessKey ID - 密码: 腾讯云-
Token/ 阿里云-AccessKey Secret
高级设置
选择接口和WAN口作为更新源,用于获取和更新你本地的公网地址。如果你无法通过接口获得公网地址,也可以使用URL方式,二选一。
📝 基础架构排错实例: 这一步非常考验你家的整体拓扑环境。如果你家使用的是光猫拨号(光猫是路由器角色),而你这台 OpenWRT 只是由于接在光猫下导致获取到了一个如
192.168.1.5这样的纯内网级联虚假公网,此时不管接口选什么,提交出去的都会是内网 IP,导致永远无法从外网访问!这种情况下你往往必须选择“URL方式”——它是通过发起一次 HTTP 请求到一个外网服务器,让外网服务器把视角看到的你们家真正的“公网大门”IP 提取返回回来(俗称:拿第三方视角来认出你自己)。当然,最彻底一劳永逸的方法还是去把宽带光猫找装维师傅改成桥接模式,让软路由自身直接拨号。
验证
过10分钟后,应该就可以在域名解析中看到之前的 1.1.1.1 已经自动更新为你的公网IP地址。
诊断
Forbidden
Rejected request from RFC1918 IP to public server address .
解决方法
ssh连接到openwrt
# 编辑文件
vi /etc/config/uhttpd将 option rfc1918_filter 1 改为 option rfc1918_filter 0
# 执行重启
/etc/init.d/uhttpd restart✨ 排错原理追溯与技术总结: RFC1918 是什么? 它是国际网络协议中定义保留的所有私人内网 IP 段(如
192.168.x.x,10.x.x.x)的专属规范防范。OpenWRT 系统自带的网页宿主引擎(uhttpd)极其讲究安全隔离,默认对来自外部的 HTTP 数据头有极强的“防御偏执狂”机制:当我们把外网域名解析回家并在浏览器直接用公网 IP 或刚刚弄好的 DDNS 域名意图打开路由器后台时,uhttpd 一看包头传来的地址不属于严格内部定义的干净范围且存在跨域风险,就会甩给你一句刺眼的Rejected request from RFC1918,并将你当做黑客请求直接拒绝(Forbidden)! 因此,将其默认拦截开关从1这个开启状态强制关成0,也就成了所有通过 DDNS 外网访问家中软路由后台必练的排障基本功了。学会了这一招,你的 DDNS 之旅才算彻底畅通无阻!