Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1770617
  • 博文数量: 184
  • 博客积分: 10122
  • 博客等级: 上将
  • 技术积分: 5566
  • 用 户 组: 普通用户
  • 注册时间: 2005-12-08 12:32
文章存档

2011年(1)

2008年(183)

我的朋友

分类: LINUX

2008-03-03 20:37:40

10.6. Views

1BIND 9 引入'视图'的概念 ,这在含有防火墙的环境中非常有用。视图允许你对不同的主机群(团体)显示不同的配置。 例如对外网和内网的用户

2、如果没有配置任何视图,BIND 9 自动建立一个对所有查询主机都一样的视图,名为 _default 。该视图对任何地址的主机都匹配

3、建立视图需要使用 view 语句

      文本框: view “<view_name>” {
};

4、使用 view 语句需要注意的地方

Ø         视图的定义顺序非常重要。因为对于一台主机,首先匹配哪个 match-clients 列表,就采用哪个视图。所以在定义视图时,一定要按照 match-clients 覆盖的范围从小到大排列。当然如果两个match-clients 的范围不相交叉或者覆盖,则无所谓顺序。

Ø         如果使用了视图,则所有的 zone 语句只能出现在 view 语句之内,不能出现在 view 语句之外。

Ø         不同的 view 可以包含不同的 zone ,一个zone 不需要出现在所有的 view

Ø         view 语句必须放在 options 语句之后的,但不需要紧跟着

Ø         match-clients 带一个 address match list 作为参数

Ø         acl logging options 语句不能放在 view 之内

5、使用 view 可以解决问题

Ø         根据不同地址来源进行不同的响应,特别是在存在内外网的情况下

Ø         内外网看到的 zone 不同,例如 zone2zone3 这两个 zone 不需要让外界看到,只对外公布 zone1

Ø         同一个 zone 出现于多个 view ,包含不同的内容。


6view 可用的语句包括

文本框: view 
 

7view 在实际实施中的困难 
Ø         如果只是一台 name server 包办一切,那只需简单的建立 view 就可以了
Ø         如果是存在“主-从”、“下级子域”的情况,那就复杂多了 
n         - 
ü         notify 问题 :主服务器修改某个view的某个zonezone data file后,会发出 notify 消息,该notify 消息的源地址自然是主服务器的地址(假设主服务器只有1个地址)。
u        如果修改的是内部viewzone data files,从服务器发送 soa query 后,主服务器返回的是内部view的序列号,这没有什么不对的。
u        如果修改的是外部 view  zone data files,从服务器发送 soa query 后,主服务器返回的仍然是内部 view 的序列号 !!!
ü         refresh 问题 :同上,主服务器在收到从服务器发出的 SOA query 后,会返回 internal-view 的信  
息,而不是 external-view 的信息
ü         zone transfer 问题 :主服务器在收到从服务器的 xfer 请求后,只会返回内部 view 的信息。
n         上级-下级 
ü         上级查询下级问题 一个外部主机向 dns.bob.com. 查询下级子域 movie.bob.com的一个主机(递
归查询),dns.bob.com 使用外部 view  bob.com  zone data files ,发
 movie.bob.com  NS 记录(当然是 dns.movie.bob.com的外部地址),如果 dns.bob.com 配置了 recursion no;  dns.bob.com 不会向 dns.movie.bob.com 发送非递归查询 。这样外部主机就无法查询下级子域了。
ü         下级转发上级问题 当一个主机(不管是内部还是外部主机)查询 dns.movie.bob.com关于 bob.com
                        的一个主机时,dns.movie.bob.com. 如果在内部view和外部view都使用了转
发器,转发给上级域服务器的相应地址,如何保证源地址是跟view对应的呢?
8、应对措施 
Ø         notify 问题 :假设主服务器和从服务器都有有内网和外网地址 (这一点很重要,否则下面无法完成)
n         主服务器方面 
u        internal-view  NS 使用内网地址,external-view  NS 使用外网地址 
l         如果 soa query 是内部地址,则返回内部view的序列号
l         如果 soa query 是外部地址,则返回外部 view的序列号
u        rndc reload 的执行问题 
l         内部view rndc reload  IN  
l         外部 view rndc reload  IN 
l         如果只用 rndc reload  ,会使用那个 view 呢?
u        NS  rndc reload 一起解决了 NOTIFY NOTIFY Response 问题
l         NS 记录保证了 NOTIFY 消息正确的目的地址
l         rndc reload 指定 view 保证了 NOTIFY 消息正确的源地址
u        内部view和外部view的正向区的名称是一样的,但反向区的名称是不一样的 
l         因为内部view使用的是内网地址,所以要定义为 254.253.192.in-addr.arpa
l         因为外部 view使用的是外网地址,所以要定义为 95.105.202.in-addr.arpa
 
n         从服务器方面 
u        从服务器方面必须跟主服务器一样,建立内外view
u        从服务器的 masters 语句 
l         内部 view  zones masters { 主服务器的内网地址; };
l         外部 view  zones masters { 主服务器的外网地址; };
l         从服务器在收到 NOTIFY 消息后,会根据 NOTIFY 消息来源的地址来判断要检查那个 view ,所以 masters 的地址必须跟 view 相对应。
u        从服务器的 transfer-source 语句 
l         如何保证从服务器使用正确的地址查询主服务器 (soa query)
ü    masters 指定正确的目的地址
ü    transfer-source 指定从服务器使用正确的源地址(soa query  zone transfer
u        从服务器使用 allow-notify 
l         内部view  allow-notify {主服务器的内网地址;} 
l         外部 view  allow-notify {主服务器的外网地址;};
Ø         refresh 问题 refresh 的问题就是 NOTIFY 的问题,只要 NS 记录和 masters transfer-source正确就
可以实现正确的 refresh 
Ø              zone transfer 问题 :使用 transfer-source 同时也解决了该问题
Ø         上级查询下级问题 
n         内部 view :由于内部 view 的上级域服务器提供递归功能,所以内部 view 不需要考虑该问题
n         外部 view 
u        上级域服务器 :在外部 view 设置 recursion no;
u        上级域服务器 :增加一个 movie.bob.com  forward zone forwarders  dns.movie.bob.com 的外部地址
u        上级域服务器在转发查询到 dns.movie.bob.com 时是否使用外部地址?
Ø         下级查询上级问题 
n         下级域服务器 :增加一个 bob.com  forward zone ,内部 view  forwarders {} 使用上级域
                         服务器 dns.bob.com 的内网地址;外部 view  forwarders {} 使用上级域服务
                          dns.bob.com 的外部地址
n         下级域服务器在转发查询到 dns.bob.com. 时使用的地址是否会自动对应 view 
阅读(833) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~