DNS(2) -- bind服务介绍及配置文件语法格式


[TOC]


1. bind服务

1.1 bind概述

BIND 是由美国加州大学开发并且维护的,BIND是一个开源、稳定、且应用广泛的DNS服务。

  • 开源:指 BIND 服务源代码是开放的;
  • 稳定:指 BIND 服务运行非常稳定;
  • 广泛:政府企业、单位机构、学校、等;

BIND提供域名解析服务、权威域名服务、DNS调试工具:

  • 域名解析服务:将域名解析为IP地址;
  • 权威域名服务:能从该服务器查询到完整域名对应的IP地址,则这台服务器就算权威解析;
  • DNS调试工具:主要提供DNS客户端调试工具,供客户端使用;

1.2 bind程序包结构

  • 安装bind

    [root@dns01 ~]# yum install bind bind-utils
    
    [root@dns01 ~]# rpm -q bind
    bind-9.11.4-16.P2.el7.x86_64
    

    其中:

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

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

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

  • bind包文件:

    • bind的system的unit文件:

      /usr/lib/systemd/system/named.service

    • bind主配置文件:

      /etc/named.conf

    • 主程序文件:

      /usr/sbin/named

    • bind子配置文件:

      /etc/named.rfc1912.zones

    • 区域解析数据库文件,也就是IP地址与域名的对应关系存放的目录:

      /var/named

  • bind的日志文件默认存放在/var/log/messages文件中。

1.3 bind配置文件详解

1.3.1 bind配置文件

1.3.1.1 bind主配置文件
  • 主配置文件组成部分::

    • options :全局选项(监听端口、数据文件存储位置、缓存位置、权限等)
    • logging :服务日志选项
    • zone . :自定义区域配置
    • include :包含其他的文件
  • 主配置文件注意事项

    • 语法非常严格;
    • 文件权限属主 root ,属组 named ,文件权限 640;
  • 配置文件各个字段意义:

    [root@dns01 ~]# cat /etc/named.conf 
    options {
        #监听的地址和端口,localhost表示监听在本机所有地址上;
      listen-on port 53 { localhost; };
      listen-on-v6 port 53 { ::1; };
      #区域数据库文件存放的目录;
      directory 	"/var/named";
      #dns解析过内容的缓存文件
      dump-file 	"/var/named/data/cache_dump.db";
      #静态解析文件(几乎不用)
      statistics-file "/var/named/data/named_stats.txt";
      #内存的统计信息
      memstatistics-file "/var/named/data/named_mem_stats.txt";
      recursing-file  "/var/named/data/named.recursing";
      secroots-file   "/var/named/data/named.secroots";
      #允许谁向本台DNS发起查询请求(localhost|ip|any);
      allow-query     { any; };
      #本DNS是否提供递归请求服务,yes表示提供,no表示不提供;
      recursion yes;
      dnssec-enable yes;
      dnssec-validation yes;
    
      /* Path to ISC DLV key */
      bindkeys-file "/etc/named.root.key";
    
      managed-keys-directory "/var/named/dynamic";
    
      pid-file "/run/named/named.pid";
      session-keyfile "/run/named/session.key";
    };
    #控制日志输出的级别以及输出的位置
    logging {
            channel default_debug {
                    file "data/named.run";
                    severity dynamic;
            };
    };
    #默认可以对任何域名提供解析服务;因为named.ca中存储的是全球根域服务器;
    zone "." IN {
      type hint;
      #区域配置文件名称;
      file "named.ca";
    };
    #包含的其他文件;
    include "/etc/named.rfc1912.zones";
    include "/etc/named.root.key";
    
1.3.1.2 bind区域配置文件

可以使用bind来解析自定义的的域名,需要配置自定义的区域解析文件。

自定义域分为如下两类:

  • 主机域:
    • 1.主机域其实是一个假域;
    • 2.主机域其实是不能解析到互联网上;
    • 3.主机域它只对局域网(内网)提供服务;
  • 业务域:
    • 1.业务域一般都是真实可用的;
    • 2.业务域则为一个真正需要对外提供服务的域名;

首先要自定义区域配置文件,指明区域解析文件的名称:

  • 区域 zone 文件定义在 /etc/named.conf 配置;

  • 也可以配置在自定义的其他文件里,并在 named.conf 里 include;

  • 注意文件的权限,属主 root 属组 named 文件权限 640;

    zone "example.com" IN { 
      type master|slave; 
      #自定义区域类型 
      file /path/to/zonefile; 
      #绝对路径和相对路径 
      allow-update {ip|none}; 
      #允许哪个ip可以使用nsupdate动态更新 区域文件 
    };
    

1.3.2 区域解析文件

  • 自定义的区域数据库解析范例以及编写注意事项:

    • 1.严格注意语法书写,其格式非常严格;
    • 2.记录不准许折行书写;
    • 3.单行记录开头不准许空格或tab开头;
    • 4.文件权限属主 root ,属组 named ,文件权限 640;
  • 资源记录语法格式

    区域数据库解析文件是由资源记录RR组成的,不论哪种记录都包含五项元素,其语法格式如下:

    语法:name [TTL] IN rr_type value
    
    元素说明:
    name	指示拥有资源记录的 DNS 域名,该名称与资源记录所在的控制台树节点的名称相同
    TTL	 缓存的时间,生命期,以秒为单位,可定义为类似变量$TTL 86400,那么以下各条相同时间的资源记录就可以省略
    IN	 代表Internet,保留下来不动就可以
    rr_type	 资源记录类型,例如SOA,表示起始授权记录
    value	 记录特定数据,描述资源的信息
    

    注意:

    • @代表当前区域的域名,可以用来引用当前域名,例如@ IN SOA;

    • 同一个名字可以通过多条记录定义多个不同的值;此时DNS服务器会以轮询方式响应

    • 同一个值也可能有多个不同的定义名字;通过多个不同的名字指向同一个值进行定义;此仅表示通过多个不同的名字可以找到同一个主机;

