bind的简单配置

摘要:DNS  bind简单配置


       FQDN

       http://www.178linux.com.  WWW是主机名  .178linux.COM.是私有域名  .com.是DNS一级域名 .是根域

DNS解析顺序

/etc/hostsDNS缓存DNS域服务器

主机优先查找本地的hosts(/etc/hosts)文件,没有想对应的记录则去查找本地DNS客户端的解析缓存库,缓存库没有想对应的记录则询问本地配置的DNS服务器(DNS服务器配饰文件 /etc/resolv.conf)

DNS服务器同样优先查找本地缓存 数据,没有相对应的记录直接去找根,根会告诉你这事我委托给.com管理了这是.com的地址你去找他吧,DNS服务器找到.com得到这事我委托给 178linux.com管理员ns.178linux.com来管理这事他的地址你去找他吧;继续拜访ns.178linux.com得到www.178linux.com的地址返回给主机。

主机得到对应的IP地址就将访问数据报文发送给此IP

递归查询:主机访问DNS服务器,并且DNS服务器最终返回解析结果给客户端的方式为递归查询。不轮客户端所查询的域名是否为此DNS服务器管理它最终会个客户端返回解析结果。

迭代查询:DNS服务器子根向下逐级查找解析资源记录的过程为迭代查询,被DNS访问的服务器只返回下级域的域管理员的地址。


DNS域服务器架构

dns树.jpg


二、搭建一个DNS服务器

2.1 DNS服务器软件搭建采用bind

     Bind是一款开放源码的DNS服务器软件,Bind由美国加州大学Berkeley分校开发和维护的,全名为Berkeley Internet Name Domain它是目前世界上使用最为广泛的DNS服务器软件,支持各种unix平台和 windows平台。

2.2 安装bind

yum install bind -y

[root@localhost ~]# rpm -ql bind
    [root@localhost ~]# rpm -ql bind

#rpm生成的几个重要的配置文件
/etc/named .conf            #bind的主配置文件    
/etc/named .rfc1912.zones   #bind的zone配置文件,通过主配置的include选项作为主配置文件的一部分  
/etc/rndc .conf             #rndc的主配置文件       
/etc/rndc .key              #rndc的消息完整性验证key
/var/named/named .ca        #DNS根服务器信息
#以上文件权限模型  640 root named
/var/named/sslaves/        #    丛服务器配置文件存放目录 权限模型 770 named named

2.3 bind的主配置文件

//  Provided by Red Hat bind package to configure the ISC BIND named(8) DNS     #//标示此行为注释信息
//  server as a caching only nameserver (as a localhost DNS resolver only).
//
//  See  /usr/share/doc/bind * /sample/  for  example named configuration files.
//
 
options { 
         listen-on port 53 { 127.0.0.1; };         #监听的端口和地址   {  } 前后需各有一个空格否则为语法错误,
                                                  #每行结束需以“;”结尾否则也为语法错误
         listen-on-v6 port 53 { ::1; };            #IPv6的端口和地址配置
         directory        "/var/named" ;             #bind工作目录;配置文件内的相对文件路径都是在此目录下
         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" ;
         allow-query     { localhost; };           #允许那些客户端来查询  此内的localhost为内置acl
         recursion  yes ;                            #是否允许递归
 
         dnssec- enable  yes ;
         dnssec-validation  yes ;
         dnssec-lookaside auto;
 
         /* Path to ISC DLV key */
         bindkeys- file  "/etc/named.iscdlv.key" ;
 
         managed-keys-directory  "/var/named/dynamic" ;
};
 
logging {                                         #日志相关配置
         channel default_debug {
                 file  "data/named.run" ;
                 severity dynamic;
         };
};
 
zone  "."  IN {                                     #根域配置
         type  hint;
         file  "named.ca" ;                          
};
 
include  "/etc/named.rfc1912.zones" ;               #配置文件包含这个文件
include  "/etc/named.root.key" ;                    #同上

    2.4 allow白名单控制

allow-***
allow-query          #原先那些主机前来查询DNS       
allow-transfer       #允许那些主机进行区域传送
allow-update         #允许接收那些主机动态DNS更新  
allow-recursion      #允许为哪些主机进行递归查询

    2.5 acl控制列表;定义在options内

    几个内建的acl:none: 所有都不
                            any: 任意
                            localhost: 本机

