我在 raspberrypi 上使用 Flask 设置了一个服务器,并创建了 2 个子域(例如:123.ddns.net、456.duckdns.com)。我为路由器配置了端口转发和 DNS 配置(DynDNS),并且还使用了 ddclient。问题是:当我为 123.ddns.net 配置路由器和 ddclient 并启动服务器时,它运行良好(指向我的家用电脑)。然后我更改 456.duckdns.com 的配置并启动服务器,它就可以正常工作了,但同时它仍然可以为 123.ddns.net 工作!
当我在浏览器上连接到 123.ddns.net 或 456.duckdns.com 时,它会显示相同的结果。好像 123.ddns.net 仍然指向我的路由器。
这是 DNS 缓存问题还是有其他解释?谢谢!
答案1
它确实仍然指向您的路由器。
DynDNS 不会维持持久的“实时”连接。您的路由器仅使用 ddclient 发送定期更新(以防您的 IP 地址发生变化),但提供商服务器上的实际 DNS 记录实际上是完全静态的:它们将保留在那里直到有东西将它们删除。
一般来说,当你为新的 DynDNS 提供商配置路由器时,它不会费心清理旧提供商的信息:它只会用新设置覆盖旧设置,仅此而已。(我不确定大多数提供商是否允许客户端通过其“更新”API 彻底删除主机名。)
因此,这意味着您的旧主机名可以保持活动状态并永远指向同一地址,除非您转到控制面板并将其删除(或除非提供商本身将您的帐户删除为“不活动”)。简单地关闭 ddclient 不会让它消失。
也就是说,DNS 缓存也可能导致这种情况 - 但不太可能成为原因,因为 DynDNS 服务的全部特点是它们倾向于使用非常低的缓存 TTL,通常从几秒到几分钟不等,以便用户能够尽快看到他们的“动态”更新。