type
status
date
slug
summary
tags
category
icon
password
想做DDNS的同学们,建议不要使用Lucky的动态域名功能,Lucky的动态域名功能会在IP地址变化是,在托管服务商新增一条DNS记录,而不是更新原来的记录,造成同一名称对应多条不同IP的DNS记录,但只有其中一条IP地址有效,造成有效IP无法访问或无法及时访问。
而使用DDNS-GO则不存在这个问题,DDNS-GO时名副其实的更新DNS记录,不会产生多条同名称的记录。
前期参考多篇网上的教程设置了DDNS,域名托管在Cloudflare,并设置了DNS,在飞牛系统采用的时DDNS-G0进行动态更新IP地址,设置后很长一段时间都可以正常内网穿透。但今天发现电信服务商更新了本机的IPV6地址,造成外网无法访问NAS。
公网IPV6变化的原因
公网IPV6变化的原因是我关闭了OVS功能。后来重新尝试去开关VOS,可以复现。因为VOS开启后会给主机分配一个新的IPV6地址。
出现问题的现象
查看DDNS-GO日志显示同步失败,有以下提示:
更新域名解析失败! 异常信息: 返回内容: {"result":null,"success":false,"errors":[{"code":81058,"message":"An identical record already exists."}],"messages":[]} ,返回状态码: 400
进而尝试采用Lucky进行动态域名,提示同步失败,失败原因相同。
虽然存在,但为实现DDNS的更新。
最后在删除所有DNS记录后,在DDNS工具上更新同步,才成功访问。
原以为"An identical record already exists."的原因是DDNS同步与存量的DNS记录存在冲突,需要删除原DNS才能更新,后来才发现提示"An identical record already exists."的目的是想告诉你已经存在相同记录,无需更新。但为什么还是无法访问新的IP地址呢?主要由以下两个原因产生,一是“TTL(生存时间)”,二是客户端的 DNS 缓存。
关于TTL
TTL(Time To Live,生存时间)是 DNS 解析结果的缓存时间,它决定了 DNS 记录在解析后会被缓存多久,即客户端或 DNS 服务器在此时间内不会再次查询 Cloudflare,而是直接使用缓存的 IP。
在DNS记录里就可以设置TTL,一般默认为“自动”,看可以最短设置为1分钟,最长设置为1天(cloudflare)。
在DDNS同步工具里也可以设置DNS的TTL。但设置的TTL时间需属于托管服务商提供的可选TTL时间。比如cloudflare可设置的最短TTL时间为1分钟,你若在DDNS工具内设定的时间为30秒,则该TTL设定无效。


客户端的 DNS 缓存
即使 Cloudflare 按照轮询方式返回不同的 IP,客户端的 DNS 解析结果 可能会受到缓存影响:
- 本地 DNS 缓存(
ipconfig /flushdns
可以清除 Windows 的缓存)。
- ISP(运营商)的 DNS 服务器可能缓存某个 IP 一段时间。
- 浏览器可能会有自己的 DNS 缓存(如 Chrome、Firefox)。
如果你 修改了 Cloudflare DNS 记录,但仍然解析到旧 IP,可能需要等待 TTL(生存时间)过期,或者手动清除缓存。
正式基于以上两个原因,IP地址更新后,网址成功访问新IP地址的的时间会大于TTL。经过测试,TTL设置成1分钟,在5分钟之类可以成功访问新IP。
关于获取公网IP的方式
建议通过接口方式获取公网IP。通过网卡获取IP的方式一旦失败,可能会终止DDNS同步(亲测),无论是DDNS-GO,还是Lucky。

在设置 DDNS(动态域名解析) 时,获取公网 IP 的方式主要有 两种:
- 从网卡获取本机的 IP(本地方式)
- 通过接口获取 IP(外部查询方式,如 API)