1.3.2.1 SOA记录

SOA记录位于解析文件的开始,每个解析文件都有唯一一个SOA记录,用于描述这个区域的整体信息,格式如下:

$TTL 86400     <==定义整个记录的TTL时间为86400	

|example.com. | IN | SOA | ns.example.com. | nsadmin.example.com.| (
|     name   | IN |TYPE|     value 1     |       value 2      |
2021071501 ;serial          			<==value 3
2H         ;refresh         			<==value 4           
10M        ;retry           			<==value 5
1W         ;expire          			<==value 6
1D )       ;negative answer ttl         <==value 7

以上的元素意义如下:

元素 意义
name 当前区域的名字,例如“example.com.” com后的点必须写,不然系统会自动将域名再补一次,变成"example.com.example.com."
type 资源类型为SOA类型
value1 主DNS的名称,例如ns.example.com.
value2 DNS服务器的管理员邮箱,注意:因为@在资源记录中有特殊含义,这里用点来代替,例如nsadmin.example.com.
value3 序列号(serial number) 十进制表示,不能超过10位,通常使用日期时间戳,例如2021071501;其作用是主从同步,当主DNS服务器的解析文件发生变化时,管理员需要手动更新此序列号的值,主服务器比对主从的序列号不一致,会立刻进行主从同步操作,否则会等待刷新时间到了才由从服务器同步主服务器数据。
value4 刷新时间,表示从服务器从主服务器请求同步解析的时间间隔,默认以秒为单位,支持1h、1d表示,例如:2H。
value5 重试时间,表示从服务器请求同步失败时,再次尝试同步的时间间隔,应该比同步间隔小 ,例如10m。
value6 过期时间,表示从服务器联系不到主服务器时,辅助DNS在多长时间内认为其缓存是有效的, 例如1W。
value7 否定答案的TTL值,表示不存在的记录缓存时长, 将不正确的域名缓存起来,直接返回结果给用户,不需要查询。
1.3.2.2 NS记录

NS记录的格式如下:

|   name    | TTL | IN |  TYPE |      value     |     
|example.com.|86400| IN |   NS  | ns1.example.com.|       
|example.com.|86400| IN |   NS  | ns2.example.com.|

以上的元素意义如下:

元素 意义
name 当前区域的域名
type 类型为NS
value 当前区域的某DNS服务器的域名,例如ns1.example.com.

注意:

  • 一个区域可以有多个NS记录,表示主从关系;

  • 相邻的两个资源记录的name相同时,后续的可省略;

  • 对NS记录而言,任何一个ns记录后面的服务器名字,都应该在后续有一个A记录,用于告知客户端DNS的地址。

    ns1.example.com.   86400  IN  A  192.168.169.5
    ns2.example.com.   86400  IN  A  192.168.169.6
    
1.3.2.3 A记录和AAAA记录

A 记录可实现将域名解析为 IPV4 地址,AAAA记录可实现将域名解析为 IPV6 地址,两者格式相同:

www.example.com.		IN 	A	1.1.1.1
www.example.com.		IN 	A	1.1.1.2

以上的元素意义如下:

元素 意义
name FQDN,即域名
type 类型为A或AAAA
value 某IPv4地址或IPV6地址;
1.3.2.4 CNAME记录

CNAME为别名记录,格式如下:

www.example.com.   86400  IN   CNAME   www.example1.com.

以上的元素意义如下:

元素 意义
name FQDN,即域名
type CNAME
value 真正名字的FQDN

注意:

  • 涉及到名字,也需要在A记录中增加对应的解析记录,例如:

    www.example1.com.   86400  IN   A   101.200.188.230
    
1.3.2.5 PTR记录

PTR记录为逆向解析记录,由IP地址解析域名,示例:

#表示把1.2.3.4的IP地址解析为www.example.com.域名
4.3.2.1.in-addr.arpa. 86400  IN  PTR   www.example.com.

#注意:网络地址及后缀可省略;主机地址依然需要反着写
4 86400  IN  PTR  www.example.com.

以上的元素意义如下:

元素 意义
name IP,有特定格式,把IP地址反过来写(例如1.2.3.4,要写作4.3.2.1);然后加特定后缀:in-addr.arpa.;所以完整写法为:4.3.2.1.in-addr.arpa.
type PTR
value FQDN
1.3.2.6 MX记录

MX为区域的邮件记录,一个区域内MX记录可有多个,示例如下:

example.com.  86400 IN  MX  10  mail.example.com.
			  86400  IN  MX  20  mail2.example.com.       <==name相同,下面的记录可以忽略此元素

#涉及到名字,需要在A记录中增加对应解析项:
mail    86400  IN   A   3.3.3.3     <==mail为简写,其后没有加[ . ],会自动补上域名
mail2   86400  IN   A   3.3.3.4

以上的元素意义如下:

元素 意义
name 当前区域的名字
type MX
value 当前区域的某邮件服务器(smtp服务器)的主机名,由2部分组成:1.服务器的优先级,由数字(0-99)表示,表示此;数字越小优先级越高;2.服务器名;
posted @ 2021-07-18 00:07  向往自由的独行者  阅读(2029)  评论(0编辑  收藏  举报