DNS基础
DNS就是Domain Name System的简称,即域名系统。
DNS主要是将难于记忆的IP地址转换为域名,便于人们访问。
DNS服务器可以分为3种:主域名服务器、辅助域名服务器、缓存服务器。
主域名服务器:本身提供DNS服务,本身含有区域数据文件
辅助域名服务器:和Master一起提供DNS服务,当Master服务器上的配置信息修改的时候,会同步更新到Slave服务器上。
缓存服务器:没有区域文件,只是帮助客户端向外部DNS请求查询,然后将查询的结果保存到它的缓存中。
DNS是分布式的结构,如下图:
正向解析:主机名查找IP的过程
反向解析:由IP查询得到主机名的过程
DNS的查询方式:
两段式查询:递归、迭代
递归查询:
一般客户机和服务器之间属递归查询,即当客户机向DNS服务器发出请求后,若DNS服务器本身不能解析,则会 向另外的DNS服务器发出查询请求,得到结果后转交给客户机;
迭代查询(反复查询):
一般DNS服务器之间属迭代查询,如:若DNS2不能响应DNS1的请求,则它会将DNS3的IP给DNS2,以便其 再向DNS3发出请求
递归查询和迭代查询的区别:
递归查询是最常见的发送到本地域名服务器的请求。当本地域名服务器接受了客户机的查询请求时,本 地域名服务器将力图代表客户机来找到答案,而在域名服务器执行所有工作的时候,客户机只是等待。如果本地域名服务器不能直接回答,则它将在域名树中的各分 支上下递归搜索来寻找答案。
对于一个递归查询,DNS服务器将持续搜索直到收到回答。这种回答可以是主机的IP地址,也可以回答“主机不存在”。不论是哪种结果,递归域名服务器将把结果返回给客户机。
迭代查询的最好例子是一台本地域名服务器发送请求到根服务器。当某个企业的本地域名服务器向根服务器提出查询,根服务器并不一定代表本地域名服务器来担当起回答查询的责任。另一种说法是根服务器不接收递归查询。事实上,根服务器只是为解析查询做一件事:指引本地域名服务器到另一台主机来查询回答。这种做法通常称为重指引,也是期望得到的迭代查询的结果。例如,当根服务器被要求查询www.isi.edu的地址,根服务器不会到ISI域名服务器查询www主机的地址,它只是给本地域名服务器返回一个提示,告诉本地域名服务器到ISI域名服务器去继续查询和得到结果。
DNS域名解析过程
客户端和本地DNS之间,是递归查询。(客户端只发送一次请求)
主机向本地域名服务器的查询一般都是采用递归查询。如果主机所询问的本地域名服务器不知道被查询域名的 IP 地址,那么本地域名服务器就以 DNS 客户的身份,向其他根域名服务器继续发出查询请求报文。
DNS服务器之间,是迭代查询
本地域名服务器向根域名服务器的查询通常是采用迭代查询。当根域名服务器收到本地域名服务器的迭代查询请求报文时,要么给出所要查询的 IP 地址,要么告诉本地域名服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地域名服务器进行后续的查询。
如下图所示:
DNS监听的是TCP和UDP的53端口。【区域传输数据用TCP,查询用UDP】
主、从DNS服务器:
辅助DNS服务器:定期到主DNS服务器请求数据同步(TCP连接)
客户端向DNS服务器查询域名,一般返回的内容都不超过512字节,用UDP传输即可。不用经过TCP三次握手,这样DNS服务器负载更低,响应更快。
一般情况下,DNS使用的是UDP连接,除了DNS区域间同步数据会使用TCP方式。
辅助DNS服务器,请求同步机制是以拉取的方式去同步。
DNS同步会用到的5个数据:
serialnumber:序列号
refresh :定义辅助DNS每隔多久检查一次主DNS服务器的版本号
retry :重试时间(小于refresh)
expire :过期时间(超过该时间主DNS还没有响应,辅助DNS也停止工作)
nagativeanswer TTL :否定答案的缓存时长 【本DNS上没有您要找的信息,多久时间之内不要再找该DNS查询了】
主从协调过程:
从服务器在间隔达到refresh指定的时长后发起同步请求至主服务器;主服务器响应serial,从服务器与本地的serial进行比较;如果主服务器serial大于本地,意味主服务器区域数据文件更新了,因此请求同步;
几种资源记录类型的说明:
SOA:起始授权记录;一个区域文件有且只能有一个SOA记录;SOA还必须是第一条资源记录
NS:名称服务器
MX:邮件交换器
A:IPv4
AAAA:IPv6
PTR:指针,IP-->FQDN,反解的标识
CNAME:正式名称
下面来一一说明:
1.SOA记录
Start Of Authority,起始授权记录;一个区域文件有且只能一个SOA记录;SOA还必须是第一条资源记录。
格式:NAME TTL IN rr_type VALUE
如:
@ IN SOA demo.com. admin.demo.com. (
20150914112
1M
5M
10M
1D)
2.NS记录
NS又称名称服务器记录,用于说明这个区域有哪些DNS服务器负责解析【ZONE_NAME à FQDN】
格式:[zone] TTL IN NS [FQDN主机名称]
如:demo.com. IN NS ns1.demo.com.
IN NSns2.demo.com. # 相邻的资源记录name相同时,后面的可省略;
#说明: NS记录,在其正向解析文件中必有一条A记录与之对应
区域名称可以用@ 代替
3.MX 记录
邮件交换记录。用于将以该域名为结尾的电子邮件指向对应的邮件服务器以进行处理。
格式:
@ IN MX 10 mx1.demo.com. # 这里10是优先级,数字越小表示优先级越高
IN MX 20 mx2.demo.com.
#说明: MX记录,在其正向解析文件中还要有一个A记录与之对应。
一个区域数据文件可以有多个MX记录。
4.A、AAAA记录
A记录,又称IP指向,即域名--->IP。用户可以在此设置子域名并指向到自己的目标主机地址上,从而实现通过域名找到服务器。
格式:FQDN TTL IN A IP_ADDRESS
* TTL IN A IP_ADDRESS # 特殊情况,泛域名解析,数据文件是找不到的都自动匹配这条规则
如: www IN A 192.168.2.13
5.PTR 记录
定义一个反向记录,即通过IP可以查到对应的域名。
格式:: IP地址的逆向格式,并附加in-addr.arpa.后缀 IN PTR FQDN
如:2.168.192.in-addr.arpa. IN PTR www.demo.com.
6.CNAME记录
别名指向,别名---正式FQDN 即
格式:[hostname] IN CNAME [主机名称]
如:www2.demo.com. IN CNAME www.demo.com.
或 www2 IN CNAME www # 访问www2.demo.com 自动转到www.demo.com
上述几种资源记录类型汇总见下表:
Linux 下搭建DNS服务器将在下一篇博文中提到。