搭建Bind DNS Server

域名分级

  根域:  .
  顶级域:  .com .cn .org .net 
  域:    baidu.com qq.com sina.com
  主机:  www.baidu.com mail.sina.com 

DNS解析过程

如在qq.com域下面有台client,其dns-server是dns.qq.com,则client访问www.baidu.com(dns为ns.baidu.com)时,先请求dns.qq.com,dns.qq.com查询缓存中有没有www.baidu.com条目的缓存,如果有,则直接返回www.baidu.com的IP,如果没有,则请求如下:

  1. 请求 `根`(`.`),查询`.com`域的管理Server IP
  2. 请求`.com`域,查询`baidu.com`域的管理Server IP,也就是 `ns.baidu.com` 
  3. 请求`ns.baidu.com`,查询域中`www`主机的IP

此时,dns.qq.com将查询得到的www.baidu.com的IP返回给Client,同时缓存,在缓存还没失效之前有其他Client再次请求www.baidu.com时,则直接从缓存中取,不再查询。对于client来说是递归的(client->dns.qq.com),对于dns-server来说是迭代的(上述123过程),

DNS Server只依据条目响应查询,不负责是否存在 

dns的分类


  1.权威DNS:

    权威DNS是经过上一级授权对域名进行解析的服务器,同时它可以把解析授权转授给其他人

  2.递归DNS:

    负责接受用户对任意域名查询,并返回结果给用户。

  3.转发DNS:

    负责接受用户查询,并返回结果给用户。

权威应答与非权威应答

  如果DNS服务器在自己的区域文件里找到了客户端需要查询的记录,否则就是非权威应答

TTL值

TTL(Time- To-Live),简单的说它表示一条域名解析记录在DNS服务器上被缓存时间.当各地的DNS服务器接受到解析请求时,就会向域名指定的DNS服务器发出解析请求从而获得解析记录;在获得这个记录之后,记录会在DNS服务器中保存一段时间,这段时间内如果再接到这个域名的解析请求,DNS服务器将不再向DNS服务器发出请求,而是直接返回刚才获得的记录;而这个记录在DNS服务器上保留的时间,就是TTL值,默认单位是秒(s)。

  一.增大TTL值,可以节约域名解析时间
  二.减小TTL值,可以减少更换IP(A记录)后到生效的时间

资源记录(Resource Record, RR)格式

@表示继承

A记录(正向)

将域名指向一个IPv4地址,FQDN-->IPv4

FQDN:Full Qualified Domain Name,完全限定域名,如 mail.sina.com

RRT:Resource Record Type,资源记录类型。

  FQND  TTL  IN  RRT  IP
  www.sina.com.  600  IN  A  1.1.1.1

IPv6的类型为AAAA

PTR记录(反向)

IP反向查询域名,IP-->FQDN

  IP  TTL  IN  RRT  FQDN
  11.0.168.192.in-addr.arpa.  600  IN  PTR  mail.sina.com.
  12.0.168.192.in-addr.arpa.  600  IN  PTR  ftp.sina.com.

NS记录

域名解析服务器记录,ZONE-NAME->FQDN,也叫授权记录

  Zone-Name  TTL  IN  NS  FQND
  163.com.  600  IN  NS  ns.163.com.
  ns.163.com.  600  IN  A  1.1.1.1

NS和A记录成组出现,构成一个完整的NS记录,多个NS记录时依次被响应

MX记录(mail exchager)

电子邮箱服务,将指向邮件服务器地址,ZONE-NAME->FQDN,MX记录有优先级(priority)之分,0-99,数字越大,优先级越高

  ZONE-NAME  TTL  IN  RRT  priority  FQDN
  163.com.  600  IN  MX  11  mail1.163.com.
  mail1.163.com.  600  IN  A  1.1.1.1

MX和A记录成组出现,构成一个完整的MX记录

SOA(Start Of Authority)记录

