首页 > 代码库 > DNS服务之反向解析&子域&区域转发

DNS服务之反向解析&子域&区域转发

测试环境说明

       主DNS服务器:CentOS 6.8    192.168.1.6/24    10.1.154.97/16 zmingbo.com

       从DNS服务器:CentOS 6.8    192.168.1.8/24    10.1.154.94/16

       子域:CentOS 6.8  10.1.110.54/16 tech.zmingbo.com

DNS检测命令

dig命令:

       dig [-t type ] [ -x addr ] [name] [@server]

              +trace :跟踪解析过程     

]#dig -t A www.zmingbo.com @192.168.1.6

host命令

       host [-t type] {name} [server]    

  ]#host -t A www.zmingbo.com

nslookup命令:

       server DNS_Server_IP:指定DNS服务器IP

       set q=Type

技术分享

反向解析基本配置

1、配置主配置文件

技术分享

2、配置区域配置文件。

       可以拷贝zmingbo.com.zone配置文件来参考配置。注意权限要保留。   

]#cp -p zmingbo.com.zone 192.168.1.zone

技术分享

3、检测服务配置文件是否有错误

]#service named configtest

技术分享

4、重新加载服务配置,查看服务日志文件

]#service named reload

技术分享

5、检测配置

]#dig -x 192.168.1.100

技术分享

]#host -t PTR 192.168.1.120

技术分享

反向解析区域数据文件:区域名称以逆向的网络地址,并以.in-addr.arpa为后缀

       第一天必须是SOA

       应该具有NS记录,但不能出现MX和A记录

       较常见的即为PTR记录

              名称为逆向的主机地址

使用dig可以手动模拟区域传送

       dig -t axfr 区域名称 @server

]#dig -t axfr zmingbo.com @192.168.1.6

 

技术分享

]#dig -t axfr 1.168.192.in-addr.arpa @192.168.1.6

技术分享

区域传送常见于主从同步场景。

如何完成主从同步:

       主DNS服务器和从DNS服务器不一定要在同一网段中,单彼此之间要能正常通讯。   主DNS服务器的bind版本可以低于从DNS服务器的bind版本,但不能高于,最好一致。

       客户端在配置DNS时,在前面的nameserver优先被使用,只有当前面的namesever无法给予响应时,才会往下查找。

              客户端配置DNS:

              vim /etc/resolve.conf

                     nameserver Master_DNS_IP  

                     nameserver Slave_DNS_IP

       为了避免配置的从DNS服务器被闲置,客户端在配置时应分别使用主、从DNS服务器。

在区域中添加从DNS服务器的关键步骤:

       1、在上级获得授权

       2、在区域数据文件中为服务器添加一条NS记录和一条对应的A记录

正向解析同步:

主服务器的配置步骤:

1、编辑/etc/named.conf

zone "zmingbo.com." IN {
  type master;  
  file "zmingbo.com.zone";  
  allow-transfer {192.168.1.8;};
  };

技术分享

2、编辑/var/named/zmingbo.com.zone,新增NS和对应的A记录。

注意,修改区域配置文件之后,序列号要+1。

]#vim /var/named/zmingbo.com.zone

技术分享

3、从新加载named服务配置文件。

从服务器的配置步骤:

       1、准备新机器,确保bind版本不能高于主服务器,最好一致;确保主从之间网络畅通

       2、安装bind

       3、安装完成之后,编辑主配置文件。可以在原有配置上修改,也可以备份源配置文件,之后手动编写一个。这里选择在原配置文件上修改,修改如下:

技术分享

 

技术分享

4、编辑/etc/named.rfc1912.zones配置文件,添加新zone

注意:若zone名称与主DNS服务器不一致,则同步失败

]# vim /etc/named.rfc1912.zoneszone 
"zmingbo.com" IN {
        type slave;
        masters {192.168.1.6;};
        file "slaves/zmingbo.com.zone";
 };

技术分享

5、启动服务,并查看启动日志。

技术分享

6、查看/var/named/slaves下是否生成配置文件。

ll -d /var/named/slaves/zmingbo.com.zone

反向解析同步:

主服务器配置:

编辑/etc/named.conf文件

技术分享

编辑/var/named/192.168.1.zone配置文件,新增NS和对应的A记录。且序列号相应+1。

]#vim /var/named/192.168.1.zone

技术分享

从服务器配置

修改/etc/named.rfc1912.zones文件

]# vim /etc/named.rfc1912.zoneszone 
"1.168.192.in-addr.arpa." IN {
        type slave;
        masters {192.168.1.6;};        
        file "slaves/192.168.1.zone";
};

配置完成之后。在主服务器上重新加载named配置。查看/var/log/messages,检查同步是否成功。

注:为了安全,在注服务器上应该只允许已知的从服务器同步。在从服务器上,拒绝所有同步。使用allow-transfer { IP; };来进行控制。

 

