1、安装环境介绍:

   安装的服务器是基于debian8.6.0环境使用源码进行安装的,安装的bind版本为bind9.10.6。安装步骤如下:

  (1)下载bind9.10.6源码包,下载地址如下:

      https://ftp.isc.org/isc/bind9/9.12.2-P1/bind-9.12.2-P1.tar.gz

  (2)我的环境中,存放位置为:/home/ball,下载完毕后请使用winscp进行拖入到相关目录。

  (3)安装openssl运行库。在使用源码进行编译安装bind中,需要openssl运行库的支持,否则会出现以下报错:

      checking for OpenSSL library... configure: error: OpenSSL was not found in any of /usr /usr/local /usr/local/ssl /usr/pkg /usr/sfw; use --with-openssl=/path If you don't want OpenSSL, use --without-openssl

       如遇到上述报错请先安装openssl运行库,命令如下:

       apt install libssl-dev(Debian)           yum install  openssl-devel (CentOS)

  (4)解压bind安装包,进行编译安装。命令如下:

        cd /home/ball/

        tar xvzf bind-9.12.2-P1.tar.gz
        cd bind-9.10.6/
        ./configure --prefix=/usr/local/named  --enable-threads
        make&make install

    命令行--prefix=/usr/local/named表明了我的bind安装位置,--enable-threads为开启多线程处理。 

    (5)安装好以后查看其版本:

  1. # /usr/local/named/sbin/named -v
    BIND 9.12.2-P1 

    (6)创建用户named用户,使用named用户运行dns

    groupadd named  
    useradd -g named -s /sbin/nologin named

    (7)创建配置文件目录

    mkdir /usr/local/named/zones        #保存dns zone配置文件的目录
    mkdir /usr/local/named/log         #保存日志就新建这个目录
    touch /usr/local/named/etc/named.conf        #保存DNS配置文件

    (8)配置主配置文件

    cd /usr/local/named/etc/
    /usr/local/named/sbin/rndc-confgen > rndc.conf
    cat rndc.conf > rndc.key
    chmod 777 /usr/local/named/zones/
    tail -10 rndc.conf | head -9 | sed s/#\ //g > named.conf

    (9)配置dns named文件

    nano /usr/local/named/etc/named.conf 
    options {
        directory "/usr/local/named/zones";    //域名文件存放的绝对路径
        pid-file "named.pid";              //如果bind启动,自动会在/usr/local/named/zones目录生成一个named.pid文件,打开文件就是named进程的ID
    };
    zone "." IN {
        type hint;          //根域名服务器
        file "named.root"; //存放在/usr/local/named/zones目录,文件名为named.root
    };

     (10) 配置named.root根服务器

    #服务器IP地址需要能够上网)
    dig -t NS .
    #产生named.ca文件
    dig -t NS . >/usr/local/named/zones/named.root

    (11)运行DNS服务

    /usr/local/named/sbin/named
    
    #检查DNS服务器运行状态
    /usr/local/named/sbin/rndc status
    WARNING: key file (/usr/local/named/etc/rndc.key) exists, but using default configuration file (/usr/local/named/etc/rndc.conf)
    version: BIND 9.12.2-P1 
    running on dnsball: Linux x86_64 3.16.0-4-amd64 #1 SMP Debian 3.16.36-1+deb8u1 (2016-09-03)
    boot time: Thu, 23 Aug 2018 10:34:24 GMT
    last configured: Thu, 23 Aug 2018 10:34:25 GMT
    configuration file: /usr/local/named/etc/named.conf
    CPUs found: 1
    worker threads: 1
    UDP listeners per interface: 1
    number of zones: 100 (99 automatic)
    debug level: 0
    xfers running: 0
    xfers deferred: 0
    soa queries in progress: 0
    query logging is OFF
    recursive clients: 0/900/1000
    tcp clients: 0/150
    server is up and running

        (12)配置named.conf解析

    ln -s /usr/local/named/etc/named.conf /etc/named.conf
    cat /usr/local/named/etc/named.conf 
    #rndc控制密钥
    key "rndc-key" {
        algorithm hmac-sha256;
        secret "c6iamWqbzArFvUn7BUt27c8MNUU+G9TkVz8ADbnXNRI=";
    };
    #服务监听端口
    controls {
        inet 127.0.0.1 port 953
                allow { 127.0.0.1; } keys { "rndc-key"; };
    };

    #配置zone配置文件目录
    options {
        directory "/usr/local/named/zones";
         pid-file "named.pid"; 
    };


    #配置根DNS服务器配置文件
    zone "." {
        type hint;
        file "/usr/local/named/etc/named.root";
    };

    #配置log日志服务
    logging
    {
	channel dnsquery.log
	{
		file "/usr/local/named/log/dnsquery.log" versions 3 size 10M;
		severity info;
		print-time yes;
	};
	category queries { dnsquery.log; };
    };
    view "internal"
    {
	zone "dnsball.com" in
	{
		type master;
		file"dnsball.com.internal";
	};

	zone "1.168.192.in-addr.arpa" in 
	{
		type master;
		file"1.168.192.in-addr.arpa.internal";	
	};
    };