1. 通过接口获取公网 IP(外部 API 方式)
原理
设备不会直接读取本机网卡的 IP,而是向 公网 API 发送请求,API 返回设备的 真实公网 IP。
常见的 API 接口包括:
https://api.ipify.org
https://checkip.amazonaws.com
https://ipv6.icanhazip.com
https://myip.ipip.net
优点
✅ 适用于 NAT 网络(如双重路由):
如果你的设备在 内网(NAT)后面,本机网卡只能获取 局域网 IP(如
192.168.x.x
或 10.x.x.x
),但 公网 API 能返回真实外网 IP。✅ 更准确:
- 部分运营商(如移动宽带)可能会使用 CG-NAT(共享公网 IP),本机网卡无法正确识别自己的公网 IP,而 API 可以返回真实 IP。
- 适用于 IPv6:有些 ISP 会给每个设备分配多个 IPv6 地址,从网卡获取可能无法区分公网/内网 IP,API 能返回正确的公网 IPv6。
✅ 支持 IPv4 / IPv6 识别:
- 可以选择不同 API 获取 IPv4 或 IPv6。
- 例如:
https://ipv4.icanhazip.com
(只返回 IPv4)或https://ipv6.icanhazip.com
(只返回 IPv6)。
✅ 适用于 DDNS 自动更新:
如果你的网络会动态更换公网 IP(如 PPPoE 拨号),外部 API 能实时返回最新的公网 IP。
缺点
❌ 依赖外部服务:如果 API 服务器故障或访问受限,DDNS 可能无法正确获取 IP。
❌ 响应速度比本机查询稍慢:需要网络请求,可能比直接从网卡读取稍慢 几十毫秒。
2. 从网卡获取 IP(本地方式)
原理
直接读取本机的 网卡(Network Interface) 配置,获取当前绑定的 IPv4/IPv6 地址。
优点
✅ 本地查询,速度快:不依赖外部 API,直接读取网卡,查询速度更快。
✅ 无需联网:如果服务器无 Internet 访问权限,但仍需获取本机 IP(用于内网 DDNS),可以使用此方法。
✅ 适用于静态公网 IP:如果 ISP 分配的是 固定公网 IP,那么从网卡读取是最可靠的方法。
缺点
❌ 无法识别 NAT 后的公网 IP:如果设备在 内网(NAT) 后,读取的只是内网 IP(如
192.168.1.x
),无法用于 DDNS 更新。❌ 可能获取错误的 IP:
- 多个网卡(如 VPN、Docker 网络)可能导致获取到 错误的 IP(例如虚拟网卡的 IP)。
- 在 IPv6 下,网卡可能同时有多个地址(临时地址、私有地址、公网地址),DDNS 可能会获取到错误的地址。
3. 选择哪种方式?
方式 | 适用场景 | 不适用场景 |
接口获取公网 IP(外部 API) | - 动态公网 IP(PPPoE 拨号)- NAT 网络(内网穿透)- 双重路由(多个路由器)- IPv6 识别(公网/内网) | - 无公网 IP(ISP 限制)- API 访问受限 |
从网卡获取本机 IP | - 静态公网 IP(ISP 固定 IP)- 本地局域网 DDNS(如内网 DNS)- 无 Internet 访问权限 | - NAT/多级路由(可能获取不到公网 IP)- IPv6 可能获取到错误地址 |
推荐使用方式
- 如果设备有公网 IP,并且不是 NAT 环境 → 从网卡获取 IP(更快、更稳定)。
- 如果设备在 NAT 后(如双重路由、运营商 NAT) → 通过接口获取公网 IP(更准确)。
- 如果 DDNS 需要更新 IPv6 → 通过接口获取公网 IPv6 地址,确保获取的是 公网 IPv6。
结论
🚀 如果你的设备在 NAT 后,或者你使用的是 IPv6,推荐用“接口获取公网 IP”的方式,因为这样可以确保获取的是 真实的公网地址,而不是本地网卡的局域网地址。
Lucy的DDNS同步更新IP是新增而非修改DNS记录
DDNS工具更新IP地址时,并不是修改DNS记录,而是新增一条记录。而DNS服务器仍然有可能将解析成旧的地址,造成网址无法访问到最新IP地址,因为旧的DNS记录具有TTL,
Cloudflare的轮询(Round Robin)机制
如果 Cloudflare DNS 里 存在多个相同名称的 A / AAAA 记录(即 同一子域名对应多个 IP 地址),Cloudflare 默认使用轮询(Round Robin)方式返回 IP。
🔹 工作方式:
- 每次查询时,Cloudflare 可能会随机返回不同的 IP 地址。
- 例如,你有以下 DNS 记录:
当客户端
ping example.com
,DNS 可能: - 第一次返回
192.168.1.1
- 第二次返回
192.168.1.2
- 第三次返回
192.168.1.3
- 然后循环……
🟢 优点:
- 适用于 负载均衡,可以让流量分散到多个 IP 上。
- 对于多服务器部署的网站,能 提高可用性。
🔴 缺点:
- 轮询是无状态的,如果某个 IP 失效,Cloudflare 仍然可能返回它(除非 Cloudflare 代理检测到它不可用)。
- 某些客户端(如
ping
)可能缓存 DNS 结果,因此短时间内可能会使用相同的 IP。
- 作者:ThinkXYZ
- 链接:http://thinkxyz.top/article/%E5%85%AC%E7%BD%91IP%E5%8F%98%E5%8A%A8%E5%90%8E%E5%8A%A8%E6%80%81%E5%9F%9F%E5%90%8D%E8%A7%A3%E6%9E%90%E5%A4%B1%E6%95%88
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。