DNS服务及其实现bind(二)之子域授权和视图
一、子域授权
1.1 自域授权架构
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
1.2 为何要转发?
从上面的架构图中可以看到:客户端 --> ns1
客户端请求解析的主机在alen域内的ns1主机, 客户端给父域ops发送请求,但是ops是找不到alen域内的ns1的,它只会从根域进行迭代去找,所以这种情况就要考虑转发。从而让客户端可以直接向alen域发送请求找到ns1主机。
1.3 如何定义转发服务器:
1.3.1 全部转发: 凡是对非本机所有负责解析的区域的请求,都转发给指定服务器
options {
forward { first|only }
forwarders
}
1.3.2 区域转发:仅抓发对特定区域的请求至某服务器
zone "ZONE_NAME" IN {
type forward;
forward { first|only };
forwarders
}
要点: first: 先转发,没有得到响应结果就自己去寻找根域
only: 转发后没有响应结果就放弃继续寻找根域
1.4 定义子域并实现转发功能实例
1.4.1 定义子域
在父域(192.168.1.102)中:
vim /var/named/alen.com.zone
ops IN NS ns1.ops
ns1.ops IN A 192.168.1.103
在子域(192.168.1.103)中:
添加子域:
vim /etc/named.rfc1912.zones
zone "ops.alen.com" IN {
type master;
file "ops.alen.com.zone";
};
添加子域的资源记录
vim /var/named/ops.alen.com.zone
$TTL 1d
$ORIGIN ops.alen.com.
@ IN SOA ns1.ops.alen.com. admin.ops.alen.com. (
2015041001
1H
10M
3D
1D )
IN NS ns1
ns1 IN A 192.168.1.103
www IN A 192.168.1.103
* IN A 192.168.1.103
1.4.2 实现转发
1. 全部转发
在 父域192.168.1.102上实现
vim /etc/named.conf
在options中添加两行:
forward first;
forwarders { 192.168.1.1; };
测试:
# dig -t A www.baidu.com @192.168.1.102
注意:
关掉dnssec验证机制
dnssec-enable no;
dnssec-validation no
/*include "/etc/named.root.key";
此配置保存根域名服务器的私钥文件,根域名解析服务器为了防止DNS劫持,采用一种DNSSEC安全扩展技术,采用证书认证机制保证数据安全。
如果注释此配置则DNS服务器与根域名服务器之间传递解析不需要经过认证。
如果开启此配置如果根的私钥不匹配则无法正常解析,所以有时候我们配置缓存转发服务器的时候可以选择注释此项。
2 区域转发
在子域 192.168.1.103上实现
vim /etc/named.rfc1912.zones
在最后一行添加:
zone "alen.com" IN {
type forward;
forward only;
forwarders { 192.168.1.102; }; //子域指向父域
};
关掉dnssec验证机制
dnssec-enable no;
dnssec-validation no
1.5 bind中安全相关的配置
acl: 把一个或多个ip地址归并为一个集合,并通过一个统一的名称进行调用
示例:
acl mynet {
192.168.1.102;
192.168.1.103;
192.168.1.0/24;
}
1.5.1 bind中四个内置的acl
none: 没有一个主机
any: 任意主机
local: 本机
localnet: 本机的IP同掩码运算后得到的网络地址
1.5.2 访问控制的命令
allow-query {} : 运行查询的主机,白名单,注意:定义在zone中只控制一个zone,定义在options中控制所有的zone
allow-transfer {}: 运行区域传送的主机: 白名单
allow-recursion {}: 运行递归的主机
allow-update {}: 允许更新区域数据库的内容
1.5.3 实例:
1.5.3.1 192.168.1.102:
vim /etc/named.conf
添加acl
acl slaves { //定义访问控制列表slaves
192.168.1.103;
192.168.1.102;
1127.0.0.1;
}
在/etc/named.rfc1912.zones中:
zone "alen.com" IN {
type master;
file "alen.com.zone";
allow-query { 127.0.0.1; }; //只允许本机查询
};
# dig -t A www.alen.com @127.0.0.1 // 其他任何ip都不能进行查询
1.5.3.2
添加:
allow-transfer { slaves; };
# dig -t axfr alen.com @192.168.1.103 //只允许本机及子域传送
1.5.3
全局配置中:
vim /etc/named.conf
注释 recursion {};
添加我们自己定义的允许递归的主机
allow-recursion { 192.168.1.102; 127.0.0.1; }; //只允许本机进行递归
1.5.3.4 为了安全,一般allow-update都设为none
vim /etc/named.rfc1912.zones
zone "alen.com" IN {
type master;
file "alen.com.zone";
// allow-query { 127.0.0.1; }; //只允许本机查询
allow-update { none; }; // 不允许任何主机更新
};
二、视图
2.1 view是什么?
view是bind配置逻辑上的一个容器
2.2 为什么要使用视图?
不同网络(比如联通和电信),或者不同区域(客户的来源距离),为了更好的客户体验,所以根据不同客户来源进行不同的zone配置,进而得到不同的请求结果。简单点说,为了实现不同客户请求得到不同的结果,所以用到view这个功能。
2.3 view的特点
一个bind服务器可定义多个view,每个view中可定义一个或多个zone;
每个view用来匹配一组客户端
多个view内可能需要对同一个区域进行解析,但使用不同的区域解析库文件
2.4 view的示例
view VIEW_NAME {
match-clients { }; //匹配不同的客户来源
zone;
}
注意:
1. 一旦启用了view,所有的zone都只能定义在view中
2. 仅有必要在匹配到允许递归请求的客户所在view中定义根区域
3.客户端请求到达时,是自上而下检查每个view所服务的客户端列表
2.5 如何实现view的不同客户来源
使用acl来实现:
比如:acl inet {
192.168.0.0/24;
127.0.0.1/8;
};

更多精彩