Bind 9 Administrator Reference Manual
Chapter 6. BIND 9 Configuration Reference
Zones defined within a view statement will be only be accessible to clients that match the view. By
defining a zone of the same name in multiple views, different zone data can be given to different clients,
for example, "internal" and "external" clients in a split DNS setup.
Many of the options given in the options statement can also be used within a view statement, and then
apply only when resolving queries with that view. When no view-specific value is given, the value in the
options statement is used as a default. Also, zone options can have default values specified in the view
statement; these view-specific defaults take precedence over those in the options statement.
Views are class specific. If no class is given, class IN is assumed. Note that all non-IN views must
contain a hint zone, since only the IN class has compiled-in default hints.
If there are no view statements in the config file, a default view that matches any client is automatically
created in class IN, and any zone statements specified on the top level of the configuration file are
considered to be part of this default view. If any explicit view statements are present, all zone statements
must occur inside view statements.
Here is an example of a typical split DNS setup implemented using view statements.
view "internal" {
// This should match our internal networks.
match-clients { 10.0.0.0/8; };
// Provide recursive service to internal clients only.
recursion yes;
// Provide a complete view of the example.com zone
// including addresses of internal hosts.
zone "example.com" {
type master;
file "example-internal.db";
};
};
view "external" {
match-clients { any; };
// Refuse recursive service to external clients.
recursion no;
// Provide a restricted view of the example.com zone
// containing only publicly accessible hosts.
zone "example.com" {
type master;
file "example-external.db";
};
};
81