DNS概念及配置详解
DNS的起源
60年末代,美国资助试验性广域计算机风,称为ARPAnet,70年代时,70年代,ARPAnet只是一个拥有几百台主机的小网络,仅需要一个HOSTS文件就可以容纳所需要主机信息,HOSTS提供的是主机名也IP地址的映射关系,也就是说可以用主机名进行网络信息的共享,而不需要记住IP地址。但是随着网络的扩在,HOSTS文件已经不能够快速完成解析任务了,这时DNS出现了。实际上,DNS是一个分布式的数据库,它允许对整个数据库的各个部分进行本地控制(本地控制也是就所谓的授权,可以把数据库的一部分进行授权,减轻主DNS服务器的压力,就是按域结构进行授权)。
DNS数据库
DNS数据库与UNIX的文件系统结构非常相似。UNIX文件系统(例如/usr/local/bin)的目录名,就相当于DNS中的域名(.com.myhome.www)。 DNS中用点(.)来分割,而UNIX中用(/)来割目录的。域的域名(domain name)标识它在数据库中的位置,例myhome就是com域下的子域,而local是usr的子目录。
DNS的基本概念
域(domain)
域(domain)就是域名空间中的一棵子树。看好了是子树,也就是树的分枝。域的名字也就是这棵子树的顶端节点的域名。
名字服务器(name server)
存储关于域名空间的信息的程序叫作名字服务器。名字服务器通常含有域名空间中某一部分的完整信息,我们称为区(zone).区的内容是从文件或其他名字服务器中加载而来的。这时我们称名字服务器(name server)对这个区(zone)具有权威(authority)。一个名字服务器也可以同时对多个区具有权威。
所有的*域名,以及许多二级域名和更低级别的域名,通过授权被分成了更小也更好管理的单元,这些单元称为区(zone)。
区数据文件
主名字服务器从本机中加载数据的文件叫区数据文件(zone data file),常称为数据文件或数据库文件。辅名字服务器常常被配置为:将主名字服务器传送过来的区数据备份到本机的数据文件当中。
递归
如果被查询的名称服务器不是所请求的数据的权威,它将不得不向其他名字服务器发出查询以获得答案。它可以向其他名字服务器发送递归查询,从而要求它们找到答案并返回。
反复
反复中名字服务器只用将它已知的最合适的答案返回给查询者。它本身不需要再有任何其他查询。被查询的名字服务器在它的本地数据中寻找所需数据。如果没有找到答案,它就在本地数据中找出与所要查询的名字服务器最接近的名字服务器的名字和地址,并作为指示返回给查询者,帮助它把解析过程进行下去。
在DNS目前的实现中,采用的是后者,将不断地依照指示进行查询,直到找到结果 。
缓存
处理递归查询的名字服务器可能需要发送好几个查询才能找到结果。不过在这个过程中。它也了解到域名空间的许多信息。每次它得到一些名字服务器列表的指示,它就知道这些名字服务器是哪些区的权威,也就知道这些服务器的地址。当解析过程结束时,它最终找到原来查询所请的数据后,还可以把这些数据保存起来,以备后用。也就是再有查找相同域名的时候,此时名字服务器已将结果放在缓存中,只需要向解析器返回这个结果就行了(IP地址),不用再进行查询。
生存期
就是名字服务器允许数据在缓存中存放的时间(time to live)TTL。生存期一过,名字服务器必须丢弃缓存中的数据,并从权威名字服务器上获取新的数据。它和缓存的是密切相关的。
关于host.conf文件
host.conf文件是用于设置各种名称服务的优先级的配置文件。
order bind hosts ,其中bind代表DNS服务,hosts代表/etc/hosts文件 ,multi on 中multi选项用于决定是否可以给/etc/hosts文件中相同的主机名分配多个地址。on 表示打开了该选项。
关于区数据文件
区数据文件的大部分条目被称为DNS资源记录(resource record)。DNS查找是不区分大小写的。 数据文件中资源记录的顺序如下:
SOA记录 :指示该区的权威
SOA序列号:每个区数据文件都有一个序列号。每次修改区数据文件中的数据后,都必须增加其序列号。如果不增加序列号的话,该区的辅名字服务器就不会获取修改后的数据。
Refresh字段:定义了刷新周期的时间。每一个刷新周期,从服务器就在主服务器的SOA类型记录上检测序列号来确定区是否需要传输。刷新周期可以是星期(W),天,小时,分钟,秒。
Retry字段 :这个数字定义了重试周期的时间长度。重试周期告诉从服务器:在主服务器对应一个SOA类型记录的请示时重新请求之前它应该等待多长时间。
Expire字段:这个数字是截止时间,也就是从服务器应该在即使它不能更新区文件时继续响应查询的时间长度。
NS记录 : 该区的一个名字服务器
A —— 名字到地址的映射
PTR —— 地址到名字的映射
CNAME —— 规范名称
注释: 使用分号(;)开头的到行尾处结束。
设定区默认的TTL值: 名字服务器在查询响应中提供这个TTL值,允许其他服务器将数据在缓存中存放TTL所指定的时间。
可能的取值是:
w=星期
d=天
h=小时
m=分钟
s=秒
例:$TTL 3h 3小时
$TTL 2w3d4h 2个星期3天4个小时
主DNS服务器与从DNS服务器
举例:
主DNS的named.conf文件:
options {
directory "/var/named";
};
zone "." IN {
type hint;
file "named.ca";
};
zone "localhost" IN {
type master;
file "localhost.zone";
allow-update { none; };
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
allow-update { none; };
};
zone "myhome.com" IN {
type master;
file "myhome.coms";
allow-update { none; };
};
zone "1.168.192.in-addr.arpa" IN {
type master;
file "named.reverse";
allow-update { none; };
};
主服务器对应的正向解析文件:myhome.coms
@ SOA jh.myhome.com. root.jh.myhome.com. (
2000020501;
21600;
7200;
604800;
900)
NS jh.myhome.com.
MX 10 jh.myhome.com.
jh IN A 192.168.1.1
yj11 IN A 192.168.1.2
three IN CNAME jh.myhome.com.
www IN A 192.168.1.12
主服务器对应的反向解析文件:named.reserves
myhome.com. SOA jh.myhome.com. root.jh.myhome.com. (
2000021602;
21600;
1800;
604800;
7200);
NS jh.myhome.com.
1 PTR jh.myhome.com.
2 PTR yj11.myhome.com.
从DNS的named.conf文件:
options {
directory "/var/named";
};
zone "." IN {
type hint;
file "named.ca";
};
zone "localhost" IN {
type master;
file "localhost.zone";
allow-update { none; };
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
allow-update { none; };
};
zone "myhome.com" IN {
// type master;
type slave;
// type后面的值已经成为slave;
file "myhome.coms";
//file 后面也可以是别的文件名不必与主DNS服务器的设置一样
masters { 192.168.1.1; };
//192.168.1.1 为主DNS服务器的IP地址,
};
zone "1.168.192.in-addr.arpa" IN {
// type master;
type slave;
// type后面的值已经成为slave;
file "named.reverse";
//file 后面也可以是别的文件名不必与主DNS服务器的设置一样
masters { 192.168.1.1; };
//192.168.1.1 为主DNS服务器的IP地址,
};
不用在从DNS服务器上建立myhome.coms和named.reserse文件,因为在你在从DNS服务器的进程新启动(就是在你把named.conf修改完毕时,第一次重新启动)后
会自动从主DNS服务器(192.168.1.1)拷贝数据文件(myhome.coms)内容到从dns服务器上。自动创新这两个主要文件。
Refersh字段定义了刷新周期时间。从服务器每3h时间就从主服务器上拷贝数据文件到从服务器上,如果想修改了主服务器上的数据文件,必须改变2000020501;序列号,增加1为2000020502,这样的从服务器就在3h后就会先检查序列号如果比自己的序列号高的话,如果会自动拷贝文件到从服务器上,如果不增加“序列号”那么即使3h后也不会拷贝主服务器的内容到从服务器上。