互联网访问绝大多数都是基于域名的访问,互联网访问的基础是基于IP来实现的,因此,需要有一种将域名解析成IP的机制,让用户在利用域名访问时,自动将域名转换成为对应的IP,这就是DNS的功能。
DNS的基础概念
DNS:Domain Name Service,基于C/S模式的域名解析服务,应用层协议;监听在53/udp,53/tcp端口;TCP用来区域传送; UDP用来解析。
区域(zone)和域(domain)
区域是物理概念,域是逻辑概念。
比如:sfn.cn.这个域
FQDN–>IP:
正向解析库和正向解析的功能,就是一个正向解析区域。
IP–>FQDN:
反向解析库和反向解析的功能,就是一个反向解析区域。
一般而言,一个域分为正向解析区域和反向解析区域,但是单纯的域却不一定比区域大,因为父域的区域,可能就比子域的域要大。
区域数据库文件
主要由资源记录(RR,resource record)组成。
常见资源记录类型:SOA、NS、MX、A、AAAA、PTR、CNAME。
SOA:start of authority,起始授权记录,一个区域解析库有且只能有一个SOA记录,且必须放在所有资源记录的第一条。
NS:name service,域名服务记录,一个区域解析库可以有多个NS记录,一个NS记录表示一台DNS服务器,其中一个为主的,其余的为辅的。
MX:mail exchanger,邮件交换器,用于标明域内邮件服务器的地址的记录,MX记录可以有多个,其MX记录有优先级的概念,优先级 0-99,数字越小,优先级越高。
A:address,地址记录,也就是从FQDN–>IPv4
AAAA:address,地址记录,从FQDN–>IPv6
PTR:pointer,主要用于实现IP–>FQDN
CNAME:别名记录。
资源记录的定义格式
语法:NAME [TTL] IN RR_TYPE VALUE
SOA记录:
NAME:当前区域的名字,例如:sfn.cn. 或者如果是反向区域,则 1.168.192.in-addr.arpa.
VALUE:有多部分组成
<1>当前区域的区域名称(也可以使用主DNS服务器名称);
<2>当前区域的管理员的邮箱地址,但地址中不能使用@符号,一般用点号.来替代;
<3>主从服务的协调属性的定义以及否定答案的缓存时长,整个内容要用()括号括起来,每行内容之后可以用;分号表示后面的都是注释信息。
完整的SOA记录定义示例:
sfn.cn. 86400 IN SOA sfn.cn. admin.sfn.cn (
2016091801 //代表序列号,不能超过10位
2H //代表从服务器向主服务器同步数据的刷新时间间隔,此处表示2小时
10M //表示联系不上主服务器时,从服务器再次联系主服务器时的间隔时间,10分钟
1W //表示过期时间,也就是服务器始终联系不上主服务器时的最长等待时间,也就是此时间一过,就判定主服务器故障,然后从服务器也停止服务,1周
1D //表示否定答案的缓存时长,1天
)
NS记录:
可有多个NS记录,一个NS记录对应一个DNS服务器,每个NS记录应该有一个对应的A记录。
NAME:当前区域的区域名称
VALUE:当前区域的某DNS服务器的名字,例如ns1.sfn.cn
例如:
sfn.cn. 86400 IN NS ns1.sfn.cn.
sfn.cn. 86400 IN NS ns2.sfn.cn.
MX记录:
MX记录可以有多个,一个MX记录对应一个邮件服务器,每个记录的VALUE之前应该有一个数字,用于表示其优先级,数字越小,优先级越高。每个MX记录应该有一个对应的A记录。
NAME:当前区域的区域名称
VALUE:当前区域某邮件服务器的主机名
例如:
sfn.cn. IN MX 5 mail1.sfn.cn.
sfn.cn. IN MX 20 mail2.sfn.cn.
A记录:
FQDN–>IPv4
NAME:某FQDN,如:web.sfn.cn.
VALUE:某IPv4地址
例如:
web.sfn.cn. IN A 1.1.1.1
web.sfn.cn. IN A 1.1.1.2
bbs.sfn.cn. IN A 1.1.1.2
一个主机名额可以有多个IP,一个IP也可以有多个主机名
*.sfn.cn. IN A 10.1.32.1
表示将前面没有单独定义的都解析到10.1.32.1
sfn.cn. IN A 10.1.32.1
表示当用户访问域名前不带任何字符时,也即是直接访问sfn.cn.时解析到的地址是10.1.32.1
$GENERATE 1-254 server$ IN A 1.1.1.$
表示将server1.sfn.cn. 解析的地址为1.1.1.1
server2.sfn.cn. 解析的地址为1.1.1.2
server3.sfn.cn. 解析为1.1.1.3
….
server254.sfn.cn. 解析为1.1.1.254
同理:
$GENERATE 5-20 test$ IN A 1.1.1.2$
表示将test5.sfn.cn. 解析的地址为1.1.1.25
test6.sfn.cn. 解析的地址为1.1.1.26
test7.sfn.cn. 解析为1.1.1.27
….
test20.sfn.cn. 解析为1.1.1.220
AAAA记录:
FQDN–>IPv6地址,定义方式与A记录类似
PTR记录:
反向解析记录
NAME:IP地址,有特定格式,IP反过来写,而且要加特定后缀,如:192.168.1.2的记录应该写成2.1.168.192.in-addr.arpa。
VALUE:为FQDN
例如:
2.1.168.192.in-addr.arpa. IN PTR bbs.sfn.cn.
CNAME记录:
别名记录
FQDN格式的别名;
VALUE:FQDN格式的正式名称
例如:
web.sfn.cn. IN CNAME www.sfn.cn.
表示web.sfn.cn.是www.sfn.cn.的别名
注意:
<1>TTL值可以从全局继承,不用每个记录都单独定义
<2>@可以用来表示当前的区域的名字
<3>相邻的两条记录,其NAME相同时,后面那条记录的NAME可以省略
<4>任何MX、NS等类型的记录的value为一个FQDN,此FQDN应该有一个A记录