前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Bind 高级应用ACL 、View 模块

Bind 高级应用ACL 、View 模块

作者头像
Kevin song
发布2022-11-19 09:44:49
9010
发布2022-11-19 09:44:49
举报
文章被收录于专栏:运维监控日志分析

Bind View原理

View在Bind中被称为视图功能,DNS最基本的功能就是响应域名的查询,然后返回该域名的地址数据。而view和常规的DNS不同,当用户访问某个域名时,DNS服务器上的view会先判断一下客户端的源IP地址,然后使用acl和内部IP表做匹配,再返回给用户查询请求(一个区域会有多个view,每个view的配置均不相同,当用户访问一个域名时,view会根据用户IP判断此用户IP属于哪个view,然后某个view再给用户返回查询请求)

网络环境

通过配置bind view 对局域网中不同网段或IP的客户端指定不同的forwarders dns,"www.jd.com" 使用dns"8.8.8.8”和"223.5.5.5" 解析为不同主机从而验证结果;

Bind ACL

acl主配置语句用于定义一个命名的访问列表,里面包含了一些用IP表示的主机,这个访问列表可以在其他语句使用,表示其所定义的主机。其格式如下:

代码语言:javascript
复制
acl acl-name {   
    address_match_list   

address_match_list表示IP地址或IP地址集。其中,none、any、localhost和localnets这4个内定的关键字有特别含义,分别表示无主机、任何主机、本地网络接口IP和本地子网IP。

  • none:没有一个主机
  • any:任意主机
  • localhost: 本机
  • localnet:本机的IP同掩码运算后得到的网络地址

vim /var/named/acl/named.acl

代码语言:javascript
复制
acl "local.cernet" {
192.168.100.161/32;
192.168.100.234/32;
};
代码语言:javascript
复制
acl  "source" {             //定义一个名为source的ACL    
  10.0.0.1; 192.168.23.1; 192.168.23.15;      //包含3个单个IP    
 };    
acl "source_lan" {                //定义一个名为source_lan的ACL    
  "someips";                   //可以包含其他ACL    
  10.0.15.0/24;                 //包含10.0.15.0子网中的所有IP    
  !10.0.16.1/24;                //非10.0.16.1子网的IP    
  {10.0.17.1;10.0.18.2;};         //包含了一个IP组    
  localhost;//本地网络接口IP(含实际接口IP和127.0.0.1)    
 };

访问控制指令

代码语言:javascript
复制
allow-query {};允许查询的主机:白名单
allow-transfer{};允许区域传送的主机:白名单
allow-recursion{};允许递归的主机,建议全局使用 
allow-update{};允许更新区域数据库中的内容

Bind view 配置

视图(view)语句的定义

代码语言:javascript
复制
view view_name [class] {
match-clients { address_match_list } ;
match-destinations { address_match_list } ;
match-recursive-only { yes_or_no } ;
[ view_option; ...]
zone-statistics yes_or_no ; ]
[ zone_statement; ...]
};

Bind 配置文件

vim /etc/named/named.conf

代码语言:javascript
复制
include "/var/named/acl/named.acl";
view "in.local" {
   match-clients { local.cernet; };
   zone "." IN {
     type hint;
     file "named.ca";
 };
   forward first;
   forwarders { 8.8.8.8; };
include "/etc/named/named.rfc1912.zones";
 };
view "out.local" {
   match-clients { !local.cernet;any; };
   zone "." IN {
     type hint;
     file "named.ca";
 };
   forward first;
   forwarders { 223.5.5.5; };
include "/etc/named/named.rfc1912.zones";
 };

vim /etc/named/named.rfc1912.zones

代码语言:javascript
复制
zone "zabbix.com" IN {
  type master;
  file "zabbix.com.zone"; 
  allow-update { none; };
};
zone "rpztest.local" {
  type master;
  file "rpz.test.local";
  allow-update { none; };
};
zone "100.168.192.in-addr.arpa" IN {
  type master;
  file "100.168.192.loopback";
};

注意

(1)启用view,所有的zone都只能定义在view中

(2)仅在允许递归请求的客户端所在view中定义根区域

(3)客户端请求到达时,是自上而下检查每个view所服务的客户端列表

客户端测试

Client IP 192.168.100.161

Client IP 192.168.100.235

BINd 日志

8-Oct-2022 11:39:16.938 queries: info: client @0x7fc1480a1ae0 192.168.100.161#51765 (www.jd.com): view in.local: query: www.jd.com IN A +E(0)K (192.168.100.161)

18-Oct-2022 11:42:09.811 queries: info: client @0x7fc14400fc90 192.168.100.161#43833 (www.jd.com): view in.local: query: www.jd.com IN A +E(0)K (192.168.100.161)

18-Oct-2022 11:44:36.697 queries: info: client @0x7fc144070630 192.168.100.235#35406 (www.jd.com): view out.local: query: www.jd.com IN A +E(0) (192.168.100.161)

18-Oct-2022 11:45:11.754 queries: info: client @0x7fc1480b0540 192.168.100.235#58196 (www.jd.com): view out.local: query: www.jd.com IN A +E(0) (192.168.100.161)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-10-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源搬运工宋师傅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档