总体来说,DNS服务器的类型主要有以下3种:
(1)Primary DNS Server(Master):一个域的主服务器保存着该域的zone配置文件,该域所有的配置、更改都是在该服务器上进行;
(2)Secondary DNS Server(slave):域从服务器一般都是作为冗余负载使用,一个域的从服务器是从该域的主服务器上抓取zone配置文件,从服务器不会进行任何信息的更改,zone配置文件的修改只能在主DNS服务器上进行,所有的修改都有主服务器同步;
(3)Caching only Server(forwarder):DNS缓存服务器不存在任何的zone配置文件,仅仅依靠缓存来为客户端提供服务,通常用于负载均衡及加速访问操作;
#vi etc/named.conf
options
{
directory "/home/jie.cj/named/zones/"; // Working directory
listen-on port 53 { 127.0.0.1; 1.1.1.1;};
};
zone "cnblogs.com"
{
type master;
file "cnblogs.com.zone";
};
#vi zone/ cnblogs.com.zone
$TTL 1D
@ IN SOA @rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 127.0.0.1 //NS的A记录
AAAA ::1
IN MX 10 mail.cnblogs.com.
www IN A 192.168.1.111
mail IN A 192.168.1.222
备注:
(1)添加一条邮件记录,邮件记录后面要跟域名,它会递归的解析这个域名,所以该域名的资源记录一定要有,后面的.一定要写上;
(2)添加了一条www的资源记录IP地址为192.168.1.111;
(3)添加了一条mail的资源记录IP地址为192.168.1.222;
(4)@表示zone的名字,即cnblogs.com;#dig @1.1.1.1 www.cnblogs.com
#dig @1.1.1.1 cnblogs.com MX
配置一个域的从服务器一般是为了进行备份以及负载均衡使用,例如在生产环境中,我们给一个域配置的主DNS服务器崩溃了或者被恶意攻击了,那么这个时候如果没有配置从DNS服务器的话,我们的DNS服务器就不能提供DNS服务了,也就无法解析服务器上配置的域名了,或者说主服务器的访问量特别大,此时我们配置从服务器来达到负载均衡的效果,因此我们通常在配置了一个主DNS服务器以后,还需要为其配置多个从DNS服务器。
主服务器配置:
options
{
directory "/home/jie.cj/named/zones/"; // Working directory
listen-on port 53 { 127.0.0.1; 1.1.1.1;};
};
zone "cnblogs.com"
{
type master;
file "cnblogs.com.zone";
};
从服务器配置:
options
{
directory "/home/jie.cj/named/zones/"; // Working directory
listen-on port 53 { 127.0.0.1; 2.2.2.2;};
};
zone "cnblogs.com"
{
type slave;
masters{1.1.1.1;};
file "cnblogs.com.zone";
};
(1)client第一次测试slave
#dig @2.2.2.2 www.cnblogs.com
(2)slave日志发现有同步zone:cnblogs.com
备注:cnblogs.com.zone的文件格式是data,需要用last命令来查看,否则乱码。
(3)client第二次测试slave
#dig @2.2.2.2 www.cnblogs.com
(4)client测试master
#dig @1.1.1.1 www.cnblogs.com
一个DNS服务器可以既不是某个域的master服务器,也可以不是某个域的slave服务器,一个DNS服务器可以不包含任何域的配置信息,它将接收到的所有DNS查询进行递归解析,将解析的结果返回给我们的查询客户端,并且将查询结果缓存下来,这样的服务器就称之为Caching DNS Server,通常我们在一个局域网中配置一个缓存DNS服务器是为了加速网络访问。
#vi etc/named.conf
options
{
directory "/home/jie.cj/named/zones/"; // Working directory
listen-on port 53 { 127.0.0.1; 3.3.3.3;};
forwarders { 1.1.1.1; };
};
zone "cnblogs.com"
{
type slave;
masters {1.1.1.1;};
file "cnblogs.com.zone";
};
备注:即使options中添加forward only,在访问cnblogs.com的时候,还是会访问本地,如果访问test.com则会向forwarders 1.1.1.1转发DNS请求。
备注:forward only的主要含义是BIND在无法联系到转发器时不做任何操作,只能使用区的权威数据和缓存来响应查询(默认会自动解析)。
(1)第一次访问(注释掉服务器的zone cnblogs.com之后测试,否则会走本地)
#dig @3.3.3.3 www.cnblogs.com
备注:抓包可以看到client向3.3.3.3发送DNS请求的时候,3.3.3.3会向1.1.1.1转发请求,然后将结果返回给client。
其他拓展;
(2)第二次访问
备注:抓包可以看到client向3.3.3.3发送DNS请求的时候,3.3.3.3会将缓存中的结果直接返回给client。
(3)其他拓展
zone "test.com"
{
type forward;
forwarders { 10.101.29.15; };
};
备注:在BIND 8.2以后引入了一个新的特性,转发区(forward zone),它允许把DNS配置成只有查找特定域名的时候才使用转发器。