本人对DNS的理解:

-->DNS 子域:

DNS服务器不仅可以为属于本域的客户端用户提供解析服务,也可以授权给某个域,让其也可以提供相应的DNS解析服务,称为子域授权.


-->DNS 子域委派:

具体的作用是为了方便管理 提高DNS的解析性能,实现通信负载平衡.


-->DNS 转发器的作用:

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

   根服务只有13个,如果DNS的查询全部都发送到根服务器效率比较低下,启动DNS转发器后,DNS进行查询的时候,如果遇到本机不能解析的查询,就向DNS转发器请求查询,DNS转发器指定的地址一般都是比较大的DNS服务器,通常接受大量的DNS查询操作,比如电信的核心DNS.  



注意:如果您感觉内容不理解,那么请到以下分支查看你所需要的内容:

   1. 总结 DNS and BIND: http://xiaomazi.blog.51cto.com/5891742/1376225

   2. 分支1- 正/反向域名解析之yum与编译安装: http://xiaomazi.blog.51cto.com/5891742/1376228

   3. 分支2- 主从DNS服务器: http://xiaomazi.blog.51cto.com/5891742/1376231

   4. 分支3- 子域授权、请求转发: http://xiaomazi.blog.51cto.com/5891742/1377087

   5. 分支4- ACL 及 view视图: http://xiaomazi.blog.51cto.com/5891742/1377090


② 这里我是基于BIND主从复制之上实现的详情请查看:

http://xiaomazi.blog.51cto.com/5891742/1376231


接上面的环境配置.


一、如何实现 子域授权、请求转发及ACL?


1.远程管理BIND的工具:

简单介绍:

   rndc: Remote Name Domain Controller

   rndc: 密钥

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

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

常用选项:

reload : 重读

reload zone : 重加区域文件

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

querylog: 关闭或开启查询日志;

flush: 清空服务器的缓存;

flushname name: 清空指定名称相关的缓存;

trace: 打开debug,debug有级别的概念,每执行一次提升一次级别;

trace LEVEL: 指定deb②ug的级别;


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

如: # rndc-confgen -r /dev/urandom > /etc/rndc.conf

   # service named reload

   还有一个就是在下面的小7)中的方法实现自动生成rndc.key文件.


1).首先主服务器上生成rndc的密钥:

I.生成密钥:

[root@host1 ~]# rndc-confgen -r /dev/urandom > /etc/rndc.conf

II.密钥介绍:

wKioL1Mhv43yeN8MAALi4c9JDv0240.jpg


2).在主服务器 将/etc/rndc.conf属于BIND的复制到/etc/named.conf

wKiom1MhucGQKMgLAAF9V--4MTU534.jpg

3).在主服务器上 查看状态:

wKioL1MhvXaCrTx3AAJ4Mt4tQwY015.jpg

4).再主服务器上查看端口:

[root@host1 ~]# ss -tunl

5).从服务器上升成密钥:

与主服务器的步骤一样:1)-2)-3)-4)-5)  这里就不贴图了哈.

6). 例子:

①第一次开启,执行第二次关闭:rndc querylog

wKiom1MhxXCj6nlCAAHINWXFUCg652.jpg

接上:

wKioL1MkF1ry2JspAAOV0yuWLTU025.jpg

②停止rndc:

[root@host2 ~]# rndc stop
[root@host2 ~]# ps aux | grep named
root     263701.00.1103252828pts/0S+20:450:00grep named
[root@host2 ~]# named -u named

③trace的使用:

[root@host2 ~]# rndc trace
[root@host2 ~]# rndc trace  执行三次
[root@host2 ~]# rndc trace
[root@host2 ~]# rndc status
version: 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6
CPUs found: 2
worker threads: 2
number of zones: 21
debug level: 3符合上面的三次.
xfers running: 0
xfers deferred: 0
soa queries inprogress: 0
query logging isOFF
recursive clients: 0/0/1000
tcp clients: 0/100
server isup andrunning
[root@host2 ~]# rndc trace 0  (指定级别)
[root@host2 ~]# rndc status
version: 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6
CPUs found: 2
worker threads: 2
number of zones: 21
debug level: 00级别
xfers running: 0
xfers deferred: 0
soa queries inprogress: 0
query logging isOFF
recursive clients: 0/0/1000
tcp clients: 0/100
server isup andrunning
[root@host2 ~]#

7).如何自动生成rndc.key , vim /etc/rc.d/init.d/named文件:

wKiom1MjFGew7hPsAAIbowBG7n0538.jpg





2.BIND子域授权的实现(主要将正向的,反向的很麻烦):


