前面我们自己配置了一个zone区域数据文件,但是里面的记录不是太清楚,这章我们来研究下这些记录的所用和区域数据文件的格式
1)DNS常用记录类型
区域解析库文件:每个域名都有一个自己的区域解析库文件(zone文件),由一条条资源记录来定义具体指向
SOA记录:起始授权记录,一个区域解析库只能有一个SOA记录,而且必须为第一条。打个比方,建了个海岛,需要对外宣布世界上多了一个海岛,这个事情就是SOA在做
NS记录:域名服务记录,一个区域解析库可以有多个NS记录,其中一个为主服务器。结合上面的例子,NS记录可以理解为用来宣布岛主是谁
A记录:地址记录,从域名解析为IP的记录
AAAA:IPv6的地址记录
PRT:反向解析记录,从IP解析为域名
MX:邮件交换记录。我们平时发邮件都是直接发到qq.com、163.com等域名上,但是这些域名肯定是有多台服务器的,MX记录就是指明了哪个服务器会负责邮件。MX服务可以存在多个,由优先级来区分先后,0-99,数字越小优先级越高
CNAME记录:给一个地址设置一个别名
在DNS服务器中每个域都要通过zone文件保存信息,文件语法格式是标准化的,一个典型配置如下:
$TTL 1D
@ IN SOA @ repo.com(
2 ;
604800 ;
86400 ;
2419200 ;
604800 ) ;
IN NS ns
ns IN A 192.168.56.6
www IN A 192.168.56.6
1,首先在区域解析库zone文件的开头定义SOA记录,定义格式:
@ IN SOA @ repo.com(
2 ; #serial序列号,标识是第几个版本
604800 ; #refresh刷新时间
86400 ; #retry重试时间
2419200 ; #expire过期时间
604800 ) ;#否定回答时间
2,定义当前区域的NS记录,定义格式示例:
IN NS ns #NS记录
ns IN A 192.168.56.6 #NS记录所引用的A记录
3,MX记录定义格式示例(多了一个优先级):
@ IN MX 10 mx1.repo.com
@ IN MX 20 mx1.repo.com
4,A记录记录定义格式示例:
www IN A 192.168.56.6 #FQDN自动补齐:在区域数据文件中,没有使用点号"."结尾的,在实际使用的时候都会自动补上域名,使其变为 FQDN。例如:上面文件中的 www,会自动补全为 www.repo.com.
5,PTR记录(IP反过来写,加特定后缀):
6.56.168.192.in-addr.arpa IN PTR www.repo.com.
6,CNAME记录定义格式示例:
web.repo.com IN CNAME www.repo.com
2)两种不同写法的zone区域数据文件:
FQDN的写法:
$TTL 600
@ IN SOA master.abc.com. woodie.abc.com. ( 2017022802 3H 15M 1W 1D )
@ IN NS master.abc.com.
master.abc.com. IN A 192.168.80.110
@ IN MX 10 www.abc.com.
www.abc.com. IN A 192.168.80.121
bbs.abc.com. IN CNAME www.abc.com.
ftp.abc.com. IN CNAME www.abc.com.
linux.abc.com. IN CNAME www.abc.com.
slave.abc.com. IN A 192.168.80.120
122.abc.com. IN A 192.168.80.122
简写:
$TTL 600
@ IN SOA master.abc.com. woodie.abc.com.( 2017022802 3H 15M 1W 1D )
@ IN NS master
master IN A 192.168.80.110
@ IN MX 10 www
www IN A 192.168.80.121
bbs IN CNAME www
ftp IN CNAME www
linux IN CNAME www
slave IN A 192.168.80.120
122 IN A 192.168.80.122
简写不太容易看明白,而FQDN的写法,又太啰嗦,而且要注意.(点号),所以我个人偏好喜欢这样的写法。
$TTL 600
@ IN SOA master.abc.com. woodie.abc.com.( 2017022802 3H 15M 1W 1D )
@ IN NS master.abc.com.
master IN A 192.168.80.110
@ IN MX 10 www.abc.com.
www IN A 192.168.80.121
bbs IN CNAME www.abc.com.
ftp IN CNAME www.abc.com.
linux IN CNAME www.abc.com.
slave IN A 192.168.80.120
122 IN A 192.168.80.122
其中soa记录的字段解释:
master.abc.com. woodie.abc.com. :这里是SOA的固定格式,这里有两部分内容,中间用空格隔开,前半部分:Zone的主 DNS 服务器的主机名,后半部分:管理Zone的负责人的电子邮件地址。在该电子邮件名称中使用英文句点 (.) 代替“at”符号 (@)。
$TTL 指令:该zone的缓存时间
serial:数值Serial代表这个Zone的序列号,序号越大表明资料越新,主要用在 master / slave 同步使用,每次Zone文件更新,都需要修改Serial数值。RFC1912 2.2建议的格式为YYYYMMDDnn 其中nn为修订号,,但序号的最大值不能大于2的32次方,即4294967296
refresh:数值Refresh设置Slave DNS多长时间与Master Server进行Serial核对。目前Bind的notify参数可设置每次Master DNS更新都会主动通知Slave DNS更新,Refresh参数主要用于notify参数关闭时;
retry:数值Retry设置当Slave DNS试图获取Master DNS Serial时,如果Master DNS未响应,多长时间重新进行检查;
expire:如果master/slave在1周内都链接失败,slave将不再尝试链接master,但注意,此时slave还会继续提供解析服务,只是数据不在更新。
Minimum:在 8.2版本之前,由于没有独立的 $TTL 指令,所以通过 SOA 最后一个字段来实现。但由于 BIND 8.2 后出现了 $TTL 指令,该部分功能就不再由 SOA 的最后一个字段来负责,由 $TTL 全权负责,SOA 的最后一个字段专门负责 negative answer ttl(negative caching)
名字解释:
经常提到RR是什么意思呢?RR是Resource Record的缩写,包括A, NS, SOA, CNAME, MX.
注:
1,TTL可以从全局继承,不用每个记录都定义具体的TTL
2,@符号可以表示当前区域的名称,所以真需要写@的时候由.来代替。如最后一行“www IN A 192.168.56.6” 代表www.repo.com是解析到192.168.56.6这个地址的
3, 相邻的两个记录,如果NAME相同那么后面一条的NAME可以省略,如:
www IN A 192.168.56.6
IN A 192.168.56.7 #没写name
bbs IN A 192.168.56.100
4, 对于正向区域来说,如果MX、NS等类型的记录VALUE为一个FQDN,那么此FQDN应该有一个A记录,例如上面的NS记录: