linux服务之DNS

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux服务之DNS相关的知识,希望对你有一定的参考价值。

DNS and Bind(2)


 BIND的安装配置:

  BIND: Berkeley Internet Name Domain,  ISC.org

   dns: 协议

   bind: dns协议的一种实现

   named:bind程序的运行的进程名

   

  程序包:

   bind-libs:被bind和bind-utils包中的程序共同用到的库文件;

   bind-utils:bind客户端程序集,例如dig, host, nslookup等;

   

   bind:提供的dns server程序、以及几个常用的测试程序;

   bind-chroot:选装,让named运行于jail模式下;

   

  bind:

   主配置文件:/etc/named.conf 

    或包含进来其它文件;

     /etc/named.iscdlv.key

     /etc/named.rfc1912.zones

     /etc/named.root.key

   解析库文件:

    /var/named/目录下;

     一般名字为:ZONE_NAME.zone

     

    注意:(1) 一台DNS服务器可同时为多个区域提供解析;

        (2) 必须要有根区域解析库文件: named.ca;

        (3) 还应该有两个区域解析库文件:localhost和127.0.0.1的正反向解析库;

       正向:named.localhost

       反向:named.loopback

       

   rndc:remote name domain contoller

    953/tcp,但默认监听于127.0.0.1地址,因此仅允许本地使用;

    

   bind程序安装完成之后,默认即可做缓存名称服务器使用;如果没有专门负责解析的区域,直接即可启动服务;

    CentOS 6: service  named  start

    CentOS 7: systemctl  start  named.service

    

   主配置文件格式:

    全局配置段:

     options { ... }

    日志配置段:

     logging { ... }

    区域配置段:

     zone { ... }

      那些由本机负责解析的区域,或转发的区域;

      

     注意:每个配置语句必须以分号结尾;

      

    缓存名称服务器的配置:

     监听能与外部主机通信的地址;     

      listen-on port 53;

      listen-on port 53 { 172.16.100.67; };

      

     学习时,建议关闭dnssec

      dnssec-enable no;

      dnssec-validation no;

      dnssec-lookaside no; 

      

     关闭仅允许本地查询:

      //allow-query  { localhost; };

   

    检查配置文件语法错误:

     named-checkconf   [/etc/named.conf]

     

    测试工具:

     dig, host, nslookup等

     

     dig命令:

      dig  [-t RR_TYPE]  name  [@SERVER]  [query options]

      

       用于测试dns系统,因此其不会查询hosts文件;

       

       查询选项:

        +[no]trace:跟踪解析过程;

        +[no]recurse:进行递归解析;

        

       注意:反向解析测试

        dig  -x  IP

        

       模拟完全区域传送:

        dig  -t  axfr  DOMAIN  [@server]

        

     host命令:

      host  [-t  RR_TYPE]  name  SERVER_IP

      

     nslookup命令:

      nslookup  [-options]  [name]  [server]

      

      交互式模式:

       nslookup>

        server  IP:以指定的IP为DNS服务器进行查询;

        set  q=RR_TYPE:要查询的资源记录类型;

        name:要查询的名称;

        

     rndc命令:named服务控制命令

      rndc  status

      rndc  flush

      

   配置解析一个正向区域:

    

    以magedu.com域为例:

    

    (1) 定义区域

     在主配置文件中或主配置文件辅助配置文件中实现;

      zone  "ZONE_NAME"  IN  {

       type  {master|slave|hint|forward};

       file  "ZONE_NAME.zone"; 

      }; 

      

      注意:区域名字即为域名;

     

    (2) 建立区域数据文件(主要记录为A或AAAA记录)

     在/var/named目录下建立区域数据文件;

      

      文件为:/var/named/magedu.com.zone

       $TTL 3600

       $ORIGIN magedu.com.

       @       IN      SOA     ns1.magedu.com.   dnsadmin.magedu.com. (

         2017010801

         1H

         10M

         3D

         1D )

        IN      NS      ns1

        IN      MX   10 mx1

        IN      MX   20 mx2

       ns1     IN      A       172.16.100.67

       mx1     IN      A       172.16.100.68

       mx2     IN      A       172.16.100.69

       www     IN      A       172.16.100.67

       web     IN      CNAME   www

       bbs     IN      A       172.16.100.70

       bbs     IN      A       172.16.100.71

      

      权限及属组修改:

       # chgrp  named  /var/named/magedu.com.zone

       # chmod  o=  /var/named/magedu.com.zone

       

      检查语法错误:

       # named-checkzone  ZONE_NAME   ZONE_FILE

       # named-checkconf 

       

    (3) 让服务器重载配置文件和区域数据文件

     # rndc  reload 或

     # systemctl  reload  named.service

     

   配置解析一个反向区域

    (1) 定义区域

     在主配置文件中或主配置文件辅助配置文件中实现;

      zone  "ZONE_NAME"  IN  {

       type  {master|slave|hint|forward};

       file  "ZONE_NAME.zone"; 

      }; 

      

      注意:反向区域的名字

       反写的网段地址.in-addr.arpa 

        100.16.172.in-addr.arpa

        

    (2) 定义区域解析库文件(主要记录为PTR)

     

     示例,区域名称为100.16.172.in-addr.arpa;

     

      $TTL 3600

      $ORIGIN 100.16.172.in-addr.arpa.

      @       IN      SOA     ns1.magedu.com.  nsadmin.magedu.com. (

        2017010801

        1H

        10M

        3D

        12H )

       IN      NS      ns1.magedu.com.

      67      IN      PTR     ns1.magedu.com.

      68      IN      PTR     mx1.magedu.com.

      69      IN      PTR     mx2.magedu.com.

      70      IN      PTR     bbs.magedu.com.

      71      IN      PTR     bbs.magedu.com.

      67      IN      PTR     www.magedu.com.     

         

      权限及属组修改:

       # chgrp  named  /var/named/172.16.100.zone

       # chmod  o=  /var/named/172.16.100.zone

       

      检查语法错误:

       # named-checkzone  ZONE_NAME   ZONE_FILE

       # named-checkconf 

       

    (3) 让服务器重载配置文件和区域数据文件

     # rndc  reload 或

     # systemctl  reload  named.service     

               

     

 主从服务器:

  注意:从服务器是区域级别的概念;

  

  配置一个从区域:

   On Slave 

    (1) 定义区域

     定义一个从区域; 

      zone "ZONE_NAME"  IN {

       type  slave;

       file  "slaves/ZONE_NAME.zone";

       masters  { MASTER_IP; };

      };

      

      配置文件语法检查:named-checkconf

      

    (2) 重载配置

     rndc  reload

     systemctl  reload  named.service

    

   On Master

    (1) 确保区域数据文件中为每个从服务配置NS记录,并且在正向区域文件需要每个从服务器的NS记录的主机名配置一个A记录,且此A后面的地址为真正的从服务器的IP地址;

    

   注意:时间要同步;

    ntpdate命令;

    

 子域授权:

  

  正向解析区域授权子域的方法:

   ops.magedu.com.   IN  NS   ns1.ops.magedu.com.

   ops.magedu.com.   IN  NS   ns2.ops.magedu.com.

   ns1.ops.magedu.com.  IN  A  IP.AD.DR.ESS

   ns2.ops.magedu.com.  IN  A  IP.AD.DR.ESS


  定义转发:

   注意:被转发的服务器必须允许为当前服务做递归;

   

   (1) 区域转发:仅转发对某特定区域的解析请求;

    zone  "ZONE_NAME"  IN {

     type  forward;

     forward  {first|only};

     forwarders  { SERVER_IP; };

    };

    

    first:首先转发;转发器不响应时,自行去迭代查询;

    only:只转发;

    

   (2) 全局转发:针对凡本地没有通过zone定义的区域查询请求,通通转给某转发器;

    options {

     ... ...

     forward  {only|first};

     forwarders  { SERVER_IP; };

     .. ...

    };

    

 bind中的安全相关的配置:

  acl:访问控制列表;把一个或多个地址归并一个命名的集合,随后通过此名称即可对此集全内的所有主机实现统一调用;

  

   acl  acl_name  {

    ip;

    net/prelen;

   };

    

   示例:

    acl  mynet {

     172.16.0.0/16;

     127.0.0.0/8;

    };

    

   bind有四个内置的acl

    none:没有一个主机;

    any:任意主机;

    local:本机;

    localnet:本机所在的IP所属的网络;

    

  访问控制指令:

   allow-query  {};  允许查询的主机;白名单;

   allow-transfer {};  允许向哪些主机做区域传送;默认为向所有主机;应该配置仅允许从服务器;

   allow-recursion {}; 允许哪此主机向当前DNS服务器发起递归查询请求; 

   allow-update {}; DDNS,允许动态更新区域数据库文件中内容;

   

 bind view:

  视图:

   view  VIEW_NAME {

    zone

    zone

    zone

   }

   

   

   view internal  {

    match-clients { 172.16.0.0/8; };

    zone "magedu.com"  IN {

     type master;

     file  "magedu.com/internal";

    };

   };

   

   view external {

    match-clients { any; };

    zone "magecdu.com" IN {

     type master;

     file magedu.com/external";

    };

   };

   

 课外作业:whois命令; 注册一个域名;

 

 博客作业:正向解析区域、反向解析区域;主/从;子域;基本安全控制; 


以上是关于linux服务之DNS的主要内容,如果未能解决你的问题,请参考以下文章

Linux之SAMBA文件共享服务器

Linux之FTP文件共享服务

Linux之Web服务Httpd服务配置之四

Linux学习笔记之十————Linux常用服务器构建之ftp服务器

Linux之Web服务Httpd服务配置之二

Linux 服务器搭建之Samba服务