RNDC(Remote Name Domain Controller)远程管理BIND的工具

       rndc密钥:

              rndc:持有一半密钥,保存于rndc的配置文件中。

              bind:持有一半密钥,保存于主配置文件中。

       rndc配置文件:/etc/rndc.conf

       rndc密钥文件:/etc/rndc.key

       rndc常见用法:

              rndc reload

                      reload zone

                      status

                      reconfig:重读配置文件并加载新增的区域

                      querylog:开启或关闭查询日志。若开启,则客户端每次请求,都会写一次日志。在繁忙的服务器上建议不要启用此功能。

                      flush:清空服务器上的缓存

                      flushname name:清空知道名称相关的缓存

                      addzone:添加区域到view         

                      delzone:删除view中的区域

                      trace:开启调试模式(debug),debug有级别概念,每执行一次提升一次级别。级别越高,信息越详细。

                      tracle Level:指定debug级别。

                            注:debug使用完成之后,因其产生的数据量较大,应该关闭。

              如果rndc无法正常工作,可尝试使用rndc-confgen生成/etc/rndc.conf配置文件,并将配置文件中的后半部分复制到BIND的注配置文件中,并按指示启用。

              rndc-confgen -r /dev/urandom > /etc/rndc.conf

技术分享

 

BIND子域授权的实现:

       在父域的配置文件中添加如下项:

              授权的子区域名称

              子区域的名称服务器

              子区域的名称服务器的IP地址

例:zmingbo.com域下有主机mail、www、http

       也有tech.zmingbo.com子域。现在为tech.zmingbo.com子域授权。

配置步骤:

1、在父域上配置:

       注:只能在父域的主服务器上作修改

       1)编辑区域授权文件:

vim /etc/named.conf

技术分享

2)检查配置文件是否有错误

]#named-checkzone "zmingbo.com" zmingbo.com.zone

3)通知系统重新加载配置文件

]#rndc reload

4)查看named的运行状态

]#rndc status

5)检查tech.zmingbo.com是否有响应。需要子域配置完成之后才会有响应

dig -t NS tech.zmingbo.com @192.168.1.6

技术分享

2、在子域上配置:

       1)、安装bind

       2)、编辑/etc/named.conf文件

       技术分享

 

技术分享

       3)编辑/etc/named.rfc1912.zones文件

]# vim /etc/named.rfc1912.zoneszone 
"tech.zmingbo.com" IN {
        type master;        
        file "tech.zmingbo.com.zone";
};

       4)编辑/var/named/ tech.zmingbo.com.zone

技术分享

       5)启动服务

]# service named start

       6)检查是否能正常解析

技术分享

能正常解析,并且对自己管理的做出权威应答(aa,authority answer)

技术分享

解析测试:

在父域上能解析到子域的域名,但不是aa(authority answer权威应答)

技术分享

在子域上如果要解析父域管理的域名,因为子域不负责管理,所以其会直接问根域查询。此时若是做测试使用的域名,并未向根域申请授权,所以根域无法返回解析。为了能让从子域上解析父域管理的域名,需要粗腰转发的功能。

技术分享

配置区域转发(转发域):

       解析某本机不负责的区域内的名称时不转发给根,而是转给指定的主机

       zone "Zone_Name" IN {

              type forward;

              forwarders { DNS_Server; };

              forward only|first;   #only仅转发,first先转发。不响应,想跟查询。

       };

转发通常是递归转发。

允许使用转发的前提:本机要在对方的允许的递归主机列表中。

配置转发的方式:

       转发非本机负责解析的所有区域

             

]# vim /etc/named.conf 
 options {
     type forward;    
     forwarders { DNS_Server;};    
     forward only|first;   #only仅转发;first先转发,若指向name server不响应,想跟查询。  
};

       转发某特定区域:

]# vim /etc/named.rfc1912.zones 
zone "特定区域" IN { 
    type forward; 
    forwarders { DNS_Server;}; 
    forward only|first;
};

例:在子域tech.zmingbo.com上配置转发zmingbo.com的请求至父域

1、编辑/etc/named.rfc1912.zones

]# vim /etc/named.rfc1912.zones

zone "zmingbo.com" IN {
        type forward;        
        forward only;        
        forwarders {10.1.154.97;};
};

2、检查配置文件是否有误:named-checkconf

3、重启named服务:service named restart

4、测试解析是否成功

技术分享

例:子域不能连接internet,但子域nameserver要提高解析互联网域名的功能,已知,父域可以解析。且父域有主、从两台服务器。主为10.1.154.97,从为10.1.154.94。

       1)、在子域上配置/etc/named.conf。添加如下两行配置    

]# vim /etc/named.conf  
forward first;       #指向的nameserver不应答,则向根查询。  
forwarders {10.1.154.97;10.1.154.94;};

技术分享

       2)、检查配置并重启named服务。

       3)、检查是否能正常解析。

技术分享

安全控制选项

       allow-transfer { };      #通常都需要启用。但需要做限定。

       allow-query { };  #通常仅用于服务器是缓存名称服务器时,只开放查询功能给本地客户端。

       allow-recursion { };  #定义递归白名单。可以使用网段的形式192.168.1.0/24

       allow-update { none; };   #定义运行ddns更新区域数据文件的白名单。建议禁用。

              ddns(dynamic dns)

BIND的ACL:BIND支持使用访问控制列表。

       acl Acl_Name {

              192.168.21.0/24;

              172.16.100.1/16

       }

定义好acl之后,可以通过Acl_Name引用。

如:allow-query { Acl_Name; };

acl只有定义后才能被使用。通常acl要定义在named.conf的最上方。

BIND内置的acl:

       any:任何主机

       none

       local

       localnet


DNS服务之反向解析&子域&区域转发