您现在正在浏览:首页 > 职教文章 > 职教论文 > Linux 下DNS服务器配置的分析和探讨

Linux 下DNS服务器配置的分析和探讨

日期: 2014/7/20 浏览: 1 来源: 学海网收集整理 作者: 邗江中等专业学校 田明山

内容提要:有关Linux操作系统下的DNS服务器配置的文章很多,但缺乏系统的、全面的、详实的讲解,本文以配合实例的介绍方法从最基本的DNS配置讲起,并深入分析最新的DNS配置技术,同时介绍不同版本Linux的DNS配置的差别,力求让读者能轻松、全面掌握DNS的配置方法。
   一、DNS简介
   DNS (Domain Name System)是域名系统的缩写,用于实现IP地址与域名的转换,能够使人更方便的访问互联网。Linux下实现DNS服务器通常是使用Bind程序来实现的。Bind是Berkeley Internet Name Domain Service的简写,它是Linux中实现DNS服务器的开放源码软件。Bind最初是美国DARPA资助伯克里大学(Berkeley)开设的一个课题,经过多年的发展,已经成为世界上使用最为广泛的DNS服务器软件,目前Internet上绝大多数的DNS服务器有都是用Bind来架设的。
   DNS服务器可以配置成以下3类之一:
   1.主DNS服务器:一个区域内只能有一个主服务器。
   2.辅DNS服务器:从主服务器定期下载整个区域数据库,并保存一个该区域的副本,也叫备份服务器,可以有多个。
   3.缓存专用服务器:对任何区域没有授权,处理本地请求,跟踪应答并把应答保存到缓存里,只能从缓存里直接响应DNS查询请求,其他的请求被转发到一个授权服务器那里。
   二、DNS快速上手配置
   本文的配置环境预设为CENTOS6.4。
   CENTOS6.4中主配置文件是named.conf,其路径为/etc/(早期版本的LINUX中,named.conf的路径为/etc/named/),区域配置文件name.rfc1912.zones包含于named.conf中,其路径也在/etc/,在其最后添加
   Zone”test.com”IN {
   type master;
   file”test.com.zone”;
   allow-transfer{ none; };
   };
   再进入/var/named/目录下,创建:test.com.zone,其内容为
   www IN A 192.168.0.8
   开启named进程,即可将www.test.com解析至192.168.0.8。
  
   【实例】要添加一个域名为“center.test.com”,IP地址为192.168.16.177;域名为“news.test.com”,IP地址为192.168.16.178;域名“mail.test.com”,IP地址为192.168.16.179则可在hosts文件中添加如下记录。
   【步骤1】设置主区域,编辑/etc/name.rfc1912.zones,添加如下代码。
   zone “test.com" IN{ //主区域名称为test.com
   type master; //DNS区域的类型为master
   file “test.com.zone”; //设置主区域文件的名称为test.com.zone
   allow-transfer{
   192.168.1.177;
   192.168.7.17;
   };
   };
   【步骤2】设置反向解析区域,编辑/etc/name.rfc1912.zones,添加如下代码。
   zone “16.168.192.in-addr.arpa” IN { //设置反向解析区域的名称
   type master; //设置区域类型为“master”
   file “192.168.16.arpa”; //设置反向解析区域文件的名称
   allow-update{
   192.168.1.177;
   192.168.7.17;
   };
   };
   【步骤3】DNS服务器的区域数据文件一般存放在/var/named/目录下,创建/var/named/test.com.zone文件,完成以下配置。
   $ttl 38400 //设计允许客户端缓存来自查询的数据的默认时间
   test.com. IN SOAdns.test.com. admin.test.com.( //设置所管辖的域名
   2005090503 //设置序列号
   10800 //设置间隔时间
   3600 //设置重试时间
   604800
   38400 )
   test.com. IN NS test.com.. //设置名称服务器NS资源记录
  
   dns IN A 192.168.16.177 //设置主机地址A资源记录
   center.test.com. IN A 192.168.16.177
   news. test.com. IN A 192.168.16.178
   mail. test.com. IN MX 10 192.168.16.179//设置邮件交换器MX资源记录
   【步骤4】设置反向解析区域文件,创建/var/named/ 192.168.16.arpa,完成以下配置。
   $ttl 38400
   16.168.192.in-addr.arpa.IN SOAdns.test.com.admin.test.com. (
   2005090503
   10800
   3600
   604800
   38400 )
   16.168.192.in-addr.arpa. INNS dns.test.com.
   177.16.168.192.in-addr.arpa. IN PTR dns.test.com.
   177 IN PTR center.test.com.
   178 IN PTR news. test.com.
   179 IN PTR mail. test.com.
   三、DNS高级配置(bind9以上版本acl、view的使用)
   许多公司希望 DNS 对于内网访问和外网(Internet)访问看起来不一样,这种类型的配置称为“分离 DNS (Split DNS)”,在bind9以上版本中,可以利用acl和view的配合实现。
   访问控制列表(ACL):一个被命名的地址匹配列表。使用访问控制列表可以使配置文件看上去简单而又清晰,定义一次之后可以在多处使用,不会使配置文件因为大量的 IP 地址而变得混乱。
   定义 ACL,可以在 BIND 的主配置文件 /etc/named.conf中使用acl语句来实现。acl语句的语法为:
   acl acl_name {
   address_match_list;
   };
   BIND 里默认预定义了 4 个名称的地址匹配列表,他们可以直接使用,分别为any:所有主机;localhost:本机;localnets:本地网络上的所有主机;none:不匹配任何主机。
   注:acl是named.conf中的顶级语句,不能将其嵌入其他的语句。
   【实例】本文前面提到的实例中包含
   allow-transfer{
   192.168.1.177;
   192.168.7.17;
   };
   利用ACL,可将代码编写为如下:
   首先在/etc/named.conf中的最前面添加如下语句:
   acl dns-transfer {
   192.168.1.177;
   192.168.7.17;
   };
   再将替换为
   也就是说,配置文件中所有出现的“192.168.1.177;192.168.7.17;”都可以用“dns-transfer”来替代,ACL的作用就是为类IP命名。
   在 BIND 9 中可以使用 view 语句进行配置分离 DNS 。 view 语句的语法为
   viewview_name {
   match-clients { address_match_list };
   [ view_option; ...]
   zone_statement; ...
   };
   其中: match-clients 子句非常重要,它用于指定谁能看到本 view,address_match_list可以利用ACL来定义。
   【实例】
   view "external" {
   match-clients { our-nets; }; // 匹配内网客户的访问
   recursion yes; // 对内网客户允许执行递归查询
   zone "test.com" { // 定义内网客户可见的区声明
   type master;
   file "test.com.hosts.internal";
   };
   };
   view "internal" {
   match-clients { any; }; // 匹配外网客户的访问
   recursion no; // 对外网客户不允许执行递归查询
   zone "test.com" { // 定义外网客户可见的区声明
   type master;
   file "test.com.hosts.external";
   };
   };
   需要注意的是,在使用了view语句后,所有的zone语句必须被包含在view语句中,否则将会报错;同时,配置内网的 view 应该置于外网的 view 之前。
   本文从实际出发,介绍了DNS服务器的配置,解决了常用DNS配置过程中的问题,但还有一些细节没有更深入探讨,有待读者在实际解决问题时,进一步了解与掌握。
  
   参考文献:
   《基于LINUX操作系统的DNS服务器配置 》 葛慧娟西安电子科技大学
   《基于Linux平台下校园网DNS服务器配置方案》刘姚岳阳职业技术学院学报
   《基于VMware的DNS服务器仿真实验平台的设计及实现》余金栋数字技术与应用

返回顶部