当域名缓存没办法得到及时更新的时候, 这经常会导致大家发现新发布的解析记录没有生效。DNS这个缓存它是分布在浏览器、操作系统、路由器(光猫)这一共三个层级的地方的。
大家需要按照正确的顺序去清除它, 这个顺序就是先清浏览器, 再清系统, 最后清路由器。你要是按照下面这种分层的步骤来进行操作的话, 在几分钟之内就可以把整个链条上的缓存都刷新的。
浏览器层面(清除频率最高)
Chrome / Edge:地址栏输入 chrome://net-internals/#dns(Edge 对应 edge://net-internals/#dns),点击 Clear host cache;再访问 chrome://net-internals/#sockets域名缓存清除技巧,点击 Flush socket pools。
Firefox:地址栏输入 about:networking/dns,点击 Clear cache。
Safari(macOS): 使用Cmd + Option + R这个快捷键, 可以强制刷新页面;或者进入“系统设置”菜单, 再找到“网络”选项, “DNS”选项, 然后把它里面已经缓存的那些记录给删除掉。
操作系统层面
Windows:
1. 请选择让程序以具有最高管理权限的方式运行, 然后在系统里找到并打开那个用于输入命令的命令行工具, 或者是打开那个功能更为强大的、带有脚本编写能力的命令行处理程序。
2. 执行 ipconfig /flushdns
3. ipconfig /release 然后是 ipconfig /renew, 也就是把 IP 给释放掉, 然后再重新获取一遍。
macOS:
1. 现在就把那个叫作的程序给打开。
2. 在命令行里输入sudo, 然后接着输入dscacheutil- flushcache。
3. sudo killall -HUP mDNSResponder
Linux(systemd-resolved / nscd / dnsmasq):
sudo systemctl restart systemd-resolved
若使用 dnsmasq:sudo systemctl restart dnsmasq
路由器 / 光猫层面(最易被忽略)
多数家用路由器里面都带着DNS缓存功能, 默认的TTL时长是在600秒到3600秒这样一个范围里。具体的清除方法如下:
登录到管理页面, 这个页面的网址通常是 192.168.1.1 或者 192.168.0.1。接着,找到标有“LAN 设置”和“DNS 设置”的选项。然后, 在该页面中重启 DNS 服务。或者, 你也可以选择保存一次配置设置, 以此来触发刷新操作。
最简单的办法是先把电源断开, 等待10秒之后再把电源接通, 然后耐心等待2分钟, 以便让相关服务恢复正常。
在像OpenWrt这类开源固件的环境里, 你先通过SSH进行登录, 然后在你的设备上执行/etc/init.d/dnsmasq restart这个操作。
本地 Hosts 文件排查
如果前面说的这几个办法都不管用, 那就去检查一下看看, 之前有没有自己动手往里面写入过映射的内容。
Windows:C:\Windows\System32\drivers\etc\hosts
在 macOS 或者 Linux 的系统中, 我们可以使用/etc/hosts。
我们需要把对应的那个域名的行给删除掉, 就像是之前曾经把 gname.xin 这个域名指向了旧的IP地址的那些记录一样, 然后在保存完成之后, 再去重新执行第二步里面的系统 DNS 刷新操作即可。
高频疑难速查
验证是否清除成功
在Windows系统里面, 你可以用nslookup yourdomain.com这个命令, 然后去看看它返回的结果是不是那个新IP。
macOS / Linux:dig yourdomain.com
浏览器:访问 https://dnsleaktest.com,确认出口 DNS 与解析结果一致
在完成上述的所有步骤之后, 域名的缓存就完成从端到端的彻底清除工作了, 这时候新的解析记录就可以正常地生效了。


