返回文章列表

OpenWrt安装腾讯云DDNS插件

分类
标签
SilentBlade
SilentBlade
2024-03-17 4 分钟阅读 99 阅读

这是个什么插件

腾讯云官方出品的 OpenWrt DDNS 插件,用 LuCI 界面配置,作用只有一个:把运营商分配给家庭宽带的动态公网 IPv4,定时同步到 DNSPod 的域名解析记录上,让一个固定域名始终指向家里,方便从外网访问内网服务。

项目 内容
中文名称 腾讯云DDNS插件
英文名称 luci-app-tencentddns
最新版本 0.1.0(2020.09.17)
适用平台 Lean OpenWRT
适用产品 DNSPod
GitHub 项目 tencentcloud-openwrt-plugin-ddns
Gitee 项目 tencentcloud-openwrt-plugin-ddns
主创团队 腾讯云中小企业产品中心(SMB Product Center of Tencent Cloud)

一个要先知道的事实:这个插件 2020 年 9 月后就没再更新过,功能也只覆盖 IPv4 的 A 记录,不支持 IPv6(AAAA)。够用就好;要 IPv6 得换 ddns-scripts 方案。

适用前提

  • 宽带有公网 IPv4。现在运营商默认给的是大内网 NAT,公网 IP 一般要打客服电话申请(多数地区免费)。另外光猫要改桥接、由 OpenWrt 路由器拨号,公网 IP 才会落到路由器上。
  • 有一个域名,且解析托管在 DNSPod。插件改的是 DNSPod 的解析记录,域名 NS 没接入 DNSPod 的话它无能为力。
  • 家用宽带的 80/443 端口基本都被封,远程 SSH、NAS 这类没问题,别指望在家里架正式网站。

安装

在浏览器登录 OpenWrt 后台,进入「系统 → 软件包」,切到「从网络安装」,粘贴 ipk 地址确认即可:

text
https://openwrt-tencentddns-1301800460.cos.ap-guangzhou.myqcloud.com/luci-app-tencentddns_0.1.0-1_all.ipk

不想用在线安装也可以拉仓库源码自己编译进固件,步骤见 GitHub 仓库 的 README。

一个精简固件常见的坑:插件的后台脚本依赖 opensslcurlsed,缺了会直接退出并在日志里报 Need [ openssl + curl + sed ]opkg install curl openssl-util 补上就好。

配置

第一步:创建 DNSPod Token

登录 DNSPod 控制台,账号中心 → API 密钥 → DNSPod Token,创建一组密钥,得到 IDToken 两个值。

DNSPod密钥管理

注意这里用的是 DNSPod Token,不是腾讯云控制台里的 API 密钥(SecretId/SecretKey),两套体系不通用。拿 SecretId 去填密钥 ID,怎么配都不会成功,这是最常见的配错点。

第二步:填写插件配置

装好插件后,LuCI 顶部会多出一个「腾讯云设置」菜单(注意不在「服务」菜单下),进入「腾讯云设置 → TencentDDNS」:

  • 启用:总开关。
  • 密钥ID / 密钥Token:上一步拿到的 DNSPod Token 两个值,Token 输入框是密码样式,看不见内容属正常。
  • WAN-IP 来源:两个取值——wan 直接读路由器 WAN 口的地址,要求公网 IP 就挂在 WAN 口上;internet 通过 DNSPod 的公网探测接口查询出口 IP,中间隔着 NAT 也能拿到真实地址。路由器自己拨号选哪个都行,拿不准就选 internet
  • 主域名 / 子域名:想更新 home.example.com,主域名填 example.com,子域名填 home
  • 清除所有同名记录:更新前先清掉该子域名下已有的同名 A 记录再写入。不开的话可能新旧 IP 的记录并存,多条 A 记录会轮询命中,访问时好时坏,建议开启。
  • 检查时间:检查间隔,单位分钟,范围 1-59,默认 10。

填完点「保存并应用」。

界面下半部分是「更新日志」,显示 /var/log/tencentddns.log 的最近内容,排错基本都靠它。

它在后台做什么

了解机制有助于判断问题,这套逻辑读插件源码可以确认:

  • 保存配置后立即执行一次更新;之后通过 cron 按「检查时间」定时执行(*/N * * * *)。
  • WAN 口重拨(接口 ifup)后会自动补一次更新,所以重拨换 IP 不用干等下个周期。
  • 每次先对比「当前出口 IP」和「域名当前解析值」,一致就什么都不做,不一致才调 DNSPod API 更新,并把记录 ID 缓存在 uci 里复用。
  • 日志超过 16 行会自动清空重记,只留最近记录。

验证是否生效

配置完成后,先看出口 IP:

bash
curl ip.sb

再从外部视角查域名解析,两者一致就说明同步上了:

bash
nslookup home.example.com 119.29.29.29

也可以直接到 DNSPod 控制台看那条 A 记录的值是否已变成当前公网 IP。

没生效时对照「更新日志」排查:

  • ERROR, cant get WAN-IP:拿不到出口 IP,检查 WAN-IP 来源的取值。
  • ERROR, Please Check Config/Time:多半是 Token 填错(或填成了腾讯云 API 密钥)、域名没接入 DNSPod、主/子域名填反。
  • IP dont need UPDATE...:正常状态,IP 没变,无需更新。
  • UPDATED(x.x.x.x):刚完成一次更新。

注意事项

  • 域名指向家里后,暴露哪些服务由你决定:防火墙只放行必要端口、给服务上强认证,不要图省事开 DMZ 全暴露。
  • 公网 IP 只有重拨才会变,平时解析值稳定不动是正常的。
  • 再次提醒:此插件只处理 IPv4,且已停更多年;新版 OpenWrt 上如果有兼容问题,可以换官方源的 ddns-scripts + DNSPod API 方案。

参考

评论 0

访
暂无评论,来发表第一条评论吧。