此篇将说明DNS的主从复制、子域授权、acl与转发,如需要原理请参阅http://essun.blog.51cto.com/721033/1372123
正反解析
我们知道现在要访问一个网站,只要输入一个网址就可以获取到对应的页面信息,而不是用输入IP地址访问,能够完成这一功能的过程(将FQDN转换成IP地址)这就是正向解析,有了正向解析,那么反向解析又有什么用呢,正向可以将域名转换成IP地;反向解析的作用是将IP地址转换成域名。正向解析是通过正向查找区域(即数据文件中的A记录来查找)反向解析是通过反向查找区域(即数据文件中的PTR来查找),PTR记录是邮件交换记录的一种,邮件交换记录中有A记录和PTR记录,A记录解析名字到地址,而PTR记录解析地址到名字。地址是指一个客户端的IP地址,名字是指一个客户的完全合格域名。通过对PTR记录的查询,达到反查的目的.
下面将图解正反解析:
一、本机环境与软件包
|
|||
bind软件包版本 | BIND 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 | ||
正向区域 | essun.com | ||
反向区域 | 1.168.192.in-addr.arpa |
二、主配置文件(/etc/named.conf)
在/var/named下默认的数据文件
检查语法
在/var/named目录下新增两个数据文件,一个是正向的essun.com.zone数据文件,一个是essun.com的反向数据文件192.168.114.zone
正向数据文件(essun.com.zone)
数据文件语法检查(named-checkzone)
反向数据文件(192.168.1.zone)
检查语法
测试正向区域
反向解析
经过以上的解析,都成功了,如想了解dig的详细的使用请自觉man或google,也可以使用简单的host命令:
===================DNS正反解析完成=========================================
DNS主从
原理:
主从DNS服务器数据同步的过程:
①、主 DNS服务器每次修改完成并重启服务后,将传送notify给所有的Slave DNS服务器。 ②、Slave DNS服务器将查询主服务器的SOA记录,主DNS服务器收到请求后将SOA记录发送给Slave DNS服务器。
③、Slave DNS服务器收到后同时对比查询结果中的serial值,如果serial值不大于本机的话将结束数据同步过程;但是如果serial值大于本机的话,slave DNS将发送zone transfer请求要求(AXFR/IXFR)。
④、主DNS响应zone transfer请求并传送结果,直到整个slave更新完成。
注:
当新增一台辅助域服务器,第一次复制主服务器时为完全区域传送(axfr),以后主服务器每一次修改都是增量传送(infr)
主DNS的bind版本可以低于从DNS的bind版本;
向区域中添加从服务器的关键两步:
在上级获得授权
在区域数据文件中为从服务器添加一条NS记录和对应的A或PTR记录;
主DNS的主配置文件(/etc/named.conf)如下:
主的正向数据文件内容如下:
主的反向数据文件
完成后重启主的DNS服务器
1
|
#service named restart
|
从服务器配置(/etc/named.conf)如下:
重启从DNS服务器
1
|
#service named restart
|
查看/var/named/slaves
每个文件的内容
192.168.1.zone
essun.com.zone
当然也要修改/etc/resolv.conf中的nameserver的先后顺序,这样也算实现的最简单的轮询负载a_c!
当有新的记录在主的数据文件中被增加上,记得要修改序列号(每次修改后要改变序列号),这样才能同步哦,以上实验不考虑安全因素。
让我们来看一下日志记录(/var/log/messages),是如何做到主从同步的
其实主从的原理,就是从日志分析出来的。
(注:有问题看日志,这是一个好习惯啊)
===========================主从完成===================================================
DNS子域授权
原理:
所谓的子域授权,就是将原来在同一个域中的部分区域分到一个特定的区域解析。(此处个人理解)
父域的数据文件中添加“胶水”记录
父域语法检查
重启bind服务
在子域安装好bind,子域的配置文件(/etc/named.conf)
子域的数据文件(/var/named/mozi.essun.com)
检查语法
修改文件权限(640)与文件的属主属组
重启named服务
子域测试解析
注:之所以没有在dig后面指父域的IP地址,是因为我在设定IP地址时,将DNS指向了父域。
在父域测试
如果有多个子域就如以上的步骤重复多次,如果子域同样有主从,那么从服务器上的NS也要写到父域中数据文件中。
注:在子域测试父域内的主机是无法解析的,因为,如果当前区域无法解析此记录,会将此记录转发给根,而外网并没给此区域授权,所以将无法解析此记录,最终解析失败。
===============================子域授权完成==========================================
DNS转发
接一个问题,如果想子域解析父域,这就用到了forward,它可以将非本区域负责的解析的记录转发到其指定的区域中。如果上一个问题在子域的配置文件(/etc/namd.conf)中设置转发区域,指向父域,这样就可以解析到父域中的主机了,其原始内容不变,只增加一个区域文件,因为是转发所以不需要数据文件。
配置信息如下:
检查语法
无问题后,重启服务
测试解析父域
以上这种转发方式叫指定的区域转发
还有一种请况就是当父域解析不到时,在options中可中设置
1
2
3
4
5
|
options {
directory
"/var/named"
;
forward first;
forwarders { 192.168.1.114; };
};
|
forword 的类型有两种:
forward first设置优先使用forwarders DNS服务器做域名解析,如果查询不到再使用本地DNS服务器做域名解析。
forward only设置只使用forwarders DNS服务器做域名解析,如果查询不到则返回DNS客户端查询失败。
=================================DNS转发完成============================================
DNS的ACL(Access Control List)
简要
访问控制列表(ACL)就是一个被命名的地址匹配列表。使用访问控制列表可以使配置简单而清晰,一次定义之后可以在多处使用,不会使配置文件因为大量的 IP 地址而变得混乱。
要定义访问控制列表,可以在 BIND 的主配置文件 /etc/bind/named.conf 中使用 acl 语句来实现。acl 语句的语法为:
acl ACL_NAME {
172.16.0.0/16;
192.168.0.0/24;
127.0.0.0/8;
};
BIND 里默认预定义了 4 个名称的地址匹配列表,他们可以直接使用,分别为:
any : 所有主机
localhost : 本机
localnets : 本地网络上的所有主机
none : 不匹配任何主机
acl 是 named.conf 中的顶级语句,不能将其嵌入其他的语句。
要使用用户自己定义的访问控制列表,必须在使用之前定义。因为可以在 options 语句里使用访问控制列表,所以定义访问控制列表的 acl 语句应该位于 options 语句之前。
为了便于维护管理员定义的访问控制列表,可以将所有定义 acl 的语句存放在单独的文件 /etc/bind/named.conf.acls 中,然后在主配置文件 /etc/bind/named.conf 中如下语句
include "/etc/bind/named.conf.acls";
以下的安全控制选项中就可以写acl列表名了!!!
安全控制选项:
allow-transfer {}; 允许区域传送列表
通常都需要启用;
allow-query {};给那些主机开启查询功能
此项通常仅用于服务器是缓存名称服务器时,只开放查询功能给本地客户端;
allow-recursion { };为那些主机递归
定义递归白名单;
allow-update { none; };(建议不要开启)
定义允许动态更新区域数据文件的主机白名单
======================================完============================================