此文的内容包括:
·DNS是什么
·DNS的解析过程·DNS劫持
·DNS污染
1.DNS是什么
DNS是域名系统(Domain Name System)的英文缩写,它是应用层的一种协议,用来把便于人们使用的域名转换为IP地址。
2.DNS的解析过程
通过域名服务器来把域名转换为对应的IP地址的过程叫做域名解析,DNS协议运行在UDP协议之上,使用端口号53。
·解析过程:
主机向本地域名服务器的查询一般采用递归查询(当本地域名服务器无法解析时,不让主机自己进行下一步的查询):当某一个应用进程需要把域名解析为IP地址时,该应用进程就调用解析程序,并成为DNS的一个客户,把待解析的域名放在DNS查询请求报文中,以UDP用户数据报的方式发给本地域名服务器(使用UDP是为了减小开销)。本地域名服务器在查找域名后,把对应的IP地址放在回答报文中返回,应用进程获得主机的IP地址后即可进行通信。若本地域名服务器不能回答该请求,则此域名服务器就暂时成为DNS中的另一个客户,并向其他域名服务器发出查询请求,直到找到能够回答该请求的域名服务器的IP地址,如果最后没找到,就报错,表示无法查询所需的IP地址。
本地域名服务器向根域名服务器的查询一般采用迭代查询(根域名服务器并不替本地域名服务器进行后续的查询(当然本地服务器也可采用递归查询)):当根域名服务器收到本地域名服务器的DNS查询请求报文时,要么给出所要查询的IP地址,要么告诉本地域名服务器下一步去找哪个顶级域名服务器查询;而顶级域名在收到本地域名服务器的DNS查询请求报文后,要么给出所要查询的IP地址,要么告诉本地域名服务器下一步去找哪个权限域名服务器查询,当权限域名服务器还不能给出所要查询的IP地址时,会告诉发出这个查询请求报文的DNS客户,下一步去找哪一个权限域名服务器查找,本地域名服务器就这样进行迭代查询,直到找到能够回答该请求的域名服务器的IP地址,如果最后没找到,就报错,表示无法查询所需的IP地址。
·域名服务器(管辖范围不是以“域”为单位,而是以“区”为单位)
根域名服务器:知道所有顶级域名服务器的域名和IP地址,当一个本地域名服务器无法解析一个域名时,首先就要求助于根域名服务器;
顶级域名服务器(TLD服务器):负责管理在其名下注册的所有二级域名;
权限域名服务器:负责一个区的域名服务器;
本地域名服务器:是一个主机发出的DNS查询请求报文到达的第一站,离用户近,当要查询的主机也属于同一个本地ISP时,就能立即将所查询的主机名转换成它的IP地址。
3.DNS劫持(拦截请求、假IP地址)
DNS劫持又称域名劫持,指在一个被劫持的网络范围内拦截域名解析的请求,分析请求的域名,把审查范围以外的请求放行,否则返回假的IP地址或者什么都不做使请求失去响应,其效果就是对特定的网络不能反应或访问的是假网址。域名劫持往往只能在特定的被劫持的网络范围内进行,所以在此范围外的域名服务器能够返回正常的IP地址,有的用户可以在网络设置中把DNS解析服务器IP地址指向这些正常的域名服务器以实现对网址的正常访问。所以,域名劫持通常相伴的措施:封锁正常DNS的IP地址。
·举例:当输入www.google.com这个网址的时候,看到的网站却是百度的首页。
4.DNS污染(假的服务器)
DNS污染又称域名服务器缓存污染,由于DNS查询请求通常基于的UDP协议是无连接不可靠的协议,因此DNS的查询请求非常容易被篡改,通过对UDP端口53上的DNS查询请求进行入侵检测,如果发现与关键词相匹配的请求则立即伪装成目标域名的解析服务器,把发出请求的主机导引往错误的服务器。
·举例:目前一些被禁止访问的网站很多是通过DNS污染来实现的,例如YouTube、Facebook等网站。