DNS实战二——DNS单机部署

1. 安装BIND9

Bind是一款开放源码的DNS服务器软件,Bind由美国加州大学Berkeley分校开发和维护的,全名为Berkeley Internet Name Domain,它是目前世界上使用最为广泛的DNS

  • 1.1 配置yum源

    使用centos6.5自带的yum源即可,同时确保机器可以解析外网域名,并能连接公网

  • 1.2 yum安装bind

    在生产环境中如果有防火墙等设备限制时,DNS的53端口TCP和UDP要同时都打开,解析外网穿透出去时,UDP有可能被某些网络设备截断,此时DNS会转成TCP协议出去。

    [root@master ~]# yum install bind-utils bind bind-devel bind-chroot -y
    [root@master ~]# rpm -qa | grep ^bind
    bind-utils-9.8.2-0.47.rc1.el6_8.4.x86_64
    bind-9.8.2-0.47.rc1.el6_8.4.x86_64
    bind-libs-9.8.2-0.47.rc1.el6_8.4.x86_64
    bind-devel-9.8.2-0.47.rc1.el6_8.4.x86_64
    bind-chroot-9.8.2-0.47.rc1.el6_8.4.x86_64

                                         

2. 单机DNS部署

  • 编辑/etc/named.conf(bind主配置文件),全删ggdG,写入如下内容

    options {       
     version "1.1.1";
     listen-on port 53 {any;};     #监控端口
     directory "/var/named/chroot/etc/";       #zone文件的配置目录
     pid-file "/var/named/chroot/var/run/named/named.pid";
     allow-query { any; };         #允许解析访问源,可以配置IP或IP段
     Dump-file "/var/named/chroot/var/log/binddump.db";
     Statistics-file "/var/named/chroot/var/log/named_stats";      #查看DNS状态,可用来做监控
     zone-statistics yes;      #配成yes才能往里写
     memstatistics-file "log/mem_stats";   #内存状态
     empty-zones-enable no;        
     forwarders {202.106.196.115;8.8.8.8; };       #转发,没有记录则转发去请求
    };

    key "rndc-key" {            #rndc连接bind实现reload,动态加载等操作
           algorithm hmac-md5;
           secret "Eqw4hClGExUWeDkKBX/pBg==";
    };

    controls {  
          inet 127.0.0.1 port 953
                  allow { 127.0.0.1; } keys { "rndc-key"; };
    };

    logging {       #日志
     channel warning {
       file "/var/named/chroot/var/log/dns_warning" versions 10 size 10m;
       severity warning;
       print-category yes;
       print-severity yes;
       print-time yes;
     };
     channel general_dns {     #访问日志
       file "/var/named/chroot/var/log/dns_log" versions 10 size 100m;
       severity info;
       print-category yes;
       print-severity yes;
       print-time yes;
     };
     category default {    #默认日志走warning定义,访问日志走general
       warning;
     };
     category queries {
       general_dns;
     };
    };

    include "/var/named/chroot/etc/view.conf";      #引入其它域的文件,为实现智能dns功能作预留

  • 编辑/etc/rndc.key

    key "rndc-key" {
           algorithm hmac-md5;
           secret "Eqw4hClGExUWeDkKBX/pBg==";
    };

  • 编辑/etc/rndc.conf(默认没有此文件,直接编辑)

  • key "rndc-key" {
           algorithm hmac-md5;
           secret "Eqw4hClGExUWeDkKBX/pBg==";
    };

    options {
           default-key "rndc-key";
           default-server 127.0.0.1;
           default-port 953;
    };
  • 编辑/var/named/chroot/etc/view.conf(现在开始真正的配置A记录等配置)

    [root@master ~]# vim /var/named/chroot/etc/view.conf
    view "View" {   #zone的标记说明
     zone "example.com" {          #域名的zone
       type master;                #类型主dns
       file "example.com.zone";    #引入的zone文件,通过lnh.com这个zone进入的解析要找的文件
       allow-transfer {                #允许10.255.253.211过来同步数据
               10.255.253.211;
     };
       notify yes;                 #master文件变更时发送通知给10.255.253.211
       also-notify {
               10.255.253.211;
     };
    };

  • 编辑zone文件

    [root@master ~]# vim /var/named/chroot/etc/example.com.zone
    $ORIGIN .       #zone生效的域
    $TTL 3600       ; 1 hour    #域名变更的生效周期,内网可以调短,外网一般20钟
    example.com                  IN SOA  op.example.com. dns.example.com. ( #SOA标记
                                   2000       ; serial         #手动自增数,以些数字是否自增判断是否有变更
                                   900        ; refresh (15 minutes)   #超过此设定时间slave没来同步,判定slave已脱离
                                   600        ; retry (10 minutes)     #15分钟后隔10分钟给slave发现探测
                                   86400      ; expire (1 day)         #1天slave没找我,判断slave已经完蛋了
                                   3600       ; minimum (1 hour)
                                   )
                           NS      op.example.com.     #申明我是example.com这个zone的nameserver,告诉别人我有example这个zone下的所有解析记录,必须有一条A记录对应op.example.com
    $ORIGIN example.com.
    op              A       1.2.3.4
    a               A       1.2.3.4     #建立一条A记录,解析a.example.com

  • 修改目录权限,并启动服务

    [root@master ~]# cd /var && chown -R named.named named/
    [root@master var]# /etc/init.d/named start
    [root@master ~]# chkconfig named on
    
    #查看named监听端口
    [root@master ~]# netstat -tunpl |grep named
    tcp        0      0 192.168.56.13:53            0.0.0.0:*                   LISTEN      5428/named          
    tcp        0      0 127.0.0.1:53                0.0.0.0:*                   LISTEN      5428/named          
    tcp        0      0 127.0.0.1:953               0.0.0.0:*                   LISTEN      5428/named          
    udp        0      0 192.168.56.13:53            0.0.0.0:*                               5428/named          
    udp        0      0 127.0.0.1:53                0.0.0.0:*                               5428/named

    192.168.56.13:53和127.0.0.1:53是对外提供服务 ,953端口是rndc监听bind的端口

  • 检测DNS解析结果

    [root@master ~]# dig @127.0.0.1 a.example.com   
    #指定用127.0.0.1的dns去解析a.example.com的域名
    如果dig没有加@,则系统会根据/etc/resolv.conf下nameserver去解析域名

    ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.47.rc1.el6_8.4 <<>> @127.0.0.1 a.example.com
    ; (1 server found)
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 61078
    ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

    ;; QUESTION SECTION:
    ;a.example.com.         IN  A

    ;; ANSWER SECTION:
    a.example.com.      3600    IN  A   1.2.3.4

    ;; AUTHORITY SECTION:
    example.com.        3600    IN  NS  op.example.com.

    ;; ADDITIONAL SECTION:
    op.example.com.     3600    IN  A   1.2.3.4

    ;; Query time: 39 msec
    ;; SERVER: 127.0.0.1#53(127.0.0.1)
    ;; WHEN: Thu Mar 16 04:08:16 2017
    ;; MSG SIZE  rcvd: 80

    yum安装bind9.8版本有个漏洞,推荐使用源码包编译安装。DNS是基础服务,除非必要升级轻易不要动!

anzhihe 安志合个人博客,版权所有 丨 如未注明,均为原创 丨 转载请注明转自:https://chegva.com/1714.html | ☆★★每天进步一点点,加油!★★☆ | 

您可能还感兴趣的文章!

发表评论

电子邮件地址不会被公开。 必填项已用*标注