acl 语法格式
acl ACL_NAME {
                 ip;
                 ip;
                 network;
             };
#示例 递归查询白名单
acl rec_network {
                 10.10.10.0 /24 #网段
                 192.168.1.254;  #ip
                 localhost;      #可包含其他acl   
                };
recursion  yes
allow-recursion { localhost;rec_network; }

2.6 named.rfc1912.zones配置文件

域分为正向域和反向域:正向域为FQDNIP地址;反向域为IP地址FQND。

正向域和反向域的域配置文件是两份独立的配置文件。

其中邮件地址需配置反向域否则会被认为是垃圾邮件。

#####named.rfc1912.zones配置文件内容
//  named.rfc1912.zones:
//
//  Provided by Red Hat caching-nameserver package
//
//  ISC BIND named zone configuration  for  zones recommended by
//  RFC 1912 section 4.1 : localhost TLDs and address zones
//  and http: //www .ietf.org /internet-drafts/draft-ietf-dnsop-default-local-zones-02 .txt
//  (c)2007 R W Franks
//
//  See  /usr/share/doc/bind * /sample/  for  example named configuration files.
//
zone  "localhost.localdomain"  IN {          #域名;IN为固定格式
         type  master;                       #服务类型:master|slave|forward|hind
         file  "named.localhost" ;            #区域解析库配置文件,相对路径在options定义的工作目录下
         allow-update { none; };            #不接受任何动态数据更新
};
zone  "localhost"  IN {
         type  master;
         file  "named.localhost" ;
         allow-update { none; };
};
zone  "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa"  IN {
         type  master;
         file  "named.loopback" ;
         allow-update { none; };
};
zone  "1.0.0.127.in-addr.arpa"  IN {         #反向域
         type  master;
         file  "named.loopback" ;
         allow-update { none; };
};
zone  "0.in-addr.arpa"  IN {
         type  master;
         file  "named.empty" ;
         allow-update { none; };
};

2.7 区域解析库配置文件

区域解析库内存放地址映射资源记录:rr(resource record);映射信息有类型的概念:用于此记录解析的属性;主要类型分为以下几种
                SOA: Start Of Authority, 起始授权记录,一个区域文件只能有一个;
                NS:Name Server
                MX: Mail eXchange, 邮件交换器,MX记录有优先级属性(0-99);
                A:FQDN –> IP,专用于正向解析库
                PTR: IP –> FQDN,专用于反向解析库
                AAAA:FQDN –> IPv6,专用于正向解析库
                CNAME: Canonical Name,正式名称
    这些配置信息需要手动配置,配置前需要做好信息收集及信息注册
        资源记录类型书写格式

SOA:

@      TTL      IN        SOA    FQDN        ADMIN.MAIL    ( 
                            serial number   ;解析库的版本号,
                            refresh  time     ;主丛服务器周期性同步的时间间隔; time 默认单位秒,也可使用1D,1H等代替
                            retry  time       ;主服务器为响应丛服务器后丛服务器的重试时间间隔
                            expire  time      ;主服务器一直未响应;丛服务器解析库失效时长
                            negative answer ttl ;无效主机名否定答案的统一缓存时长
                     )                    
# @:域名替代符
# TTL:缓存时间
# IN:固定字符
# SOA:资源记录类型
# FQND:区域内主DNS服务器的FQDN
# ADMIN.MAIL:管理邮箱 其中邮箱的@在配置文件中有特殊意义需替换成.

NS:                    

@        TTL        IN         NS         FQDN
# @:域名替代符
# TTL:缓存时间 
# IN:固定字符
# NS:资源记录类型
# FQND:DNS服务器的FQDN

     MX:

@        TTL        IN         NS       priority       FQDN
# @:域名替代符
# TTL:缓存时间 
# IN:固定字符
# NS:资源记录类型
# priority:优先级 0-99 越小越优先,用于有多个邮件服务器
# FQND:邮件服务器的FQDN

    A:

