Linux服务之DNS服务--DNS的基本概念
1.DNS(Domain Name System)域名系统。在网络上为了方便用户访问互联网,而不用去记住能够被直接访问的IP,就有了作为域名与IP相互映射的一个分布式数据库。DNS协议运行在UDP和TCP之上,使用53号端口。(其中在DNS解析查询时用到UDP协议,而在主从传递区域数据库文件时,用到TCP协议。)
2.DNS功能:
DNS服务器实现的是IP到域名的解析和域名到IP的解析。
主机名与IP有两种映射关系:
1.静态映射:在每台设备上都有主机到IP的映射关系,只供此设备使用,如hosts文件中。
2.动态映射:指通过DNS服务器配置主机到ip的映射关系。通过DNS服务器查询主机对应的IP地址
3.域名的组织结构和层次:
域名的结构采用树型层次性结构形成域名空间。
域名的管理机制:
域名的管理采用逐级委托机制。顶级域将管辖子域内DNS服务器的域名解析,运行和维护,授权给子域注册单位自主管理。
3.DNS的查询方式:
DNS的查询方式有两种:
1.递归查询:从客户端到本地DNS服务器的查询是属于递归查询。
(1)递归查询
递归查询是一种DNS 服务器的查询模式,在该模式下DNS 服务器接收到客户机请求,必须使用一个准确的查询结果回复客户机。如果DNS 服务器本地没有存储查询DNS 信息,那么该服务器会询问其他服务器,并将返回的查询结果提交给客户机。、、
2.迭代查询:DNS服务器之间的交互查询就是迭代查询。
(2)迭代查询
DNS 服务器另外一种查询方式为迭代查询,DNS 服务器会向客户机提供其他能够解析查询请求的DNS 服务器地址,当客户机发送查询请求时,DNS 服务器并不直接回复查询结果,而是告诉客户机另一台DNS 服务器地址,客户机再向这台DNS 服务器提交请求,依次循环直到返回查询的结果
4.DNS服务器的类型:
主域名服务器:本区域内权威域名解析信息源所在地。全面负责本地域名的解析和外层域名解析请求的传递。一个域只能有一个主域名服务器,需要系统管理员构建和配置。
从域名服务器:也称辅助域名服务器。其维护的域名与IP地址的映射记录来源于主域名服务器。
缓存域名服务器:也称高速缓存服务器。通过向其他域名查询获得域名与IP地址的对应记录,将域名查询结果缓存到本地,提高重复查询的速度。
5.DNS域名解析的顺序:
(定义在/etc/host.conf)-->查询/etc/hosts文件规定的顺序策略-->查询/etc/resolve.conf文件规定的命名策略--->DNS 服务器。
现今用量最多,稳定性较好的DNS服务器软件为BIND。在Linux上提供域名解析的平台或框架,nsswitch和两个库文件(libness_files.so、libness_dns.so)。nsswitch为完成域名解析提供了一个平台,它本身不能进行域名解析。nsswitch提供了为应用程序向不同的解析库进行名称解析的手段和顺序。真正提供域名解析机制的是:libness_files.so和libness_dns.so库文件。当用户在提交查询请求时,nsswitch 会根据自身的配置文件(/etc/nsswitch.conf)来提供域名解析的手段和顺序,然后通过nsswitch这个框架去这两个库文件进行查找的。
在nsswitch配置文件中/etc/nsswitch.conf有这么一行:hosts: files dns。
这行files就是通过libness_files.so去查找/etc/hosts文件内的IP域主机的对应关系来完成解析。如果解析失败就是通过DNS服务来解析。当我们真正访问一个主机名的时候,主机名是不能和我们建立关系的,但它会调用一个文件库来完成主机名和IP的转换,这个机制称为stub resolver。stub resolver第一步先查找nsswitch的配置文件中指定的files文件查找有没有对应的IP的地址,如果有就调用一个文件库来完成主机名和IP的转换,查找成功,没有,就通过DNS服务器来解析。
6.DNS服务器的配置文件DNS数据库记录结构:
DNS服务的配置文件:
/etc/named.conf:DNS服务的基本配置文件,定义了ZONE区域和一些基本配置。
/var/named/named.ca:指向上级DNS(指根DNS) 该文件不需要管理员更改,而是系统自带。
/var/named/named.local:本地子域解析。将localhost反向解析为127.0.0.1
在/var/named/目录下还有正向解析文件和反向解析文件。
DNS数据库记录结构:
资源记录(RR):RR将DNS域名映射到特定类型的资源信息中,以供在名称空间中注册或解析名称使用。在Linux系统中通常“名称解析库”的每一行成为一个资源记录。
DNS数据库资源记录类型结构:
格式: [name] [ttl] IN type value
各个字段说明:
name:域对象的名称。它可以使单独的主机名或FQDN
ttl:以秒为单位的生存周期,用于确定该资源记录中的信息在缓存中保存的时间长度。
IN:表明记录为Internet DNS资源记录。
type:记录的类型
value:资源信息数据
其中type记录类型有:
SOA:(Start Of Authority)起始授权记录。表示服务器管理的起始开始位置。SOA记录说明了在众多的NS记录里那台才是主服务器
name:当前区域的名字。如”zkchang.com.”
value:有多部分组成
(1)当前区域的主DNS服务器的FQDN,也可以使用当前区域的名字;
(2)当前区域管理员的邮箱地址;但地址中不能使用@符号,一般用.替换;
SOA记录中有几段时间序列:
Serial number:反应域名信息变化的序列号,每次域名信息发生变化后需要增大次序列号。以便从服务器获取新的数据
Refresh:刷新时间或核对时间,设置从服务器多长时间与主服务器进行核查,主服务器的数据是否发生变化。
Retry:这项是如果从服务器试图获取主服务器的serial时,但主服务器没有相应,多久再重试。
Exprie:当从服务器无法连接上主服务器时,从服务器可以在多长时间内认为其缓存是有效的,并供用户查询。
Minimum:缓存DNS服务器可以缓存记录多长时间。
如:
zkchang.com. 86400 IN SOA ns1.zkchang.com. admin.zkchang.com. ( 2015091404 6H 5M 2D 1D )
NS:(Name Server):NS记录也称名称服务器记录,授权域名服务器。用于说明此区域内有哪些DNS服务器来承担解析任务,SOA记录说明在众多的DNS服务器中哪一个才是主服务器。
name:当前区域的名字
value:当前区域的DNS服务器的名字如:ns1.zkchang.com.
注意:相邻的两个资源记录的name相同时,后续的可以省略;
在添加NS记录后,后续要有一个A记录与之对应。
如:
zkchang.com. IN NS ns1.zkchang.com. zkchang.com. IN NS ns2.zkchang.com.
A:(Adress)主机名转化为IP地址,任何一个主机只能有一个A记录。
name:某主机的FQDN,如:www,zkchang.com.。
value:主机名与之对应的IP地址。
如:
mail IN A 172.16.99.1 www.zkchang.com. IN A 172.16.99.1
注意:
*.zkchang.com.IN A 1.1.1.4
避免用户写错名称时给错误答案,可通过泛域名解析进行解析至某特定地址。
MX:(Mail eXchange):邮件交换记录。定义邮箱服务器,和邮件处理级别(数字越小级别越高)。
CNAME:(Canonic NAME)命名主机别名,主机规范名在A中定义。
PTR:IP地址转换成主机名
name: IP,有特定格式,把IP地址反过来写,1.2.3.4,要写作4.3.2.1:而有特定后缀:in-addr.arpa.,所以完整写法为:4.3.2.1.in-addra.arpa.
value.FQDN
完整的正向区域数据和反向区域数据解析:
正向:
$TTL 1D zkchang.com. IN SOA ns1.zkchang.com. admin.zkchang.com. ( 2015091405 6H 5M 2D 1D ) zkchang.com. IN NS ns1.zkchang.com. zkchang.com. IN NS ns2.zkchang.com. zkchang.com. IN MX 3 mail.zkchang.com. ns1 IN A 172.16.99.1 ns2 IN A 172.16.99.2 mail IN A 172.16.99.1 www IN A 172.16.99.1 www1 IN A 172.16.99.1
反向:
$TTL 1D @ IN SOA ns1.zkchang.com. admin.zkchang.com. ( 2015091405 6H 5M 2D 1D ) 99.16.172.in-addr.arpa. IN NS ns1.zkchang.com. IN NS ns2.zkchang.com. 1 IN PTR ns1.zkchang.com. 2 IN PTR ns2.zkchang.com. 1 IN PTR mail.zkchang.com. 1 IN PTR www.zkchang.com. 1 IN PTR www1.zkchang.com.