DNS视图
什么是DNS视图(dns view)?
DNS视图就是根据不同的客户来源(指的是ip),dns服务器使用不同的数据文件来完成解析过程。在这个过程中dns服务器是相同的,视图中的数据文件是不相同的。因此,不同的来源,使用不同的数据文件来解析,所以,解析后的结果也会不相同。
创建DNS view的过程
1、创建DNS的配置文件/etc/named.conf
只不过这个文件中的内容和之前的有一点不太一样。
在这里作者演示创建xsl.com这个域内的DNS服务器来说明,使服务器具有view功能
acl lan {
192.168.0.103/32 ; #如果有多个ip或者网段,可以定义ACL来说明
} ;
acl wan {
192.168.0.105/32;
};
options {
directory "/var/named" ;
allow-recursion { lan; }; #允许递归的ip或者网段,也可以使用ACL来定义};
view nei { #这里定义的是view,nei是view的名字 match-clients { lan; };
#定义匹配的来源。只要是这些范围内的来源(这里使用的是ACL), 使用的数据文件就是下面的nei.xsl.com.zone这个文件来解析
zone "xsl.com" {
type master;
file "nei.xsl.com.zone" ;
};
};
view wai {
match-clients { wan; };
zone "xsl.com" {
type master;
file "wai.xsl.com.zone";
};
};
注意:在定义视图的时候,所有的zone必须定义在视图内部。
2、创建数据文件
nei.xsl.com.zone和wai.xsl.com.zone这两个文件的格式和之前的格式一样的。
在这里我还是写出来吧
nei.xsl.com.zone
$TTL 600
@ IN SOA ns1.xsl.com. admin.xsl.com. (
2014082401
1H
10M
2D
2D )
IN NS ns1.xsl.com.
ns1 IN A 192.168.0.103
www IN A 192.168.0.10
ftp IN A 192.168.0.20
wai.xsl.com.zone
$TTL 600
@ IN SOA ns1.xsl.com. admin.xsl.com. (
2014082401
1H
10M
2D
2D )
IN NS ns1.xsl.com.
ns1 IN A 192.168.0.103
www IN A 192.168.0.100
ftp IN A 192.168.0.200
3、关闭SElinux和使用iptables -F清空iptable中的规则
经过上述几部,使用dig -t A www.xsl.com @192.168.0.103,分别在不同的主机上面测试,得到的结果是不一样的。
自定义DNS的日志系统
默认情况下,系统产生的日志信息都定向到日志系统syslog中去了,且大多数输出到/var/log/messages文件中。但对于DNS服务器来说,基本上每天产生的查询信息就已经够多的呢。所以,我们可以专门自定义一个日志系统,用于专门存放DNS的相关信息。
定义DNS的日志系统,需要在DNS的配置文件中定义。
其中catagory是用来定义日志来源的,这些日志来源有:
defaultDefines default channel for categories
generalCatch-all category for unclassified messages
clientClient request problems
configConfiguration file problems
dispatchDispatch of inbound packets to internal server modules
dnssecDNSSEC and TSIG
lame-serversProblems due to remote server misconfiguration
networkRelated to network operations
notifyNOTIFY announcements
queriesQuery processing
resolverRecursive query processing
securityAccepted or denied requests
updateDynamic updates
xfer-inZone transfers received by the server
xfer-outZone transfers sent by the server
channel是用来定义日志信息保存的位置。
其中定义保存的位置有2种方式:
一是将产生的日志信息直接输出到syslog日志系统中
二是使用file来自定义日志信息保存的文件
注意:一个category可以使用多个channel来保存日志信息;但一个channel只能保存一个category日志来源信息。
DNS的日志系统需要在/etc/named.conf中定义。
例如:定义DNS日志系统格式如下
logging {
channel my_query {
file "/var/log/named/log.query" versions 3 size 10k;
print-time yes;
severity dynamic;
};
category queries { my_query; };
};
定义完成之后,在重启DNS服务,使用dig命令来解析某个主机名,就会看到日志文件会产生。
前提是日志文件的目录要存在,且属组为named,且这个目录的权限最好是770。这样定义完成之后,就可以查看该文件中有DNS的日志信息