标签:DNS域名解析服务
一、DNS名称解析服务的作用及概念 DNS是domain name system的简称,DNS的主要作用就是讲主机名解析成IP的过程,因为在计算机网络当中是通过IP地址来进行主机间的互联,但是IP地址是32位的二进制数字,并不便于人们的记忆,所以我们就需要一个简单容易记忆的字符串来代替IP地址,就像我们在访问百度的主页的时候,只记得住www.baidu.com,谁又会记得百度的IP呢?因此我们就需要一种机制,能够完成域名(FQDN)到主机识别的IP地址之间的转换,因此DNS就诞生了
在DNS诞生之前,这个功能主要是通过本机的一个hosts文件来记录域名和IP的对应关系,但是hosts文件也有一些缺陷,它只能服务于本主机,而不能同步更新所有的主机使用,并且当hosts文件很庞大的时候是很难管理的,因此就必须有一个统一的组织去记录管理域名和IP的对应关系
DNS是一个分布式、分层次的主机名管理架构,通过配置DNS服务器地址,主机不需要知道对应的IP地址就能通过主机名形式访问互联网。DNS利用类似倒状树的目录结构将主机名的管理分配在不同层级的DNS服务器中,通过分层管理,每一级DNS服务器负责部分域名信息,这也就减轻了DNS服务器的负载,同时也方便记录的更新同步。比如某些服务器只记录属于它负责范围内的域名信息
上面我提到了一个名词FQDN,FQDN 是full qualified domain name的简称,叫完整主机名,完整主机名由主机名和域名组成,那么什么是主机名和域名呢?我们通过一个简单的例子来解释一下主机名与域名的概念,假如你要给给你一个北京的亲戚打一个固话,北京的主机号码是62981234,那么我直接拨号62981234后,电信局会认为我拨打的是本地的号码,那么它就会直接给我转接本地62981234的主机中,但是实际我想接的是北京的62981234,那么因此我们就需要在该号码前加上北京的区号010,这样才能把电话接到北京,那么这个电话号码62981234就相当于主机名,区号010就相当于域名,再比如我们经常访问的www.baidu.com当中,www就是web网站服务器的主机名,baidu.com就是域名,主机名和域名之间用实心的点号来表示。
我们学习文件系统知识的时候就知道,目录结构的最顶层是根目录,根是一切文件的起点,DNS同根文件系统一样都是倒状的树状结构,在最顶层是由一个叫做根服务器,主要负责顶级域名的管理,所谓顶级域名就是像.com、.cn、.get、.org、.edu等等,在下面的顶级域名服务器则负责其所对应的二级域名,如.baidu.com、.taobao.com、.qq.com等。在接下来二级域名服务器负责对应的主机名解析或者其三级域名解析,三级域名如.www.taobao.com、.www.baidu.com、www.qq.com等,最多127级域名,依次类推结构如下图:
从上图中,我们看出,每一级DNS服务器只知道下一级的域的管理,其中的根节点是分布在全是假各处的13台服务器组成,其中10台在美国地区,另外3台设置于英国、瑞典和日本,在这13台根服务器当中有1台为主根服务器放置在美国,其余12台均为辅根服务器,所有的跟服务器均有美国政府授权的互联网域名与号码分配机构ICANN组织统一管理,负责全球网络域名跟服务器、域名体系和IP地址等的管理,
由于跟服务器中有经美国政府批准的260多个互联网后缀(顶级域名如:.com、.net等)和一些国家指定符号,这些后缀也通常具有一定的意义,比如:
名称 代表意义
com 公司、行号、企业
org 组织、机构
edu 教育单位
gov 政府单位
net 网络、通讯
mil 军事单位
前面我们说对你说是一个类似倒状树形结构的形态来进行主机名的管理的,并且每一层级的服务器只负责对应其下级的域名解析工作,也就是自上而下的一个过程 ,例如我们查找www.taobao.com主机对应的IP地址
在www.taobao.com的解析过程当中我们发现有这么两个阶段:
解析答案:
肯定答案:知道为肯定答案
权威答案:知道确切的位置,例如baidu.com给出的www.baidu.com的IP
非权威答案:不知道确切的位置,但是知道另一个服务器可能知道,例如.不知道www.baidu.com的IP,但是知道.com的IP,所以给出.com的位置让客户端去找.com询问
否定答案:找不到该域名,没有这个位置
本地的hosts文件就是一个存储着主机名与IP相对应的关系的文件,通常存储在/etc/hosts中,但是大家也知道全世界那么多台计算机,如果把所有的对应的主机名与IP对应都存储下来那是一个很庞大的数据,任何一台计算机也承受不了,所以这仅适用于主机不多小型的内部网络,优点是寻址快,而且在解析时第一步就是先查看本地的hosts文件是否有主机名与IP的对应关系,没有才会去DNS服务器哪里去询问,那么这个要怎么运用呢?
首先我们来查看一下hosts文件
看了这个文件我们发现这个文件的格式是前面是IP,后面跟的是主机名,中间以空格隔开,而且一个IP可以有多个主机名,都可以解析到这一个IP地址下面我们来试验一下,需要两台虚拟机,
第一步:先查看计算机1的IP地址
第二步:查看计算机2主机的hosts文件,然后使用ping命令ping我准备给计算机1命名的主机名,显示找不到这个主机名的计算机
第三步:编辑计算机2的hosts文件添加一条计算机1的IP所对应的主机名
第四步:验证,结果在使用ping命令验证连通性的时候,后台自动把主机名解析成对应的IP了
首先DNS是一个网络服务,因此就有对应的端口,其端口是53号,通常DNS在查询的时候是以UDP这个快递的数据传输协议来查询的,但是一旦没有办法查询到完整的信息时就会再以TCP协议来进行重新查询,因此DNS服务在启动的时候回同时开启TCP和UDP的53号端口
DNS查询类型:
递归查询
迭代查询
名称服务器:域内负责解析本域内的名称的主机
根服务器:13组服务器
解析类型:
FQDN-------->IP :把域名解析为IP(正向解析)
IP-------->FQDN :把IP解析成域名(反向解析)
上面在DNS的解析过程中,我们提到过域名的解析记录信息,这个解析信息在DNS当中称之为DNS数据库,这个数据库又分为正解和反解,正解就是从主机名到IP,反解就是IP反向解析到主机名的过程,无论是正解还是反解,每个域名所对应的解析记录我们称之为zone(域),如baidu.com这个zone,正解和反解在zone记录中是由众多的RR(Resource Record,资源记录)组成,这些记录的类型有A、AAAA、PTR、SOA、NS、CNAME、NX;其中:
SOA:起始授权记录;一个区域解析库有且仅能有一个SOA记录,必须位于解析库的第一条记录
NS:专用于表明当前区域的DNS服务器,后面记录的数据是DNS服务器的意思
A:正向解析的记录,作用是从主机名解析到IP,对应的是IPv4地址
AAAA:正向解析的记录,也是从主机名解析到IP,其后面对应的是IPv6地址
PTR:反向解析记录,从IP解析到主机名,后面记录的数据就是反解到的主机名
CNAME:别名记录,一个主机可以有多个别名,但IP地址是一样的;
MX:邮件服务器地址
Name:当前区域的名字
Value:当前区域某DNS服务器的名字,例如:ns.baidu.com.
注意:一个区域的可以有多个NS记录
例如:
baidu.com. IN NS ns1.baidu.com.
baidu.com. IN NS ns2.baidu.com.
注意:当相邻的两个资源记录的name相同时,后续的name可以省略
对NS记录而言,任何一个NS记录后面的服务器名字,都应该在后续有一个A记录
Name:当前区域的名字
Value:当前区域的某邮件服务器(SMTP服务器)的主机名
注意:一个区域的MX记录可有多个;但每个记录的value之前应该有一个数字(0-99),表示此服务器的优先级;数字越小,优先级越高
例如:
baidu.com. IN MX 10 mx1.baidu.com.
IN MX 20 mx2.baidu.com.
注意:对MX记录而言,任何一个MX记录后面的服务器名字,都应该在后续有一个A记录
Name:某主机的FQDN,例如:www.baidu.com.
Value:主机名对应的IP地址
例如:
www.baidu.com. IN A 1.1.1.1
www.baidu.com. IN A 1.1.1.2
Mx1.baidu.com. IN A 1.1.1.3
Mx2.baidu.com. IN A 1.1.1.4
注意:
*.baidu.com. IN A 1.1.1.4
baidu.com. IN A 1.1.1.4
这是为了避免用户写错名称时给错误答案,可通过泛域名解析进行解析某特定地址
Name:FQDN
Value:IPv6地址
格式可以参照A记录,只是A记录后面是IPv4地址,AAAA记录是IPv6地址
Name :IP,有特定的格式,把IP倒过来写,1.2.3.4,要写作4.3.2.1;还有特定的后缀:in-addr.arpa.,所以完整写法为:4.3.2.1.in-addr.arpa.
Value:FQDN
例如:
4.3.2.1.in-addr.arpa. IN PTR www.baidu.com.
简写成:
4 IN PTR www.baidu.com.
注意:网络地址及后缀可省略;主机地址依然要反着写。
Name:别名的FQDN,就好像一个人可以有好几个外号,别名即外号
Value:真正的域名FQDN,别名是外号,这里就是×××上的名字,
例如:web.baidu.com. IN CNAME www.baidu.com.
DNS服务软件包名字为bind,还有其他相关的软件包,有bind-libs(与bind相关的库文件)、bind-utils(客户端相关命令文件)、bind-chroot(bind主目录禁锢程序,就是为了防止用户在登录DNS服务器的时候进入其他的文件中,更改我们不想被更改的一些内容,将bind程序禁锢在家目录当中,centos 6之后的系统已经默认禁锢在/var/named目录下了);如果你的操作系统是centos 5 及之前,那么还有一个软件包叫做caching-nameserver,这个软件包的主要作用是未bind提供简单的配置文件末班,centos 5之后的系统这个软件的功能都被包含在了bind主程序软件包当中。因此我们可以直接使用yum来安装bind软件,其中会自动安装其他几个软件包,这一步就不做演示了
而且这个DNS服务的包名是bind,但是服务名却是named,而且在安装后,会自动创建一个named的用户,在运行次服务的时候并不是哪个用户运行的命令就是哪个用户的进程,而是使用named的身份运行
DNS的配置文件有很多,其中:
/etc/named.conf , /etc/named.rfc1912.zone:为DNS的主配置文件;
/var/named/:centos 6版本,该目录为DNS数据库文件存放目录,每一个域文件都存放在这里;
/etc/rc.d/init.d/named:为DNS服务的服务脚本
/var/named/named.ca:存储着全13台根服务器的地址
需要注意的是一台服务器可同时为多个区域提供解析,并且该DNS服务器上必须要有跟区域文件/var/named/named.ca,同时还应该有两个实现localhost和本地回环地址的解析库(如果包含IPv6,应该更多);另外还有一个叫做rndc(remote name domain controller)的服务来提供辅助性的管理功能(该服务监听在TCP的953端口,默认与bind安装在同一主机上,且只能通过127.0.0.1来连接DNS服务的named进程)
Listen-on port 53 {127.0.0.1;}; :监听的端口,即那些主机可以进行访问解析,127.0.0.1表示仅监视本机的这一个IP的53号端口,any表示所有,localhost表示本机的所有IP
Listen-on-v6 port 53 { : : 1; }; :IPv6地址
Directory “/var/named” :DNS数据库的路径保存在这个目录下
Allow-query {localhost;};: 允许那些主机请求查询
Recursion yes:将自己视为客户端的一种查询方式,就是当客户端查询某一域名的IP时,我们本地没有这个域名记录对应的IP,就将自己视为客户端向根服务器询问,然后走迭代查询,最后将结果反馈给客户端
Forward only:只转发请求,不做解析,此时DNS服务器是一个缓冲服务器
Forwardders {114.114.114.114;}; :针对forward only设置的转交给哪个上层服务器进行解析,这里可以列出多个,每行一个以分号结尾
include "/etc/named.rfc1912.zones"; 和include "/etc/named.root.key"; :include后面的文件就是/etc/named.conf文件的补充,文件里面都是其他域的记录,格式如下图:
其中zone(zone就是每个域名所对应的记录)的格式:
Zone ”zone_name” IN{
Type {master|slave|hint|forward};
File “zone_name.zone”
};
Zone_name: 要解析的域名,正解时就是域名本身,如:baidu.com;反解时有固定的格式:IP网段反向.in-addr.arpa
ip网段反向是指:如域名所对应的主机IP的网段为192.168.99.0/24网络,那么久需要将该网络的网络ID部分倒着写,网络ID部分为192.168.99,倒过来写就应该是99.168.192
Type: 该zone的类型,主要的类型有:针对根的hint;主DNS的master;从DNSslave;专门转发类型forward,除了根外默认为master
File:该zone的文件名称,后缀也可以不是.zone,这个文件保存在/var/named目录下
/var/named目录下的文件都是每个域的解析文件,每个文件中都是IP与域名的相对应的关系,且文件中的第一条记录必须是SOA记录,文件名都与/var/named或这个文件中定义的补充文件中的zone文件名一一对应,如下图:
标签:DNS域名解析服务
原文地址:http://blog.51cto.com/13570214/2106557