标签:选项 restart 相关 引用 any log 网络流量 localhost 名称
权威服务器(权威者)可以理解为直接上层域的DNS服务器。例如www.baidu.com这台主机的上层域是baidu.com,那么对www来说,它的权威服务器就是baidu.com这个域内负责解析的DNS服务器,而对于baidu.com这个主机来说,它的权威服务器是.com这个域负责解析的DNS服务器。
更具体的说,某域的权威服务器是可以直接查看该域数据(即区域数据文件)的DNS服务器,主、从DNS服务器都是权威服务器。
只有权威服务器给出的应答才是权威应答,否则就是非权威应答。为什么呢?因为一个域中所有的主机都是在DNS服务器中的区域数据文件中记录的,对于主机来说,它们的位置只有直接上层才知道在哪里。
因此如果解析www.baidu.com时要获得权威应答,应该将DNS指向baidu.com这个域内负责解析的DNS服务器。
只有权威服务器直接给出的答案才是永远正确的,通过缓存得到的答案基本都是非权威应答。当然这不是一定的,因为权威服务器给的答案也是缓存中的结果,但是这是权威答案。DNS服务器缓存解析的数据库时间长度是由权威服务器决定的。
在Client和DNS服务器这些个人订制的DNS解析系统中都会使用缓存来加速解析以减少网络流量和查询压力,就算是解析不到的否定答案也会缓存。
但是要访问的主机IP可能会改变,所有使用缓存得到的答案不一定是对的,因此缓存给的答案是非权威的,只有对方主机的上一级给的答案才是权威答案。缓存给的非权威答案应该设定缓存时间,这个缓存时间的长短由权威者指定。
另外访问某个域下根本不存在的主机,这个域的DNS服务器也会给出答案,但是这是否定答案,否定答案也会缓存,并且有缓存时间。例如某个Client请求51cto.com域下的ftp主机,但是实际上51cto.com下面可能根本没有这个ftp主机,那么51cto.com就会给否定答案,为了防止Client不死心的访问ftp搞破坏,51cto.com这个域负责解析的DNS服务器有必要给Client指定否定答案的缓存时间。
dns服务器也称为name server,每个域都必须有dns服务器负责该域相关数据的解析。但dns服务器要负责整个域的数据解析,压力相对来说是比较大的,且一旦出现问题,整个域都崩溃无法向外提供服务,这是非常严重的事。所以,无论是出于负载均衡还是域数据安全可用的考虑,两台dns服务器已经是最低要求了,多数时候应该配置多台dns服务器。
多台dns服务器之间有主次之分,主dns服务器称为master,从dns服务器称为slave。slave上的域数据都是从master上获取的,这样slave和master就都能向外提供名称解析服务。
1、主DNS服务器
[root@dns-master ~]# yum install bind -y
[root@dns-master ~]# vim /etc/named.conf
// listen-on port 53 { 127.0.0.1; };
// allow-query { localhost; };
allow-transfer { 192.168.38.137;};
[root@dns-master ~]# vim /etc/named.rfc1912.zones
zone "taobao.com" IN {
type master;
file "db.taobao.com";
};
[root@dns-master ~]# cd /var/named/
[root@dns-master named]# cp -a named.localhost db.taobao.com
[root@dns-master named]# vim db.taobao.com
[root@dns-master named]# cat db.taobao.com
$TTL 1D
@ IN SOA master.taobao.com. admin.taobao.com. (
1 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
NS slave
master A 192.168.38.130
slave A 192.168.38.137
websrv A 192.168.38.128
www CNAME websrv
[root@dns-master named]# systemctl start named
测试:[root@client ~]# nslookup www.taobao.com 192.168.38.130
2、从DNS配置
[root@dns-slave ~]# yum install bind -y
[root@dns-slave ~]# vim /etc/named.conf
// listen-on port 53 { 127.0.0.1; };
// allow-query { localhost; };
allow-transfer { none; };
[root@dns-slave ~]# vim /etc/named.rfc1912.zones
zone "taobao.com" IN {
type slave;
masters { 192.168.38.130; };
file "slaves/db.taobao.com";
};
[root@dns-slave ~]# systemctl restart named
[root@dns-slave ~]# ls /var/named/slaves/
db.taobao.com
测试:[root@client ~]# nslookup www.taobao.com 192.168.38.137
清空缓存的命令:rndc flush
dig和nslookup都可以指定DNS服务器查询
仅用作提供缓存的dns服务器,当有客户端请求该dns服务器帮忙解析某个地址时,它不会直接为外界主机提供dns解析,而是自己去找其他dns服务器解析,并将结果缓存在本地,并将缓存结果提供给客户端。
也就是说,仅缓存dns服务器其实扮演的角色和客户端一样,只不过它还未其他客户端提供解析查询而已。
要配置仅缓存dns服务器,只要配置3个任何时候都必要的域:根域"."、"localhost"域和"1.0.0.127.in-addr.arpa"。也就是说,任何一台完整的dns服务器,至少都是"缓存"服务器。
所以,仅缓存dns服务器配置如下:
[root@xuexi ~]# vim /etc/named.conf
options {
directory "/var/named";
};
#zone "jd.com" {
# type master;
# file "db.jd.com";
#};
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.zones";
配置成了转发服务器,named.conf里所有的zone都将失效(除非配置转发区和空转发区),也就是不会再做任何解析(包括对根的查询),收到的解析请求全都提交给转发选项里指定的机器,转发选项所指定的机器称为转发器。转发器还可以指定给上一层。
如图:192.168.38.133为转发者,192.168.38.138配置方式为:
#options中使用一个forwarders指令
options {
directory "/var/named";
forwarders { 192.168.38.128; };
// forward only; #默认是forward first,即先转发,转发失败自行查询;forward only即仅转发,仅转发的那也不需要域文件了,删掉directory一行即可
};
include /etc/named.rfc1912.zones;
这表示将192.168.38.133收到的所有查询请求都交给192.168.38.128这台转发器,由这台转发器帮忙查询相关请求,然后回复给转发者,由转发者回复给客户端
转发者转发给转发器的查询是递归查询,转发器必须要亲自回复转发者
同样,如果forward留空的,表示该区禁止转发
options {
directory "/var/named";
forwarders { 192.168.38.130; };
};
zone "taobao.com" IN {
type master;
forwarders {};
};
zone "." IN {
type hint;
file "named.ca";
};
include /etc/named.rfc1912.zones;
顾名思义,访问控制列表,定义一组规则,方便下面引用
acl "acl_name" { 192.168.38/24;192.168.39/24 };
此外,还有4个预定义的acl值:any、none、localhost(DNS服务器的任一IP地址)、localnets(DNS服务器任一ip地址所在网段)
? dns解析器发起的查询都是递归查询,所以一般客户端配置DNS指向谁就表示找谁帮忙做递归查询。如果dns服务器接受它的递归查询请求,则它会去帮助查询,如果dns服务器不接受它的递归查询请求,则会将递归查询当成迭代查询看待,让请求者自己去查询。
? 另外,允许递归查询的服务器,由于要帮忙查询,所以在递归查询服务器上总是缓存了一些非权威数据,如果是非递归查询服务器,则不用缓存任何数据,只需返回其负责的域的权威数据即可,这对减轻压力的作用是非常大的。
? 不要将非递归查询dns服务器设置为转发器,因为转发者转发给转发器的查询是递归查询。
1是修改/etc/named.conf
#监听端口这一行,简单一点注释了
// listen-on
#将仅允许localhost查询这一行注释,简单粗暴
// allow-query
#添加一行allow-transfer,简单理解为只允许192.168.38.130作为从服务器获取DNS数据,放在文件前面就是全局,放在区域中就只对区域生效,没有这一行的话,***就能通过dig -t axfr jd.com @192.168.38.128获取到jd.com的所有域名解析情况
allow-transfer { 192.168.38.130; };
2是修改/etc/named.rfc1912.zones,添加域
#在/etc/named.rfc1912.zones中添加区域,当然添加/etc/named.conf也是可以的,/etc/named.conf最下面两行写着include /etc/named.rfc1912.zones
zone "jd.com" {
type master;
file "jd.com.zone";
};
3是添加正向解析域文件/var/named/jd.com.zone
不写了。如上面所示
不写了。
参考:https://www.cnblogs.com/jzbgltb/p/9967063.html
参考:https://thson.blog.csdn.net/article/details/94427779
注意,这位同学的文章某些地方还是有些小问题的
标签:选项 restart 相关 引用 any log 网络流量 localhost 名称
原文地址:https://blog.51cto.com/14012942/2437975