zoukankan      html  css  js  c++  java
  • 【Linux】【Services】【DNS】bind基础

    1. 概念

    1.1. DNS: Domain Name Service, 应用层协议,占用53/udp, 53/tcp

    1.2. tld(顶级域):Top Level Domain

      组织域:.com, .net, .org, .gov, .edu, .mil

      国家域:.iq, .tw, .hk, .jp, .cn, ...

    1.3. DNS查询类型包括递归查询和迭代查询

    1.4. DNS名称解析方式:正向解析(名称-->IP),反向解析(IP-->名称)

    1.5. DNS服务器类型:负责解析至少一个域(主名称服务器,辅助名称服务器),不负责解析(缓存名称服务器)

    主DNS服务器:维护所负责解析的域数据库的那台服务器;读写操作均可进行;主服务器”通知“从服务器随时更新数据;
    从DNS服务器:从主DNS服务器那里或其它的从DNS服务器那里“复制”一份解析库;但只能进行读操作

    1.6. 区域传送:全量传送:axfr, 传送整个数据库;增量传送:ixfr, 仅传送变量的数据;

    1.7. 区域(zone)和域(domain):比如abc.com是域,在这个域下面包括正向解析和反向解析,每个解析库都有很多的区域。

    1.8. BIND:Berkeley Internet Name Domain,  现在在ISC.org下维护,bind是dns协议的一种实现,named是bind程序的运行的进程名

    2. 区域文件详解:

    2.1 配置文件注解

    magedu.com. 	86400 	IN 		SOA 	magedu.com. 	admin.magedu.com.  (
    2017010801	; serial # 序列号:也即是数据库的版本号;主服务器数据库内容发生变化时,其版本号递增;
    2H 			; refresh # 刷新时间间隔:从服务器每多久到主服务器检查序列号更新状况;
    10M 		; retry # 重试时间间隔:从服务器从主服务器请求同步解析库失败时,再次发起尝试请求的时间间隔;
    1W			; expire # 过期时长:从服务器始终联系不到主服务器时,多久之后放弃从主服务器同步数据;停止提供服务;
    1D			; negative answer ttl # 否定答案的缓存时长:
    )
    

      

    2.2. 资源记录详解:Resource Record, 简称rr;

    资源记录的定义格式:name  [TTL]  IN  RR_TYPE  value 

    SOA:Start Of Authority,起始授权记录; 一个区域解析库有且只能有一个SOA记录,而且必须放在第一条;
      name: 当前区域的名字;例如”mageud.com.”,或者“2.3.4.in-addr.arpa.”;
      value:有多部分组成
        (1) 当前区域的区域名称(也可以使用主DNS服务器名称);
        (2) 当前区域管理员的邮箱地址;但地址中不能使用@符号,一般使用点号来替代;
        (3) (主从服务协调属性的定义以及否定答案的TTL)

    例如

    magedu.com. 	86400 	IN 		SOA 	magedu.com. 	admin.magedu.com.  (
    	2017010801	; serial 
    	2H 		; refresh
    	10M 		; retry
    	1W		; expire
    	1D		; negative answer ttl 
    )
    

      

    NS:Name Service,域名服务记录;一个区域解析库可以有多个NS记录;其中一个为主的;
      name: 当前区域的区域名称
      value:当前区域的某DNS服务器的名字,例如ns.magedu.com.;
      注意:一个区域可以有多个ns记录;

    例如:

    magedu.com. 	86400 	IN 	NS  	ns1.magedu.com.
    magedu.com. 	86400 	IN 	NS  	ns2.magedu.com.
    

      

    MX:Mail eXchanger,邮件交换器;
      name: 当前区域的区域名称
      value:当前区域某邮件交换器的主机名;

      优先级:0-99,数字越小优先级越高;
      注意:MX记录可以有多个;但每个记录的value之前应该有一个数字表示其优先级;

    例如:

    magedu.com. 		IN 	MX 	10  	mx1.magedu.com.
    magedu.com. 		IN 	MX 	20  	mx2.magedu.com.
    

      

    A:Address, 地址记录,FQDN --> IPv4;
      name:某FQDN,例如www.magedu.com.
      value:某IPv4地址;

    例如:

    www.magedu.com.		IN 	A	1.1.1.1
    www.magedu.com.		IN 	A	1.1.1.2
    bbs.magedu.com.			IN 	A	1.1.1.1
    

      

    AAAA:地址记录, FQDN --> IPv6;
      name:FQDN
      value: IPv6

    PTR:Pointer,IP --> FQDN
      name:IP地址,有特定格式,IP反过来写,而且加特定后缀;例如1.2.3.4的记录应该写为4.3.2.1.in-addr.arpa.;
      value:FQND

    例如:

    4.3.2.1.in-addr.arpa.  	IN  PTR	www.magedu.com.
    

      

    CNAME:Canonical Name,别名记录;
      name:FQDN格式的别名;
      value:FQDN格式的正式名字;

    例如:

    web.magedu.com.  	IN  	CNAME  www.magedu.com.
    

      

    注意

      (1) TTL可以从全局继承;
      (2) @表示当前区域的名称;
      (3) 相邻的两条记录其name相同时,后面的可省略;
      (4) 对于正向区域来说,各MX,NS等类型的记录的value为FQDN,此FQDN应该有一个A记录;

    3. BIND的安装和配置:(使用yum即可)

    3.1 BIND程序包及操作系统版本:

    OS:Red Hat Enterprise Linux Server release 7.2 (Maipo)

    Kernel:3.10.0-327.el7.x86_64

    bind-libs.9.9.4-29.el7:被bind和bind-utils包中的程序共同用到的库文件;
    bind-utils.9.9.4-29.el7:bind客户端程序集,例如dig, host, nslookup等;
    bind.9.9.4-29.el7:提供的dns server程序、以及几个常用的测试程序;
    bind-chroot.9.9.4-29.el7:选装,让named运行于jail模式下;

    3.2 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

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

        CentOS 6: service  named  start

        CentOS 7: systemctl  start  named.service

    3.3. BIND主配置文件格式:

      全局配置段:options { ... }

      日志配置段:logging { ... }

      区域配置段:zone { ... } 那些由本机负责解析的区域,或转发的区域;

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

    3.4. 缓存名称服务器的配置:

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

        listen-on port 53 { 172.16.100.67; };

      学习时,建议关闭dnssec

        dnssec-enable no;

        dnssec-validation no;

        dnssec-lookaside no;

      关闭仅允许本地查询:

        //allow-query  { localhost; };

    3.5. 配置解析一个正向区域:

    3.5.1. 定义区域:在主配置文件中或主配置文件辅助配置文件中实现;

    zone  "ZONE_NAME"  IN  {
    	type  {master|slave|hint|forward};
    	file  "ZONE_NAME.zone"; 
    	};
    

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

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

    # cat /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 
    # rndc  reload

      

    3.6. 配置解析一个反向区域

    3.6.1. 定义区域:在主配置文件中或主配置文件辅助配置文件中实现;

    zone  "ZONE_NAME"  IN  {
    	type  {master|slave|hint|forward};
    	file  "ZONE_NAME.zone"; 
    	};	
    

      注意:反向区域的名字,反写的网段地址.in-addr.arpa(100.16.172.in-addr.arpa)

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

    cat 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
    # rndc  reload
    

      

    3.7. 主从服务器(Master/Slave):

    On Master:

    1)确保区域数据中间中为每个从服务器配置NS记录

    2)在正向区域文件需要每个从服务器的NS记录的主机名配置一个A记录

    3)此A后面的地址为真正的从服务器的IP地址

    On Slave:

    1)定义区域

    // zone for cn.infra
    // 养成写注释的好习惯
    
    zone "cn.infra" IN {
            type slave; //没啥好说的,类型为master,forward或者slave
            file "slaves/cn.infra";  //同步主服务器配置的配置文件存放在本地的某个位置
            //主服务的信息
            masters {
                    10.29.248.11; //第一个master,可以写点服务器的信息
                    10.29.248.12; //第二个master
            };
            //允许同步文件的slave服务器
            allow-transfer {
                    10.25.2.1;      //SLAVE DNS IN WUHAN
                    10.24.195.1;    //SLAVE DNS IN TIANJIN
                    10.26.2.30;    //windows server
                    10.26.2.28;    //windows server
            };
            //如果有变动需要通知的服务器
            also-notify {
                    10.25.2.1;      //SLAVE DNS IN WUHAN
                    10.24.195.1;    //SLAVE DNS IN TIANJIN
            };
    };
    

      

    2)named-checkconf

    rndc reload或者systemctl  reload  named.service

    3)注意时间要同步

    3.8. 子域授权:

    在父域上配置:

    ops.magedu.com. 		IN 	NS  	ns1.ops.magedu.com. //NS记录
    ops.magedu.com. 		IN 	NS  	ns2.ops.magedu.com. //NS记录
    ns1.ops.magedu.com. 	IN 	A 	IP.AD.DR.ESS //被授权的子域的A记录
    ns2.ops.magedu.com. 	IN 	A 	IP.AD.DR.ESS //被授权的子域的A记录
    

      

    在子域上配置:

    1)子域的服务器必须允许父域服务器做递归

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

    zone  "ZONE_NAME"  IN {
        type  forward;
        forward  {first|only}; //first:首先转发;转发器不响应时,自行去迭代查询;only:只转发;
        forwarders  { SERVER_IP; };
    };
    

      

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

    options {
        ... ...
        forward  {only|first};
        forwarders  { SERVER_IP; };
        .. ...
    };
    

      

    3.9. 安全相关的配置:

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

    //mynet是acl的集合的名字
    acl  mynet {
        172.16.0.0/16;
        127.0.0.0/8;
    };
    

      

    内置的acl:

    none:没有一个主机;
    any:任意主机;
    local:本机;
    localnet:本机所在的IP所属的网络;

    访问控制指令:
    allow-query {}; 允许查询的主机;白名单;
    allow-transfer {}; 允许向哪些主机做区域传送;默认为向所有主机;应该配置仅允许从服务器;
    allow-recursion {}; 允许哪此主机向当前DNS服务器发起递归查询请求;
    allow-update {}; DDNS,允许动态更新区域数据库文件中内容;

    3.10. 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";
    				};
    			};
    			
    

      

    4.常用命令:

    4.1. named-chceckconf [/etc/named.conf] 检查配置文件语法错误

    4.2. dig:

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

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

        查询选项:

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

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

        注意:反向解析测试

          dig  -x  IP

        模拟完全区域传送:

          dig  -t  axfr  DOMAIN  [@server]

    4.3. host命令:

      host  [-t  RR_TYPE]  name  SERVER_IP

    4.4. nslookup命令:交互式模式

      nslookup  [-options]  [name]  [server]

      nslookup>

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

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

        name:要查询的名称;

    4.5. rndc命令:named服务控制命令

      rndc  status

      rndc  flush

  • 相关阅读:
    target runtime apache v6.0 not defined解决
    java.lang.AbstractMethodError: javax.servlet.jsp.JspFactory.getJspApplicationContext(Ljavax/servlet/ServletContext;)Ljavax/servlet/jsp/JspApplicationContext;
    The valid characters are defined in RFC 7230 and RFC 3986问题
    invalid END header解决方法
    You have more than one version of ‘org.apache.commons.logging.Log’ visible, which is not allowed问题解决
    Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986
    在eclipse中import java web项目时遇到的一些问题并将该项目通过tomcat发布
    java byte转string 涉及到字节流中有中文
    spring+mybatis框架搭建时遇到Mapped Statements collection does not contain value for...的错误
    试试看读一下Zepto源码
  • 原文地址:https://www.cnblogs.com/demonzk/p/6494968.html
Copyright © 2011-2022 走看看