DNS服务器之三:DNS高级用法(DNS转发、ACL、智能DNS及日志系统)

DNS服务器之三:DNS高级用法(DNS转发、ACL、智能DNS及日志系统)
2013年08月18日 Linux管理 ⁄ 共 2911字 暂无评论 ⁄ 被围观 19,539 views+

前面两篇DNS文件讲解了基本的安装配置和主从复制:

DNS服务器之一:DNS简介及BIND安装与基本配置

DNS服务器之二:BIND反向解析和主从复制

本文将深入讲解DNS服务器bind98的高级用法,主要包括:

  • DNS转发配置
  • ACL应用与配置
  • 使用bind实现智能DNS
  • BIND日志系统介绍

一、DNS转发:

在DNS服务器的配置中,如果采用默认的配置,其实效率是较低的,因为默认情况下,我们所有的非权威解析都会被发送到根服务器进行迭代查询。如果采用转发,如将我们的DNS解析请求转发到一些公共DNS服务器上,由于公共DNS服务器上缓存了大量的解析,因此能较原始的迭代查询快。

全局转发:

作用:实现对非权威解析(已缓存的除外)都转发到特定DNS服务器

配置办法:

options {

……其他配置省略……

forwarders { 202.96.134.133;8.8.8.8; };

};

如果仅设置“forwarders”,则在无法联系转发器时,就会尝试自己解析,即转发到根服务器迭代查询实现解析(如果配置有根zone)。

如果想服务器在联系不到转发器时不进行多余操作,则可以加上“forward only; ”(如下:);这样如果联系不上转发器是,服务器将只查询权威解析和本地缓存的解析。

options {

……其他配置省略……

forwarders { 202.96.134.133;8.8.8.8; };

forward only;

};

区域转发:

从BIND9.1开始,引入一个新特新:转发区(forward zone ),及允许查询特定区域时,将其转发到指定DNS服务器上。

配置方法:

zone “com” {
type master;
file “named.com”;
forwarders { 192.35.51.30;192.5.6.30; };
};

如上,我们可以将某个域的解析直接转发到其权威服务器上,可以实现快速解析。

二、ACL应用与配置:

在named.conf的全局配置中,有如下这样的一行定义允许为那些客户端进行递归查询:

options {

……其他配置省略……

allow-query { 192.168.8.0/24; };

};

我在测试时只允许了这一个IP段,如果是大型企业或者公网,我们需要允许的客户端有数十个IP段时,这里会写很长,而且如果在多个地方需要用到,则需写多次,配置相当麻烦,且影响查看。因此引入ACL,可以实现集中定义,所有位置均可引用。ACL类似程序开发中的函数。

配置方法:

acl ACL_NAME {
< 需要定义的网段>;  //每个网络范围一行,可以包含多行
};

如:

acl trust {

172.16.100.0/24;

10.35.0.0/24;

192.168.0.0/24;

127.0.0.1;

};

options {

allow-query { trust; };   //引用上面定义的ACL

……其他配置省略……

};

在下面的自建智能DNS中,我们将会再次应用到ACL。

三、使用bind实现智能DNS:

要实现智能DNS解析,如联通客户端解析到联通IP,电信客户端解析到电信IP,实现起来并不难,具体如下:

  • 获取各运营商(如电信、联通等)IP列表
  • 为web服务器配置多个网络出口(IP)
  • 配置智能解析DNS

要实现DNS服务器的智能解析,需要先理解一个概念:view

view就是将不同IP地址段发来的查询响应到不同的DNS解析。例如需要对2个不同IP地址段进行配置,就需要明确这些IP地址段,这样View功能才会有效。需要注意的是,一旦使用view,所有域都必须定义在view。

下面我们就以网段192.168.1.0/24来模拟电信网络;192.168.8.0/24模拟联通网络进行测试:

配置named.conf:

acl “telecom” {
192.168.1.0/24;
};

options {
listen-on port 53 { 192.168.8.101; };
allow-query { any; };
directory “/var/named”;
notify yes;
};

view telecom {
match-clients { telecom; };   //引用前面定义的电信网络ACL,指定本view匹配
zone “.” IN {
type hint;
file “named.ca”;
};

zone “toxingwang.com” IN {
type master;
file “telecom.toxingwang.com”;   //定义本view对应的数据文件
};
};

view unicom {
match-clients { any; };    //定义除了电信网络外的其他网络
zone “.” IN {
type hint;
file “named.ca”;

};

zone “toxingwang.com” IN {
type master;
file “unicom.toxingwang.com”;   //指定本view对应的数据文件
};
};

配置数据文件:

电信view对应数据文件

[root@ns named]# vi /var/named/telecom.toxingwang.com   ##电信view对应数据文件

$TTL 1H
@ IN SOA ns.toxingwang.com. admin.toxingwang.com. (
2013081703 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS ns.toxingwang.com.
IN NS ns2.toxingwang.com.
IN MX 10 mail.toxingwang.com.
ns IN A 192.168.8.101
ns2 IN A 192.168.8.100
www IN A 192.168.1.2
mail IN A 192.168.1.3
www2 IN CNAME www.toxingwang.com.
blog IN A 192.168.1.4

其他view对应数据文件:

[root@ns named]# vi /var/named/unicom.toxingwang.com

$TTL 1H
@ IN SOA ns.toxingwang.com. admin.toxingwang.com. (
2013081703 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS ns.toxingwang.com.
IN NS ns2.toxingwang.com.
IN MX 10 mail.toxingwang.com.
ns IN A 192.168.8.101
ns2 IN A 192.168.8.100
www IN A 192.168.8.2
mail IN A 192.168.8.3
www2 IN CNAME www.toxingwang.com.
blog IN A 192.168.8.4

重启服务器生效。

客户端测试:

192.168.1.0/24段客户端测试:

智能DNS配置1

192.168.8.0/24段客户端测试:

智能DNS配置2

因此,如果将公网上的电信IP列表写入ACL中,且本DNS服务器放置在公网上为toxingwang.com提供解析,则不同网络的客户端DNS请求会得到不同的结果。一个智能DNS就实现了。

四、BIND日志系统:

……更新中……