Linux系统服务 2 ---- DNS基础及域名系统架构
1 域名
1 比如www.LinuxCast.net,实际上域名只是后面的一部份,但是我们一般都是整个叫为域名
2 对于域名来说,我们一般使用.来分割,严格的域名最后一位还是有一个.的,但是我们都直接省略
3 域名分为三个部分
主机名 该域中的某台主机,对于网页服务器来说都是www,但是也有ftp,mail等等
域名 域名称
类型 标识此域名的类型,比较常见的有com , net , org , edu , gov
2 DNS
1 每一个域名实际上代表的是一个ip地址,比如www.LinuxCast.net的ip为1.1.1.1(假设)
2 DNS(Domain Name System),服务有DNS来提供
3 比如我要访问www.LinuxCast.net
第一步我们先去请求DNS服务器
第二步DNS返回当前域名的ip地址
第三步主机通过ip地址去访问当前的网站
3 DNS客户端
1 我们日常使用的支持网络的计算机一般都是做为一个DNS客户端使用,应用程序,服务,进程等等通过操作系统底层的功能发起对dns服务器的查询,对指定域名进行解析
2 Linux中一般使用系统底层提供的gethostbyname()来进行域名解析
3 解析基于以下几种方式
文件(/etc/hosts . /etc/networks)
DNS
NIS
4 我们可以通过配置文件/etc/nsswhich,conf来控制查询的顺序,默认是先文件hosts , 第二是DNS
4 DNS专用查询命令
1 命令host可用于进行dns的查询
host www.LinuxCast.net
2 dig命令也可以用来进行dns查询,输出较为详细的信息
dig www.LinuxCast.net
3 命令host和dig都不会使用/etc/nsswhich.conf的配置,只会通过/etc/resolve.conf进行dns查询
5 DNA查询
1 DNS是一个树状结构,查询的时候根据域名从右到左查询,域名每一级由独立的一个或多个服务器
2 比如我们要查询www.LinuxCast.net(其实是www.LinuxCast.net.)这个域名
第一步我们先去查找根域名服务器,也就是. 那么这个根域名服务器保存了比如com , net , org等等的信息
第二步根据我们找到的net,我们去查net. , 也就是在顶级域名服务器,保存的是域名,比如LinuxCast等等
第三步根据找到的LinuxCast.net.,我们去查这个域名下的主机名,通常这个服务器保存比如www , mail , ftp等主机
第四步找到www.LinuxCast.net
3 我们可以通过 dig +trace www.LinuxCast.net 来追踪这个DNS的解析过程
6 DNS的查询类型
1 递归查询
比如我们要查询www.LinuxCast.net
首先我们客户端发送请求到本地的DNS服务器,然后本地DNS服务器去查询根域名服务器.并返回给本地域名服务器,本地域名服务器根据返回回来的结果进行查询下一个..... 最后返回给客户端
2 循环查询
同样还是查询www.LinuxCast.nat
首先客户端先通过本地域名服务器,然后本地域名服务器去查找根域名服务器. 然后根域名服务器去找顶级域名服务器net,顶级域名服务器找LinuxCast.net,最后再把结果返回给客户端
3 实际应用中是客户端和本地服务器之间利用循环查询,本地域名服务器和其他服务器之间利用递归查询
7 资源记录
1 在DNS服务器上,DNS的信息通过一个叫做资源记录(RR,Resource Record)的格式进行保存,RR不仅能够保存域名到ip地址的对应信息,还能够保存很多其他的信息
2 资源记录常用的属性有
NAME ---- 名称
CLASS ---- 类别(一般都市IN,代表internet)
TYPE ---- 类型(A代表的是ipv4,4A代表ipv6 等等)
RDATA ---- 数据
8 DNS服务器的类型
1 Primary DNS Server(Master)
一个域的服务器保存该域的zone配置文件,该域所有的配置,更改都在该服务器上面
2 Seconday DNS Server(Slave)
从服务器一般做为冗余负载使用,一个域的从服务器从该域的主服务器上抓取zone配置文件,从服务器不进行信息修改,所有的修改与主服务器同步
3 Caching only Server
DNS缓存服务器不存在任何的zone文件,仅仅依靠缓存为客户端提供服务,通常用于负载均衡以及加速访问
9 zone
在DNS服务器中,一般一个域通过一个zone文件保存该域的相关信息,zone文件的格式是标准化的,一个典型的zone配置文件内容如下