DNS 污染和防御
DNS污染可以导致无法访问一些服务,恶意 DNS 污染可以钓鱼和欺诈正常用户,造成经济损失和信息泄露。
什么是 DNS 污染
DNS污染,又称为域名服务器缓存污染(DNS cache pollution)或者域名服务器快照侵害(DNS cache poisoning)。
DNS污染是指一些刻意制造或无意中制造出来的域名服务器分组,把域名指往不正确的IP地址。
一般来说,网站在互联网上一般都有可信赖的域名服务器,但为减免网络上的交通,一般的域名都会把外间的域名服务器数据暂存起来,待下次有其他机器要求解析域名时,可以立即提供服务。一旦有相关网域的局域域名服务器的缓存受到污染,就会把网域内的电脑导引往错误的服务器或服务器的网址。
某些网络运营商为了某些目的,对 DNS 进行了某些操作,导致使用ISP的正常上网设置无法通过域名取得正确的IP地址。某些国家或地区为出于某些目的防止某网站被访问,而且其又掌握部分国际 DNS 根目录服务器或镜像,也可以利用此方法进行屏蔽。
这和某些运营商利用DNS劫持域名发些小广告不同,DNS 污染则让域名直接无法访问了,非得修改DNS服务器不可。
DNS 污染和防御
如何检测有没有被 DNS 污染
检查自己有哪些 DNS 服务器
cat /etc/resolv.conf
通过 DNS 工具来解析域名并指定使用的 DNS 服务器:
nslookup www.google.com 192.168.20.1
使用 google 的 DNS 服务器解析进行验证:
nslookup www.google.com 8.8.8.8
如何防止 DNS 污染
使用 HTTPS 代理服务器
对于 HTTP/HTTPS 类型的代理服务器而言,请求的域名会作为 HTTP 协议的一部分直接发往代理服务器,不会在本地进行任何解析操作。也就是说,域名的解析与连接目标服务器,是代理服务器的职责。浏览器本身甚至无须知道最终服务器的 IP 地址。据我所知,此行为无法通过浏览器选项等更改。
也就是说,理论上使用 HTTP/HTTPS 类型的代理服务器时,本地的 DNS 解析、缓存、 hosts 文件等都不使用,与本地设置的 DNS 服务器地址无关。DNS 解析完全在代理服务器上进行。
使用 socks5 代理服务器
socks5 代理支持远端 DNS 解析协议,可以使用代理在远端解析 DNS。