区域传送记录,描述区域传送规则(描述主从对象,以及如何主从如何同步),必须定义在数据文件的第一行

  ZONE-NAME  TTL    IN    SOA    FQDN(主DNS地址)  admin-mail-address (
            serial number; 版本号,区域复制依据,每次主要区域修改完数据后,要手动增加它的值
            refresh ; 刷新时间,辅助DNS服务器请求与源服务器同步的等待时间。当刷新间隔到期时,辅助DNS服务器请求源服务器的SOA记录副本。然后,辅助DNS服务器将源服务器的SOA记录的序列号与其本地SOA记录的序列号比较,如果不同,则辅助DNS服务器从主要DNS服务器请求区域传输。
            retry ; 重试时间,辅助DNS服务器在请求失败后,等待多长时间重试。通常这个应该短于刷新时间
            expire ; 过期时间,时间到期时,如辅助DNS服务器还无法与源服务器进行区域传输,则辅助DNS服务器会把它的本地数据当作不可靠数据
            minimum ; 否定答案缓存时间
         )
  时间单位:M(分钟)、H(小时)、D(天)、W(周),默认单位是秒
  邮箱格式:admin@sina.com -写为-> admin.sina.com

  sina.com.    600    IN    SOA    ns1.sina.com.    admin.sina.com. (
            2013040101
            1H
            5M
            1W
            1D )

CNAME(Canonical NAME)记录

将域名指向一个域名,FQDN->FQDN

  FQDN TTL IN RRT FQDN
  mail.163.com.  600  IN  CNAME  mail.qq.com.

泛域名解析

    * 600 IN A  IP #除了明确标识,其他都解析到该地址

域和区域(domain & zone)

domain是逻辑概念,如sina.com,zone是物理概念,对应数据文件

正向域

  sina.com. 600  IN SOA ns1.sina.com. admin.sina.com. (
              2013040101
              1H
              5M
              1W
              1D )

  www  600  IN A 192.168.0.10
  www2  600  IN A 192.168.0.11
  sina.com. 600 IN MX 10 mail.sina.com.
  mail.sina.com. 600 IN A 192.168.0.20

反向域

反向域的name为网段地址,且反写

  0.168.192.in-addr.arpa IN SOA ns1.sina.com. admin.sina.com (
              2013040101
              1H
              5M
              1W
              1D )

  10.0.168.192.in-addr.arpa. 600 IN PTR www.sina.com.
  11 IN PTR www2.sina.com.

区域类型

  主区域:master
  从区域:slave
  提示区域:hint,定义根在什么地方
  转发区域:forward,比如直接配置.com域的地址,而不从根查询

安装Bind

  yum install -y bind

    /etc/named.conf #主配置文件
    /etc/rndc.key #rndc的密钥文件 
    /etc/rndc.conf #rndc配置文件
    /var/named/ #区域数据文件
    /etc/rc.d/init.d/named #服务脚本
      {start|stop|restart|status|reload}
    /var/named/named.ca 13个根节点配置文件

一些工具

随bind安装

  /usr/sbin/named-checkconf #检查配置文件
  /usr/sbin/named-checkzone #检查区域文件
  /usr/sbin/rndc-confgen    #生成rndc配置

bind-utils 工具包

  /usr/bin/dig 
  /usr/bin/host
  /usr/bin/nslookup

设置开机启动

  chkconfig named on

