view语句定义了视图功能。视图是BIND 9提供的强大的新功能,允许DNS服务器根据客户端的不同有区别地回答DNS查询,每个视图定义了一个被特定客户端子集见到的DNS名称空间。这个功能在一台主机上运行多个形式上独立的DNS服务器时特别有用。
view语句的用法:
view view_name [class] {
match-clients { address_match_list } ;
match-destinations { address_match_list } ;
match-recursive-only { yes_or_no } ;
[ view_option; ...]
[ zone_statement; ...]
};
每个view语句定义了一个被一些客户子集所看到的DNS 名字空间的视图。一个客户匹配一个视图 是指它的源地址与视图的match-clients子句中的address match list匹配并且它的目的地址与视 图的match-destinations子句中的address match list匹配。如果未指定,match-clients和match- destinations缺省都是匹配所有地址。除了检查IP地址,match-clients和match-destinations也可以使 用keys,它给客户端提供了一个选择视图的机制。一个视图也可以指定成为match-recursive-only, 它表示仅仅来自匹配客户的递归请求才匹配此视图。
Tips 1:view语句的顺序非常重要— 一个客户端请求将 在它所匹配的第一个view的上下文中被解析。
在一个view语句中定义的区只能被与这个view相匹配的客户端访问。通过在多个视图中定义同样名字的区,可以为不同的客户端提供不同的区数据,例如,在一个分割的DNS 上建立“internal”和 “external”客户端。
Tips 2:许多在options语句中给出的选项也可以用在view语句中,并且仅仅在解析这个视图之内的请求时生效。当没有给出按视图指定的值时,缺省试验options 语句中的值。同样,区选项也使用在view语句 中指定的值做缺省值;这些按视图指定的缺省值优先于其在options语句中的值。
Tips 3:视图是按类划分的。如果没有给出类,假设为IN类。注意所有的非IN视图必须包含一个暗示区,因为只有IN类有一个预编译的缺省暗示区。
Tips 4:如果配置文件中没有view语句,就自动在IN类中建立一个匹配所有客户端的缺省视图。然后在配置文件的顶层所指定的zone语句都是这个缺省视图的一部份,options语句将会应用到这个缺省视图。 如果提供任何显式的view语句,所有zone语句都必须出现在view语句之内。
这里可以参考2篇文章,能对view的使用有一个整体的了解。
Zone的用法参考这里:Bind中的zone语句的定义和用法
Pingback引用通告: Bind的安装与详细配置 | 精彩每一天
Pingback引用通告: Bind中的zone语句的定义和用法 | 精彩每一天