如何清理 DNS 缓存

2017.01.08 10:09 Sun| 234 visits 问题&解决方案| Text

什么是 DNS

DNS(英文:Domain Name System,缩写:DNS),中文名:网域名称系统,是互联网中重要的一环,它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。生活中 DNS 也成了“提供 DNS 服务器的 ip”的代称。

简单比喻来说,它是一个巨型通讯录,你提供网站的姓名(域名)给它,它会回复给你此人的电话号码。至此你遍可以通过电话号码联系到你想联系的人。

什么是缓存

缓存(cache)一词来源于1967年的一篇电子工程期刊论文,从前专指存在于 CPU 与 RAM 之间为了弥补两者数据传输速度差异的一种结构。现如今,这个概念得到了扩充,不再限于 CPU 与 RAM 之间,任何位于速度相差较大的两种硬件之间,用于协调两者数据传输速度差异的结构,均可称之为 Cache。那 DNS 缓存如何理解呢?

仍然用通讯录比喻,通讯录提供的服务很方便,但是查询是需要时间成本,而每一个人的电话号码一般是不会经常变更的,所以你为了自己以后使用的方便就把从前查询的结果都记录在自己的小本子上,当你去查自己的小本子,效率就提高了很多。而这个小本子就是缓存。

EDNS 解析是什么

互联网的世界越来越大,现在的网站为了更好的服务,也都并不只是一台服务器提供服务器,所以就存在一个网站在不同的区域解析不同的 ip ,自然这个 ip 对于你的电脑而言延迟越低越好,而这得益于 EDNS 协议,EDNS 协议是 DNS 协议的扩充,它是google提交了一份DNS扩展协议。Google 大法好。

用通讯录比喻:你在山东查找教育局的投诉电话,应该告诉你的不是中央教育局的电话,当然中央教育局也能解决问题咩,但你不能越级(上访)啊!~(认真脸)

DNS 投毒

由于 DNS 服务本身是不存在身份校验机制的,所以可以被居心叵测的人利用,当收到 DNS 解析结果时你并不能确认对方的身份,而系统会优先把第一个回复内容当作结果。如果一只耳朵和嘴巴存在于你和 DNS 服务器之间,听到你发的请求,提前告诉你错误的结果,那么你的 DNS 解析就被错误的结果污染了,这被叫做 DNS 投毒攻击,也是 gfw 的众多手段之一。在2010年由于中国的 DNS 投毒导致了全球 Google 访问受阻。

为什么清理缓存

现在的浏览器、操作系统和每一级 DNS 服务器都有 DNS 缓存机制,而且都会带有 timeout 时间,几分钟到几十分钟不等,但有些情况下用户需要强制刷新 DNS 缓存,比如:

  1. 某个自己关注的域名更换了 IP 地址。
  2. 更换了一个 DNS 地址时希望重新缓存。
  3. 在国内网络中普遍存在 DNS 投毒,使用科学上网前,清理 DNS 缓存也很必要。

清理的方法

操作系统:

  • windows:

    ipconfig /flushdns
  • MacOS 10.5 and 10.6:

    sudo dscacheutil -flushcache
  • MacOS 10.7, 10.8, and 10.9

    sudo killall -HUP mDNSResponder
  • Linux
    取决于你使用的 DNS client 和操作系统版本。(会用 Linux 的朋友自己应该可以搞定的)

浏览器:

  • Chrome

    chrome://net-internals/#dns

    新标签也打开这个地址,点击 Clear host cache。

  • Windows Edge
    Edge 和 Window 紧密相关,仅需要清除系统 Cache。

  • Firefox
    未找到方法,重启火狐吧。

手机:

  • 安卓 and iOS : 开关一次飞行模式即可。

生活这热爱的土地上,总是很困惑,彷徨。幸好存在计算机、互联网这另一个世界,一切都建立于某些已知秩序上的世界,可以将他们串成线轻易的记下。