前言:随着网站增多,DNS也变成必不可少的一种服务。当然,平时上网页的时候并不会发现DNS的运行,但若出了问题,无法上网页就会成为很烦躁的问题。这次就来介绍一下最基本的bind服务,通过了解bind服务相关文件信息,也能更容易理解域名解析的过程吧。
一、DNS服务器分类
虽然都是DNS服务器,但有各种的功能实现,导致DNS也分为多种功能服务器。如下分类:
主DNS服务器:负责域名解析,本身有一套解析库处理本地客户端的DNS解析请求。并且该服务器属于该域中的①权威服务器。
从DNS服务器:负责域名解析,也存在一套解析库,但解析库中的内容无法自己设定,只能向主DNS服务器申请②同步解析库数据。
缓存DNS服务器:本身不负责域名解析,而是从其他域名服务器迭代查询到解析结果,然后发送给请求用户。并将解析结果缓存到本地,以便其他用户请求时,无需再次迭代。
转发DNS服务器:本身不负责域名解析,而是从其他域名服务器迭代查询到解析结果,然后发送给请求用户。只做转发功能,本身不会将结果缓存到本地。
①权威服务器:对用户解析请求做权威应答的服务器
权威应答:查询的域名在本地解析库中,直接从本地解析库取得的结果做出的应答。
非权威应答:查询的域名不在本解析库中,通过向其他迭代查询或从本地缓存数据取得的解析 结果做出的应答。
①同步解析库:从服务器每隔一个周期时间,向主服务器请求解析库同步,通常是查看序列号,辨别是否已更改。
完全区域同步:AXFR,第一次同步,将全部的解析库信息同步至从服务器。
增量区域同步:IXFR,以后的同步,仅将修改过的信息进行同步。
同步模式:主服务器对从服务器的同步机制
1)等待从服务器周期性的发出同步请求,并作出回应,从而进行同步。
2)当从服务器一个周期结束后,等待下一时间周期时,主服务器发生变更,则立刻发送一 个通知给从服务器,让从服务器立即进行同步。
从服务器的意义:若主服务器故障,从服务器发出同步请求,但得不到主服务器发回的响应,则会等待一段时间,重新发送同步请求,这段时间会比周期时间要短。直到达到超时时间,从服务器也会停止工作。从而达到冗余的效果,在管理员发现主服务器坏掉之前能尽量保证有一段维护时间。
二、安装主要文件介绍
通过命令:rpm -ql bind| less 查询bind安装文件路径
主配置文件:/etc/named.conf,/etc/named.rfc1912.zones两个文件共同组合成了主配置文件。
区域解析库文件:/var/named/zone_name.zone
服务脚本:/etc/rc.d/init.d/named
四、先从/etc/named.conf开始介绍
这整段是Bind服务的主要配置信息,定义主从、子域、解析库路径,还有访问控制等功能,非常重要。
①options {
全局配置段:options只能出现一次,既可定义全局的公共配置,又可定义bind的工作特性。
};
其中――》
・//listen-on port 53 { 127.0.0.1; }; 监听在某个地址上,此处为本地回环地址,若要启用,需指定一个能上网的IP,//等同于#的注释功能,此处是注释掉了,表示所有IP都能访问。
・//listen-on-v6 port 53 { ::1;}; IPv6的字段,不用的话可注释掉。
・directory "/var/named" 标明工作目录,zone中的文件都是在该目录下工作的。
・dump-file "/var/named/data/cache_dump.db"; 然并软的条目,无需了解
・statistics-file "/var/named/data/named_stats.txt"; 然并软的条目,无需了解 ・memstatiscs-file "/var/named/data/named_mem_stats.txt"; 然并软的条目,无需了解 ・//allow-query { localhost; }; 允许谁来查询,此处是一个访问控制法则,若不用,可注释掉
・recursion yes; 是否允许递归查询,作用于用户请求DNS服务器的,这段一定要有,不然用户无法正常查询。
・//dnssec-enable yes;这条及以下的条目都是做完整性验证的安全机制,但配置麻烦,若不用,都可注释掉。
② logging {
日志配置段:定义日志文件所在路径,该段无需修改,就不介绍了。只需要知道/var/named/data/named.run是日志路径即可。以后是查错的一个重要手段。
};
③zone "ZONE_NAME" IN {
区域配置段:可出现多次,ZONE_NAME是定义本机可解析的的区域
};
其中――》
・type master; 定义该主机区域的类型,如master(主服务器),slave(从服务器),hint(根提示域,所有非本机所负责的区域,用户请求时,发送给根),forward(转发域) ;
・file "zone_name.zone"; 定义对应解析库文件存放路径,此处为相对路径,相对的是options中定义的/var/named,也可设置为绝对路径
④include "/etc/named.rfc1912.zones"; named.rfc1912.zones同样是定义区域的。include:将该文件包含进来,/etc/named.rfc1912.zones中的内容等于是和named.conf中的接在一起的。
//include "/etc/named.root.key"; named.root.key是和dnnssec-enable相关的文件,因为用不到,也注释掉了。
注:在named.conf中,每个条目结尾都必须有;分号,不然会报错,新手特别容易踩坑,踩过几次就记住了。
五、解析库资源记录类型介绍
如上图,就是一个完整的资源记录类型,从上往下介绍
这整段是Bind服务非常重要的一环,所有的解析记录都在此文件中标记,用户解析请求都会从中查询。
资源记录类型:
格式:name(区域名称) [ttl](缓存时长,可省略) IN(固定字符) RPType(类型) value(值)
第一行、TTL:Time to Live缓存时长
$TTL为设置解析库中全局的缓存时长,后面数字单位为36000(秒)
第二行、$ORIGIN:起点
$ORIGIN为名称简写功能,可将FQDN简写,只填写主机名,后面会自动补全。
例:$ORIGIN pixiu.com.
ns.pixiu.com.就可简写为ns ,简写之后尾部不能加.点号
第三行、SOA:Start Of Authority起始授权记录
SOA:任何解析库文件中SOA只能有一个,并且第一个记录的类型必须是SOA,其作用是标明主服务器。
・name:区域名称,在解析库文件中定义了@为当前区域的区域名称,所以可使用@代替,@还可用于简写功能,若没有定义@ORIGIN,@会自动读取name.conf配置的zone名称,然后对下面的FQDN自动补全区域名称。
・ttl:若不想使用全局的缓存时长,可设置该条记录为另一个时长,不用的话可省略
・IN:资源记录的固定字符,不可变化
・RPType:资源类型,如SOA、NS、MX、A
・value:主DNS服务器的FQDN,也可以是当前的区域名称
SOA比其他资源记录还有其他参数:
・区域管理邮箱地址:如pixiu.163.com.,此处实际上是[email protected].,但由于@表示的是区域名称, 所有只能写成.号
・各种选项:
(
2015081903 :不超过10位数字的序列号。作用是若解析库文件有变更,修改此序列号,便可告 知从服务器,记录已修改,需要进行同步
2H :从服务器到主服务器请求同步的间隔时间周期,H时,M分,D天。
30M :从服务器接收不到主服务响应,重新发送请求的时间间隔
7D :从服务器一直接收不到主服务器同步,而停止工作的超时时长
1D) :否定答案的缓存时长。否定答案就是无法查询到的的域名解析。防止多次访问无 法访问的域名,占用解析速度
第四行、NS:name server名称服务器
NS:用来标明当前区域的名称服务器
・name:区域名称。若区域名称和上一条一样,可省略不写。
・value:DNS服务器的FQDN
第五行、MX:Mail eXchange邮件交换器
MX:用来标明当前区域的邮件服务器
・name:区域名称。若区域名称和上一条一样,可省略不写。
・value:DNS服务器的FQDN
注:MX记录还有优先级属性,低优先级MX会在高优先级MX处于繁忙或故障的情况下启用。
第六行、A:Address地址
A:用来标明FQDN与IP地址的对应关系,NS、MX服务器也必须要有A记录。
・name:FQDN
・value:IP
注:①一个FQDN可以对应多个IP,为了达到负载均衡,实现轮询。
②一个IP可以对应多个FQDN,为了实现一台主机响应来自多个端口的访问请求。
第七行、CNAME:Canonical NAME正式名称。
CNAME:相当于设置别名记录
・name:FQDN
・value:FQDN
例:X.pixiu.com. IN CNAME file.pixiu.com.
通过访问X.pixiu.com就会被解析为file.pixiu.com,即file.pixiu.com的别名为X.pixiu.com.
第八行、泛域名解析
・name:*,表示通配符,将主机名称匹配
・value:IP
例:上图中添加 * IN A 192.168.50.129 记录
用户请求的FQDN无法解析,但区域名称能够匹配到当前区域,则自动解析为指向的IP地址。如:请求423.pixiu.com,就会解析为192.168.50.129
未写入内容:
PTR:PoinTeR指针,即反向解析记录。
・name:逆向的主机IP地址(不包含网络地址)加后缀in-addr.arpa
・value:FQDN
例:129.in-addr.arpa IN PTR ns.pixiu.com.
总结:域名服务BIND的主要文件基本上就是这些,以上都是基本配置的功能,若要完整的使用BIND服务,最好这些内容进行理解。当然本人也是Linux新手,如有描述错误的,麻烦指正,避免带着错误的基础继续往下走。