CHAPTER 7 ■ BIND TYPE SAMPLES 
137
1w      ; Expire 
3h )    ; Minimum 
IN      NS      localhost. 
1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0       IN      PTR     localhost. 
BIND named.conf File Format and Style 
The following notes provide a brief overview of some terminology to enable the reader to make sense of 
the files presented in this chapter, though some reference to Chapter 12 will be necessary if a detailed 
description of a particular value is required. 
BIND’s standard documentation uses a confusing number of terms to describe the various elements 
in the named.confs consistently 
throughout. Individual configuration lines are called statements. Each statement is terminated with a 
semicolon. Statements are defined within clauses. A clause starts on new line, and all its statements are 
enclosed within braces (curly brackets) and terminate with a semicolon. The following fragment 
illustrates this organization: 
// zone starts a new clause 
zone "example.com" { 
// all clause statements are contained within braces 
type slave; 
file "slave.example.com"; 
masters {10.0.0.1;}; 
// the zone clause is terminated with a closing brace 
}; 
BIND named.conf clauses and statements can seem quite complex, and BIND is pretty picky when it 
comes to syntax: semicolons, braces, and all that wonderful stuff. There are many named.conf layout 
styles possible, the majority of which are simply designed to minimize syntax errors. The following 
examples show various layout styles, each of which is handled by BIND: 
// dense single-line layout style 
zone "example.com" {type slave; file "sec.example.com"; masters {10.0.0.1;};}; 
// multiple-line layout style 
zone "example.com" { 
type slave; 
file "slave.example.com"; 
masters {10.0.0.1;}; 
}; 
// a slightly confusing hybrid layout style 
zone "example.com" { 
type slave; 
file "slave.example.com"; 
masters {10.0.0.1;}; }; 
Use the layout style that makes the most sense and that will be the least error prone. 
Finally, there is the question of quotes or no quotes with names. In the preceding fragment, zone 
"example.com" could have been written as simply zone example.com. The rule is if a name contains 
enclosing quotes with names, but especially with reserved names such as any and none (or "any" and 
"none") will occasionally omit the enclosing quotes. 
Add and delete pages from 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 pages to pdf in preview; add multi page pdf to word document
Add and delete pages from 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 page numbers to a pdf document; adding page numbers to pdf
CHAPTER 7 ■ BIND TYPE SAMPLES 
138 
Standard Zone File 
The next sections describe the detail configuration of BIND’s named.conf and, where appropriate, the
zone files for each of the DNS types. Unless otherwise noted, the standard zone files defined earlier for
root.servers, master.localhost, and localhost.rev are unchanged. Also, unless otherwise noted, the
example.com zone file first introduced in Chapter 2 remains unchanged. However, for convenience it is
reproduced here: 
; simple zone file for example.com 
$TTL 2d    ; default TTL for zone 
$ORIGIN example.com. ; base domain-name 
; Start of Authority RR defining the key characteristics of the zone (domain)
@         IN      SOA   ns1.example.com. hostmaster.example.com. ( 
2003080800 ; se = serial number 
12h        ; ref = refresh 
15m        ; ret = update retry 
3w         ; ex = expiry 
2h         ; min = minimum 
; name server RR for the domain 
IN      NS      ns1.example.com.
; the second name server is 
; external to this zone (domain). 
IN      NS      ns2.example.net.
; mail server RRs for the zone (domain) 
3w       IN      MX  10  mail.example.com. 
; the second  mail servers is  external to the zone (domain) 
IN      MX  20  mail.example.net. 
; domain hosts includes NS and MX records defined above
; plus any others required 
ns1           IN      A       192.168.254.2 
mail          IN      A       192.168.254.4 
joe           IN      A       192.168.254.6 
www           IN      A       192.168.254.7 
; aliases ftp (ftp server) to an external domain 
ftp           IN      CNAME   ftp.example.net. 
Common Configuration Elements 
The named.conf files used in the example files have a common core containing statements and clauses,
which are either required or advisable. This common core is shown here, and each part is briefly
described: 
// Master & Caching Name Server for Example, INC. 
// Recommended that you always maintain a change log in this file as shown here
// 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 
// options clause defining the server-wide properties 
options { 
VB.NET PDF Page Delete Library: remove PDF pages in vb.net, ASP.
In order to run the sample code, the following steps would be necessary. Add necessary references: How to VB.NET: Delete Consecutive Pages from PDF.
add and delete pages in pdf; add a page to a pdf in acrobat
C# PDF Page Delete Library: remove PDF pages in C#.net, ASP.NET
XDoc.PDF enables you to delete PDF page(s) with customized options, including a single page, a series of pages, and random pages to be Add necessary references
add page numbers pdf files; add pages to pdf document
CHAPTER 7 ■ BIND TYPE SAMPLES 
139
// all relative paths use this directory as a base 
directory "/var/named"; 
// version statement for security to avoid hacking known weaknesses 
// if the real version number is published 
version "not currently available"; 
}; 
// logging clause 
// uses 3 files in rotation swaps files when size reaches 250K 
// 
logging { 
channel example_log{ 
file "/var/log/named/example.log" versions 3 size 250k; 
severity info; 
}; 
category default{ 
example_log; 
}; 
}; 
The file always starts with a gentle reminder that, as with all configuration files, disciplined 
commenting of all changes is one of the simplest and most powerful diagnostic tools available as well as 
being plain good sense. The directory statement in the example shown is the normal path but serves as 
a constant reminder of the base used for any relative file name (those that don’t start with a /) such as 
zone files. The version statement inhibits disclosure of the BIND version number. This is done to 
prevent advertising that the site is running a version of BIND that may have a known exploit; it just 
makes any attacker’s life a tad more difficult. The logging clause simply streams all messages into a 
separate file, rotates the log when 
logging clause is not present, all logging is done using syslog to /var/log/messages on most systems or 
the event log on Windows. 
Master DNS Server 
Recall from the description in Chapter 4 that a zone master will supply authoritative data for the zone. 
There may be one or more zone masters and zero or more zone slaves for any given domain or zone. The 
term master simply means that the zone file will be read from the local filestore, and the name server will 
respond to requests for zone transfer from slaves if permitted by named.conf configuration parameters. 
Master Name Server Configuration 
The BIND configuration samples that follow provide the following functionality: 
• The name server is a master for the zone example.com. This characteristic is 
defined by the zone "example.com" clause containing a type master; statement. 
• The name server provides caching services for all other domains. This 
characteristic is defined by the combination of the recursion yes; statement in 
the options clause and the zone "." clause (the root zone). 
C# PDF File & Page Process Library SDK for C#.net, ASP.NET, MVC
C# Page: Insert PDF pages; C# Page: Delete PDF pages; C# Read: PDF Text Extract; C# Read: PDF Image Extract; C# Write: Insert text into PDF; C# Write: Add Image
adding page numbers to pdf documents; adding page numbers to a pdf file
C# PDF insert image Library: insert images into PDF in C#.net, ASP
C#.NET PDF SDK - Add Image to PDF Page in C#.NET. How to Insert & Add Image, Picture or Logo on PDF Page Using C#.NET. Add Image to PDF Page Using C#.NET.
add and delete pages from pdf; add blank page to pdf preview
CHAPTER 7  BIND TYPE SAMPLES 
140 
• The name server provides recursive query services for resolvers or other name 
servers acting on behalf of resolvers. This characteristic is defined by the 
recursion yes; statement in the options clause. 
Here is the BIND named.conf file: 
// Master & Caching 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 
// options clause defining the server-wide properties 
options { 
// all relative paths use this directory as a base 
directory "/var/named"; 
// version statement for security to avoid hacking known weaknesses 
// if the real version number is published 
version "not currently available"; 
// configuration unique options statements 
// optional - disables zone transfers except for the slave 
// in the example.net domain 
allow-transfer {192.168.1.2;}; 
// optional - BIND default behavior is recursion 
recursion yes; 
allow-recursion {10.0/16;}; // prevents Open resolver behavior 
}; 
// logging clause 
// uses 3 files in rotation swaps files when size reaches 250K 
// 
logging { 
channel example_log{ 
file "/var/log/named/example.log" versions 3 size 250k; 
severity info; 
}; 
category default{ 
example_log; 
}; 
}; 
// root.servers - required zone for recursive queries 
zone "." { 
type hint; 
file "root.servers"; 
}; 
// zone clause - master for example.com 
zone "example.com" in{ 
type master; 
file "master/master.example.com"; 
allow-update {none;}; 
}; 
VB.NET PDF Password Library: add, remove, edit PDF file password
passwordSetting.IsAssemble = True ' Add password to PDF file. These two demos will help you to delete password for an encrypted PDF file.
adding pages to a pdf document in preview; adding page numbers to a pdf in preview
C# PDF Sticky Note Library: add, delete, update PDF note in C#.net
C#.NET PDF SDK - Add Sticky Note to PDF Page in C#.NET. Able to add notes to PDF using C# source code in Visual Studio .NET framework.
adding page numbers pdf file; add page pdf
CHAPTER 7 ■ BIND TYPE SAMPLES 
141
// required local host domain 
zone "localhost" in{ 
type master; 
file "master.localhost"; 
allow-update {none;}; 
}; 
// localhost reverse map 
zone "0.0.127IN-ADDR.ARPA" in{ 
type master; 
file "localhost.rev"; 
allow-update {none;}; 
}; 
// reverse map for local addresses at example.com 
// uses 192.168.254.0 for illustration 
zone "254.168.192.IN-ADDR.ARPA" in{ 
type master; 
file "192.168.254.rev"; 
allow-update {none;}; 
}; 
The allow-recursion statement limits the range of IP addresses that can issue recursive queries to 
this name server and prevent it from being what is called an open resolver. The IP values should be 
adjusted to site-specific values. Open resolvers, like open mail relays, are deceiving; at first glance, they 
may look like a helpful, neighborly act, but they are potentially very dangerous since they can be used in 
Distributed Denial of Service (DDoS) attacks on other sites. Indeed, so serious is the threat posed by 
open resolvers that in the absence of an allow-recursion statement, BIND 9 .5+ will only allow recursive 
queries from local LAN connected hosts (localnets). This topic is discussed in detail in the section on 
resolvers later in the chapter and in Chapter 12 in the sections that cover allow-recursion and allow-
query-cache statements. 
The allow-transfer statement prohibits any zone transfer except to the defined IP address; in this 
case, it’s the IP address of ns2.example.net (defined in the sample zone file covered earlier). BIND 9’s 
default behavior is to allow zone transfers from any host that requests one. An alternative strategy is to 
disable all transfers in the options clause and selectively enable them in each zone clause, as shown in 
this fragment: 
.... 
options { 
.... 
allow-transfer {none;}; 
.... 
.... 
zone "example.com" in { 
.... 
allow-transfer {192.168.1.2;}; 
.... 
}; 
Additional zone clauses defining either type master or type slave may be added as required in 
order to create larger configurations. 
VB.NET PDF insert image library: insert images into PDF in vb.net
with this sample VB.NET code to add an image to textMgr.SelectChar(page, cursor) ' Delete a selected As String = Program.RootPath + "\\" output.pdf" doc.Save
add page numbers to a pdf; adding a page to a pdf document
C# PDF Password Library: add, remove, edit PDF file password in C#
passwordSetting.IsAssemble = true; // Add password to PDF file. These C# demos will help you to delete password for an encrypted PDF file.
adding page to pdf in preview; add page number to pdf document
CHAPTER 7  BIND TYPE SAMPLES 
142 
Slave DNS Server 
slave simply indicates 
that a name server will obtain the zone records using zone transfer operations but will answer 
authoritatively for the zone for as long as it has valid zone data (defined by the expiry field of the zone’s 
SOA RR). The term slave in no sense implies priority of access. As previously described, slave servers will 
be accessed, in general, just as frequently as any master name server. Slave servers may also transfer 
their zone files to other slave servers. 
Slave Name Server Configuration 
The BIND named.conf slave sample  configuration provides the following functionality: 
• The name server is a slave for the zone example.com. This characteristic is defined 
by the zone "example.com" clause containing a type slave; statement. 
• The name server provides resolver services for all other domains. This 
characteristic is defined by the combination of the recursion yes; statement in 
the options clause and the zone "." clause (the root zone). 
• The name server provides recursive query services for resolvers or other name 
servers acting on behalf of resolversThis characteristic is defined by the 
recursion yes; statement in the options clause. 
The sample configuration file shows that the slave name server is provided in an external or out-of-
zone domain called example.net (not example.com) by the following fragment from the standard zone 
file: 
; the second name server is 
; external to this zone (domain). 
IN      NS      ns2.example.net. 
example.com site is offline 
due to communication or other problems, then example.net, assumed to be at a different physical 
location, will continue to provide service for the example.com zone or domain. Clearly, this is not always 
practical, and the second name server could have been defined as ns2.example.com and located on the 
same site. There is nothing wrong with such a configuration other than the risk associated with a 
physical outage. The named.conf sample file that follows, based on the standard sample file, would be 
located at ns2.example.net: 
// Slave & caching Name Server for EXAMPLE.NET. 
// provides slave name server support 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 
// 
options { 
// all relative paths use this directory as a base 
directory "/var/named"; 
// version statement for security to avoid hacking known weaknesses 
CHAPTER 7 ■ BIND TYPE SAMPLES 
143
// if the real version number is published 
version "not currently available"; 
// configuration unique statements 
// disables all zone transfer requests 
allow-transfer {"none";}; 
// optional - BIND default behavior is recursion 
recursion yes; 
allow-recursion {172.16.2/24;}; 
}; 
// 
// log to /var/log/named/examplenet.log all events from info UP 
//  in severity 
// defaults to use 3 files in rotation 
// failure messages up to this point are in (syslog) /var/log/messages 
logging{ 
channel examplenet_log{ 
file "/var/log/named/examplenet.log" versions 3 size 250k; 
severity info; 
}; 
category default{ 
examplenet_log; 
}; 
}; 
// required zone for recursive queries 
zone "." { 
type hint; 
file "root.servers"; 
}; 
// assumes this server is also master for example.net 
zone "example.net" in{ 
type master; 
file "master/master.example.net"; 
allow-update {none;}; 
}; 
// slave for example.com; see following notes 
zone "example.com" in{ 
type slave; 
file "slave/slave.example.com"; 
masters (192.168.254.2;); 
// allows notify messages only from master 
allow-notify {192.168.254.2;}; 
}; 
// 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;}; 
}; 
CHAPTER 7  BIND TYPE SAMPLES 
144 
// reverse map for example.net local IPs 
// assumed 192.168.1.0 (see notes) 
zone "1.168.192.IN-ADDR.ARPA" IN { 
type slave; 
file "slave.192.168.1.rev"; 
masters {192.168.1.1;}; 
}; 
The allow-recursion statement limits the range of IP addresses that can issue recursive queries to 
this name server and prevent it from being an open resolver.  
The example.com slave zone statement file "slave/slave.example.com"; is optional and allows the 
slave to store the zone records obtained on the last zone transfer. If BIND 9 or the zone is reloaded, the 
current stored zone file—assuming it is still valid (within the time defined by the SOA RR expiry field)—
is used rather than immediately requesting a zone transfer and thus wasting both time and network 
resources. To create the secondary file initially, just create an empty file with the correct file name (using 
touch or a similar command); BIND may complain the first time it loads the file but not thereafter. 
The zone example.com contains a statement masters {192.168.254.2;}; that has a single IP address 
referencing ns1.example.com. Any number of IP addresses could appear in the list. There may be one or 
more zone masters. The allow-notify {192.168.254.2;}; statement disables NOTIFY messages from any 
host except the zone master to minimize possible malicious action. 
The reverse map for the local IP addresses at example.net (zone "1.168.192.IN-ADDR.ARPA") is 
defined as a slave for administrative convenience; only one copy of this zone file need be maintained. 
IN-ADDR.ARPA zones provide all the normal zone functionality, including master and slave. This zone 
could have been defined as a master with a local copy of the reverse-map zone file, which is the more 
normal, but unnecessary, configuration. 
The named.conf file shows ns2.example.net acting as a zone master for its zone or domain 
(example.net). It could equally well have been a slave for the domain or even contained no zone section 
or clause for example.net. 
Resolver (Caching-only) DNS Server 
The resolver (or caching-only name server or even recursive name server) is one that provides caching 
service to its clients (resolvers or other DNSs acting on behalf of resolvers). When the resolver obtains 
the answer to a query, it saves the resulting resource records (RRs) to a cache, which may be a local file 
or, in the case of BIND, to in-memory storage. It will return this saved result to a subsequent query for 
the same information until the TTL value of the cached RR expires, at which time it will discard the RR. If 
the resolver is restarted, the current in-memory cache will be discarded. 
Note A DNS cache is not the same as a slave’s zone data. Zone data consists of all the zone records obtained 
through zone transfer operations; importantly, this data is timed out using the values in the zone’s SOA RR. A 
cache contains individual RRs obtained as answers to specific queries and timed out according to the TTL value of 
the specific RR. 
CHAPTER 7 ■ BIND TYPE SAMPLES 
145
Caching-only Name Server Configuration 
The BIND named.conf configuration sample provides the following functionality: 
• The resolver is assumed to have a name of resolver.example.com. This name will 
be defined using an A or AAAA RR in the zone file for example.com (not illustrated). 
• 
zone 
clauses for other than the essential zones needed for local operations 
(master.localhost and localhost.rev) and to support recursive queries (the root 
zone). 
• The name server provides caching services for all domains. This characteristic is 
defined by the recursion yes; statement in the options clause and the zone "." 
clause (the root zone). 
• The name server provides recursive query services for resolvers or other DNSs 
acting on behalf of resolvers. This characteristic is defined by the recursion yes; 
statement in the options clause. 
Here is the BIND named.conf: 
// Caching Name Server for dns.example.com. 
// CHANGELOG: 
// 1. 9 july 2005 INITIALS or NAME 
//  a. did something 
// a. 23 july 2005 INITIALS or NAME 
//  a. did something more 
//  b. another change 
// 
options { 
// all relative paths use this directory as a base 
directory "/var/named"; 
// version statement for security to avoid hacking known weaknesses 
// if the real version number is published 
version "not currently available"; 
// configuration-specific option clause statements 
// disables all zone transfer requests 
allow-transfer{"none"}; 
// optional - BIND default behavior is recursion 
recursion yes; 
}; 
// 
// 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{ 
CHAPTER 7  BIND TYPE SAMPLES 
146 
example_log; 
}; 
}; 
// required zone for recursive queries 
zone "." { 
type hint; 
file "root.servers"; 
}; 
// 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;}; 
}; 
This is a resolver and contains no zones (other than localhost) with master or slave types. Previous 
samples for master and slave server types included resolver (recursive) behavior combined with one or 
more master or slave zones. 
There are no reverse-map zone files for any user IP addresses since it is assumed that another name 
server or an ISP, for example, is the zone master for example.com and is therefore also responsible for the 
reverse map. A reverse-mapping zone could be added if required for local operational reasons. 
The allow-recursion statement limits the range of IP addresses that can issue recursive queries to 
this name server and prevent it from an open resolver. BIND 9.5+ also introduced a new statement 
allow-query-cache which now, officially, controls access to the cache by external users but this 
statement, when omitted, defaults to the values defined in an allow-recursion statement when present. 
It is permitted to use both allow-recursion and allow-query-cache statements but this can be confusing 
and consequently lead to conflicts, which can be a serious pain to debug. In general, it is best to use one 
allow-recursion statement type unless very fine-grained cache access control is required. It is always 
possible to define the IPv4 and/or IPv6 addresses allowed to issue queries even when the ranges are 
fragmented, as shown in the example. An ACL clause (see Chapter 12) may also be used as an alternative 
method to define the list of permitted IP addresses; the ACL name is then referenced in the allow-
recursion statement. If the list of permitted IP addresses is very fragmented, do not be tempted to use 
the blanket allow-recursion {any;}; which has the effect of making the resolver fully open and lethal. 
DDoS attack. As always, enlightened self-interest is the best policy. This is not the only possible method 
to close and open resolver: listen-on and allow-query statements, depending on the context, can also 
achieve the same results.  
Forwarding (a.k.a. Proxy, Client, Remote) DNS Server 
The functionality of the forwarding name server was described in Chapter 4 and is used primarily to 
minimize traffic on congested, slow, or expensive external network connections such as a dial-up 
network. 
Documents you may be interested
Documents you may be interested