DDNS 管理
DDNS 只负责把域名解析更新到当前公网地址。它不会打开端口、配置隧道、签发证书或让业务服务经过网关。
什么时候需要 DDNS
- 公网 IPv4 或 IPv6 会变化,且网关由外部直接访问。
- 子域模式需要让认证 Host、业务 Host 或泛解析指向同一入口。
- 使用 Edge CDN 回源,但源站地址会变化。
如果使用 Cloudflare Tunnel,一般由 Tunnel 的 Public Hostname 管理 DNS;不要再为同一个域名同时建立相互竞争的 DDNS 记录。
配置一条记录
在 动态域名 中选择提供商并填写凭据、域名、记录类型和更新范围。重点检查:
| 项目 | 要点 |
|---|---|
| 域名 | 填要更新的记录名,而不是完整 URL、路径或端口 |
| 更新范围 | 按实际可用网络选择 IPv4、IPv6 或双栈 |
| 地址来源 | 使用公网探测、指定网卡、静态 IP 或解析另一个域名;Docker 环境须确认看到的是宿主机地址 |
| 出站网卡 | 多网卡设备选择能够访问提供商 API 的接口 |
| 泛解析 | 子域网关通常需要 *.example.com,认证 Host 也要能解析 |
保存后先运行页面的测试或手动更新,再用 dig、nslookup 或 DNS 控制台确认记录值。解析正确只说明 DNS 已更新;仍需从外网验证端口、证书和网关路由。
当前提供商目录包括阿里云 DNS、Baidu Cloud DNS、Cloudflare、DNSHE、DNSPod、DuckDNS、Dynu、dynv6、腾讯云 EdgeOne CNAME、腾讯云 EdgeOne、阿里云 ESA、GoDaddy、华为云 DNS、No-IP、Porkbun 和腾讯云 DNSPod。页面会按提供商显示所需字段;不要把另一家服务商的 Zone ID、Token 或根域字段套用过来。
DNSHE
选择 DNSHE 时填写 API 管理中生成的 API Key 和配套的 API Secret,再区分两个域名字段:
| 字段 | 说明 |
|---|---|
DNSHE 托管域名 | DNSHE 账号中已注册并处于可用状态的完整托管域,例如 example.com |
域名 | 实际更新的完整记录名,必须位于上述托管域内,例如 nas.example.com |
TTL | 可选,默认 600 秒 |
DNSHE 支持 A 与 AAAA,以及根域、普通子域和通配符记录。同步时,已有且地址发生变化的记录会更新,不存在的记录会创建;地址未变化时不会重复写入。若日志提示找不到托管域、托管域状态不可用或记录缺少内部 ID,先在 DNSHE 控制台核对托管域状态和记录归属,再重试更新。
腾讯云 DNSPod
使用 腾讯云 DNSPod 时,fn-knock 会先按根域、子域、记录类型和线路查找目标记录。记录不存在时会自动创建 A 或 AAAA 记录;记录存在且地址不同则更新,地址相同不会重复写入。配置中的线路与 TTL 会同时用于创建和更新。
若日志仍停在记录查询阶段,不要先手工创建占位记录。应核对根域、子域拆分、记录线路和 Token 权限;真正的查询错误会保留 DNSPod 返回的信息,而“没有记录”会进入自动创建流程。
主域与更多域
主域配置 是默认更新目标,状态卡显示当前 IPv4、IPv6、最后检查和最后成功更新时间。更多域 可新增彼此独立的目标,每条记录都能选择自己的提供商、凭据、地址来源、更新范围和启用状态。
更多域不会继承主域的域名或提供商配置,但页面可识别同一提供商在其他模块或目标中保存的凭据,并只填充当前仍为空的字段。填充后仍应核对 Zone、根域和最小权限。
可对单个更多域执行立即更新、停用、启用、编辑或删除。停用只暂停该目标;删除会同时移除它的运行状态。清空主域配置不会删除更多域,但主域在重新配置前无法参与自动更新。
域名与泛解析组合
支持双域的提供商可在同一域名字段填写通配符及对应基础域,例如:
*.r.example.com, r.example.com两项必须是一组通配符与基础域,基础域需与提供商 Zone / 根域一致或位于其下。页面接受半角逗号、全角逗号或空格,并在失焦后格式化。EdgeOne CNAME 等单地址或单域提供商不接受这种组合;以页面的能力提示为准。
从网卡选择地址
选择 从网卡直接获取 时,必须明确指定一张网卡。默认只使用可全局路由的公网候选,排除 RFC1918 私网 IPv4、IPv6 ULA、仍在地址检测、冲突检测失败或已弃用的地址;临时 / 隐私 IPv6 默认也会排除。候选为空时,应更换网卡或改用公网探测、静态 IP 或域名解析。
需要给内网 DNS、VPN 或分流解析发布私网地址时,可开启 允许内网地址。该开关只把 RFC1918 IPv4 和 IPv6 ULA 加入当前目标的网卡候选,不会让回环、链路本地、CGNAT 或其他保留地址进入列表,也不会修改路由器、防火墙或公网 DNS 的可达性。
地址选择不再依赖网卡返回列表中的序号。手工设置 优先地址 后,只要该地址仍符合筛选规则,系统就会优先使用它;没有手工优先地址或该地址已不可用时,才继续沿用当前仍可用的地址,最后从其余候选中稳定选择。这样既保证手工指定高于系统推荐,也避免未指定时因候选顺序变化导致记录跳动。旧版本保存的地址序号会在页面中转换为稳定选择规则,保存后生效;旧配置没有选择规则或旧序号已经失效时,后台也会按自动稳定规则选择候选,不会仅因缺少序号而中断无人值守更新。
自动同步中,如果当前已发布地址仍可用,而之前的优先 IPv6 刚刚重新出现,系统会等待它连续 3 轮都被检测到后才切回,避免地址短暂恢复造成 DNS 往返跳动。手工立即更新不使用这段稳定等待;需要立即切回时可在确认链路稳定后手动执行。
切换到另一张网卡时,页面会清空原网卡的优先地址、CIDR 和 IPv6 接口标识等选择规则,避免旧规则误套到新网卡。切换后应重新检查预览并按需配置规则。
开启内网地址后,明确选择的 优先地址 仍优先,其次保留当前仍可用的地址;需要重新自动选择时,公网候选排在内网候选之前。关闭开关会立即把私网地址排除出预览和后续更新;如果当前 DNS 记录仍是私网地址,需手动更新或等待下一轮同步改写。
优先地址 在自动和自定义模式中都可设置。需要按网段或 IPv6 接口标识进一步限定时,切换到 自定义匹配规则:
| 设置 | 作用 |
|---|---|
优先地址 | 候选中存在该地址时优先于当前地址和系统排序使用;地址失效后仍可选择其他匹配项 |
包含 CIDR | 只从指定 IPv4 或 IPv6 网段中选择 |
排除 CIDR | 排除不应写入 DNS 的网段 |
IPv6 接口标识(低 64 位) | 忽略会变化的前缀,跟随同一接口标识选择新的 IPv6 地址 |
允许临时/隐私 IPv6 地址 | 默认关闭,避免隐私地址轮换造成频繁更新 |
页面会实时预览最终选中的地址。规则同时匹配多个候选时,预览会显示候选数量并按稳定性选出一个,不会按网卡列表中的偶然顺序选择;没有匹配项时不能依赖该配置更新。IPv6 前缀会变化、但设备接口标识稳定时,可选择当前优先地址并保留自动提取的低 64 位接口标识;不应使用临时隐私地址时保持默认关闭。
公网地址探测设置
DDNS 的公网地址探测可使用内置 HTTP(默认)或系统 curl。内置 HTTP 在选择出站网卡时会绑定对应的本地地址,适合多网卡设备明确控制探测流量从哪里出去;系统 curl 则依赖宿主机已有的命令与网络环境。
探测设置还可选择公共 DNS:不使用、阿里云、腾讯云、Cloudflare 或 Google,默认使用阿里云。这里的公共 DNS 只用于解析公网地址探测服务,不会改变 DDNS 提供商、待更新的记录,也不会替你修改业务域名的 DNS。
IPv4 和 IPv6 可分别维护多个探测地址。地址可以是返回纯 IP 的 HTTP(S) URL,也可以是可解析的域名。修改前先点击 测试地址,逐条确认状态码、响应预览和解析出的 IP;恢复出厂地址 只覆盖弹窗中的草稿,仍需保存才会生效。
自动同步与日志
自动同步间隔可设为 2 到 1440 分钟,默认 10 分钟。保存新间隔后从下一轮同步开始使用。手工执行 立即刷新 或单个更多域的 立即更新 不需要等待周期。
日志用于区分四类问题:
| 日志阶段 | 常见问题 |
|---|---|
| 地址获取 | 探测站不可达、网卡无候选、静态 IP 或来源域名无效 |
| 提供商认证 | Token、Secret、权限或系统时间错误 |
| Zone / 记录查找 | 根域、Zone ID、站点名或完整域名不匹配 |
| 创建 / 更新 | API 限流、记录类型冲突、TTL 或代理状态不受支持 |
清空日志不会清空配置和运行状态。排障时保留最后一次失败及其前后记录,分享前遮盖 Token、Secret、Zone ID 和公网地址。
子域场景的最小规划
以 example.com 为例,可让 auth.example.com 和业务子域都到达同一网关入口。常见做法是维护认证 Host 和泛解析记录;具体是否使用 A、AAAA 或 CNAME 取决于 DNS 提供商和网络拓扑。
IPv6 不是 IPv4 的自动替代。若只配置 IPv6,客户端、路由器和 CDN 都必须具备可用 IPv6 链路;双栈环境中应分别测试两种记录。
排查
- 查看 DDNS 日志中的认证、查找和更新结果。
- 确认网卡选择器预览的地址符合目标 DNS 的使用范围;公网记录不应误选 Docker 或内网地址,私网记录则需确认
允许内网地址已开启。 - 立即更新后确认状态卡的“最后成功更新”发生变化;只变化“最后检查”表示本轮没有成功写入。
- 确认 DNS 记录名称、Zone / 根域和访问 Host 完全一致。
- 使用权威 DNS 或提供商控制台确认记录值,避免只看本机缓存。
- 从外网测试 DNS、TLS、网关端口和实际应用,逐层定位。
