DNS服务器的搭建DNS服务器的搭建

源贴地址: https://www.zybuluo.com/sww4718168/note/9076 转载请注明出处!!

RHEL5.9中如何搭建DNS服务



搭建主DNS服务器

服务器所采用的操作系统是RHEL5.9,且服务器端所有操作均需要root权限。

服务器环境准备:

RHEL5.9上默认使用BIND9提供dns服务。先查询软件包是否已经安装:

  1. [root@RHEL5 ~]# rpm -q bind bind-chroot caching-nameserver

  2. package bind is not installed    #提供dns服务的包,可只安装这一个

  3. package bind-chroot is not installed    #可选安装。更改dns的根路径,提升dns服务的安全性

  4. package cache-nameserver is not installed    #可选安装。搭建缓存dns服务器时需要,提供一些默认配置文件。

  1. [root@RHEL5 ~]# yum -y install bind bind-chroot caching-nameserver    #安装软件包

在这里,我使用的是本地源仓库安装的软件包。想搭建本地源的朋友可以查看 RHEL本地源

服务的配置

  • 修改主配置文件

  1. [root@RHEL5 ~]# cd /var/named/chroot/#安装bind-chroot包之后,dns服务的根路径

  2. [root@RHEL5 chroot]# cp -p etc/named.caching-nameserver.conf etc/named.conf        

  3. #从模板创建主配置文件,如果没安装bind-chroot包,则在/etc/named/下。

  4. #etc/named.caching-nameserver.conf只有在安装了caching-nameserver包之后才有。

  5. #选项"-p"保留属性,不然named无法启动。

  6. [root@RHEL5 chroot]# vim etc/named.conf #修改配置文件

 ... 15         listen-on port 53 { 172.16.1.2; };  #修改为本机IP ... 27         allow-query     { any; };    #将下面四行中的   localhost更改为any 28         allow-query-cache { any; }   #在vim中可以使用查找替换"%s/localhost;/any;/g"不要忘记分号,不然会把不应该替换的也替换掉,配置文件就会出错。 ... 37         match-clients      { any; }; 38         match-destinations { any; }; ...
  • 将数据库引入配置文件

  1. root@RHEL5 chroot]# vim etc/named.rfc1912.zones

