DNS污染和DNS劫持

1. DNS 污染

DNS 污染又称 DNS 缓存投毒,通过制造一些虚假的域名服务器数据包,将域名指向不正确的 IP 地址。

  • 工作原理

由于域名查询没有任何认证机制,且通常是基于无连接不可靠的 UDP 协议,查询者只接受最先到达且格式正确的查询结果(后来的查询结果均被丢弃),因此可以通过对 UDP 的53端口上的域名查询进行 IDS 入侵检测,一旦发现相匹配的域名查询请求,就立刻伪装成目标域名的解析服务器返回虚假的查询结果。

不过由于缓存过期时间的限制,污染的域名不是一成不变的,若某个污染过的域名缓存记录过了缓存过期时间后没有对其进行再污染,则该域名的污染就会消失。

  • 解决办法
  1. 绕过被污染的非权威 DNS 服务器,直接访问干净的公共 DNS 服务器。
  2. 在本机直接绑定 hosts,绕过 DNS 解析过程。(但由于 IP 地址会变更,故本机的 hosts 也需要不断更新)
  3. 对于无法绕开的 DNS 服务器,需要使用混淆/加密代理让它无法识别、篡改 DNS 数据。(该方法也可以绕过 IP 黑名单机制)

2. DNS 劫持

DNS 劫持指 DNS 服务器被控制,用户查询 DNS 时,服务器直接返回它想让你看到的结果(转到劫持者指定的网站)。DNS 劫持一般为互联网服务提供商 ISP 所为,用于提供自己的广告之类的。

  • 工作原理

劫持 DNS 服务器,通过某些手段取得某些域名的解析记录控制权,进而修改这些域名的解析结果,导致对该域名的访问由原 IP 地址转入到劫持者指定的 IP。

  • 解决办法
  1. 手动更换公共 DNS 服务器,绕过被劫持的 DNS 服务器。

附录

  • 公共 DNS
    公共 DNS 是一种面向大众的免费的 DNS 互联网基础服务,更换主机 DNS 服务器地址为公共 DNS 后,可以在一定程度加速域名解析、防止 DNS 劫持、加强上网安全,还可以屏蔽大多数运营商的广告。常用公共 DNS 服务器地址如下:
名称 DNS 服务器 IP 地址
OpenerDNS 42.120.21.30
阿里 AliDNS 223.5.5.5
223.6.6.6
V2EX DNS 199.91.73.222
178.79.131.110
CNNIC SDNS 1.2.4.8
210.2.4.8
114 DNS 114.114.114.114
114.114.115.115
Google DNS 8.8.8.8
8.8.4.4
OpenDNS 208.67.222.222
208.67.220.220

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!