前言
有时候,网络明明没有问题,但就是访问不了特定正常的网站。
有时候更是只有微信等软甲可以使用,但是无法访问网页
出现这些现象时,本地DNS就有可能被污染了。
什么是DNS
域名系统 (DNS) 是互联网的电话簿。人们通过例如 nytimes.com 或 espn.com 等域名在线访问信息。Web 浏览器通过 互联网协议 (IP) 地址进行交互。DNS 将域名转换为 IP 地址,以便浏览器能够加载互联网资源。
连接到 Internet 的每个设备都有一个唯一 IP 地址,其他计算机可使用该 IP 地址查找此设备。DNS 服务器使人们无需存储例如 192.168.1.1(IPv4 中)等 IP 地址或更复杂的较新字母数字 IP 地址,例如 2400:cb00:2048:1::c629:d7a2(IPv6 中)。
DNS 如何工作?
DNS 解析过程涉及将主机名(例如 www.example.com)转换为计算机友好的 IP 地址(例如 192.168.1.1)。Internet 上的每个设备都被分配了一个 IP 地址,必须有该地址才能找到相应的 Internet 设备 - 就像使用街道地址来查找特定住所一样。当用户想要加载网页时,用户在 Web 浏览器中键入的内容(example.com)与查找 example.com 网页所需的机器友好地址之间必须进行转换。
为理解 DNS 解析过程,务必了解 DNS 查询必须通过的各种硬件设备。对于 Web 浏览器而言,DNS 查询是“在幕后”发生的,除了初始请求外,不需要从用户的计算机进行任何交互。
加载网页涉及 4 个 DNS 服务器:
DNS 解析器 - 该解析器可被视为被要求去图书馆的某个地方查找特定图书的图书馆员。DNS 解析器是一种服务器,旨在通过 Web 浏览器等应用程序接收客户端计算机的查询。然后,解析器一般负责发出其他请求,以便满足客户端的 DNS 查询。
根域名服务器 - 根域名服务器是将人类可读的主机名转换(解析)为 IP 地址的第一步。可将其视为指向不同书架的图书馆中的索引 - 一般其作为对其他更具体位置的引用。
TLD 名称服务器 —— 顶级域名服务器(TLD)可看做是图书馆中一个特殊的书架。这个域名服务器是搜索特定 IP 地址的下一步,其上托管了主机名的最后一部分(例如,在 example.com 中,TLD 服务器为 “com”)。
权威性域名服务器 - 可将这个最终域名服务器视为书架上的字典,其中特定名称可被转换成其定义。权威性域名服务器是域名服务器查询中的最后一站。如果权威性域名服务器能够访问请求的记录,则其会将已请求主机名的 IP 地址返回到发出初始请求的 DNS 解析器(图书管理员)。
DNS 查找有那些步骤
大多数情况下,DNS 与正被转换为相应 IP 地址的域名有关。要了解此过程的工作方式,在 DNS 查找从 Web 浏览器经过 DNS 查找过程然后再返回时,跟踪 DNS 查找的路径会有所帮助。我们来看一下这些步骤。
注意:通常,DNS 查找信息将本地缓存在查询计算机内,或者远程缓存在 DNS 基础设施内。DNS 查找通常有 8 个步骤。缓存 DNS 信息时,将从 DNS 查找过程中跳过一些步骤,从而使该过程更快。以下示例概述了不缓存任何内容时的所有 8 个步骤。
DNS 查找的 8 个步骤:
- 用户在 Web 浏览器中键入 “example.com”,查询传输到 Internet 中,并被 DNS 递归解析器接收。
- 接着,解析器查询 DNS 根域名服务器(.)。
- 然后,根服务器使用存储其域信息的顶级域(TLD)DNS 服务器(例如 .com 或 .net)的地址响应该解析器。在搜索 example.com 时,我们的请求指向 .com TLD。
- 然后,解析器向 .com TLD 发出请求。
- TLD 服务器随后使用该域的域名服务器 example.com 的 IP 地址进行响应。
- 最后,递归解析器将查询发送到域的域名服务器。
- example.com 的 IP 地址而后从域名服务器返回解析器。
- 然后 DNS 解析器使用最初请求的域的 IP 地址响应 Web 浏览器。
DNS 查找的这 8 个步骤返回 example.com 的 IP 地址后,浏览器便能发出对该网页的请求:
浏览器向该 IP 地址发出 HTTP 请求。
位于该 IP 的服务器返回将在浏览器中呈现的网页。
DNS是否被污染
DNS污染,又称为域名服务器缓存污染(DNS cache pollution)或者域名服务器快照侵害(DNS cache poisoning)。
DNS污染是指一些刻意制造或无意中制造出来的域名服务器分组,把域名指往不正确的IP地址。
一般来说,网站在互联网上一般都有可信赖的域名服务器,但为减免网络上的交通,一般的域名都会把外间的域名服务器数据暂存起来,待下次有其他机器要求解析域名时,可以立即提供服务。一旦有相关网域的局域域名服务器的缓存受到污染,就会把网域内的电脑导引往错误的服务器或服务器的网址。
检测本地DNS是否被污染
windows可以借助网页工具检测本地DNS是否被污染:
解决DNS污染问题
使用加密代理,比如Shadowsocks,在加密代理里进行远程DNS解析,或者使用VPN上网。
修改hosts文件,操作系统中Hosts文件的权限优先级高于DNS服务器,操作系统在访问某个域名时,会先检测HOSTS文件,然后再查询DNS服务器。可以在hosts添加受到污染的DNS地址来解决DNS污染和DNS劫持。
通过一些软件编程处理,可以直接忽略返回结果是虚假IP地址的数据包,直接解决DNS污染的问题。
如果你是Firefox用户,并且只用Firefox,又懒得折腾,直接打开Firefox的远程DNS解析就行了。在地址栏中输入:about:config找到 network.proxy.socks_remote_dns 一项改成true。
使用DNSCrypt软件,此软件与使用的OpenDNS直接建立相对安全的TCP连接并加密请求数据,从而不会被污染。 对于被DNS污染的网站站长来说,最有效的方法就是 换域名或者IP 了。
对于被DNS污染的网站站长来说,最有效的方法就是 换域名或者IP 了。