阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

搭建Bind DNS Server

96次阅读
没有评论

共计 5889 个字符,预计需要花费 15 分钟才能阅读完成。

域名分级

  根域:  .
  顶级域:  .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 中

使用 BIND 配置 DNS 服务器 — 初级篇 http://www.linuxidc.com/Linux/2013-05/84920.htm

BIND+DLZ+MySQL 智能 DNS 的正向解析和反向解析实现方法 http://www.linuxidc.com/Linux/2013-04/82527.htm

域名服务 BIND 构建与应用配置 http://www.linuxidc.com/Linux/2013-04/82111.htm

Ubuntu BIND9 泛域名解析配置 http://www.linuxidc.com/Linux/2013-03/81928.htm

CentOS 5.2 下安装 BIND9.6 http://www.linuxidc.com/Linux/2013-02/79889.htm

CentOS 6.4 安装 Bind DNS 服务器  http://www.linuxidc.com/Linux/2015-06/119371.htm

本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-07/120213.htm

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-20发表,共计5889字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中