我在 Windows 8.1(以及更新前的 Windows 8)中遇到了 DNS 缓存问题。
我运行了一个小型网络服务器,并为其购买了一个域名。
在将域名的 DNS 设置更改为指向我的虚拟服务器后,我打开 cmd 并输入“ipconfig /flushdns”,就像我之前多次做的那样,以获取新 IP。
我注意到这次它不起作用。旧 IP 是 5.XX.XX.XX,新 IP 是 37.XX.XX.XX。我决定稍后再试一次(昨天更改了 DNS 记录),所以几分钟前我又试了一次。但每次,无论我多么频繁地清除缓存,它总是显示旧的 5.XX.XX.XX IP -.-
我多次发送上述命令,我清除了 Chrome 的缓存(在网上某处读到的,不确定它是否真的有帮助),我把头撞到墙上,但没有结果。
我试着用我的笔记本电脑 ping 域名,它成功了。
我使用在线跟踪路由工具对其进行了 ping 操作,它总是显示新的 IP。
我是否可能错过了其他方法来彻底清除我的 DNS 缓存?
答案1
问题不在于您的缓存,而是 DNS 工作方式的固有部分。您的计算机从其他地方获取 DNS 解析,并且缓存就在那里进行。请参见:
hum.is. 13485 IN A 182.160.128.100
这是来自我的 DNS 服务器的 DNS 记录。第二列是 TTL,即我的 DNS 服务器刷新 hum.is 记录之前剩余的秒数。无论我刷新本地 DNS 多少次,每次我要求 DNS 服务器解析 hum.is 时,它都会给我相同的答案。
在该时间到期之前(大约 3.7 小时),它不会返回 hum.is 的权威名称服务器并查看是否有新的 IP 地址。
您可以为域的 A 记录设置 TTL 值。有时默认值可能非常高 - 我见过他们设置了好几天。理想情况下,在进行更改之前,将其设置为一个较低的值 - 比如 60 秒、几个小时(比当前 TTL 值更长的时间),然后在更改后将 TTL 恢复为更高的值(以避免对 DNS 系统造成不必要的负担)。
这就是人们在谈论“DNS传播”时所指的,但它根本不是传播,而只是缓存值超时。