使用bind构建本地简易dns服务器


    本篇博客主要介绍如何在linux上构建简易dns服务器,内容涵盖本地dns解析,主从dns服务器区域传送、rndc的使用以及如何在主域中添加子域


说明:

    本实验操作均在VMware10上实现,需要准备三台虚拟机(Redhat Enterprise Linux 5.8),一台作为主dns服务器,一台作为从dns服务器使用,另一台作为子域dns服务器,当然也可以通过克隆的方式克隆主dns服务器虚拟机并重新配置IP即可。作者将主dns服务器端IP设为:192.168.134.2,从dns服务器端的IP设为:192.168.134.22,子域dns服务器的IP设为:192.168.134.8。根据个人设定不同,需要修改相应配置文件中的设置。


实现:


1、安装bind97(主从dns服务器都需要安装)

说明:系统上已经安装了bind,需先卸载相关软件包

bind97安装后的部分文件介绍:

        /etc/named.conf: 主配置文件(权限640)

            options: 全局选项,定义bind软件的工作属性:监听设置 (选项:“值”)

                directory: 指明数据文件目录

            logging: 定义如何生成和保存日志

            zone: 定义区域

            include: 包含其它路径下的配置文件

        /usr/sbin/

            named-checkconf: 检查配置文件是否有语法错误

            named-checkzone:区域配置文件是否有语法错误

            named-compilezone:编译zone

        /var/named/:区域数据文件存放路径

            named.ca:13个根节点服务器的地址(A-M),可使用bind97-utils手动生成

                

            named.localhost: 主机名正向解析数据文件

            named.loopback: 主机名反向解析数据文件


    bind list all bind*
    yum remove bind
    yum remove bind-libs
    yum -y install bind97-utils
    yum -y install bind97-libs
    yum -y install bind97
    rpm -ql bind97   # 查看bind97安装后生成的文件列表
    cp /etc/named.conf /etc/named.conf.orig # 备份主配置文件


2、配置主dns服务器

    1、修改主配置文件

    说明:

    directory "/var/named":数据文件存放路径

    allow-recursion:定义允许递归查询的IP范围

    type hint:指明域类型

    file "named.ca":指定域数据文件存放路径(使用的是相对路径 == /etc/named/named.ca)

    allow-transfer { none; }:定义允许指定IP的服务器进行区域传送,一般指定为从服务器IP

    vim /etc/named.conf
    # 修改主配置文件为:
        options {
                directory "/var/named";
                allow-recursion { 192.168.134.0/24; };
        };
    
        zone "." IN {
                type hint;
                file "named.ca";
        };
    
        zone "localhost" IN {
                type master;
                file "named.localhost";
                allow-transfer { none; };
        };
    
        zone "0.0.127.in-addr.arpa" IN {
                type master;
                file "named.loopback";
                allow-transfer { none; };
        };
    
        zone "tb.com" IN {
                type master;
                file "tb.com.zone";
                allow-transfer { 192.168.134.22; };
        };
    
        zone "134.168.192.in-addr.arpa" IN {
                type master;
                file "192.168.134.zone";
                allow-transfer { 192.168.134.22; };
        };


    2、新建对应的区域数据文件

    说明:

        @:在DNS文件中表示域名

        SOA: 起始授权记录

        NS:dns服务器记录

        MX:邮件记录

        A: IPv4地址正向解析记录

        CNAME: 别名记录

        PTR: 反向域名解析记录

    

    cd /var/named
    vim tb.com.zone
    # 编辑资源记录如下
        $TTL 600
    
        @       IN      SOA     ns1.tb.com.     admin.tb.com. (
                                2016052801
                                1H  
                                5M  
                                2D  
                                1H )
                IN      NS      ns1 
                IN      NS      ns2 
                IN      MX  10  mail
        ns1     IN      A       192.168.134.2
        ns2     IN      A       192.168.134.22
        www     IN      A       192.168.134.3
        mail    IN      A       192.168.134.4
        ftp     IN      CNAME   www 
        tb.com  IN      A       192.168.134.3
    vim 192.168.134.zone
    # 编辑资源记录如下
        $TTL 600
    
        @       IN      SOA     ns1.tb.com.     admin.tb.com. (
                                2016052801
                                1H  
                                5M  
                                2D  
                                1H )
                IN      NS      ns1.tb.com.
                IN      NS      ns2.tb.com.
        3       IN      PTR     www.tb.com.
        4       IN      PTR     mail.tb.com.
    # 修改数据文件的属主、属组以及权限
    chown root:named tb.com.zone
    chmod 640 tb.com.zone
    chown root:named 192.168.134.zone
    chmod root:named 192.168.134.zone


    3、修改dns配置

    vim /etc/resolv.conf
    # 添加如下记录并将其它nameserver记录暂时注释 
        nameserver 192.168.134.2


    4、启用服务

        service named start


    5、至此,主dns服务器的配置就完成了,先使用dig测试

    dig简要说明:

        dig -t NS tb.com @192.168.134.2

            -t: 指定资源记录类型

            tb.com:查询对象

            @IP:指定使用指定的dns服务器进行查询

    作者测试结果:

wKioL1dLyweg9QpWAAHuH5vT0_c445.jpg-wh_50

wKioL1dLy2iirDz5AAJv0fx_4bg578.jpg-wh_50


