CHAPTER 7 ■ BIND TYPE SAMPLES 
157
}; 
zone "example.com" { 
type master; 
// private zone files including local hosts 
file "view/master.example.com.internal"; 
allow-update{none;}; 
}; 
// required local host domain 
zone "localhost" in{ 
type master; 
file "master.localhost"; 
allow-update{none;}; 
}; 
// localhost reverse map 
zone "0.0.127.IN-ADDR.ARPA" in{ 
type master; 
file "localhost.rev"; 
allow-update{none;}; 
}; 
// reverse map for local address at example.com 
// uses 192.168.254.0 for illustration 
zone "254.168.192.IN-ADDR.ARPA" in{ 
type master; 
file "view/192.168.254.rev.internal"; 
allow-update{none;}; 
}; 
}; // end view 
// external hosts view 
view "badguys" { 
match-clients {"any"; }; // all other hosts 
// recursion not supported 
recursion no; 
minimal-responses yes;  // optional - improved performance 
additional-from-auth no; // optional - improved performance 
additional-from-cache no;  // optional - minimal performance change 
zone "example.com" { 
type master; 
// only public hosts 
file "view/master.example.com.external"; 
allow-update{none;}; 
allow-transfer {10.0.0.1;}; // slave server for the external zone 
}; 
// reverse map for local address at example.com 
// uses 192.168.254.0 for illustration 
zone "254.168.192.IN-ADDR.ARPA" in{ 
type master; 
file "view/192.168.254.rev.external"; 
allow-update{none;}; 
}; 
}; // end view 
Add a blank page to a pdf - insert pages into PDF file in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Guide C# Users to Insert (Empty) PDF Page or Pages from a Supported File Format
add page number to pdf in preview; add remove pages from pdf
Add a blank page to a pdf - VB.NET PDF Page Insert Library: insert pages into PDF file in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Easy to Use VB.NET APIs to Add a New Blank Page to PDF Document
add a blank page to a pdf; add page number to pdf reader
CHAPTER 7 ■ BIND TYPE SAMPLES 
158 
The principle when using view clauses is that each view contains all the zone clauses required within
that view and defines how they will behave within that view. The zone example.com appears in each view
clause but references a different zone file (in the file statement). The zone file
master.example.com.internal will contain both internal and public hosts, whereas the zone file
master.example.com.external will have only the publicly visible hosts. The same principle applies to the
reverse-mapping files: 192.168.254.rev.internal will contain reverse mapping for all the internal and
public hosts, whereas 192.168.254.rev.external will only reverse map externally visible or public hosts. 
The view "goodguys" clause provides recursive support and consequentially requires a
root.servers zone file (zone "."). The view "badguys" clause doesn’t require this zone, since it doesn’t
support recursive queries and is not present. Similarly, there is no need for the master.localhost and
localhost.rev zone files in the view "badguys" clause (all local requests are answered by the view 
"goodguys" clause and they are not present). 
Since BIND 9.5+ the statement allow-recursion {192.168.254/24;};  in the "goodguys" view is
essential to permit recursive queries. It could also have been enabled with an allow-query-cache
{192.168.254/24;}; as either will work. On balance, the author's prejudice is for allow-recursion since
it’s unambiguous in its intent. In either case, the purpose is to ensure that the resolver is not Open by
limiting the scope of recursive support. 
The order in which the view statements are defined is very important. In the view "goodguys"
clause, the line match-clients { 192.168.0.0/24; } is used to match the 256 IP addresses from
192.168.254.0 to 192.168.254.255 (the IP prefix format, or slash notation, for defining an IP address range
is described in the “IPv4 Addresses and CIDR” sidebar in Chapter 3). Only when this match fails does the
process fall through to the view "badguys". In the view "badguys", match-clients {"any"; }; is
interpreted to be “any not matched previously.” If the order of view clauses were reversed, all IP
addresses, including the internal IP addresses (192.168.254.0/24), would match “any”, hence no
additional services would be provided to internal clients. 
Security and the
view Section 
Both this chapter and Chapter 4 have suggested that there is a weakness in using view clause if the name
server’s file system is compromised. This is in no sense a reflection on BIND’s innate security; quite the
contrary. In order to compromise the file system, an attack does not depend upon BIND or BIND’s
integrity, but rather can focus on any software running in the host with the sole objective of gaining
some form of root privilege or even limited (read-only) access to well-known locations. If the zone files
master.example.com.internal and 192.168.254.rev.internal could be read, then all the information
about the internal organization of the zone could be discovered irrespective of all BIND’s attempts to
stop it. In short, it is potentially dangerous to keep internal zone files or internal reverse-map files on a
view based name server. 
However, careful inspection of the named.conf file earlier indicates that it contains relatively
innocuous data, which would be of very little use to a hacker and indeed the most revealing data, namely
the line match-clients { 192.168.254.0/24; };, may be available via a simple whois enquiry! 
This characteristic of the view clause means that it can be used irrespective of the state of the
underlying file system where it will not expose private information. That is, you can use the views to
support resolver behavior mixed with external authoritative server behavior, neither of which requires
private (internal) data. The view clause can be used in a stealth configuration to provide access from the
internal network, as illustrated in Figure 7–2. 
C# PDF Page Delete Library: remove PDF pages in C#.net, ASP.NET
In order to run the sample code, the following steps would be necessary. Add necessary references: pageId, The page index of the deleted blank page.
adding pages to a pdf; add page number pdf
C# Word - Insert Blank Word Page in C#.NET
Add and Insert a blank Page to Word File in C#. This C# demo will help you to insert a Word page to a DOCXDocument object at specified position.
add page numbers to a pdf file; add page numbers to pdf in reader
CHAPTER 7 ■ BIND TYPE SAMPLES 
159
Figure 7–2. Use of BIND’s view section in a stealth configuration
This named.conf sample file on the public side of this configuration provides the following services: 
• 
characteristic is defined in the view "badguys" clause by the recursion no; 
statement in the options clause and the lack of a zone "." (root zone). 
• 
resolvers or other name servers acting on behalf of resolversIt supports only 
iterative queries. This characteristic is defined in the view "badguys" clause by the 
recursion no; statement in the options clause. 
• The name server provides caching services for internal users. This characteristic is 
defined in the view "goodguys" clause by the recursion yes; statement in the 
options clause and the presence of the zone "." (root zone). 
• 
characteristic is defined in the view "goodguys" clause by the recursion yes; 
statement in the options clause. 
The BIND named.conf file for this configuration is shown here: 
// View based Authoritative Name Server for EXAMPLE.COM. 
// CHANGELOG: 
// 1. 9 july 2005 INITIALS or NAME 
//  a. did something 
// a. 23 july 2005 INITIALS or NAME 
//  a. did something again 
//  b. another change 
// 
// global options 
options { 
// all relative paths use this directory as a base 
directory "/var/named"; 
// version statement for security to avoid hacking known weaknesses 
version "not currently available"; 
dnssec-enable no; // zone not signed in this case - see Chapter 11 
}; 
// 
Bind 9 view Solution
Bind 9 view used to limit support
for recursive queries to generic
site IP address range.
PC
DNS
DNS
Public
Private
Firewall
C# PowerPoint - Insert Blank PowerPoint Page in C#.NET
Add and Insert a blank Page to PowerPoint File in C#. This C# demo will help you to insert a PowerPoint page to a DOCXDocument object at specified position.
add a page to a pdf in reader; add pages to pdf online
C# Create PDF Library SDK to convert PDF from other file formats
Add necessary references: RasterEdge.Imaging.Basic.dll. using RasterEdge.XDoc.PDF; Create a new PDF Document with one Blank Page in C# Project.
add blank page to pdf; add page to a pdf
CHAPTER 7  BIND TYPE SAMPLES 
160 
// uses 3 files in rotation swaps files when size reaches 250K 
// failure messages up to this point are in (syslog) /var/log/messages 
// 
logging{ 
channel example_log{ 
file "/var/log/named/example.log" versions 3 size 250k; 
severity info; 
}; 
category default{ 
example_log; 
}; 
}; 
// provide recursive queries and caching for our internal users 
view "goodguys" { 
match-clients { 192.168.254.0/24; }; // example.com's network 
recursion yes; 
// required zone for recursive queries 
zone "." { 
type hint; 
file "root.servers"; 
}; 
}; // end view 
// external hosts view 
view "badguys" { 
match-clients {"any"; }; // all other hosts 
// recursion not supported 
recursion no; 
minimal-responses yes;  // optional - improved performance 
additional-from-auth no; // optional - improved performance 
additional-from-cache no;  // optional - minimal performance change zone "example.com" { 
type master; 
// only public hosts 
file "view/master.example.com.external"; 
allow-transfer {10.0.0.1;}; // slave server for the domain 
}; 
// reverse map for local address at example.com 
// uses 192.168.254.0 for illustration 
zone "254.168.192.IN-ADDR.ARPA" in{ 
type master; 
file "view/192.168.254.rev.external"; 
}; 
}; // end view 
To invoke the service from the Stealth side of the configuration, the zone "." (defined as type hint 
in the sample file earlier) should be replaced with the following fragment, which forwards all requests for 
domains other than example.com to ns1.example.com—one of the public name servers: 
// BIND named.conf fragment 
// forwards requests for domains other than example.com 
// to the public name server ns1.example.com = 192.168.254.2 
zone "." in{ 
C# PDF Page Replace Library: replace PDF pages in C#.net, ASP.NET
Add necessary references: RasterEdge.Imaging.Basic.dll. pageIdx, The page index of the deleted blank page. 0
add a page to a pdf document; add pages to pdf acrobat
C# PDF: PDF Document Viewer & Reader SDK for Windows Forms
page. AddPage: Prior to the currently displayed PDF page to add a blank page. DeletePage: Delete the currently displayed PDF page.
adding page numbers pdf; add page numbers to pdf
CHAPTER 7 ■ BIND TYPE SAMPLES 
161
type forward; 
forwarders{192.168.254.2;}; 
forward only; 
}; 
There are no files involved in this configuration that will divulge additional information that is not 
already publicly available or that could be found out without access to any of the systems or hosts 
involved in the configuration. The most revealing information is contained in the line match-clients { 
192.168.254.0/24;, and it’s the IPv4 address range used by the entire configuration. As previously noted, 
this could probably be obtained with a whois enquiry. To further tighten security, communication 
access to be entirely blocked in the firewall configuration. I used this configuration to illustrate the 
power of the view clause and the kind of applications in which it can be used irrespective of the 
environment in which it is running. 
Summary 
This chapter introduced a number of configuration samples that reflect widely used DNS types while 
bearing in mind that many name servers, especially on smaller sites, are multifunctional or hybrid 
configurations. The objective of the chapter is to acquaint you with the configuration of a set of building 
blocks, DNS types, from which more complex configurations can be constructed. The text described 
BIND 9’s powerful new view
clause provides many opportunities to reduce physical configurations in secure perimeter defenses, but 
careful attention to system design and especially named.conf file contents may be required to maximize 
its potential. 
Chapter 8 presents some advanced DNS configurations including delegation of subdomains, load 
balancing, and resilience, among many others. 
VB.NET Create PDF Library SDK to convert PDF from other file
In order to run the sample code, the following steps would be necessary. Add necessary references: VB.NET: Create a New PDF Document with One Blank Page.
adding page numbers to pdf in reader; add page numbers to a pdf file
VB.NET PDF: Get Started with PDF Library
with blank page? If so, you will work out this target just by using RasterEdge PDF document creating component within VB web or Windows application. Add
adding page numbers to pdf; add page to pdf without acrobat
C H A P T E R   8 
■ ■ ■ 
163
DNS Techniques 
This chapter describes a number of common configurations when working with zone files and, in some 
cases, with BIND. These solutions are presented to assist you in quickly implementing some commonly 
used features, recovering from errors, and illustrating some of the more subtle uses of the DNS. The 
following topics are covered: 
• How to delegate a subdomain: This configuration allows the domain name owner 
to pass the responsibility to a subdomain owner (which may be another party or 
another part of the organization) who will be entirely responsible for the zone files 
describing the subdomain. 
• How to delegate a virtual subdomain: This configuration uses a single zone file to 
provide subdomain addressing (for instance, www.us.example.com or 
www.uk.example.com). 
• How to configure fail-over mail servers: The configuration allows backup mail 
servers to support a domain. 
• How to reverse-map subnets: This configuration allows the delegation of reverse 
mapping to subnets of typically less than 256 IPv4 addresses. 
• How to load balance with DNS: The configurations describe various ways in which 
load balancing may be implemented using DNS features. The BIND statements 
that control the order in which addresses are returned are also covered. 
• How to define an SPF record: The Sender Policy Framework (SPF) is an anti-spam 
measure that allows an e-mail server to verify that the SMTP source is valid for the 
sending e-mail address. SPF records are currently implemented by Microsoft, 
• How to define a DKIM record: DomainKeys Identified Mail (DKIM) is an anti-
spam feature using signed mail and used by several major mail providers such as 
Google, Yahoo, and others. 
• How to support http://example.com: The configuration allows both the URL 
www.example.com and example.com to directly address a web or other service. The 
required changes to the Apache server are also covered. 
• How to fix an out-of-sequence SOA serial number: The process used to fix various 
SOA serial number errors is covered. 
• 
section on wildcards illustrates the use of this error-prone feature. 
CHAPTER 8  DNS TECHNIQUES 
164 
• Zone file Construction: Zone files can be constructed in a variety of ways to ease 
configuration. 
• 
location. A poor man’s anycasting. 
• DNSBL: DNS blacklists and other alternative uses for DNS. 
• 
DNS reliability. 
The examples shown use a number of BIND’s named.conf statements (described in Chapter 12) and 
standard resource records (defined in Chapter 13). If you are running name server software other than 
BIND, the zone files will remain the same but the configuration statements may differ. 
In the next section, the process of delegation of a subdomain, us.example.com, is described to 
illustrate the general principle of delegation within an owner’s domain name space. The domain owner 
can delegate everything to the left of the domain name in any way that makes sense—or for that matter 
that doesn’t make sense! 
Delegate a Subdomain (Subzone) 
This technique configures a zone to fully delegate the responsibility for a subdomain to another name 
server. This is not the only possible method of defining subdomains—another technique involves 
configuring what this book calls a virtual or pseudo subdomain, which uses a single zone file to provide 
subdomain addressing structures and is described later in the chapter. Assume a fully delegated 
subdomain is required with the following addressing structure : 
• Zone (domain) name: example.com 
• Domain host name: bill.example.com 
• Subdomain name: us.example.com 
• Subdomain host or service name: ftp.us.example.com 
To ease the zone administration load, this technique assumes the responsibility for the subdomain 
will be fully delegated to the us.example.com zone administrator who will be responsible for the 
subdomain zone files and their supporting name servers. The zone administrators of the corporate 
domain for example.com want nothing further to do with us.example.com other than they have generously 
agreed to act as the slave DNS for the subdomain name servers. When dealing with subdomains, it’s 
important to remember that as far as the Internet registration authorities and the TLD servers are 
concerned, subdomains do not exist. All queries for anything that ends with example.com will be referred 
to the name servers for the example.com zone or domain. In turn, these name servers are responsible for 
referring the query to the subdomain name servers. For the want of any better terminology, the name 
servers for example.com are called the domain name servers and are visible to the gTLD .com servers; the 
name servers for us.example.com are called the subdomain name servers and are visible only to the 
domain name servers (they are invisible to the gTLD servers). 
Note The term subzone was originally defined in RFC 1034 to describe what is most commonly called a subdomain 
today. This book uses the term subdomain throughout. 
CHAPTER 8 ■ DNS TECHNIQUES 
165
Domain Name Server Configuration 
The following is a fragment from BIND’s named.conf file controlling the example.com domain name 
servers: 
// named.conf file fragment 
zone "example.com" in{ 
type master; 
file "master.example.com"; 
}; 
zone "us.example.com" IN { 
type slave; 
file "slave.us.example.com"; 
masters {10.10.0.24;}; 
}; 
us.example.com 
subdomain is a good practice but not essential. The subdomain can use any suitable name server 
including an external (out-of-zone) name server, such as ns1.example.net. The zone file 
master.example.com will contain the domain configuration supporting two name servers for both the 
domain and the subdomain (recall that the generous zone administrators volunteered to configure one 
of their domain name servers to act as a slave subdomain name server). The following zone file fragment 
shows this configuration: 
; zone fragment for 'zone name' example.com 
$TTL 2d     ; default TTL is 2 days 
$ORIGIN example.com. 
@        .  IN      SOA   ns1.example.com. hostmaster.example.com. ( 
2010121500 ; serial number 
12h         ; refresh =  12 hours 
15m        ; refresh retry = 15 minutes 
3w12h      ; expiry = 3 weeks + 12 hours 
2h20m      ; nx  = 2 hours + 20 minutes 
; main domain name servers 
IN      NS     ns1.example.com. 
IN      NS     ns2.example.com. 
; mail domain mail servers 
IN      MX      mail.example.com. 
; A records for preceding name servers 
ns1           IN      A      192.168.0.3 
ns2           IN      A      192.168.0.4 
; A record for preceding mail server 
mail          IN      A      192.168.0.5 
.... 
; subdomain definitions in the same zone file 
; $ORIGIN directive simplifies and clarifies definitions 
$ORIGIN us.example.com. ; all subsequent RRs use this ORIGIN 
; two name servers for the subdomain 
@             IN      NS     ns3.us.example.com. 
; the preceding record could have been written without the $ORIGIN as 
; us.example.com. IN NS ns3.us.example.com. 
CHAPTER 8  DNS TECHNIQUES 
166 
; or @         IN    NS ns3 
; the second name server points back to preceding ns1 
IN    NS    ns1.example.com. 
; A records for name server ns3 required - the glue record 
ns3           IN      A      10.10.0.24 ; glue record 
; the preceding record could have been written as 
; ns3.us.example.com. A 10.10.0.24 if it's less confusing 
Note  The somewhat bizarre time values in the SOA RR are to illustrate what is possible using BIND 9. The 
values are certainly not recommended; unless there is a good reason not to do so, it’s always wiser to use a 
rounded value such as 1d or 15h. 
The preceding fragment makes the assumptions that the domain name server ns1.example.com will 
act as a slave for the us.example.com subdomain. If this is not the case, any other name server can be 
defined the same way, but if this second name server also lies in the us.example.com domain, it will 
require an A RR. The A RR for ns3.example.com for the preceding subdomain is the so-called glue record 
(see the “Glue Records in DNS” sidebar). Glue records are necessary to allow a DNS query for the 
subdomain to return a referral containing both the name of the name server and its IP address. IP 
addresses are always defined using an A RR (or an AAAA RR if IPv6). 
GLUE RECORDS IN DNS 
Strictly speaking, glue records (the IP address of the name server defined using an A or AAAA RR) are only 
required for every name server lying within the domain or zone for which it is a name server. The query 
response—the referral—must provide both the name and the IP address of the name servers that lie 
within the domain being queried. In practice, the top-level domain (TLD) servers provide the IP address for 
every second-level domain (SLD) name server, whether in the domain or not, in order to minimize the 
number of query transactions. When a query to a generic top-level domain (gTLD) is issued, this name 
server provides the glue records for all the SLD domain’s name servers. These glue records were defined 
and captured when the domain was registered. In the preceding configuration, the domain name server is 
acting in this role and must supply the IP addresses of the name servers in response to subdomain 
queries. To satisfy this requirement, the A RR for the name server (
ns3.us.example.com
) is a glue record 
and must be present. The reason a glue record must exist for servers within the domain but is required 
only for performance reasons for those in an external or out-of-zone domain can be illustrated by looking 
at what would happen if the glue record were not present. If you assume the query to the gTLD server for 
example.com
returned the name but not the IP address of 
ns1.example.com
, then a further query would 
be required for the A record of 
ns1.example.com
; but since the IP of the SLD name server is not yet 
known, it must requery the gTLD server, which answers again with the name but not the IP . . . and so on 
ad infinitum. Name servers for a domain (for instance, 
example.com
) that lie in another domain (for 
instance, 
ns1.example.net
) only need the name, since a normal query for the A RR of 
ns3.example.net
will return the required IP. As noted earlier, to increase performance, the IP addresses of all name servers 
for a domain, whether the name servers lie in the queried domain or not, are always returned by root and 
TLD name servers. 
CHAPTER 8 ■ DNS TECHNIQUES 
167
Subdomain Name Server Configuration 
The BIND named.conf file controlling the subdomain name servers will contain statements similar to the 
following fragment: 
// named.conf file fragment for the subdomain us.example.com 
zone "us.example.com" in{ 
type master; 
file "master.us.example.com"; 
}; 
The file master.us.example.com will contain the subdomain (us.example.com) configuration and use 
the two name servers that were defined in the preceding domain fragment. Here is a fragment of the 
subdomain zone file: 
; zone file for subdomain us.example.com 
$TTL 2d ; zone default of 2 days 
$ORIGIN us.example.com. 
IN     SOA   ns3.us.example.com. hostmaster.us.example.com. ( 
2010121500 ; serial number 
2h         ; refresh =  2 hours 
15m        ; refresh retry = 15 minutes 
3w12h      ; expiry = 3 weeks + 12 hours 
2h20m      ; nx = 2 hours + 20 minutes 
; subdomain name servers 
IN      NS     ns3.us.example.com. 
IN      NS     ns1.example.com. ; see following notes 
; subdomain mail server 
IN      MX 10  mail.us.example.com. 
; preceding record could have been written as 
;                 IN      MX 10  mail 
; A records for preceding name servers 
ns3               IN      A      10.10.0.24 
ns1.example.com.  IN      A      192.168.0.3 ; 'glue' record 
; A record for preceding mail server 
mail              IN      A      10.10.0.25 
; next record defines our ftp server 
ftp               IN      A      10.10.0.28 
; the preceding record could have been written as 
; ftp.us.example.com. A 10.10.0.24 if it's less confusing 
.... 
; other subdomain records 
.... 
The preceding fragment makes the assumption that ns1.example.com will act as a slave server 
for the us.example.com subdomain. If this is not the case, other name servers could be defined in a 
similar manner. The A record for ns1.example.com is a glue record and is not strictly necessary because it 
must already be available in a resolver from a previous query. This point is worth emphasizing further 
since it illustrates the nature of the DNS hierarchy. To make any query for the subdomain 
us.example.com, the example.com domain must have been queried first. Since ns1.example.com is one of 
the name servers for example.com, its IP address is already known to the resolver that issues the 
subdomain query. If the second name server for the subdomain lies in an external  domain, there is no 
need for the glue record.  
Documents you may be interested
Documents you may be interested