DNS服务及BIND基础应用

1 篇文章 0 订阅
1 篇文章 0 订阅

DNS服务及BIND基础应用

DNS :Domain Name Service,一种重要的网络基础服务协议,采用C/S架构,属于应用层协议

BIND :Berkerley Internet Name Domain,ISC组织负责维护,是DNS协议的一种实现,监听于53/tcp端口,53/udp端口,named是bind程序的运行的服务进程名

  1. DNS协议是基于两个更基础的协议,使用情况为:
    使用UDP协议 :主机名称解析过程时使用
    使用TCP协议 :区域传输时使用
     
  2. 本地名称解析配置文件:hosts
    CentOS系统的位置:/etc/hosts
    Windows系统位置 :%WINDOWS%/system32/drivers/etc/hosts
     
  3. DNS服务器:向客户端提供域名解析服务的服务器·

  4. DNS服务器的类型;

    4.1. 主DNS服务器:维护所负责解析的域内解析库服务器;解析库由管理维护;读写操作均可进行;

    4.2从DNS服务器:从主DNS服务器或从其他的从DNS服务器那里区域传递(类似“复制”)一份解析库,只能进行读操作

    4.3缓存DNS服务器:负责代理客户机的递归查询工作,并且采用迭代查询的服务器

    4.4转发器:如果目标域名在本DNS服务器辖区内,直接转发

  5. 完整的DNS解析请求经过的流程:

    • 客户端首先检查本机hosts文件中是否对目标域名已经定义,然后对客户端本地的DNS缓存内容检查,不成功后向DNS服务器发出【递归】请求,DNS服务器收到请求后,首先检查目标域名是否为自己辖区内的主机名,如果是直接返回答案,如果不是则检查本服务器自己的缓存信息,不成功则进行【迭代】搜寻。

    • Client –> 本机hosts文件 –> Local Cache –> DNS Server(recursion,递归) –> Server Cache –> iteration(迭代) –> 根 –> 顶级域 –> 对应的二级域 –> … –> 得出最终解析答案

    • DNS解析响应生效优先级:从高到低排序为:
      客户端的hosts文件 –> 客户端本地的DNS缓存 –> 服务器端DNS缓存 –> 客户端委托的DNS服务器实际查询请求的结解析答案
  6. DNS查询类型

    • 递归查询:只发出一次请求,就可以得到最终答案,过程中要委托服务器完成整个查询过程;一般来说,客户端向DNS服务端发出的都是递归查询请求,该请求只发出一次,就可以静候服务器给出解析答案。

    • 迭代查询:服务器查询目标域名的过程中,需要从根开始,一直到目标域,得出最终结果的过程;DNS服务器端向根服务器询问、向目标域名的对应在根下的顶级域服务器询问,向下一级服务器询问,… ,直至查询到最终精确的解析答案的过程。

  7. 区域解析库:由众多RR组成

    • 资源记录:Resource Record,RR,DNS条目,记录类型包括:

      SOA :Start Of Authority , 起始授权记录;一个区域解析库有且仅能有一个SOA记录,且必须位于解析库的第一条记录

      A :internet Address , FQDN –> IPv4

      AAAA :FQDN –> IPv6

      PTR :PoinTeR ,指针记录, IP –> FQDN

      NS :Name Server , 专用于标明当前区域的DNS服务器

      CNAME :Canonical Name , 别名记录

      MX :Mail eXchanger , 邮件交换器

    • 注意:
      (1) TTL可以从全局继承,TTL : Time to Live,缓存时长,此项内容可省略,如果TTL值未明确单位的话,默认单位为秒
      (2) @ 可用于表示当前域名
      (3) 相邻的两个资源记录的name相同时,后续的可以省略
      (4) 同一个名字可以通过多条记录定义多个不同的值,此时DNS服务器会以轮调方式响应并解析
      (5) 同一个值也可能有不同的定义名字,通过多个不同的名字指向同一个值进行定义,此仅表示通过多个不同的名字可以找到同一个主机而已,无特殊含义,此种情况也可以写成CNAME格式的条目。

  8. 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

DNS服务配置实例

准备两台虚拟机A,B(以CentOS6为例),分别安装bind程序包,进行如下操作

1.配置主DNS服务器(A号虚拟机):

service named start;ss -tnl

2.设置服务主配置文件