添加如下内容:

 50 zone "test.com" IN {       //dns服务器可以解析的域 51         type master;       //主dns服务器 52         file "test.com.zone";    //正向解析文件名 53 };    //每句结束都必须跟上一个分号 54 zone "1.16.172.in-addr.arpa" IN {    //反向解析区域。所在域的ip前三组数,倒过来写。".in-addr.arpa"是反向解析的标志 55         type master; 56         file "test.com.arpa"; 57 };     //不要忘记分号 
  1. [root@RHEL5 chroot]# named-checkconf etc/named.conf    #检查配置文件语法是否又错误。无错误则无任何输出。

  • 修改数据库文件  

  1. [root@RHEL5 chroot]# cp -p  var/named/named.localvar/named/test.com.zone    #不要忘了"-p"保留权限

  2. [root@RHEL5 chroot]# vim var/named/test.com.zone  #编辑正向解析文件

  1 $TTL    86400  2 @       IN      SOA     localhost. root.localhost.  (  3                                       1997022700 ; Serial  4                                       28800      ; Refresh  5                                       14400      ; Retry  6                                       3600000    ; Expire  7                                       86400 )    ; Minimum  8         IN      NS      dns1.test.com.  9 dns1    IN      A       172.16.1.2 10 www     IN      A       172.16.1.1 11 bbs     IN      A       172.16.1.2 12 mail    IN      A       172.16.1.3
  1. [root@RHEL5 chroot]# cp -p  var/named/named.localvar/named/test.com.arpa            # "-p"保留权限

  2. [root@RHEL5 chroot]# vim var/named/test.com.arpa

  1 $TTL    86400  2 @       IN      SOA     localhost. root.localhost.  (  3                                       1997022700 ; Serial  4                                       28800      ; Refresh  5                                       14400      ; Retry  6                                       3600000    ; Expire  7                                       86400 )    ; Minimum  8         IN      NS      dns1.test.com.  9 2       IN      PTR     dns1.test.com. 10 1       IN      PTR     www.test.com. 11 2       IN      PTR     bbs.test.com. 12 3       IN      PTR     mail.test.com.
  1. [root@RHEL5 chroot]# named-checkzone test.com var/named/test.com.zone     #检查正向解析文件是否有错误

  2. zone test.com/IN: loaded serial 1997022700

  3. OK

  4. [root@RHEL5 chroot]# named-checkzone test.com var/named/test.com.arpa     #检查反向解析文件是否有错误,有错误则会给出提示信息。

  5. zone test.com/IN: loaded serial 1997022700

  6. OK

启动服务

  1. [root@RHEL5 chroot]# service named start

  2. [root@RHEL5 chroot]# chkconfig named on    #将服务设置为开机自启动

测试

将客户机的DNS设置成刚刚搭建的DNS服务器的IP,然后使用pingnslookup命令测试下是否能够成功解析。


DNS服务器的高级应用

通过DNS服务器实现对web服务器或者其它服务器的均衡负载,实现泛域名解析等等。

均衡负载

实际应用中,可能我们会经常遇到访问量突增的情况,这时候对服务器的压力是非常大的。这时我们可以在多台服务器上搭建相同的服务,使多台服务器同时提供服务。
但是如何让客户访问的时候根据不同的服务器情况分担不同的流量呢,这就需要由DNS服务来实现了:
修改数据库文件:

  1. [root@RHEL5 chroot]# vim var/named/test.com.zone

10 www     IN      A       172.16.1.1  //DNS是迭代解析的,所以同一个条目可以重复增加,那么解析到那条条目的时候就会比其它的多11 www     IN      A       172.16.1.2

泛域名解析

可能用户经常会忘记某个部门的具体域名,这时候如果输入一个错误的域名,通常是访问不到网站的。为了不会丢失用户,我们可以用将所有不存在的域名转向我们的主门户网站:

  1. [root@RHEL5 chroot]# vim var/named/test.com.zone

//在数据库末尾增加如下记录:14 *       IN      A       172.16.1.2 

实现不输入www即可访问网站:

  1. [root@RHEL5 chroot]# vim var/named/test.com.zone

 9 test.com.       IN      NS      172.16.1.2

搭建从DNS服务器

为了防止主DNS服务器突然出现问题,而造成公司的网站不能被外界访问到。我们通常需要为DNS服务器做个备份,这个就是从服务器。

  • 基本要求:
    一台配置好的主DNS服务器。
    一台准备配置从DNS的服务器(*^__^*)

配置从DNS服务器的环境

查询软件包是否已经安装:

  1. [root@localhost ~]# rpm -q bind bind-chroot caching-nameserver

  2. package bind isnot installed

  3. package bind-chroot isnot installed

  4. package caching-nameserver isnot installed

  • 安装软件包:

  1. [root@localhost ~]# yum -y install bind bind-chroot caching-nameserver

(*^__^*) 这里还是使用的yum安装

从DNS服务器的配置

  • 修改主配置文件

  1. #这里与主DNS的配置相同

  2. [root@localhost ~]# cd /var/named/chroot/

  3. [root@localhost chroot]# cp -p etc/named.caching-nameserver.conf etc/named.conf

  4. [root@localhost chroot]# vim etc/named.conf

...15         listen-on port 53 { 172.16.1.253; };...27         allow-query     { any; };28         allow-query-cache { any; };...37         match-clients      { any; };38         match-destinations { any; };...
  • 将数据库文件加入配置文件

  1. [root@localhost chroot]# vim etc/named.rfc1912.zones

//注意这里,与主DNS的配置区别很大50 zone "test.com" IN {51         type slave;  //类型为slave52         file "slaves/test.com.zone"; //文件放在/var/named/chroot/var/named/slaves/下面。//这里填写相对路径53         master { 172.16.1.2; }; //主DNS服务器的地址54 };55 zone "1.16.172.in-addr.arpa" IN {56         type slave;57         file "slaves/test.com.arpa";58         master { 172.16.1.2; };59 };  //数据库文件会在此服务器与主服务器同步的时候自动生成。
  • 检查配置文件的语法

  1. [root@localhost chroot]# named-checkconf etc/named.conf  #如果出现错误,会给出错误提示。正确则无任何返回信息

修改主DNS服务器的配置

为主DNS添加授权信息,允许从DNS同步。

  1. [root@RHEL5 chroot]# vim etc/named.conf

21         allow-transfer { 172.16.1.253; };

修改主DNS服务器的数据库文件

  1. [root@RHEL5 chroot]# vim var/named/test.com.zone

 1 $TTL    86400   ;生存时间,一般不用更改 2 @       IN      SOA     localhost. root.localhost.  ( ;第一个localhost是指搜索域,可以保持默认。第二个是管理员邮箱。 3                                       2014042000 ; Serial    ;数据库的版本号。最好用日期表示,当数据发生变更就给其加1,然后从服务器才会同步数据 4                                       28800      ; Refresh   ;刷新时间 5                                       14400      ; Retry   ;重试时间 6                                       3600000    ; Expire 7                                       86400 )    ; Minimum
  1. [root@RHEL5 chroot]# vim var/named/test.com.arpa  #与正向解析文件一样

  2. [root@RHEL5 chroot]# service named restart   #修改完之后重启服务,不然不会生效

启动从DNS的服务

  1. [root@localhost chroot]# service named start

  2. [root@localhost chroot]# chkconfig named on

验证从DNS是否成功

  1. [root@localhost chroot]# ls var/named/slaves/

  2. test.com.arpa  test.com.zone

  3. # 数据库文件已经同步成功了O(∩_∩)O哈哈~