3、配置从dns服务器

    1、编辑主配置文件

    vim /etc/named.conf
    # 编辑配置文件如下,与主dns服务器的区别在于type slave
        options {
                directory  "/var/named";
                
        };
    
        zone "." IN {
                type hint;
                file "named.ca";
        };
    
        zone "localhost" IN {
                type master;
                file "named.localhost";
                allow-transfer { none; };
        };
    
        zone "0.0.127.in-addr.arpa" IN {
                type master;
                file "named.loopback";
                allow-transfer { none; };
        };
    
        zone "tb.com" IN {
                type slave;
                file "slaves/tb.com.zone";
                masters { 192.168.134.2; };
                allow-transfer { none; };
        };
    
        zone "134.168.192.in-addr.arpa" IN {
                type slave;
                file "slaves/192.168.134.zone";
                masters { 192.168.134.2; };
                allow-transfer { none; };
        };


    2、至此,从dns服务器配置已完成,启用服务

        service named start


    3、测试主从dns服务器完全区域传送

    作者测试结果

wKioL1dLy5LQYKi_AAMkswCfU6Y983.jpg-wh_50

    

4、给dns服务器添加远程域名服务器控制器(rndc)

1)、实现本地rndc控制,本操作在主dns服务器中完成

    1、生成rndc配置文件

    rndc-confgen > /etc/rndc.conf
    vim /etc/rndc.conf
    # 复制所需内容追加至/etc/named.conf文件中
    # 所需复制内容如下:
        # Use with the following in named.conf, adjusting the allow list as needed:
        # key "rndc-key" {
        #       algorithm hmac-md5;
        #       secret "qMdLUBIveV7aEDn87esq5g==";
        # };
        # 
        # controls {
        #       inet 127.0.0.1 port 953
        #               allow { 127.0.0.1; } keys { "rndc-key"; };
        # };
        # End of named.conf
        >.,$-1w >> /etc/named.conf


    2、编辑主配置文件

    vim /etc/named.conf
    # 去除rndc文件注释
    # 即修改追加内容为:
        # Use with the following in named.conf, adjusting the allow list as needed:
        key "rndc-key" {
                algorithm hmac-md5;
                secret "qMdLUBIveV7aEDn87esq5g==";
        };
    
        controls {
                inet 127.0.0.1 port 953
                        allow { 127.0.0.1; } keys { "rndc-key"; };
        };

    

    3、测试本地rndc控制

    说明:rndc -c /etc/rndc.conf status

        -c: 指定rndc的配置文件

        status: 查看状态信息

        (rndc命令的使用可使用rndc -h查看)

 

        rm -f /etc/rndc.key # 删除bind启用后自动生成的rndc.key

        service named restart

        rndc -c /etc/rndc.conf status

    作者测试结果:

wKioL1dLy9TSmWIAAAEPCMxvMdQ807.jpg-wh_50


1)、实现远程rndc控制

    1、修改主dns服务器中的主配置文件

    vim /etc/named.conf
    # 修改内容如下:
    controls {
            inet 192.168.134.2 port 953 
                    allow { 192.168.134.22; } keys { "rndc-key"; };
    };


    2、复制主dns服务器中的rndc配置文件至从dns服务器中(主dns服务器中执行)

    注意:在复制时需要注意避免文件覆盖问题,这里复制配置文件至/root目录下

        scp /etc/rndc.conf 192.168.134.22:/root/

    3、在从dns服务器中修改rndc配置文件

    vim rndc.conf
    # 修改默认服务器IP:
  
        options {
             default-key "rndc-key";
             default-server 192.168.134.2;
             default-port 953;
        };

    

    4、测试远程rndc控制

    作者测试结果: 

wKioL1dLzALQJhkoAAE3Ri7SC8U011.jpg-wh_50


5、往主域中添加子域

说明:当前主域为tb.com.,当前目的是在主域中添加子域fin.tb.com.;

   以下内容是基于上述操作实现后的补充内容,基本操作与上述相同,因此部分内容省略

    1、修改主域数据文件,为子域授权

    vim /var/named/tb.com.zone
    # 添加授权记录并修改序列号(序列号+1):
        fin     IN      NS      ns1.fin
        ns1.fin IN      A       192.168.134.8


    2、在反向域中添加资源记录

    vim 192.168.134.zone 
    # 添加以下记录(序列号+1):
                IN      NS      ns1.fin.tb.com.


    3、重启主域dns服务器

    server named restart


     4、启用并配置子域主机,这里设置子域主机IP为:192.168.134.8

    vim /etc/named.conf
    # 此时当前主机域为fin.tb.com,并设置子域访问主域时采用转发域的形式访问
    # 主要变动内容如下:
        zone "fin.tb.com" IN {
                type master;
                file "fin.tb.com.zone";
        };
    
        zone "tb.com" IN {
                type forward;
                forward first;
                forwarders { 192.168.134.2; };
        };
    vim /var/named/fin.tb.com.zone
    # 添加数据文件
    # 编辑内容如下:
    $TTL 600
    
    @       IN      SOA     ns1.fin.tb.com. admin.fin.tb.com. (
                            2016052801
                            1H
                            5M
                            2D
                            1H )
            IN      NS      ns1
            IN      MX  10  mail
    ns1     IN      A       192.168.134.8
    www     IN      A       192.168.134.10
    mail    IN      A       192.168.134.9

     修改记录文件的属主、属组及权限

    cd /var/named/
    chown root:named fin.tb.com.zone
    chmod 640 fin.tb.com.zone
    service named start


    5、子域测试

    

wKioL1dMCh6Cfy_KAAC9Zsi8lao120.jpg-wh_50


    好了,以上就是bind相关的部分操作,缺漏处还望指出


    


    


   

    



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章