vim /etc/named.conf
#修改以下内容
options {
#监听能与外部主机通信的地址;
    listen-on port 53 { 172.16.254.22;127.0.0.1; };
    //listen-on-v6 port 53 { ::1; };
    allow-query { any; };
    recursion yes;
#学习时,建议关闭dnssec
    dnssec-enable no;
    dnssec-validation no;

3.检查配置文件语法错误:

named-checkconf   [/etc/named.conf]

4.修改域配置文件,包含正反解


vim /etc/named.rfc1912.zones
#增加以下内容
zone "main.cjl.io" IN {
    type master;
    file "main.cjl.com.zone";
};

zone "16.172.in-addr.arpa" IN {
    type master;
    file "16.172.zone";
};

5.配置正解的解析库文件cjl.io.zone

cd /var/named/;ls
vim cjl.io.zone
$TTL 86400
$ORIGIN cjl.io.
@               IN      SOA     ns.cjl.io.nsadmin.cjl.io.   (
                2017052305      ;serial number
                1H              ;refresh    
                5M              ;retry
                1W              ;deadline
                1D  )           ;neagtive TTL
                IN      NS      ns1.cjl.io.
                IN      NS      ns2.cjl.io.
ns1.cjl.io.     IN      A       172.16.254.22
ns2.cjl.io.     IN      A       172.16.253.30
www.cjl.io.     IN      A       172.16.254.1
web             IN      CNAME   www
bbs             IN      A       172.16.254.2

6.配置反解的解析库文件16.172.zone

$TTL 86400
$ORIGIN 16.172.in-addr.arpa.
@       IN      SOA     ns1.cjl.com.    admin.cjl.com.  (
        2017052901
        1H
        10M
        1W
        1D  )
        IN      NS      ns1.cjl.com.
22.254  IN      PTR     ns1.cjl.com.
30.253  IN      PTR     ns2.cjl.com.
1.254   IN      PTR     www.cjl.com.
2.254   IN      PTR     bbs.cjl.com.

注意
(1)” com “后面的 ” . “符号为必须,不可省略; 分号 ; “后为注释内容

(2) TTL可以从全局继承,TTL : Time to Live,缓存时长,此项内容可省略,如果TTL值未明确单位的话,默认单位为秒

(3) @ 可用于表示当前域名

(4) 相邻的两个资源记录的name相同时,后续的可以省略

(5) 同一个名字可以通过多条记录定义多个不同的值,此时DNS服务器会以轮调方式响应并解析

(6)对SOA记录而言:

  • 当前区域的主DNS服务器的FQDN,也可以使用当前区域的名字:@ 符号
  • 当前区域管理员的邮箱地址,地址中不能使用@符号,一般用 ” . “符号替换,例如:linuxedu.magedu.com.
  • 括号内的内容:(主从服务器协调属性的定义以及否定答案统一的TTL值)

(7)对NS记录而言:

  • 任何一个NS记录后面的服务器名字都应该在后续有一个A记录
    (8)对MX记录而言:
  • 一个区域内,MX记录可以有多个,但每个value之前应该有一个数字(0-99),表示此服务器的优先级,数字越小表示优先级越高

  • (9)对A或AAAA记录而言:
    为了避免用户写错名称而无法得到正确答案,可通过泛域名解析进行解析至某特定地址,如:
    *.achudk.com. IN A 1.1.1.4
    achudk.com. IN A 1.1.1.4

(10)对PTR记录而言:
正解与反解是两个不同的解析库文件,所以二者没有任何关系,这里将正解的一级域设置为.io. ,反解的一级域设置为.com. ,以示区分。网络地址和后缀可省略,但主机地址不可省且需要反过来写。

权限及属组修改:

chgrp  named  /var/named/cjl.io.zone
chmod  o=  /var/named/cjl.io.zone

7.检查语法错误:

named-checkzone  ZONE_NAME   ZONE_FILE
named-checkconf 

8.让服务器重载配置文件和区域数据文件

rndc  reload 
#或
systemctl  reload  named.service

9.测试A号DNS服务器的解析功能是否实现:
测试正解

dig www.cjl.io
#查看解析结果,以下为成功示例
;; ANSWER SECTION:
www.cjl.io.     86400   IN  A   172.16.254.1
dig bbs.cjl.io
#查看解析结果,以下为成功示例
;; ANSWER SECTION:
bbs.cjl.io.     86400   IN  A   172.16.254.1

测试反解

dig -x 172.16.254.1
#查看解析结果,以下为成功示例
;; ANSWER SECTION:
1.254.16.172.in-addr.arpa. 86400 IN PTR www.cjl.com.
dig -x 172.16.254.2
#查看解析结果,以下为成功示例
;; ANSWER SECTION:
1.254.16.172.in-addr.arpa. 86400 IN PTR bbs.cjl.com.
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值