DNS:Domain Name Service
基于C/S架构的应用层协议
port:53/udp(用于名称解析),53/tcp(用于区域传送)
DNS域的类别:
- . :根域(用.号表示)
-
tld:顶级域(Top Level Domain)
组织域:.com,.net,.org,.gov,.edu,.mil,...
国家或地区域:.cn,.us,.uk,.es,.de,.jk,.hk,.tw,... - 二级域:
- 三级域:
注意:域的级别在FQDN中从右往左看,越靠右侧,级别越高;
DNS查询类型:
- 递归查询(recursion):如果主机所询问的本地域名服务器不知道被查询的域名的IP地址,那么本地域名服务器就以DNS客户端的身份,向其它根域名服务器继续发出查询请求报文(即替主机继续查询),而不是让主机自己进行下一步查询。
- 迭代查询(iteration):当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地服务器进行后续的查询。根域名服务器通常是把自己知道的顶级域名服务器的IP地址告诉本地域名服务器,让本地域名服务器再向顶级域名服务器查询。顶级域名服务器在收到本地域名服务器的查询请求后,要么给出所要查询的IP地址,要么告诉本地服务器下一步应当向哪一个权限域名服务器进行查询。
DNS名称解析方式:
名称 --> IP:正向解析;
IP --> 名称:反向解析;
注意:二者的名称空间,非为同一个空间,即非为同一个树状结构;因此,也不是同一个解析库;
DNS服务器类型:
-
负责解析至少一个域:
主名称服务器;
辅助名称服务器; -
不负责解析:
缓存名称服务器;
一次完整的查询请求经过的流程:
Client --> hosts文件 --> DNS Local Cache --> DNS Server(recursion) -->
自己负责解析的域:直接查询数据库并返回答案;
不是自己负责解析域:Server Cache --> iteration(迭代)
解析答案:
肯定答案:
否定答案:不存在查询的键,因此,不存在与其查询键对应的值;
权威答案:由直接负责的DNS服务器返回的答案;
非权威答案:由缓存服务器返回的答案;
主-辅DNS服务器:
- 主DNS服务器:维护所负责解析的域的数据库的那台服务器;读写操作均可进行;
- 从DNS服务器:从主DNS服务器哪里或其它的从DNS服务器那里“复制”一份解析库;但只能进行读操作;
“复制”操作的实施方式:
序列号:也即是数据库的版本号;主服务器数据库内容发生变化时,其版本号递增;
刷新时间间隔:refresh,从服务器每多久到主服务器检查序列号更新状况;
重试时间间隔:retry,从服务从主服务器请求同步解析库失败时,再次发起尝试请求的时间间隔;
过期时长:expire,从服务器始终联系不到主服务器时,多久之后放弃从主服务器同步数据;停止提供服务;
否定答案的缓存时长:
区域(zone)和域(domain):
域由正向和反向两个区域组成;
例:google.com域(domain)
FQDN --> IP
正向解析库,叫做正向解析区域(zone);
IP --> FQDN
反向解析库,叫做反向解析区域(zone);
主服务器“通知”从服务器随时更新数据;
区域(zone)传送:
全量传送:axfr,传送整个数据库;
增量传送:ixfr,仅传送变化的数据;
区域数据库文件:
- 资源记录:Resource Record,简称rr;
-
记录类型:
SOA:Start Of Authority,起始授权记录;一个区域解析库只能有一个SOA记录,而且必须放在第一条;
NS:Name Service,域名服务记录;一个区域解析库可以有多个NS记录;其中一个为主的;
A:Address,地址记录,FQDN --> IPv4;
AAAA:地址记录,FQDN --> IPv6;
CNAME:Canonical Name,别名记录;
PTR:Pointer,IP --> FQDN;
MX:Mail eXchanger,邮件交换器;
优先级:0-99,数字越小优先级越高;
资源记录的定义格式:
-
语法:
name [TTL] IN RR_TYPE value
-
SOA:
name:当前区域的名字;例如"magedu.com",或者"2.3.4.in_addr.arpa.";
value:有多部分组成
1. 当前区域的区域名称(也可以使用主DNS服务器名称);
2. 当前区域管理员的邮箱地址;但地址中不能使用@符号,一般使用点号来替代;
3. (主从服务协调属性的定义以及否定答案的TTL)-
例如:
[root@node1 ~]# cat /var/named/named.localhost magedu.com. 86400 IN SOA magedu.com. admin.magedu.com. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum
-
例如:
-
NS:
name:当前区域的区域名称
value:当前区域的某DNS服务器的名字,例如ns.magedu.com.;
注意:一个区域可以有多个ns记录;-
例如:
magedu.com. 86400 IN NS ns1.magedu.com. magedu.com. 86400 IN NS ns2.magedu.com.
-
例如:
-
MX:
name:当前区域的区域名称
value:当前区域某邮件交换器的主机名;
注意:MX记录可以有多个,但每个记录的value之前应该有一个数字表示其优先级;-
例如:
magedu.com. IN MX 10 mx1.magedu.com. magedu.com. IN MX 20 mx2.magedu.com.
-
例如:
-
A:
name:某FQDN,例如www.magedu.com
value:某IPv4地址;-
例如:
www.magedu.com. IN A 1.1.1.1 www.magedu.com. IN A 1.1.1.2 bbs.magedu.com. IN A 1.1.1.1
-
例如:
-
AAAA:
name:FQDN
value:某IPv6地址; -
PTR:
name:IP地址,有特定格式,IP反过来写,而且加特定后缀;例如1.2.3.4的记录应该写为4.3.2.1.in-addr.arpa.
value:FQDN-
例如:
4.3.2.1.in-addr.arpa. IN PTR www.magedu.com.
-
例如:
-
CNAME:
name:FQDN格式的别名;
value:FQDN格式的正式名字;-
例如:
web.magedu.com. IN CNAME www.magedu.com.
-
例如:
注意:
1. TTL可从全局继承;
2. @表示当前区域的名称;
3. 相邻的两条记录其name相同时,后面的可省略;
4. 对于正向区域来说,各MX,NS等类型的记录的value为一个FQDN,此FQDN应该有一个A记录;