named.conf

  options { #全局选项,对所有的zone生效
    listen-on port 53 { 127.0.0.1; }; #监听IPv4及端口。这里设置表示只侦听127.0.0.1这个地址。如不定义此选项或者0.0.0.0表示侦听所有网络
    listen-on-v6 port 53 { ::1; }; ##监听IPv6及端口
    directory   "/var/named"; #数据文件目录
    notify yes;# 启用通知功能,master修改,主动通知slave
    allow-query     { 192.168.0.0/24; }; #允许提交查询的客户端,如不定义此选项表示允许所有查询
    query-source port 53; #客户端在进行DNS查询时必须使用53做为源端口
    recursion yes; #是否开启递归查询
    allow-recursion {192.168.0.0/24;192.168.0.1/24};#允许提交递归查询的客户端,如不定义此选项表示允许所有
    allow-transfer {192.168.0.254;};#允许区域传输的DNS服务器(辅助DNS),不写表示允许所有
    forwarders {192.168.0.9;};#转发到指定服务器解析
    forward only|first;#only表示如果在指定的转发器找不到,不会去向根查询,first表示快速转发(默认)

    dnssec-enable yes;# 是否支持DNSSEC开关,默认为yes
    dnssec-validation yes; #是否进行DNSSEC确认开关,默认为no
    dnssec-lookaside auto; #当设置dnssec-lookaside,它为验证器提供另外一个能在网络区域的顶层验证DNSKEY的方法

  };

  logging { #日志
          channel default_debug {
                  file "data/named.run";
                  severity dynamic;
          };
  };

  zone "." IN { #根区域定义
    type hint;#区域类型
    file "named.ca";#区域数据文件路径,相对与directory
    #masters { master1.ip;master2.ip } #如果是从区域,指定master地址
  };

  zone "sina.com"  IN { #正向域
    type master;
    file "sina.com";
  };

  zone "0.168.192.in-addr.arpa" IN {#反向域
    type master;
    file "0.168.192.zone";
  };

zone类型

Master

  主DNS服务器:拥有区域数据文件,并对此区域提供数据管理

Slave

  辅助区域:拥有主DNS服务器区域数据文件的副本,辅助DNS服务器从主DNS服务器同步所有区域数据

Stub

  stub区域和slave类似,但它只复制主DNS服务器上的NS记录,而不像辅助DNS服务器会复制所有区域数据

Forward

  一个forward zone是每个域的配置转发的主要部分。一个zone语句中的type forward可以包括一个forward和或forwarders子句,它会在区域名称给定的域中查询。如果没有forwarders语句或forwarders是空表,那么这个域就不会转发,消除了options语句中有关转发的配置

Hint

  根域名服务器的初始化组指定使用的线索区域hint zone,当服务器启动时,它使用根线索来查找根域名服务器,并找到最近的根域名服务器列表。如果没有指定class IN的线索区域,服务器使用编译时默认的根服务器线索。不是IN的类别没有内置的默认线索服务器

主从传送

1.修改named.conf中option定义

    notify yes

2.修改named.conf中zone的定义:

    zone "zone-name" IN { #根区域定义
        type slave;#标明是从dns
        file "slaves/named.ca";#区域数据文件路径,相对与directory,由于named无对/etc/named目录的写权限,所以放在slaves下
        masters { master1.ip;master2.ip } #指定master地址
      };

3.增加从服务器的NS记录以及A记录

4.防火墙配置

    打开master tcp 53端口
    打开slave tcp 53端口

5.开启从服务器

    service named start

手动区域传输

    dig -t axfr|ixfr 区域名称 @辅助DNS服务器
      axfr:完全传输
      ixfr:增量传输

子域授权

1.在子域zone文件中添加授权NS记录

    子域名称  IN  NS 子域dns-server-name 
    a.sina.com.  IN  NS  ns1.a.sina.com.

2.子域DNS A记录

    子域dns-server-name IN A IP 

    ns1.a.sina.com. IN A 0.0.0.0

3.编辑子域 named.conf 添加zone记录

    zone "a.sina.com"  IN {
      type master;
      file "a.sina.com";
    };

4.增加zone对应的数据文件

5.重启服务

DNS View

  view view_name {

    match-client{ip段1;ip段2}; 
    //区域定义

  };

match-client:指定IP段使用view中的zone定义,any匹配所有IP

注意

  1. 一旦定义了view 所有的zone都必须定义在view中
  2. 根zone只需要定义在需要递归的view中

猜你喜欢

转载自www.linuxidc.com/Linux/2015-07/120213.htm