DNS 解析过程详解

1. DNS解析过程linux

wps_clip_p_w_picpath-14256

1)、在浏览器中输入www.magedu.com域名,操做系统会先检查本身本地的hosts文件是否有这个网址映射关系,若是有,就先调用这个IP地址映射,完成域名解析。
2)、若是hosts里没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,若是有,直接返回,完成域名解析。
3)、若是hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/IP参数中设置的首选DNS服务器,在此咱们叫它本地DNS服务器,此服务器收到查询时,若是要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具备权威性。
4)、若是要查询的域名,不禁本地DNS服务器区域解析,但该DNS服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析,此解析不具备权威性。
5)、若是本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(没有设置转发器)进行查询,若是未用转发模式,本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后会判断这个域名(.com)是谁来受权管理,并会返回一个负责该顶级域名服务器的一个IP。本地DNS服务器收到IP信息后,将会联系负责 .com域的这台服务器。这台负责 .com域的服务器收到请求后,若是本身没法解析,它就会找一个管理 .com域的下一级DNS服务器地址(magedu.com)给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找magedu.com域服务器,重复上面的动做进行查询,直至找到www.magedu.com主机。
6)、若是用的是转发模式(设置转发器),此DNS服务器就会把请求转发至上一级ISP DNS服务器,由上一级服务器进行解析,上一级服务器若是不能解析,或找根DNS或把转请求转至上上级,以此循环。无论是本地DNS服务器用是是转发,仍是根提示,最后都是把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。
注:从客户端到本地DNS服务器是属于递归查询,而DNS服务器之间就是迭代查询。

2. DNS扩展(本地DNS缓存)数据库

Windows和Linux系统都会在本地缓存dns解析的记录,提升速度。可是,测试dns服务器的解析时,须要快速刷新(清除)本地的dns缓存,下面是linux和windows下如何快速刷新本地dns缓存记录的方法:windows


1)、Windows 客户端    
得到缓存中的DNS :  
浏览器

ipconfig /displaydns

强制清除DNS 缓存:    
缓存

ipconfig /flushdns

也能够在服务器管理中从新启动DNS Client服务:    
bash

net stop dnscache

重启动DNS Client服务:    
服务器

net start dnscache

2)、Linux 客户端    
开启本地DNS 缓存的服务    
ide

# chkconfig –list | grep nscd
nscd 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭

该服务除了提供DNS 缓存外,还缓存/etc/passwd, /etc/groups 缓存,DB文件在/var/db/nscd下 ,还可提供 NIS 加速的做用。    
启动本地 DNS 缓存服务便可:    
测试

# service nscd start

反之    
spa

# service nscd stop

须要注意的是,在linux下没有强制清除DNS缓存的命令。可是,咱们能够经过删除其后台数据库记录信息,达到清除DNS缓存的目的:    

# rm /var/db/nscd/hosts
# service nscd restart


3)、Linux Bind 服务    
有时候,咱们的客户端是处于某台 DNS 缓存服务器后面的。常见的状况是,做为 NAT 网关的 Linux 服务器,经过bind 服务,提供 DNS 缓存和转发功能。这可经过配置/etc/named.conf,加入forward来实现:

options {
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
forward only;
forwarders {
8.8.8.8;
};
};

这时,客户端对外的 DNS 解析结果,除保留在客户端本地的 DNS 缓存中,一样会保留在这台网关服务器上。还有一种状况就是,当咱们修改 named 提供的DNS服务时,也须要刷新缓存。  
bind 提供的 rndc 命令能够清空缓存的功能:    

# rndc flush
相关文章
相关标签/搜索