FQND        TTL        IN         A|AAAA       IPADDR
# FQDN:主机完全域名
# TTL:缓存时间 
# IN:固定字符
# A:IPV4资源记录类型
# AAAA:IPV6资源记录类型
# IPADDR:IPV4或IPV6的主机地址

    CNAME:

FQND1        TTL        IN         CNAME       FQDN2
# FQDN1:主机完全域名
# TTL:缓存时间 
# IN:固定字符
# FQDN2:主机完全域名,必须有A记录,访问FQDN1时会先解析到FQDN1=FQDN2然后再去查FQDN2的A记录

    PTR:

反序IP. in -addr.arpa        TTL        IN         PTR       FQDN
# 反序IP.in-addr.arpa:示例192.168.1.1PTR=1.1.168.192.in-addr.arpa
# TTL:缓存时间 
# IN:固定字符
# FQDN:主机完全域名

    2.8 搭建缓存bind服务器

            逻辑拓扑结构图  bind服务器OS系统为centos 6.7  IP地址:10.10.10.3

         dns.png

        第一步:安装bind程序前面已经做完

        第二步:配置主配置文件 /etc/named.conf

###将以下参数注释掉        
         //listen-on  port 53 { 127.0.0.1; };   #注释后bind将监听所有IPv4地址的53号端口
         listen-on-v6 port 53 { ::1; };        #如果你没有IPv6的配置这项无需配置 
         //allow-query      { localhost; };     #注释后允许所有任何地址前来查询
         recursion  yes ;                        #允许为所有客户端进行递归查询 
 
         //dnssec-enable  yes ;                  #与DNS信息完整性及安全相关,简单那配置暂不做配置,注释掉   
         //dnssec-validation  yes ;              #与DNS信息完整性及安全相关,简单那配置暂不做配置,注释掉 
         //dnssec-lookaside  auto;              #与DNS信息完整性及安全相关,简单那配置暂不做配置,注释掉 
 
         /* Path to ISC DLV key */             #与DNS信息完整性及安全相关,简单那配置暂不做配置,注释掉 
         //bindkeys-file  "/etc/named.iscdlv.key" ;     #与DNS信息完整性及安全相关,简单那配置暂不做配置,注释掉 
 
         //managed-keys-directory  "/var/named/dynamic" ;     #与DNS信息完整性及安全相关,简单那配置暂不做配置,注释掉 
 
//include  "/etc/named.root.key" ;     #与DNS信息完整性及安全相关,简单那配置暂不做配置,注释掉

        第三步:增加解析域信息至named.rfc1912.zones

zone  "mylinux.com"  IN {
         type  master;
         file  "mylinux.zone" ;
         allow-update { none; };
};
zone  "10.10.10.in-addr.arpa"  IN {          #反向区域,我选的这个地址不是太直观,如果是172.16.1.2的话反向就是这样写1.16.172.in-addr.arpa
         type  master;
         file  "10.10.10.zone" ;
         allow-update { none; };
};
 
 
#####检查配置文件是否正确 
     [root@localhost named] # named-checkconf 
     [root@localhost named] #                  ##没有输出就没有错误

       第四步配置解析资源记录

[root@localhost named] # vim /var/named/mylinux.zone 
################全称拼写格式
$TTL 7200
@       IN      SOA     ns.mylinux.com.    admin.mylinux.com.   (
                         2015101600
                         1H
                         300
                         1W
                         1D
)
         IN      NS              ns.mylinux.com.       #第一个字段如果与上一行一样可省略不写会自动补全
         IN      MX      10      mail.mylinux.com.
ns.mylinux.com.         IN      A       10.10.10.3    #FQDN全名后面必须加.,.代表根区域
mail.mylinux.com.       IN      A       10.10.10.4
www.mylinux.com.        IN      A       10.10.10.5
ftp .mylinux.com.        IN      A       10.10.10.6
 
###############  简写
$TTL 7200
$ORIGIN mylinux.com      #自动将此变量作为FQDN的一部分补在,如果不声明此变量内容默认为zones文件中定义的域名
@       IN      SOA     ns         admin        (       
                         2015101600
                         1H
                         300
                         1W
                         1D
)
         IN      NS              ns    
         IN      MX      10      mail