子域名和委派的区别?

   子域文件在父域文件中

   委派有独立的区域文件

-->实验环境

   三台虚拟机:一台主,一台从,一台子域.

   注意这三台都要使用yum安装bind吆.

前提:

挂载光盘:
[root@xiaoma ~]# mkdir /media/cdrom
[root@xiaoma ~]# mount /dev/cdrom /media/cdrom/
mount: block device /dev/sr0 iswrite-protected, mounting read-only
配置本地yum源:
[root@xiaoma ~]# cd /etc/yum.repos.d/
[root@xiaoma yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak
[root@xiaoma yum.repos.d]# vim media.repo
[media]
name=media
baseurl=file:///media/cdrom
enabled=1
gpgcheck=0

>>>将准备好的bind包安装:

[root@localhost ~]# yum -y install bind

主配置文件不需要更改;

1).主服务器配置 正向授权文件 vim /etc/rc.d/init.d/named:

wKiom1MjGWPSM5zaAAG7VoqeSF0460.jpg


接上 测试语法:

[root@host1 ~]# named-checkconf
[root@host1 ~]# named-checkzone "xiaoma.com" /var/named/xiaoma.com.zone
zone xiaoma.com/IN: tech.xiaoma.com/NS 'dns.tech.xiaoma.com' (out of zone) has no addresses records (A or AAAA)
zone xiaoma.com/IN: loaded serial 2014031203
OK
[root@host1 ~]# rndc reload
[root@host1 ~]# service named restart

2).这里配置了一台子域服务器IP:172.16.200.21:

wKioL1MjHCOQxEtmAAFiUuQWGoM690.jpg


3).子域配置/etc/named.conf:

//      listen-on port 53 { 127.0.0.1; };
//      listen-on-v6 port 53 { ::1; };
//      allow-query     { localhost; };
//      dnssec-enable yes;
//      dnssec-validation yes;
//      dnssec-lookaside auto;
//      bindkeys-file "/etc/named.iscdlv.key";
//      managed-keys-directory "/var/named/dynamic";
//include "/etc/named.root.key";

4).子域配置 定义/etc/named.rfc1912.zones :

wKiom1MjIzCSO1R4AABVweyTZPY685.jpg


5).子域配置 区域文件/var/named/tech.xiaoma.com.zone:

wKioL1MjIyfxQQ_tAAD8D1A97Ss786.jpg

6).赋予权限属性并启动:

[root@localhost named]# hown root:named tech.xiaoma.com.zone
[root@localhost named]# chmod 640 tech.xiaoma.com.zone
[root@localhost named]# named-checkzone "xiaoma.com" /var/named/tech.xiaoma.com.zone
zone xiaoma.com/IN: loaded serial 2014031201
OK
[root@localhost named]# named-checkconfig
[root@localhost named]# service named start
Starting named:                                            [  OK  ]
[root@localhost named]# rndc reload
server reload successful
[root@localhost named]#

7).子域 测试解析A记录:

wKioL1MjKqeDBlp_AANI4DqHjTw435.jpg


8).主服务器解析NS记录,虽然有授权,但是不以父域的相应为结果(父域能解析子域).

wKiom1MjKn6DiWqVAAKICKonTTA479.jpg


9).在子域上解析父域(子域不能解析父域)--这是需要转发功能的:

wKiom1MjLFHyJYDiAAKAMlQkzms817.jpg




接上2配置:

3.配置区域转发:转发域.


1).子域配置 /etc/named.rfc1912.zones:

wKiom1MjNpGyNYUpAACQHEsk1H4335.jpg

2).重载服务.

[root@localhost named]# named-checkconf
[root@localhost named]# rndc reload
server reload successful
不行的就用这个:
[root@localhost named]# service named restart
Stopping named: .                                          [  OK  ]
Starting named:                                            [  OK  ]
[root@localhost named]#

3).在子域上测试解析父域的A记录:

wKiom1MjOX2RMlTOAAOBaT0U-ic332.jpg


4).子域配置:怎么解析其它的服务器呢?如www.google.com

I.配置/etc/named.conf文件:

wKioL1MjPsCD7cEMAAIUwNjzovE920.jpg


II.配置/etc/named.rfc1912.zones:

wKiom1MjQIaSv9BEAABwzfjbNhI154.jpg





A smile is the most beautiful language!!!


j_0057.gifj_0057.gifj_0057.gif以本人的理解而写出博客,如若有错误,欢迎指出.j_0057.gifj_0057.gifj_0057.gif

                                                                       ---->小马子