ns      IN      A       10.10.10.3
mail    IN      A       10.10.10.4
www     IN      A       10.10.10.5
ftp      IN      A       10.10.10.6
 
#####反向域配置
$TTL 7200
@               IN      SOA     ns.mylinux.com.     admin.mylinux.com.     (
                                 2015101600
                                 1H
                                 300
                                 1W
                                 2D)
                 IN      NS      ns.mylinux.com.
3               IN      PTR     ns.mylinux.com.
4               IN      PTR     mail.mylinux.com.
5               IN      PTR     www.mylinux.com.
6               IN      PTR      ftp .mylinux.com.
 
  
 
#####检查zone配置文件是否有错误
[root@localhost ~] # chown root:named /var/named/mylinux.zone  /var/named/10.10.10.zone
[root@localhost ~] # chmod 640 /var/named/mylinux.zone /var/named/10.10.10.zone
[root@localhost named] #named.checkzone "mylinux.com" /var/named/mylinux.zone   #检查无错误后执行重读配置文件
[root@localhost named] # named-checkzone "10.10.10.in-addr.arpa" /var/named/10.10.10.zone 
zone 10.10.10. in -addr.arpa /IN : loaded serial 2015101600
OK
 
[root@localhost named] # rndc reload   #重读配置文件
server reload successful
[root@localhost named] # service named reload
Reloading named:                                           [  OK  ]    #重读配置文件
[root@localhost named]
####如果修改过端口及监听地址需要重启服务
[root@localhost named] # service named restart
[root@localhost ~] # chkconfig --level 2345 named on

DNS测试

常用的DNS测试命令有

1、host -t RRType NAME [SERVER]
         例如:host -t NS mylinux.com  10.10.10.3

2、nslookup      交互式测试工具
        nslookup>
            server IP:
            set type={A|SOA|NS|MX}
            name
 3、dig
            dig -t TYPE name @server
                -t AXFR: 标示区域传送
                -x:测试反解
                +(no)trace:是否显示查询过程
                +(no)recurse:是否递归查询
            

[mylinux@www ~]$  dig  -t AXFR mylinux.com @10.10.10.3      #做区域传输测试,查看DNS服务器所有记录
 
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6_7.4 <<>> -t AXFR mylinux.com @10.10.10.3
;; global options: +cmd
mylinux.com.        7200    IN    SOA    ns.mylinux.com. admin.mylinux.com. 2015101600 1800 300 604800 86400
mylinux.com.        7200    IN    NS    ns.mylinux.com.
mylinux.com.        7200    IN    MX    10 mail.mylinux.com.
ftp .mylinux.com.    7200    IN    A    10.10.10.6
mail.mylinux.com.    7200    IN    A    10.10.10.4
ns.mylinux.com.        7200    IN    A    10.10.10.3
www.mylinux.com.    7200    IN    A    10.10.10.5
mylinux.com.        7200    IN    SOA    ns.mylinux.com. admin.mylinux.com. 2015101600 1800 300 604800 86400
;; Query  time : 0 msec
;; SERVER: 10.10.10.3 #53(10.10.10.3)
;; WHEN: Thu Oct 15 21:09:36 2015
;; XFR size: 8 records (messages 1, bytes 217)
 
[mylinux@www ~]$  dig  -x 10.10.10.5 @10.10.10.3
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6_7.4 <<>> -x 10.10.10.5 @10.10.10.3
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR,  id : 50444
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
 
;; QUESTION SECTION:
;5.10.10.10. in -addr.arpa.    IN    PTR
 
;; ANSWER SECTION:
5.10.10.10. in -addr.arpa. 7200    IN    PTR    www.mylinux.com.
 
;; AUTHORITY SECTION:
10.10.10. in -addr.arpa.    7200    IN    NS    ns.mylinux.com.
 
;; ADDITIONAL SECTION:
ns.mylinux.com.        7200    IN    A    10.10.10.3
 
;; Query  time : 2 msec
;; SERVER: 10.10.10.3 #53(10.10.10.3)
;; WHEN: Thu Oct 15 23:18:54 2015
;; MSG SIZE  rcvd: 103
 
 
windows下测试

win.jpg