+++ /dev/null
-Copyright (C) 2000 Internet Software Consortium.
-See COPYRIGHT in the source root or http://isc.org/copyright.html for terms.
-
-$Id: Bv9ARM.txt,v 1.3.2.7 2000/09/18 17:02:13 gson Exp $
-
-BIND 9 Administrator Reference Manual
-July 2000
-Copyright (c) 2000 Internet Software Consortium
-
---------------------------------------------------------------------
-
-
- BIND 9 ADMINISTRATOR REFERENCE MANUAL
-
-Table of Contents
-
-Section 1 : Introduction
-
-1.1 Scope of Document
-1.2 Organization of This Document
-1.3 Conventions Used in This Document
-1.4 Discussion of Domain Name System (DNS) Basics and BIND
-1.4.1 Nameservers
-1.4.2 Types of Zones
-1.4.3 Servers
-1.4.3.1 Master Server
-1.4.3.2 Slave Server
-1.4.3.3 Caching Only Server
-1.4.3.4 Forwarding Server
-1.4.3.5 Stealth Server
-
-Section 2 : BIND Resource Requirements
-
-2.1 Hardware requirements
-2.2 CPU Requirements
-2.3 Memory Requirements
-2.4 Nameserver Intensive Environment Issues
-2.5 Supported Operating Systems
-
-Section 3 : Nameserver Configuration
-
-3.1 Sample Configurations
-3.1.1 A Caching-only Nameserver
-3.1.2 An Authoritative-only Nameserver
-3.2 Load Balancing
-3.3 Notify
-3.4 Nameserver Operations
-3.4.1 Tools for Use With the Nameserver Daemon
-3.4.1.1 Diagnostic Tools
-3.4.1.2 Administrative Tools
-3.4.2 Signals
-
-Section 4 : Advanced Concepts
-
-4.1 Dynamic Update
-4.2 Incremental Zone Transfers (IXFR)
-4.3 Split DNS
-4.4 TSIG
-4.4.1 Generate Shared Keys for Each Pair of Hosts
-4.4.1.1 Automatic Generation
-4.4.1.2 Manual Generation
-4.4.2 Copying the Shared Secret to Both Machines
-4.4.3 Informing the Servers of the Key's Existence
-4.4.4 Instructing the Server to Use the Key
-4.4.5 TSIG Key Based Access Control
-4.4.6 Errors
-4.5 TKEY
-4.6 SIG(0)
-4.7 DNSSEC
-4.7.1 Generating Keys
-4.7.2 Creating a Keyset
-4.7.3 Signing the Child's Keyset
-4.7.4 Signing the Zone
-4.7.5 Configuring Servers
-4.8 IPv6 Support in BIND 9
-4.8.1 Address Lookups Using AAAA Records
-4.8.2 Address Lookups Using A6 Records
-4.8.2.1 A6 Chains
-4.8.2.2 A6 Records for DNS Servers
-4.8.3 Address to Name Lookups Using Nibble Format
-4.8.4 Address to Name Lookups Using Bitstring Format
-4.8.5 Using DNAME for Delegation of IPv6 Reverse Addresses
-
-Section 5 : The BIND 9 Lightweight Resolver
-
-5.1 The Lightweight Resolver Library
-5.2 Running a Resolver Daemon
-
-Section 6 : BIND 9 Configuration Reference
-
-6.1 Configuration File Element
-6.1.1 Address Match Lists
-6.1.1.1 Syntax
-6.1.1.2 Definition and Usage
-6.1.2 Comment Syntax
-6.1.2.1 Syntax
-6.1.2.2 Definition and Usage
-6.2 Configuration File Grammar
-6.2.1 acl Statement Grammar
-6.2.2 acl Statement Definition and Usage
-6.2.3 controls Statement Grammar
-6.2.4 controls Statement Definition and Usage
-6.2.5 include Statement Grammar
-6.2.6 include Statement Definition and Usage
-6.2.7 key Statement Grammar
-6.2.8 key Statement Definition and Usage
-6.2.9 logging Statement Grammar
-6.2.10 logging Statement Definition and Usage
-6.2.10.1 The channel Phrase
-6.2.10.2 The category Phrase
-6.2.11 options Statement Grammar
-6.2.12 options Statement Definition and Usage
-6.2.12.1 Boolean Options
-6.2.12.2 Forwarding
-6.2.12.3 Name Checking
-6.2.12.4 Access Control
-6.2.12.5 Interfaces
-6.2.12.6 Query Address
-6.2.12.7 Zone Transfers
-6.2.12.8 Resource Limits
-6.2.12.9 Periodic Task Intervals
-6.2.12.10 Topology
-6.2.12.11 The sortlist Statement
-6.2.12.12 RRset Ordering
-6.2.12.13 Tuning
-6.2.12.14 Deprecated Features
-6.2.13 server Statement Grammar
-6.2.14 server Statement Definition and Usage
-6.2.15 trusted-keys Statement Grammar
-6.2.16 trusted-keys Statement Definition and Usage
-6.2.17 view Statement Grammar
-6.2.18 view Statement Definition and Usage
-6.2.19 zone Statement Grammar
-6.2.20 zone Statement Definition and Usage
-6.2.20.1 Zone Types
-6.2.20.2 Class
-6.2.20.3 Zone Options
-6.2.20.4 Dynamic Update Policies
-6.3 Zone File
-6.3.1 Types of Resource Records and When to Use Them
-6.3.1.1 Resource Records
-6.3.1.2 Textual expression of RRs
-6.3.2 Discussion of MX Records
-6.3.3 Setting TTLs
-6.3.4 Inverse Mapping in IPv4
-6.3.5 Other Zone File Directives
-6.3.5.1 The $ORIGIN Directive
-6.3.5.2 The $INCLUDE Directive
-6.3.5.3 The $TTL Directive
-6.3.6 BIND Master File Extension: the $GENERATE Directive
-6.3.7 Signals 69
-
-Section 7 : BIND 9 Security Considerations
-
-7.1 Access Control Lists
-7.2 chroot and setuid (for UNIX servers)
-7.2.1 The chroot Environment
-7.2.2 Using the setuid Function
-7.3 Dynamic Updates
-
-Section 8 : Troubleshooting
-
-8.1 Common Problems
-8.1.1 It's not working; how can I figure out what's wrong?
-8.2 Incrementing and Changing the Serial Number
-8.3 Where Can I Get Help?
-
-Appendix A: Acknowledgements
-
-A.1 A Brief History of the DNS and BIND
-
-Appendix B: Historical DNS Information
-
-B.1 Classes of Resource Records
-B.1.1 HS = hesiod
-B.1.2 CH = chaos
-
-Appendix C: General DNS Reference Information
-
-C.1 IPv6 addresses (A6)
-
-Appendix D: Bibliography (and Suggested Reading)
-
-D.1 Request for Comments (RFCs)
-D.1.1 Standards
-D.1.2 Proposed Standards
-D.1.3 Proposed Standards Still Under Development
-D.1.4 Other Important RFCs About DNS Implementation
-D.1.5 Resource Record Types
-D.1.6 DNS and the Internet
-D.1.7 DNS Operations
-D.1.8 Other DNS-related RFCs
-D.1.9 Obsolete and Unimplemented Experimental RRs
-D.2 Internet Drafts
-D.3 Other BIND Documents
-
---------------------------------------------------------------------
-
-
-
-
- Section 1. Introduction
-
-The Internet Domain Name System (DNS) consists of the syntax to specify the
-names of entities in the Internet in a hierarchical manner, the rules used
-for delegating authority over names, and the system implementation that
-actually maps names to Internet addresses. DNS data is maintained in a group
-of distributed hierarchical databases.
-
- 1.1 Scope of Document
-
-The Berkeley Internet Name Domain (BIND) implements an Internet nameserver
-for a number of operating systems. This document provides basic information
-about the installation and care of the Internet Software Consortium (ISC)
-BIND version 9 software package for system administrators.
-
- 1.2 Organization of This Document
-
-In this document, Section 1 introduces the basic DNS and BIND concepts.
-Section 2 describes resource requirements for running BIND in various
-environments. Information in Section 3 is task-oriented in its presentation
-and is organized functionally, to aid in the process of installing the
-BIND 9 software. The task-oriented section is followed by Section 4, which
-contains more advanced concepts that the system administrator may need for
-implementing certain options. Section 5 describes the BIND 9 lightweight
-resolver. The contents of Section 6 are organized as in a reference manual
-to aid in the ongoing maintenance of the software. Section 7 addresses
-security considerations, and Section 8 contains troubleshooting help. The
-main body of the document is followed by several Appendices which contain
-useful reference information, such as a Bibliography and historic
-information related to BIND and the Domain Name System.
-
- 1.3 Conventions Used in This Document
-
-In this document, we use the following general typographic conventions:
-
- To describe: We use the style:
- a pathname, filename, URL, hostname,
- mailing list name, or new term or conceptItalic
- literal user input Fixed Width Bold
- variable user input Fixed Width Italic
- program output Fixed Width
-
-The following conventions are used in descriptions of the BIND configuration
-file:
-
- To describe: We use the style:
- keywords Sans Serif Bold
-
- variables Sans Serif Italic
-
- "meta-syntactic" information (within brackets
- when optional) Fixed Width Italic
- Command line input Fixed Width Bold
- Program output Fixed Width
-
- Optional input Text is enclosed in square
- brackets
-
- 1.4 Discussion of Domain Name System (DNS) Basics and BIND
-
-The purpose of this document is to explain the installation and basic upkeep
-of the BIND software package, and we begin by reviewing the fundamentals of
-the domain naming system as they relate to BIND. BIND consists of a
-nameserver (or "daemon") called named and a resolver library. The BIND
-server runs in the background, servicing queries on a well known network
-port. The standard port for the User Datagram Protocol (UDP) and
-Transmission Control Protocol (TCP), usually port 53, is specified in
-/etc/services. The resolver is a set of routines residing in a system
-library that provides the interface that programs can use to access the
-domain name services.
-
- 1.4.1 Nameservers
-
-A nameserver (NS) is a program that stores information about named resources
-and responds to queries from programs called resolvers which act as client
-processes. The basic function of an NS is to provide information about
-network objects by answering queries.
-
-With the nameserver, the network can be broken into a hierarchy of domains.
-The name space is organized as a tree according to organizational or
-administrative boundaries. Each node of the tree, called a domain, is given
-a label. The name of the domain is the concatenation of all the labels of
-the domains from the root to the current domain. This is represented in
-written form as a string of labels listed from right to left and separated
-by dots. A label need only be unique within its domain. The whole name space
-is partitioned into areas called zones, each starting at a domain and
-extending down to the leaf domains or to domains where other zones start.
-Zones usually represent administrative boundaries. For example, a domain
-name for a host at the company Example, Inc. would be:
-
-ourhost.example.com
-
-where com is the top level domain to which ourhost.example.com belongs,
-example is a subdomain of com, and ourhost is the name of the host.
-
-The specifications for the domain nameserver are defined in the RFC
-1034, RFC 1035 and RFC 974. These documents can be found in
-/usr/src/etc/named/doc in 4.4BSD or are available via File Transfer
-Protocol (FTP) from ftp://www.isi.edu/in-notes/ or via the Web at
-http://www.ietf.org/rfc/. (See Appendix C for complete information
-on finding and retrieving RFCs.) It is also recommended that you read
-the related man pages: named and resolver.
-
- 1.4.2 Types of Zones
-
-As we stated previously, a zone is a point of delegation in the DNS tree. A
-zone consists of those contiguous parts of the domain tree for which a
-domain server has complete information and over which it has authority. It
-contains all domain names from a certain point downward in the domain tree
-except those which are delegated to other zones. A delegation point has one
-or more NS records in the parent zone, which should be matched by equivalent
-NS records at the root of the delegated zone.
-
-To properly operate a nameserver, it is important to understand the
-difference between a zone and a domain.
-
-For instance, consider the example.com domain which includes names such as
-host.aaa.example.com and host.bbb.example.com even though the example.com
-zone includes only delegations for the aaa.example.com and bbb.example.com
-zones. A zone can map exactly to a single domain, but could also include
-only part of a domain, the rest of which could be delegated to other
-nameservers. Every name in the DNS tree is a domain, even if it is terminal
-, that is, has no subdomains. Every subdomain is a domain and every domain
-except the root is also a subdomain. The terminology is not intuitive and we
-suggest that you read RFCs 1033, 1034 and 1035 to gain a complete
-understanding of this difficult and subtle topic.
-
-Though BIND is a Domain Nameserver, it deals primarily in terms of zones.
-The master and slave declarations in the named.conf file specify zones, not
-domains. When you ask some other site if it is willing to be a slave server
-for your domain, you are actually asking for slave service for some
-collection of zones.
-
-Each zone will have one primary master (also called primary) server which
-loads the zone contents from some local file edited by humans or perhaps
-generated mechanically from some other local file which is edited by humans.
-There there will be some number of slave (also called secondary) servers,
-which load the zone contents using the DNS protocol (that is, the secondary
-servers will contact the primary and fetch the zone data using TCP). This
-set of servers--the primary and all of its secondaries--should be listed in
-the NS records in the parent zone and will constitute a delegation. This
-set of servers must also be listed in the zone file itself, usually under
-the @ name which indicates the top level or root of the current zone. You
-can list servers in the zone's top-level @ NS records that are not in the
-parent's NS delegation, but you cannot list servers in the parent's
-delegation that are not present in the zone's @.
-
-Any servers listed in the NS records must be configured as authoritative for
-the zone. A server is authoritative for a zone when it has been configured
-to answer questions for that zone with authority, which it does by setting
-the "authoritative answer" (AA) bit in reply packets. A server may be
-authoritative for more than one zone. The authoritative data for a zone is
-composed of all of the Resource Records (RRs)--the data associated with
-names in a tree-structured name space--attached to all of the nodes from the
-top node of the zone down to leaf nodes or nodes above cuts around the
-bottom edge of the zone.
-
-Adding a zone as a type master or type slave will tell the server to answer
-questions for the zone authoritatively. If the server is able to load the
-zone into memory without any errors it will set the AA bit when it replies
-to queries for the zone. See RFCs 1034 and 1035 for more information about
-the AA bit.
-
- 1.4.3 Servers
-
-A DNS server can be master for some zones and slave for others or can be
-only a master, or only a slave, or can serve no zones and just answer
-queries via its cache. Master servers are often also called primaries and
-slave servers are often also called secondaries. Both master/primary and
-slave/secondary servers are authoritative for a zone.
-
-All servers keep data in their cache until the data expires, based on a Time
-To Live (TTL) field which is maintained for all resource records.
-
- 1.4.3.1 Master Server
-
-The primary master server is the ultimate source of information about a
-domain. The primary master is an authoritative server configured to be the
-source of zone transfer for one or more secondary servers. The primary
-master server obtains data for the zone from a file on disk.
-
- 1.4.3.2 Slave Server
-
-A slave server, also called a secondary server, is an authoritative server
-that uses zone transfers from the primary master server to retrieve the zone
-data. Optionally, the slave server obtains zone data from a cache on disk.
-Slave servers provide necessary redundancy. All secondary/slave servers are
-named in the NS RRs for the zone.
-
- 1.4.3.3 Caching Only Server
-
-Some servers are caching only servers. This means that the server caches
-the information that it receives and uses it until the data expires. A
-caching only server is a server that is not authoritative for any zone. This
-server services queries and asks other servers, who have the authority, for
-the information it needs.
-
- 1.4.3.4 Forwarding Server
-
-Instead of interacting with the nameservers for the root and other domains,
-a forwarding server always forwards queries it cannot satisfy from its
-authoritative data or cache to a fixed list of other servers. The forwarded
-queries are also known as recursive queries, the same type as a client
-would send to a server. There may be one or more servers forwarded to, and
-they are queried in turn until the list is exhausted or an answer is found.
-A forwarding server is typically used when you do not wish all the servers
-at a given site to interact with the rest of the Internet servers. A typical
-scenario would involve a number of internal DNS servers and an Internet
-firewall. Servers unable to pass packets through the firewall would forward
-to the server that can do it, and that server would query the Internet DNS
-servers on the internal server's behalf. An added benefit of using the
-forwarding feature is that the central machine develops a much more complete
-cache of information that all the workstations can take advantage of.
-
-There is no prohibition against declaring a server to be a forwarder even
-though it has master and/or slave zones as well; the effect will still be
-that anything in the local server's cache or zones will be answered, and
-anything else will be forwarded using the forwarders list.
-
- 1.4.3.5 Stealth Server
-
-A stealth server is a server that answers authoritatively for a zone, but is
-not listed in that zone's NS records. Stealth servers can be used as a way
-to centralize distribution of a zone, without having to edit the zone on a
-remote nameserver. Where the master file for a zone resides on a stealth
-server in this way, it is often referred to as a "hidden primary"
-configuration. Stealth servers can also be a way to keep a local copy of a
-zone for rapid access to the zone's records, even if all "official"
-nameservers for the zone are inaccessible.
-
- ------------------------------------------------------------------------
-
- Section 2. BIND Resource Requirements
-
- 2.1 Hardware requirements
-
-DNS hardware requirements have traditionally been quite modest. For many
-installations, servers that have been pensioned off from active duty have
-performed admirably as DNS servers.
-
-The DNSSEC and IPv6 features of BIND 9 may prove to be quite CPU intensive
-however, so organizations that make heavy use of these features may wish to
-consider larger systems for these applications. BIND 9 is now fully
-multithreaded, allowing full utilization of multiprocessor systems for
-installations that need it.
-
- 2.2 CPU Requirements
-
-CPU requirements for BIND 9 range from i486-class machines for serving of
-static zones without caching, to enterprise-class machines if you intend to
-process many dynamic updates and DNSSEC signed zones, serving many thousands
-of queries per second.
-
- 2.3 Memory Requirements
-
-The memory of the server has to be large enough to fit the cache and zones
-loaded off disk. Future releases of BIND 9 will provide methods to limit the
-amount of memory used by the cache, at the expense of reducing cache hit
-rates and causing more DNS traffic. It is still good practice to have enough
-memory to load all zone and cache data into memory--unfortunately, the best
-way to determine this for a given installation is to watch the nameserver in
-operation. After a few weeks the server process should reach a relatively
-stable size where entries are expiring from the cache as fast as they are
-being inserted. Ideally, the resource limits should be set higher than this
-stable size.
-
- 2.4 Nameserver Intensive Environment Issues
-
-For nameserver intensive environments, there are two alternative
-configurations that may be used. The first is where clients and any
-second-level internal nameservers query a main nameserver, which has enough
-memory to build a large cache. This approach minimizes the bandwidth used by
-external name lookups. The second alternative is to set up second-level
-internal nameservers to make queries independently. In this configuration,
-none of the individual machines needs to have as much memory or CPU power as
-in the first alternative, but this has the disadvantage of making many more
-external queries, as none of the nameservers share their cached data.
-
- 2.5 Supported Operating Systems
-
-ISC BIND 9 compiles and runs on the following operating systems:
-
-IBM AIX 4.3
-Compaq Digital/Tru64 UNIX 4.0D
-HP HP-UX 11
-IRIX64 6.5
-Red Hat Linux 6.0, 6.1
-Sun Solaris 2.6, 7, 8 (beta)
-FreeBSD 3.4-STABLE
-NetBSD-current with "unproven" pthreads
-
- ------------------------------------------------------------------------
-
- Section 3. Nameserver Configuration
-
-In this section we provide some suggested configurations along with
-guidelines for their use. We also address the topic of reasonable option
-setting.
-
- 3.1 Sample Configurations
-
- 3.1.1 A Caching-only Nameserver
-
-The following sample configuration is appropriate for a caching-only name
-server for use by clients internal to a corporation. All queries from
-outside clients are refused.
-
-// Two corporate subnets we wish to allow queries from.
-acl "corpnets" { 192.168.4.0/24; 192.168.7.0/24; };
-options {
- directory "/etc/namedb"; // Working directory
- pid-file "named.pid"; // Put pid file in working dir
- allow-query { "corpnets "; };
-};
-// Root server hints
-zone "." { type hint; file "root.hint"; };
-// Provide a reverse mapping for the loopback address 127.0.0.1
-zone "0.0.127.in-addr.arpa" {
- type master;
- file "localhost.rev";
- notify no;
-
-};
-
- 3.1.2 An Authoritative-only Nameserver
-
-This sample configuration is for an authoritative-only server that is the
-master server for " example.com " and a slave for the subdomain "
-eng.example.com ".
-
-options {
- directory "/etc/namedb"; // Working directory
- pid-file "named.pid"; // Put pid file in working dir
- allow-query { any; }; // This is the default
- recursion no; // Do not provide recursive service
-};
-// Root server hints
-zone "." { type hint; file "root.hint"; };
-
-// Provide a reverse mapping for the loopback address 127.0.0.1
- zone "0.0.127.in-addr.arpa" {
- type master;
- file "localhost.rev";
- notify no;
-};
-// We are the master server for example.com
-zone "example.com" {
- type master;
- file "example.com.db";
- // IP addresses of slave servers allowed to transfer example.com
- allow-transfer {
- 192.168.4.14;
- 192.168.5.53;
- };
-};
-
-// We are a slave server for eng.example.com
-zone "eng.example.com" {
- type slave;
- file "eng.example.com.bk";
- // IP address of eng.example.com master server
- masters { 192.168.4.12; };
-};
-
- 3.2 Load Balancing
-
-Primitive load balancing can be achieved in DNS using multiple A records for
-one name.
-
-For example, if you have three WWW servers with network addresses of
-10.0.0.1, 10.0.0.2 and 10.0.0.3, a set of records such as the following
-means that clients will connect to each machine one third of the time:
-
-
-
- NameTTL CLASS TYPE Resource Record (RR) Data
- www 600 IN A 10.0.0.1
- 600 IN A 10.0.0.2
- 600 IN A 10.0.0.3
-
-When a resolver queries for these records, BIND will rotate them and respond
-to the query with the records in a different order. In the example above,
-clients will randomly receive records in the order 1, 2, 3; 2, 3, 1; and 3,
-1, 2. Most clients will use the first record returned and discard the rest.
-
-For more detail on ordering responses, check the rrset-order substatement in
-the options statement under RRset Ordering. This substatement is not
-supported in BIND 9, and only the ordering scheme described above is
-available.
-
- 3.3 Notify
-
-DNS Notify is a mechanism that allows master nameservers to notify their
-slave servers of changes to a zone's data. In response to a NOTIFY from a
-master server, the slave will check to see that its version of the zone is
-the current version and, if not, initiate a transfer.
-
-DNS Notify is fully documented in RFC 1996. See also the description of the
-zone option also-notify under Zone Transfers. More information about notify
-can be found under Boolean Options.
-
- 3.4 Nameserver Operations
-
- 3.4.1 Tools for Use With the Nameserver Daemon
-
-There are several indispensable diagnostic, administrative and monitoring
-tools available to the system administrator for controlling and debugging
-the nameserver daemon. We describe several in this section
-
- 3.4.1.1 Diagnostic Tools
-
-dig
-
-The domain information groper ( dig) is a command line tool that can be
-used to gather information from the Domain Name System servers. Dig has two
-modes: simple interactive mode for a single query, and batch mode which
-executes a query for each in a list of several query lines. All query
-options are accessible from the command line.
-
-Usage
-
-dig [@server] domain [<query-type>] [<query-class>]
- [+<query-option>] [-<dig-option>] [%comment]
-
-The usual simple use of dig will take the form
-
-dig @server domain query-type query-class
-
-For more information and a list of available commands and options, see the
-dig man page.
-
-host
-
-The host utility provides a simple DNS lookup using a command-line interface
-for looking up Internet hostnames. By default, the utility converts between
-host names and Internet addresses, but its functionality can be extended
-with the use of options.
-
-Usage
-
-host [-aCdlrTwv] [-c class] [-N ndots] [-t type]
- [-W timeout] [-R retries] hostname [server]
-
-For more information and a list of available commands and options, see the
-host man page.
-
-nslookup
-
-nslookup is a program used to query Internet domain nameservers. nslookup
-has two modes: interactive and non-interactive. Interactive mode allows the
-user to query nameservers for information about various hosts and domains or
-to print a list of hosts in a domain. Non-interactive mode is used to print
-just the name and requested information for a host or domain.
-
-Usage
-
-nslookup [-option ...] [host-to-find | -[server]]
-
-Interactive mode is entered when no arguments are given (the default
-nameserver will be used) or when the first argument is a hyphen ('-') and
-the second argument is the host name or Internet address of a nameserver.
-
-Non-interactive mode is used when the name or Internet address of the host
-to be looked up is given as the first argument. The optional second argument
-specifies the host name or address of a nameserver.
-
-The options listed under the "set" command (see the nslookup man page for
-details) can be specified in the .nslookuprc file in the user's home
-directory if they are listed one per line. Options can also be specified on
-the command line if they precede the arguments and are prefixed with a
-hyphen. For example, to change the default query type to host information,
-and the initial time-out to 10 seconds, type:
-
-nslookup -query=hinfo -timeout=10
-
-For more information and a list of available commands and options, see the
-nslookup man page.
-
-Due to its arcane user interface and frequently inconsistent behavior, we do
-not recommend the use of nslookup. Use dig instead.
-
- 3.4.1.2 Administrative Tools
-
-Administrative tools play an integral part in the management of a server.
-
-rndc
-
-The remote name daemon control (rndc) program allows the system
-administrator to control the operation of a nameserver. If you run
-rndc without any options it will display a usage message as follows:
-
-Usage: rndc [-c config] [-s server] [-p port] [-y key] command [command ...]
-
- command is one of the following for named:
-
- *status Display ps(1) status of named.
- *dumpdb Dump database and cache to /var/tmp/named_dump.db.
- reload Reload configuration file and zones.
- *stats Dump statistics to /var/tmp/named.stats.
- *trace Increment debugging level by one.
- *notrace Set debugging level to 0.
- *querylog Toggle query logging.
- *stop Stop the server.
- *restart Restart the server.
-
- * == not yet implemented
-
-As noted above, "reload" is the only command available for BIND 9.0.0.
-The other commands, and more, are planned to be implemented for future
-releases.
-
-A configuration file is required, since all communication with the
-server is authenticated with digital signatures that rely on a shared
-secret, and there is no way to provide that secret other than with a
-configuration file. The default location for the rndc configuration
-file is /etc/rndc.conf, but an alternate location can be specified
-with the "-c" option.
-
-The format of the configuration file is similar to that of named.conf, but
-limited to only three statements, the options{}, key{} and server{}
-statements. These statements are what associate the secret keys to the
-servers with which they are meant to be shared. The order of statements is not
-significant.
-
-The options{} statement has two clauses: default-server and
-default-key. default-server takes a host name or address argument and
-represents the server that will be contacted if no "-s" option is
-provided on the command line. default-key takes the name of the key
-as its argument, as defined by a key{} statement. In the future a
-default-port clause will be added to specify the port to which rndc
-should connect.
-
-The key{} statement names a key with its string argument. The string is
-required by the server to be a valid domain name, though it need not
-actually be hierarchical; thus, a string like "rndc_key" is a valid name.
-The key{} statement has two clauses: algorithm and secret. While the
-configuration parser will accept any string as the argument to algorithm,
-currently only the string "hmac-md5" has any meaning. The secret is a
-base-64 encoded string, typically generated with either dnssec-keygen or
-mmencode.
-
-The server{} statement uses the key clause to associate a key{}-defined key
-with a server. The argument to the server{} statement is a host name or
-address (addresses must be double quoted). The argument to the key clause
-is the name of key as defined by the key{} statement. A port clause will
-be added to a future release to specify the port to which rndc should
-connect on the given server.
-
-A sample minimal configuration file is as follows:
-
-key rndc_key {
- algorithm "hmac-md5";
- secret "c3Ryb25nIGVub3VnaCBmb3IgYSBtYW4gYnV0IG1hZGUgZm9yIGEgd29tYW4K";
-};
-
-options {
- default-server localhost;
- default-key rndc_key;
-};
-
-This file, if installed as /etc/rndc.conf, would allow the command:
-
-$ rndc reload
-
-to connect to 127.0.0.1 port 953 and cause the nameserver to reload,
-if a nameserver on the local machine were running with following controls
-statements:
-
-controls {
- inet 127.0.0.1 allow { localhost; } keys { rndc_key; };
-};
-
-and it had an identical key statement for rndc_key.
-
-
-3.4.2 Signals
-
-Certain UNIX signals cause the name server to take specific actions, as
-described in the following table. These signals can be sent using the kill
-command.
-
- SIGHUP Causes the server to read named.conf and reload the database.
- SIGTERM Causes the server to clean up and exit.
- SIGINT Causes the server to clean up and exit.
-
-
- ------------------------------------------------------------------------
-
-Section 4. Advanced Concepts
-
-4.1 Dynamic Update
-
-Dynamic update is the term used for the ability under certain specified
-conditions to add, modify or delete records or RRsets in the master zone
-files. Dynamic update is fully described in RFC 2136.
-
-Dynamic update is enabled on a zone-by-zone basis, by including an
-allow-update or update-policy clause in the zone statement.
-
-Updating of secure zones (zones using DNSSEC) is modelled after the
-simple-secure-update proposal, a work in progress in the DNS Extensions
-working group of the IETF. (See
-http://www.ietf.org/html.charters/dnsext-charter.html for information about
-the DNS Extensions working group.) SIG and NXT records affected by updates
-are automatically regenerated by the server using an online zone key. Update
-authorization is based on transaction signatures and an explicit server
-policy.
-
-The zone files of dynamic zones must not be edited by hand. The zone file on
-disk at any given time may not contain the latest changes performed by
-dynamic update. The zone file is written to disk only periodically, and
-changes that have occurred since the zone file was last written to disk are
-stored only in the zone's journal ( .jnl) file. BIND 9 currently does not
-update the zone file when it exits as BIND 8 does, so editing the zone file
-manually is unsafe even when the server has been shut down.
-
-4.2 Incremental Zone Transfers (IXFR)
-
-The incremental zone transfer (IXFR) protocol is a way for slave servers to
-transfer only changed data, instead of having to transfer the entire zone.
-The IXFR protocol is documented in RFC 1995. See the list of proposed
-standards in Appendix C.
-
-When acting as a master, BIND 9 supports IXFR for those zones where the
-necessary change history information is available. These include master
-zones maintained by dynamic update and slave zones whose data was obtained
-by IXFR, but not manually maintained master zones nor slave zones obtained
-by performing a full zone transfer (AXFR).
-
-When acting as a slave, BIND 9 will attempt to use IXFR unless it is
-explicitly disabled. For more information about disabling IXFR, see the
-description of the request-ixfr clause of the server statement.
-
-4.3 Split DNS
-
-Setting up different views, or visibility, of DNS space to internal and
-external resolvers is usually referred to as a Split DNS setup. There are
-several reasons an organization would want to set up its DNS this way.
-
-One common reason for setting up a DNS system this way is to hide "internal"
-DNS information from "external" clients on the Internet. There is some
-debate as to whether or not this is actually useful. Internal DNS
-information leaks out in many ways (via email headers, for example) and most
-savvy "attackers" can find the information they need using other means.
-
-Another common reason for setting up a Split DNS system is to allow internal
-networks that are behind filters or in RFC 1918 space (reserved IP space, as
-documented in RFC 1918) to resolve DNS on the Internet. Split DNS can also
-be used to allow mail from outside back in to the internal network.
-
-Here is an example of a split DNS setup:
-
-Let's say a company named Example, Inc. (example.com) has several corporate
-sites that have an internal network with reserved Internet Protocol (IP)
-space and an external demilitarized zone (DMZ), or "outside" section of a
-network, that is available to the public.
-
-Example, Inc. wants its internal clients to be able to resolve external
-hostnames and to exchange mail with people on the outside. The company also
-wants its internal resolvers to have access to certain internal-only zones
-that are not available at all outside of the internal network.
-
-In order to accomplish this, the company will set up two sets of
-nameservers. One set will be on the inside network (in the reserved IP
-space) and the other set will be on bastion hosts, which are "proxy" hosts
-that can talk to both sides of its network, in the DMZ.
-
-The internal servers will be configured to forward all queries, except
-queries for site1.internal, site2.internal, site1.example.com, and
-site2.example.com, to the servers in the DMZ. These internal servers
-will have complete sets of information for site1.example.com,
-site2.example.com, site1.internal, and site2.internal.
-
-To protect the site1.internal and site2.internal domains, the internal
-nameservers must be configured to disallow all queries to these
-domains from any external hosts, including the bastion hosts.
-
-The external servers, which are on the bastion hosts, will be
-configured to serve the "public" version of the site1 and
-site2.example.com zones. This could include things such as the host
-records for public servers (www.example.com and ftp.example.com), and
-mail exchange (MX) records (a.mx.example.com and b.mx.example.com).
-
-In addition, the public site1 and site2.example.com zones should have
-special MX records that contain wildcard ('*') records pointing to the
-bastion hosts. This is needed because external mail servers do not have any
-other way of looking up how to deliver mail to those internal hosts. With
-the wildcard records, the mail will be delivered to the bastion host, which
-can then forward it on to internal hosts.
-
-Here's an example of a wildcard MX record:
-
-* IN MX 10 external1.example.com.
-
-Now that they accept mail on behalf of anything in the internal network, the
-bastion hosts will need to know how to deliver mail to internal hosts. In
-order for this to work properly, the resolvers on the bastion hosts will
-need to be configured to point to the internal nameservers for DNS
-resolution.
-
-Queries for internal hostnames will be answered by the internal servers, and
-queries for external hostnames will be forwarded back out to the DNS servers
-on the bastion hosts.
-
-In order for all this to work properly, internal clients will need to be
-configured to query only the internal nameservers for DNS queries. This
-could also be enforced via selective filtering on the network.
-
-If everything has been set properly, Example, Inc.'s internal clients will
-now be able to:
-
- * Look up any hostnames in the site1 and site2.example.com zones.
- * Look up any hostnames in the site1.internal and site2.internal domains.
- * Look up any hostnames on the Internet.
- * Exchange mail with internal AND external people.
-
-Hosts on the Internet will be able to:
-
- * Look up any hostnames in the site1 and site2.example.com zones.
- * Exchange mail with anyone in the site1 and site2.example.com zones.
-
-Here is an example configuration for the setup we just described above. Note
-that this is only configuration information; for information on how to
-configure your zone files, see the Sample Configurations.
-
-Internal DNS server config:
-
-acl internals { 172.16.72.0/24; 192.168.1.0/24; };
-acl externals { bastion-ips-go-here; };
-options {
- ...
- ...
- forward only;
- forwarders { bastion-ips-go-here; }; // forward to external servers
- allow-transfer { none; }; // sample allow-transfer (no one)
- allow-query { internal; externals; }; // restrict query access
- allow-recursion { internals; }; // restrict recursion
- ...
- ...
-};
-
-zone "site1.example.com" { // sample slave zone
- type master;
- file "m/site1.example.com";
- forwarders { }; // do normal iterative
- // resolution (do not forward)
- allow-query { internals; externals; };
- allow-transfer { internals; };
- };
-
-zone "site2.example.com" {
- type slave;
- file "s/site2.example.com";
- masters { 172.16.72.3; };
- forwarders { };
- allow-query { internals; externals; };
- allow-transfer { internals; };
-};
-
-zone "site1.internal" {
- type master;
- file "m/site1.internal";
- forwarders { };
- allow-query { internals; };
- allow-transfer { internals; }
-};
-
-zone "site2.internal" {
- type slave;
- file "s/site2.internal";
- masters { 172.16.72.3; };
- forwarders { };
- allow-query { internals };
- allow-transfer { internals; }
-};
-
-External (bastion host) DNS server config:
-
-acl internals { 172.16.72.0/24; 192.168.1.0/24; };
-acl externals {
-bastion-ips-go-here; };
-options {
- ...
- ...
- allow-transfer { none; }; // sample allow-transfer (no one)
- allow-query { internals; externals; }; // restrict query access
- allow-recursion { internals; externals; }; // restrict recursion
- ...
- ...
-};
-
-zone "site1.example.com" { // sample slave zone
- type master;
- file "m/site1.foo.com";
- allow-query { any; };
- allow-transfer { internals; externals; };
-};
-
-zone "site2.example.com" {
- type slave;
- file "s/site2.foo.com";
- masters { another_bastion_host_maybe; };
- allow-query { any; };
- allow-transfer { internals; externals; }
-};
-
-In the resolv.conf (or equivalent) on the bastion host(s):
-
-search ...
-nameserver 172.16.72.2
-nameserver 172.16.72.3
-nameserver 172.16.72.4
-
-4.4 TSIG
-
-This is a short guide to setting up Transaction SIGnatures (TSIG) based
-transaction security in BIND. It describes changes to the configuration file
-as well as what changes are required for different features, including the
-process of creating transaction keys and using transaction signatures with
-BIND.
-
-BIND primarily supports TSIG for server to server communication. This
-includes zone transfer, notify, and recursive query messages. Resolvers
-based on newer versions of BIND 8 have limited support for TSIG.
-
-TSIG might be most useful for dynamic update. A primary server for a
-dynamic zone should use access control to control updates, but
-IP-based access control is insufficient. Key-based access control is
-far superior. See RFC 2845 in the Proposed Standards section of the
-Appendix. The nsupdate program supports TSIG via the " -k " and "-y"
-command line options.
-
-4.4.1 Generate Shared Keys for Each Pair of Hosts
-
-A shared secret is generated to be shared between host1 and host2. An
-arbitrary key name is chosen: "host1-host2.". The key name must be the same
-on both hosts.
-
-4.4.1.1 Automatic Generation
-
-The following command will generate a 128 bit (16 byte) HMAC-MD5 key as
-described above. Longer keys are better, but shorter keys are easier to
-read. Note that the maximum key length is 512 bits; keys longer than that
-will be digested with MD5 to produce a 128 bit key.
-
-dnssec-keygen -a hmac-md5 -b 128 -n HOST host1-host2.
-
-The key is in the file Khost1-host2.+157+00000.private. Nothing directly
-uses this file, but the base-64 encoded string following " Key :" can be
-extracted from the file and used as a shared secret:
-
-Key: La/E5CjG9O+os1jq0a2jdA==
-
-The string " La/E5CjG9O+os1jq0a2jdA== " can be used as the shared secret.
-
-4.4.1.2 Manual Generation
-
-The shared secret is simply a random sequence of bits, encoded in base-64.
-Most ASCII strings are valid base-64 strings (assuming the length is a
-multiple of 4 and only valid characters are used), so the shared secret can
-be manually generated.
-
-Also, a known string can be run through mmencode or a similar program to
-generate base-64 encoded data.
-
-4.4.2 Copying the Shared Secret to Both Machines
-
-This is beyond the scope of DNS. A secure transport mechanism should be
-used. This could be secure FTP, ssh, telephone, etc.
-
-4.4.3 Informing the Servers of the Key's Existence
-
-Imagine host1 and host 2 are both servers. The following is added to each
-server's named.conf file:
-
-key host1-host2. {
- algorithm hmac-md5;
- secret "La/E5CjG9O+os1jq0a2jdA==";
-};
-
-The algorithm, hmac-md5, is the only one supported by BIND. The secret is
-the one generated above. Since this is a secret, it is recommended that
-either named.conf be non-world readable, or the key directive be added to a
-non-world readable file that is included by named.conf.
-
-At this point, the key is recognized. This means that if the server receives
-a message signed by this key, it can verify the signature. If the signature
-succeeds, the response is signed by the same key.
-
-4.4.4 Instructing the Server to Use the Key
-
-Since keys are shared between two hosts only, the server must be told
-when keys are to be used. The following is added to the named.conf
-file for host1, if the IP address of host2 is 10.1.2.3:
-
-server 10.1.2.3 {
- keys { host1-host2. ;};
-};
-
-Multiple keys may be present, but only the first is used. This directive
-does not contain any secrets, so it may be in a world-readable file.
-
-If host1 sends a message that is a response to that address, the message
-will be signed with the specified key. host1 will expect any responses to
-signed messages to be signed with the same key.
-
-A similar statement must be present in host2's configuration file (with
-host1's address) for host2 to sign non-response messages to host1.
-
-4.4.5 TSIG Key Based Access Control
-
-BIND allows IP addresses and ranges to be specified in ACL definitions and
-allow-{ query | transfer | update } directives. This has been extended to
-allow TSIG keys also. The above key would be denoted key host1-host2.
-
-An example of an allow-update directive would be:
-
-allow-update { key host1-host2. ;};
-
-This allows dynamic updates to succeed only if the request was signed by a
-key named " host1-host2. ".
-
-The more powerful update-policy statement is described Dynamic Update
-Policies.
-
-4.4.6 Errors
-
-The processing of TSIG signed messages can result in several errors. If a
-signed message is sent to a non-TSIG aware server, a FORMERR will be
-returned, since the server will not understand the record. This is a result
-of misconfiguration, since the server must be explicitly configured to send
-a TSIG signed message to a specific server.
-
-If a TSIG aware server receives a message signed by an unknown key, the
-response will be unsigned with the TSIG extended error code set to BADKEY.
-If a TSIG aware server receives a message with a signature that does not
-validate, the response will be unsigned with the TSIG extended error code
-set to BADSIG. If a TSIG aware server receives a message with a time outside
-of the allowed range, the response will be signed with the TSIG extended
-error code set to BADTIME, and the time values will be adjusted so that the
-response can be successfully verified. In any of these cases, the message's
-rcode is set to NOTAUTH.
-
-4.5 TKEY
-
-TKEY is a mechanism for automatically generating a shared secret between two
-hosts. There are several "modes" of TKEY that specify how the key is
-generated or assigned. BIND implements only one of these modes, the
-Diffie-Hellman key exchange. Both hosts are required to have a
-Diffie-Hellman KEY record (although this record is not required to be
-present in a zone). The TKEY process must use signed messages, signed either
-by TSIG or SIG(0). The result of TKEY is a shared secret that can be used to
-sign messages with TSIG. TKEY can also be used to delete shared secrets that
-it had previously generated.
-
-The TKEY process is initiated by a client or server by sending a signed TKEY
-query (including any appropriate KEYs) to a TKEY-aware server. The server
-response, if it indicates success, will contain a TKEY record and any
-appropriate keys. After this exchange, both participants have enough
-information to determine the shared secret; the exact process depends on the
-TKEY mode. When using the Diffie-Hellman TKEY mode, Diffie-Hellman keys are
-exchanged, and the shared secret is derived by both participants.
-
-4.6 SIG(0)
-
-BIND 9 partially supports DNSSEC SIG(0) transaction signatures as specified
-in RFC 2535. SIG(0) uses public/private keys to authenticate messages.
-Access control is performed in the same manner as TSIG keys; privileges can
-be granted or denied based on the key name.
-
-When a SIG(0) signed message is received, it will only be verified if the
-key is known and trusted by the server; the server will not attempt to
-locate and/or validate the key.
-
-BIND 9 does not ship with any tools that generate SIG(0) signed messages.
-
-4.7 DNSSEC
-
-Cryptographic authentication of DNS information is possible through the DNS
-Security ( DNSSEC) extensions, defined in RFC 2535. This section describes
-the creation and use of DNSSEC signed zones.
-
-In order to set up a DNSSEC secure zone, there are a series of steps which
-must be followed. BIND 9 ships with several tools that are used in this
-process, which are explained in more detail below. In all cases, the " -h "
-option prints a full list of parameters.
-
-There must also be communication with the administrators of the parent
-and/or child zone to transmit keys and signatures. A zone's security status
-must be indicated by the parent zone for a DNSSEC capable resolver to trust
-its data.
-
-For other servers to trust data in this zone, they must either be statically
-configured with this zone's zone key or the zone key of another zone above
-this one in the DNS tree.
-
-4.7.1 Generating Keys
-
-The dnssec-keygen program is used to generate keys.
-
-A secure zone must contain one or more zone keys. The zone keys will sign
-all other records in the zone, as well as the zone keys of any secure
-delegated zones. Zone keys must have the same name as the zone, a name type
-of ZONE, and must be usable for authentication. It is recommended that zone
-keys be mandatory to implement a cryptographic algorithm; currently the only
-key mandatory to implement an algorithm is DSA.
-
-The following command will generate a 768 bit DSA key for the child.example
-zone:
-
-dnssec-keygen -a DSA -b 768 -n ZONE child.example.
-
-Two output files will be produced: Kchild.example.+003+12345.key and
-Kchild.example.+003+12345.private (where 12345 is an example of a key
-tag). The key file names contain the key name ( child.example.),
-algorithm (3 is DSA, 1 is RSA, etc.), and the key tag (12345 in this
-case). The private key (in the .private file) is used to generate
-signatures, and the public key (in the .key file) is used for signature
-verification.
-
-To generate another key with the same properties (but with a different key
-tag), repeat the above command.
-
-The public keys should be inserted into the zone file with $INCLUDE
-statements, including the .key files.
-
-4.7.2 Creating a Keyset
-
-The dnssec-makekeyset program is used to create a key set from one or more
-keys.
-
-Once the zone keys have been generated, a key set must be built for
-transmission to the administrator of the parent zone, so that the parent
-zone can sign the keys with its own zone key and correctly indicate the
-security status of this zone. When building a key set, the list of keys to
-be included and the TTL of the set must be specified, and the desired
-signature validity period of the parent's signature may also be specified.
-
-The list of keys to be inserted into the key set may also included non-zone
-keys present at the top of the zone. dnssec-makekeyset may also be used at other
-names in the zone.
-
-The following command generates a key set containing the above key and
-another key similarly generated, with a TTL of 3600 and a signature validity
-period of 10 days starting from now.
-
-dnssec-makekeyset -t 3600 -e +864000 Kchild.example.+003+12345
-Kchild.example.+003+23456
-
-One output file is produced: child.example.keyset. This file should be
-transmitted to the parent to be signed. It includes the keys, as well as
-signatures over the key set generated by the zone keys themselves, which are
-used to prove ownership of the private keys and encode the desired validity
-period.
-
-4.7.3 Signing the Child's Keyset
-
-The dnssec-signkey program is used to sign one child's keyset.
-
-If the child.example zone has any delegations which are secure, for example,
-grand.child.example, the child.example administrator should receive keyset
-files for each secure subzone. These keys must be signed by this zone's zone
-keys.
-
-The following command signs the child's key set with the zone keys:
-
-dnssec-signkey grand.child.example.keyset Kchild.example.+003+12345
-Kchild.example.+003+23456
-
-One output file is produced: grand.child.example.signedkey. This file
-should be both transmitted back to the child and retained. It includes all
-keys (the child's keys) from the keyset file and signatures generated by
-this zone's zone keys.
-
-4.7.4 Signing the Zone
-
-The dnssec-signzone program is used to sign a zone.
-
-Any signedkey files corresponding to secure subzones should be present, as
-well as a signedkey file for this zone generated by the parent (if there is
-one). The zone signer will generate NXT and SIG records for the zone, as
-well as incorporate the zone key signature from the parent and indicate the
-security status at all delegation points.
-
-The following command signs the zone, assuming it is in a file called
-zone.child.example. By default, all zone keys which have an available
-private key are used to generate signatures.
-
-dnssec-signzone -o child.example zone.child.example
-
-One output file is produced: zone.child.example.signed. This file should be
-referenced by named.conf as the input file for the zone.
-
-4.7.5 Configuring Servers
-
-Unlike in BIND 8, data is not verified on load in BIND 9, so zone keys for
-authoritative zones do not need to be specified in the configuration file.
-
-The public key for any security root must be present in the configuration
-file's
-trusted-keys statement, as described later in this document.
-
-4.8 IPv6 Support in BIND 9
-
-BIND 9 fully supports all currently defined forms of IPv6 name to address
-and address to name lookups. It will also use IPv6 addresses to make queries
-when running on an IPv6 capable system.
-
-For forward lookups, BIND 9 supports both A6 and AAAA records. The of AAAA
-records is deprecated, but it is still useful for hosts to have both AAAA
-and A6 records to maintain backward compatibility with installations where
-AAAA records are still used. In fact, the stub resolvers currently shipped
-with most operating system support only AAAA lookups, because following A6
-chains is much harder than doing A or AAAA lookups.
-
-For IPv6 reverse lookups, BIND 9 supports the new "bitstring" format used in
-the ip6.arpa domain, as well as the older, deprecated "nibble" format used
-in the ip6.int domain.
-
-BIND 9 includes a new lightweight resolver library and resolver daemon which
-new applications may choose to use to avoid the complexities of A6 chain
-following and bitstring labels. See The BIND 9 Lightweight Resolver for more
-information.
-
-4.8.1 Address Lookups Using AAAA Records
-
-The AAAA record is a parallel to the IPv4 A record. It specifies the entire
-address in a single record. For example,
-
-$ORIGIN example.com.
-host 1h IN AAAA 3ffe:8050:201:1860:42::1
-
-While their use is deprecated, they are useful to support older IPv6
-applications. They should not be added where they are not absolutely
-necessary.
-
-4.8.2 Address Lookups Using A6 Records
-
-The A6 record is more flexible than the AAAA record, and is therefore more
-complicated. The A6 record can be used to form a chain of A6 records, each
-specifying part of the IPv6 address. It can also be used to specify the
-entire record as well. For example, this record supplies the same data as
-the AAAA record in the previous example:
-
-$ORIGIN example.com.
-host 1h IN A6 0 3ffe:8050:201:1860:42::1
-
-4.8.2.1 A6 Chains
-
-A6 records are designed to allow network renumbering. This works when an A6
-record only specifies the part of the address space the domain owner
-controls. For example, a host may be at a company named "company." It has
-two ISPs which provide IPv6 address space for it. These two ISPs fully
-specify the IPv6 prefix they supply.
-
-In the company's address space:
-
-$ORIGIN example.com.
-host 1h IN A6 64 0:0:0:0:42::1 company.example1.net.
-host 1h IN A6 64 0:0:0:0:42::1 company.example2.net.
-
-ISP1 will use:
-
-$ORIGIN example1.net.
-company 1h IN A6 0 3ffe:8050:201:1860::
-
-ISP2 will use:
-
-$ORIGIN example2.net.
-company 1h IN A6 0 1234:5678:90ab:fffa::
-
-When host.example.com is looked up, the resolver (in the resolver daemon or
-caching name server) will find two partial A6 records, and will use the
-additional name to find the remainder of the data.
-
-4.8.2.2 A6 Records for DNS Servers
-
-When an A6 record specifies the address of a name server, it should use the
-full address rather than specifying a partial address. For example:
-
-$ORIGIN example.com.
-@ 4h IN NS ns0
- 4h IN NS ns1
-
-ns0 4h IN A6 0 3ffe:8050:201:1860:42::1
-ns1 4h IN A 192.168.42.1
-
-It is recommended that IPv4-in-IPv6 mapped addresses not be used. If a host
-has an IPv4 address, use an A record, not an A6, with ::ffff:192.168.42.1 as
-the address.
-
-4.8.3 Address to Name Lookups Using Nibble Format
-
-While the use of nibble format to look up names is deprecated, it is
-supported for backwards compatiblity with existing IPv6 applications.
-
-When looking up an address in nibble format, the address components are
-simply reversed, just as in IPv4, and ip6.int. is appended to the resulting
-name. For example, the following would provide reverse name lookup for a
-host with address 3ffe:8050:201:1860:42::1.
-
-$ORIGIN 0.6.8.1.1.0.2.0.0.5.0.8.e.f.f.3.ip6.int.
-1.0.0.0.0.0.0.0.0.0.0.0.2.4.0.0 4h IN PTR host.example.com.
-
-4.8.4 Address to Name Lookups Using Bitstring Format
-
-Bitstring labels can start and end on any bit boundary, rather than on a
-multiple of 4 bits as in the nibble format. They also use ip6.arpa rather
-than ip6.int.
-
-To replicate the previous example using bitstrings:
-
-$ORIGIN \[x3ffe805002011860/64].ip6.arpa.
-\[x0042000000000001/64] 4h IN PTR host.example.com.
-
-4.8.5 Using DNAME for Delegation of IPv6 Reverse Addresses
-
-In IPV6, the same host may have many addresses from many network
-providers. Since the trailing portion of the address usually
-remains constant, DNAME can help reduce the number of zone files used
-for reverse mapping that need to be maintained.
-
-For example, consider a host which has two providers (example.net and
-example2.net) and therefore two IPv6 addresses. Since the host chooses
-its own 64 bit host address portion, the provider address is the only
-part that changes:
-
-$ORIGIN example.com.
-host A6 64 ::1234:5678:1212:5675 cust1.example.net.
- A6 64 ::1234:5678:1212:5675 subnet5.example2.net.
-
-$ORIGIN example.net.
-cust1 A6 48 0:0:0:dddd:: ipv6net.example.net.
-ipv6net A6 0 aa:bb:cccc::
-
-$ORIGIN example2.net.
-subnet5 A6 48 0:0:0:1:: ipv6net2.example2.net.
-ipv6net2 A6 0 6666:5555:4::
-
-
-This sets up forward lookups. To handle the reverse lookups, the
-provider example.net would have:
-
-$ORIGIN \[x00aa00bbcccc/48].ip6.arpa.
-\[xdddd/16] DNAME ipv6-rev.example.com.
-
-and example2.net would have:
-
-$ORIGIN \[x666655550004/48].ip6.arpa.
-\[x0001/16] DNAME ipv6-rev.example.com.
-
-example.com needs only one zone file to handle both of these reverse
-mappings:
-
-$ORIGIN ipv6-rev.example.com.
-\[x1234567812125675/64] PTR host.example.com.
-
-
- ------------------------------------------------------------------------
-
- Section 5. The BIND 9 Lightweight Resolver
-
- 5.1 The Lightweight Resolver Library
-
-Traditionally applications have been linked with a stub resolver library
-that sends recursive DNS queries to a local caching name server.
-
-IPv6 introduces new complexity into the resolution process, such as
-following A6 chains and DNAME records, and simultaneous lookup of IPv4 and
-IPv6 addresses. These are hard or impossible to implement in a traditional
-stub resolver.
-
-Instead, BIND 9 provides resolution services to local clients using a
-combination of a lightweight resolver library and a resolver daemon process
-running on the local host. These communicate using a simple UDP-based
-protocol, the "lightweight resolver protocol" that is distinct from and
-simpler than the full DNS protocol.
-
- 5.2 Running a Resolver Daemon
-
-To use the lightweight resolver interface, the system must run the resolver
-daemon lwresd.
-
-Applications using the lightweight resolver library will make UDP requests
-to the IPv4 loopback address (127.0.0.1) on port 921. The daemon will try to
-find the answer to the questions "what are the addresses for host
-foo.example.com ?" and "what are the names for IPv4 address 204.152.184.79?"
-
-The daemon currently only looks in the DNS, but in the future it may use
-other sources such as /etc/hosts, NIS, etc.
-
-The lwresd daemon is essentially a stripped-down, caching-only name server
-that answers requests using the lightweight resolver protocol rather than
-the DNS protocol. Because it needs to run on each host, it is designed to
-require no or minimal configuration. It uses the name servers listed on
-nameserver lines in /etc/resolv.conf as forwarders, but is also capable of
-doing the resolution autonomously if none are specified.
-
- ------------------------------------------------------------------------
-
-Section 6. BIND 9 Configuration Reference
-
-BIND 9 configuration is broadly similar to BIND 8.x; however, there are a
-few new areas of configuration, such as views. BIND 8.x configuration files
-should work with few alterations in BIND 9, although more complex
-configurations should be reviewed to check if they can be more efficiently
-implemented using the new features found in BIND 9.
-
-BIND 4 configuration files can be converted to the new format using the
-shell script
-contrib/named-bootconf/named-bootconf.sh.
-
-6.1 Configuration File Elements
-
-Following is a list of elements used throughout the BIND configuration file
-documentation:
-
-
-
- acl_name The name of an address_match_list as defined by the acl
- statement.
-
- address_match_list A list of one or more ip_addr, ip_prefix, key_id, or
- acl_name elements, as described in Address Match Lists.
-
- domain_name A quoted string which will be used as a DNS name, for
- example " my.test.domain ".
-
- dotted_decimal One or more integers valued 0 through 255 separated
- only by dots ('.'), such as 123, 45.67 or 89.123.45.67.
-
- ip4_addr An IPv4 address with exactly four elements in
- dotted_decimal notation.
- ip6_addr
- An IPv6 address, such as fe80::200:f8ff:fe01:9742.
-
- ip_addr An ip4_addr or ip6_addr.
-
- ip_port An IP port number. number is limited to 0 through
- 65535, with values below 1024 typically restricted to
- root-owned processes. In some cases an asterisk ('*')
- character can be used as a placeholder to select a
- random high-numbered port.
-
- An IP network specified as an ip_addr, followed by a
- ip_prefix slash ('/') and then the number of bits in the netmask.
- For example, 127/8 is the network 127.0.0.0 with
- netmask 255.0.0.0 and 1.2.3.0/28 is network 1.2.3.0
- with netmask 255.255.255.240.
-
- key_id A domain_name representing the name of a shared key, to
- be used for transaction security.
-
- key_list A list of one or more key_ids, separated by semicolons
- and ending with a semicolon.
-
- number A non-negative integer with an entire range limited by
- the range of a C language signed integer (2,147,483,647
- on a machine with 32 bit integers). Its acceptable
- value might further be limited by the context in which
- it is used.
-
- path_name A quoted string which will be used as a pathname, such
- as " zones/master/my.test.domain ".
-
- size_spec A number, the word unlimited, or the word default.
- The maximum value of size_spec is that of unsigned long
- integers on the machine. An unlimited size_spec
- requests unlimited use, or the maximum available
- amount. A default size_spec uses the limit that was in
- force when the server was started.
- A number can optionally be followed by a scaling
- factor: K or k for kilobytes, M or m for megabytes, and
- G or g for gigabytes, which scale by 1024, 1024*1024,
- and 1024*1024*1024 respectively.
- Integer storage overflow is currently silently ignored
- during conversion of scaled values, resulting in values
- less than intended, possibly even negative. Using
- unlimited is the best way to safely set a really large
- number.
-
- yes_or_no Either yes or no. The words true and false are also
- accepted, as are the numbers 1 and 0.
-
-6.1.1 Address Match Lists
-
-6.1.1.1 Syntax
-
-address_match_list = address_match_list_element ;
-[ address_match_list_element; ... ]
-address_match_list_element = [ ! ] (ip_address [/length] |
-key key_id | acl_name | { address_match_list } )
-
-6.1.1.2 Definition and Usage
-
-Address match lists are primarily used to determine access control for
-various server operations. They are also used to define priorities for
-querying other nameservers and to set the addresses on which named will
-listen for queries. The elements which constitute an address match list can
-be any of the following:
-
- * an IP address (IPv4 or IPv6)
- * an IP prefix (in the `/'-notation)
- * a key ID, as defined by the key statement
- * the name of an address match list previously defined with the acl
- statement
- * a nested address match list enclosed in braces
-
-Elements can be negated with a leading exclamation mark ('!') and the match
-list names "any," "none," "localhost" and "localnets" are predefined. More
-information on those names can be found in the description of the acl
-statement.
-
-The addition of the key clause made the name of this syntactic element
-something of a misnomer, since security keys can be used to validate access
-without regard to a host or network address. Nonetheless, the term "address
-match list" is still used throughout the documentation.
-
-When a given IP address or prefix is compared to an address match list, the
-list is traversed in order until an element matches. The interpretation of a
-match depends on whether the list is being used for access control, defining
-listen-on ports, or as a topology, and whether the element was negated.
-
-When used as an access control list, a non-negated match allows access and a
-negated match denies access. If there is no match, access is denied. The
-clauses allow-query, allow-transfer, allow-update and blackhole all use
-address match lists this. Similarly, the listen-on option will cause the
-server to not accept queries on any of the machine's addresses which do not
-match the list.
-
-When used with the topology clause, a non-negated match returns a distance
-based on its position on the list (the closer the match is to the start of
-the list, the shorter the distance is between it and the server). A negated
-match will be assigned the maximum distance from the server. If there is no
-match, the address will get a distance which is further than any non-negated
-list element, and closer than any negated element.
-
-Because of the first-match aspect of the algorithm, an element that defines
-a subset of another element in the list should come before the broader
-element, regardless of whether either is negated. For example, in
-1.2.3/24; ! 1.2.3.13; the 1.2.3.13 element is completely useless because the
-algorithm will match any lookup for 1.2.3.13 to the 1.2.3/24 element. Using
-! 1.2.3.13; 1.2.3/24 fixes that problem by having 1.2.3.13 blocked by the
-negation but all other 1.2.3.* hosts fall through.
-
-6.1.2 Comment Syntax
-
-The BIND 9 comment syntax allows for comments to appear anywhere that white
-space may appear in a BIND configuration file. To appeal to programmers of
-all kinds, they can be written in C, C++, or shell/perl constructs.
-
-6.1.2.1 Syntax
-
-/* This is a BIND comment as in C */
-// This is a BIND comment as in C++
-# This is a BIND comment as in common UNIX shells and perl
-
-6.1.2.2 Definition and Usage
-
-Comments may appear anywhere that whitespace may appear in a BIND
-configuration file.
-
-C-style comments start with the two characters /* (slash, star) and end with
-*/ (star, slash). Because they are completely delimited with these
-characters, they can be used to comment only a portion of a line or to span
-multiple lines.
-
-C-style comments cannot be nested. For example, the following is not valid
-because the entire comment ends with the first */:
-
-/* This is the start of a comment.
-This is still part of the comment.
-/* This is an incorrect attempt at nesting a comment. */
-This is no longer in any comment. */
-
-C++-style comments start with the two characters // (slash, slash) and
-continue to the end of the physical line. They cannot be continued across
-multiple physical lines; to have one logical comment span multiple lines,
-each line must use the // pair.
-
-For example:
-
-// This is the start of a comment. The next line
-// is a new comment, even though it is logically
-// part of the previous comment.
-
-Shell-style (or perl-style, if you prefer) comments start with the character
-# (number sign) and continue to the end of the physical line, as in C++
-comments.
-
-For example:
-
-# This is the start of a comment. The next line
-# is a new comment, even though it is logically
-# part of the previous comment.
-
-WARNING: you cannot use the semicolon (';') character to start a comment
-such as you would in a zone file. The semicolon indicates the end of a
-configuration statement.
-
-6.2 Configuration File Grammar
-
-A BIND 9 configuration consists of statements and comments. Statements end
-with a semicolon. Statements and comments are the only elements that can
-appear without enclosing braces. Many statements contain a block of
-substatements, which are also terminated with a semicolon.
-
-The following statements are supported:
-
- acl defines a named IP address matching list, for access control
- and other uses.
-
- controls declares control channels to be used by the rndc utility.
-
- include includes a file.
-
- key specifies key information for use in authentication and
- authorization using TSIG.
-
- logging specifies what the server logs, and where the log messages
- are sent.
-
- options controls global server configuration options and sets
- defaults for other statements.
-
- server sets certain configuration options on a per-server basis.
-
- trusted-keys defines trusted DNSSEC keys.
-
- view defines a view.
-
- zone defines a zone.
-
-The logging and options statements may only occur once per configuration.
-
-6.2.1 acl Statement Grammar
-
-acl acl-name {
- address_match_list
-};
-
-6.2.2 acl Statement Definition and Usage
-
-The acl statement assigns a symbolic name to an address match list. It gets
-its name from a primary use of address match lists: Access Control Lists
-(ACLs).
-
-Note that an address match list's name must be defined with acl before it
-can be used elsewhere; no forward references are allowed.
-
-The following ACLs are built-in:
-
- any Matches all hosts.
- none Matches no hosts.
- localhost Matches the IP addresses of all interfaces on the system.
-
- localnets Matches any host on a network for which the system has an
- interface.
-
-6.2.3 controls Statement Grammar
-
-controls {
- [ inet (ip_addr|*) port ip_port allow { address_match_list } ;
- keys { key_list };
- [ inet...; ]
-};
-
-6.2.4 controls Statement Definition and Usage
-
-The controls statement declares control channels to be used by system
-administrators to affect the operation of the local nameserver. These
-control channels are used by the rndc utility to send commands to and
-retrieve non-DNS results from a nameserver.
-
-An inet control channel is a TCP/IP socket accessible to the Internet,
-created at the specified ip_port on the specified ip_addr. If no port
-is specified, port 953 is used by default. "*" cannot be used for
-ip_port.
-
-The ability to issue commands over the control channel is restricted
-by the allow and keys clauses. Connections to the control channel are
-permitted based on the address permissions in address_match_list.
-key_id members of the address_match_list are ignored, and instead are
-interpreted independently based the key_list. Each key_id in the
-key_list is allowed to be used to authenticate commands and responses
-given over the control channel by digitally signing each message
-between the server and a command client (see rndc in section 3.4.1.2).
-All commands to the control channel must be signed by one of its
-specified keys to be honored.
-
-For the initial release of BIND 9.0.0, only one command is possible
-over the command channel, the command to reload the server. We will
-expand command set in future releases.
-
-The UNIX control channel type of BIND 8 is not supported in BIND
-9.0.0, and is not expected to be added in future releases. If it is
-present in the controls statement from a BIND 8 configuration file, a
-non-fatal warning will be logged.
-
-6.2.5 include Statement Grammar
-
-include filename ;
-
-6.2.6 include Statement Definition and Usage
-
-The include statement inserts the specified file at the point that the
-include statement is encountered. The include statement facilitates the
-administration of configuration files by permitting the reading or writing
-of some things but not others. For example, the statement could include
-private keys that are readable only by a nameserver.
-
-6.2.7 key Statement Grammar
-
-key key_id {
-algorithm string;
-secret string;
-};
-
-6.2.8 key Statement Definition and Usage
-
-The key statement defines a shared secret key for use with TSIG. See TSIG.
-
-The key_id, also known as the key name, is a domain name uniquely
-identifying the key. It can be used in a "server" statement to cause
-requests sent to that server to be signed with this key, or in address match
-lists to verify that incoming requests have been signed with a key matching
-this name, algorithm, and secret.
-
-The algorithm_id is a string that specifies a security/authentication
-algorithm. The only algorithm currently supported with TSIG authentication
-is hmac-md5. The secret_string is the secret to be used by the algorithm,
-and is treated as a base-64 encoded string.
-
-6.2.9 logging Statement Grammar
-
-logging {
- [ channel channel_name {
- ( file path name
- [ versions ( number | unlimited ) ]
- [ size size spec ]
- | syslog ( syslog_facility
- | null );
- [ severity (critical | error | warning | notice |
- info | debug [ level ] | dynamic ; ]
- [ print-category yes or no;
- [ print-severity yes or no; ]
- [ print-time yes or no; ]
- }; ]
- [ category category_name {
- channel_name ; [ channel_name ; ... ]
- }; ]
- ...
-};
-
-6.2.10 logging Statement Definition and Usage
-
-The logging statement configures a wide variety of logging options for the
-nameserver. Its channel phrase associates output methods, format options and
-severity levels with a name that can then be used with the category phrase
-to select how various classes of messages are logged.
-
-Only one logging statement is used to define as many channels and categories
-as are wanted. If there is no logging statement, the logging configuration
-will be:
-
-logging {
- category "default" { "default_syslog"; "default_debug"; };
- };
-
-In BIND 9, the logging configuration is only established when the entire
-configuration file has been parsed. In BIND 8, it was established as soon as
-the logging statement was parsed. When the server is starting up, all
-logging messages regarding syntax errors in the configuration file go to the
-default channels, or to standard error if the " -g " option was specified.
-
-6.2.10.1 The channel Phrase
-
-All log output goes to one or more channels ; you can make as many of them
-as you want.
-
-Every channel definition must include a clause that says whether messages
-selected for the channel go to a file, to a particular syslog facility, or
-are discarded. It can optionally also limit the message severity level that
-will be accepted by the channel (the default is info), and whether to
-include a named -generated time stamp, the category name and/or severity
-level (the default is not to include any).
-
-The word null as the destination option for the channel will cause all
-messages sent to it to be discarded; in that case, other options for the
-channel are meaningless.
-
-The file clause can include limitations both on how large the file is
-allowed to become, and how many versions of the file will be saved each time
-the file is opened.
-
-The size option for files is simply a hard ceiling on log growth. If the
-file ever exceeds the size, then named will not write anything more to it
-until the file is reopened; exceeding the size does not automatically
-trigger a reopen. The default behavior is not to limit the size of the file.
-
-If you use the version log file option, then named will retain that many
-backup versions of the file by renaming them when opening. For example, if
-you choose to keep 3 old versions of the file lamers.log then just before it
-is opened lamers.log.1 is renamed to lamers.log.2, lamers.log.0 is renamed
-to lamers.log.1, and lamers.log is renamed to lamers.log.0. No rolled
-versions are kept by default; any existing log file is simply appended. The
-unlimited keyword is synonymous with 99 in current BIND releases.
-
-Example usage of the size and versions options:
-
- channel "an_example_channel" {
- file "example.log" versions 3 size 20m;
- print-time yes;
- print-category yes;
- };
-
-The argument for the syslog clause is a syslog facility as described in the
-syslog man page. How syslog will handle messages sent to this facility is
-described in the syslog.conf man page. If you have a system which uses a
-very old version of syslog that only uses two arguments to the openlog()
-function, then this clause is silently ignored.
-
-The severity clause works like syslog's "priorities," except that they
-can also be used if you are writing straight to a file rather than
-using syslog. Messages which are not at least of the severity level
-given will not be selected for the channel; messages of higher
-severity levels will be accepted.
-
-If you are using syslog, then the syslog.conf priorities will also
-determine what eventually passes through. For example, defining a channel
-facility and severity as daemon and debug but only logging daemon.warning
-via syslog.conf will cause messages of severity info and notice to be
-dropped. If the situation were reversed, with named writing messages of only
-warning or higher, then syslogd would print all messages it received from
-the channel.
-
-The server can supply extensive debugging information when it is in
-debugging mode. If the server's global debug level is greater than
-zero, then debugging mode will be active. The global debug level is
-set either by starting the named server with the " -d " flag followed
-by a positive integer, or by running rndc trace (the latter method is
-not yet implemented). The global debug level can be set to zero, and
-debugging mode turned off, by running ndc notrace. All debugging
-messages in the server have a debug level, and higher debug levels
-give more detailed output. Channels that specify a specific debug
-severity, for example:
-
- channel "specific_debug_level" {
- file "foo";
- severity debug 3;
- };
-
-will get debugging output of level 3 or less any time the server is in
-debugging mode, regardless of the global debugging level. Channels with
-dynamic severity use the server's global level to determine what messages to
-print.
-
-If print-time has been turned on, then the date and time will be logged.
-print-time may be specified for a syslog channel, but is usually pointless
-since syslog also prints the date and time. If print-category is requested,
-then the category of the message will be logged as well. Finally, if
-print-severity is on, then the severity level of the message will be logged.
-The print- options may be used in any combination, and will always be
-printed in the following order: time, category, severity. Here is an example
-where all three print-options are on:
-
-28-Feb-2000 15:05:32.863 general: notice: running
-
-There are four predefined channels that are used for named's default
-logging as follows. How they are used is described in the category Phrase.
-
- channel "default_syslog" {
- syslog daemon; // end to syslog's daemon
- // facility
- severity info; // only send priority info
- // and higher
- };
- channel "default_debug" {
- file "named.run"; // write to named.run in
- // the working directory
- // Note: stderr is used instead
- // of "named.run"
- // if the server is started
- // with the '-f' option.
- severity dynamic // log at the server's
- // current debug level
- };
- channel "default_stderr" { // writes to stderr
- file "<stderr>"; // this is illustrative only;
- // there's currently no way of
- // specifying an internal file
- // descriptor in the
- // configuration language.
- severity info; // only send priority info
- // and higher
- };
- channel "null" {
- null; // toss anything sent to
- // this channel
- };
-
-The default_debug channel normally writes to a file named.run in the
-server's working directory. For security reasons, when the "-u"
-command line option is used, the named.run file is created only after
-named has changed to the new UID, and any debug output generated while
-named is starting up and still running as root is discarded. If you
-need to capture this output, you must run the server with the "-g"
-option and redirect standard error to a file.
-
-Once a channel is defined, it cannot be redefined. Thus you cannot
-alter the built-in channels directly, but you can modify the default
-logging by pointing categories at channels you have defined.
-
-6.2.10.2 The category Phrase
-
-There are many categories, so you can send the logs you want to see wherever
-you want, without seeing logs you don't want. If you don't specify a list of
-channels for a category, then log messages in that category will be sent to
-the default category instead. If you don't specify a default category, the
-following "default default" is used:
-
-category "default" { "default_syslog"; "default_debug"; };
-
-As an example, let's say you want to log security events to a file, but you
-also want keep the default logging behavior. You'd specify the following:
-
-channel "my_security_channel" {
- file "my_security_file";
- severity info;
-};
-category "security" {
- "my_security_channel";
- "default_syslog";
- "default_debug";
-};
-
-To discard all messages in a category, specify the null channel:
-
-category "xfer-out" { "null"; };
-category "notify" { "null"; };
-
-Following are the available categories and brief descriptions of the types
-of log information they contain. More categories may be added in future
-BIND releases.
-
- default The default category defines the logging options for those
- categories where no specific configuration has been defined.
-
- general The catch-all. Many things still aren't classified into
- categories, and they all end up here.
-
- database Messages relating to the databases used internally by the name
- server to store zone and cache data.
-
- security Approval and denial of requests.
-
- config Configuration file parsing and processing.
-
- resolver DNS resolution, such as the recursive lookups performed on behalf
- of clients by a caching name server.
-
- xfer-in Zone transfers the server is receiving.
-
- xfer-out Zone transfers the server is sending.
-
- notify The NOTIFY protocol.
-
- client Processing of client requests.
-
- network Network operations.
-
- update Dynamic updates.
-
-6.2.11 options Statement Grammar
-
-This is the grammar of the option statement in the named.conf file:
-
-options {
-
- [ version version_string; ]
- [ directory path_name; ]
- [ named-xfer path_name; ]
- [ tkey-domain domainname; ]
- [ tkey-dhkey key_name key_tag; ]
- [ dump-file path_name; ]
- [ memstatistics-file path_name; ]
- [ pid-file path_name; ]
- [ statistics-file path_name; ]
- [ auth-nxdomain yes_or_no; ]
- [ deallocate-on-exit yes_or_no; ]
- [ dialup yes_or_no; ]
- [ fake-iquery yes_or_no; ]
- [ fetch-glue yes_or_no; ]
- [ has-old-clients yes_or_no; ]
- [ host-statistics yes_or_no; ]
- [ multiple-cnames yes_or_no; ]
- [ notify yes_or_no; ]
- [ recursion yes_or_no; ]
- [ rfc2308-type1 yes_or_no; ]
- [ use-id-pool yes_or_no; ]
- [ maintain-ixfr-base yes_or_no; ]
- [ forward ( only | first ); ]
- [ forwarders { [ in_addr ; [ in_addr ; ... ] ] }; ]
- [ check-names ( master | slave | response )( warn | fail | ignore ); ]
- [ allow-query { address_match_list }; ]
- [ allow-transfer { address_match_list }; ]
- [ allow-recursion { address_match_list }; ]
- [ blackhole { address_match_list }; ]
- [ listen-on [ port ip_port ] { address_match_list }; ]
- [ query-source [ address ( ip_addr | * ) ] [ port ( ip_port | * ) ]; ]
- [ max-transfer-time-in number; ]
- [ max-transfer-time-out number; ]
- [ max-transfer-idle-in number; ]
- [ max-transfer-idle-out number; ]
- [ tcp-clients number; ]
- [ recursive-clients number; ]
- [ serial-queries number; ]
- [ transfer-format ( one-answer | many-answers ); ]
- [ transfers-in number; ]
- [ transfers-out number; ]
- [ transfers-per-ns number; ]
- [ transfer-source ip4_addr; ]
- [ transfer-source-v6 ip6_addr; ]
- [ also-notify { ip_addr; [ ip_addr; ... ] }; ]
- [ max-ixfr-log-size number; ]
- [ coresize size_spec ; ]
- [ datasize size_spec ; ]
- [ files size_spec ; ]
- [ stacksize size_spec ; ]
- [ cleaning-interval number; ]
- [ heartbeat-interval number; ]
- [ interface-interval number; ]
- [ statistics-interval number; ]
- [ topology { address_match_list }; ]
- [ sortlist { address_match_list }; ]
- [ rrset-order { order_spec ; [ order_spec ; ... ] ] };
- [ lame-ttl number; ] [ max-ncache-ttl number; ]
- [ max-cache-ttl number; ]
- [ sig-validity-interval number ; ]
- [ min-roots number; ]
- [ use-ixfr yes_or_no ; ]
- [ treat-cr-as-space yes_or_no ; ]
-};
-
-6.2.12 options Statement Definition and Usage
-
-The options statement sets up global options to be used by BIND. This
-statement may appear only once in a configuration file. If more than one
-occurrence is found, the first occurrence determines the actual options
-used, and a warning will be generated. If there is no options statement, an
-options block with each option set to its default will be used.
-
- version The version the server should report via a query of
- name version.bind in class chaos. The default is the
- real version number of this server.
-
- directory The working directory of the server. Any non-absolute
- pathnames in the configuration file will be taken as
- relative to this directory. The default location for
- most server output files (e.g. named.run) is this
- directory. If a directory is not specified, the working
- directory defaults to '.', the directory from which
- the server was started. The directory specified should
- be an absolute path.
-
- named-xfer This option is obsolete. It was used in BIND 8 to
- specify the pathname to the named-xfer program. In
- BIND 9, no separate named-xfer program is needed; its
- functionality is built into the name server.
-
- tkey-domain The domain appended to the names of all shared keys
- generated with TKEY. When a client requests a TKEY
- exchange, it may or may not specify the desired name
- for the key. If present, the name of the shared key
- will be " client specified part " + " tkey-domain ".
- Otherwise, the name of the shared key will be " random
- hex digits " + " tkey-domain ". In most cases, the
- domainname should be the server's domain name.
-
- tkey-dhkey The Diffie-Hellman key used by the server to generate
- shared keys with clients using the Diffie-Hellman mode
- of TKEY. The server must be able to load the public
- and private keys from files in the working directory.
- In most cases, the keyname should be the server's host
- name.
-
- dump-file The pathname of the file the server dumps the database
- to when it receives SIGINT signal (ndc dumpdb). If
- not specified, the default is named_dump.db. Not yet
- implemented in BIND 9.
-
- memstatistics-file The pathname of the file the server writes memory usage
- statistics to on exit. If not specified, the default is
- named.memstats. Not yet implemented in BIND 9.
-
- pid-file The pathname of the file the server writes its process
- ID in. If not specified, the default is operating
- system dependent, but is usually
- /var/run/named.pid or /etc/named.pid. The pid-file is
- used by programs that want to send signals to the
- running nameserver.
-
- statistics-file The pathname of the file the server appends statistics
- to. If not specified, the default is named.stats. Not
- yet implemented in BIND 9.
-
-6.2.12.1 Boolean Options
-
- auth-nxdomain If yes, then the AA bit is always set on NXDOMAIN
- responses, even if the server is not actually
- authoritative. The default is no ; this is a change
- from BIND 8. If you are using very old DNS software,
- you may need to set it to yes.
-
- deallocate-on-exit This option was used in BIND 8 to enable checking for
- memory leaks on exit. BIND 9 ignores the option and
- always performs the checks.
-
- dialup If yes, then the server treats all zones as if they
- are doing zone transfers across a dial on demand dialup
- link, which can be brought up by traffic originating
- from this server. This has different effects according
- to zone type and concentrates the zone maintenance so
- that it all happens in a short interval, once every
- heartbeat-interval and hopefully during the one call.
- It also suppresses some of the normal zone maintenance
- traffic. The default is no.
- The dialup option may also be specified in the zone
- statement, in which case it overrides the options
- dialup statement.
- If the zone is a master then the server will send out a
- NOTIFY request to all the slaves. This will trigger the
- zone serial number check in the slave (providing it
- supports NOTIFY) allowing the slave to verify the zone
- while the connection is active.
- If the zone is a slave or stub then the server will
- suppress the regular "zone up to date" queries and only
- perform them when the
- heartbeat-interval expires. Not yet implemented in
- BIND 9.
-
- fake-iquery In BIND 8, this option was used to enable simulating
- the obsolete DNS query type IQUERY. BIND 9 never does
- IQUERY simulation.
-
- fetch-glue (Information present outside of the authoritative nodes
- in the zone is called glue information). If yes (the
- default), the server will fetch glue resource records
- it doesn't have when constructing the additional data
- section of a response. fetch-glue no can be used in
- conjunction with recursion no to prevent the server's
- cache from growing or becoming corrupted (at the cost
- of requiring more work from the client). Not yet
- implemented in BIND 9.
-
- has-old-clients This option was incorrectly implemented in BIND 8, and
- is ignored by BIND 9. To achieve the intended effect of
- has-old-clients yes, specify the two separate options
- auth-nxdomain yes and rfc2308-type1 no instead.
-
- host-statistics If yes, then statistics are kept for every host that
- the nameserver interacts with. The default is no.
- Note: turning on host-statistics can consume huge
- amounts of memory. Not yet implemented in BIND 9.
-
- maintain-ixfr-base This option is obsolete. It was used in BIND 8 to
- determine whether a transaction log was kept for
- Incremental Zone Transfer. BIND 9 maintains a
- transaction log whenever possible. If you need to
- disable outgoing incremental zone transfers, use
- provide-ixfr no.
-
- multiple-cnames This option was used in BIND 8 to allow a domain name
- to allow multiple CNAME records in violation of the DNS
- standards. BIND 9 currently does not check for multiple
- CNAMEs in zone data loaded from master files, but such
- checks may be introduced in a later release. BIND 9
- always strictly enforces the CNAME rules in dynamic
- updates.
-
- notify If yes (the default), DNS NOTIFY messages are sent when
- a zone the server is authoritative for changes. See
- Notify, for more information. The notify option may
- also be specified in the zone statement, in which case
- it overrides the options notify statement. It would
- only be necessary to turn off this option if it caused
- slaves to crash.
-
- recursion If yes, and a DNS query requests recursion, then the
- server will attempt to do all the work required to
- answer the query. If recursion is not on, the server
- will return a referral to the client if it doesn't know
- the answer. The default is yes. See also fetch-glue
- above.
-
- rfc2308-type1 Setting this to yes will cause the server to send NS
- records along with the SOA record for negative answers.
- The default is no. Not yet implemented in BIND 9.
-
- use-id-pool This option is obsolete. BIND 9 always allocates query
- IDs from a pool.
-
- treat-cr-as-space This option was used in BIND 8 to make the server treat
- "\r" characters the same way as <space> " " or "\t",
- to facilitate loading of zone files on a UNIX system
- that were generated on an NT or DOS machine. In BIND 9,
- both UNIX "\n" and NT/DOS "\r\n" newlines are
- always accepted, and the option is ignored.
-
-6.2.12.2 Forwarding
-
-The forwarding facility can be used to create a large site-wide cache on a
-few servers, reducing traffic over links to external nameservers. It can
-also be used to allow queries by servers that do not have direct access to
-the Internet, but wish to look up exterior names anyway. Forwarding occurs
-only on those queries for which the server is not authoritative and does not
-have the answer in its cache.
-
-
- forward This option is only meaningful if the forwarders list is not
- empty. A value of first, the default, causes the server to
- query the forwarders first, and if that doesn't answer the
- question the server will then look for the answer itself. If
- only is specified, the server will only query the forwarders.
-
- forwarders Specifies the IP addresses to be used for forwarding. The
- default is the empty list (no forwarding).
-
-Forwarding can also be configured on a per-domain basis, allowing for the
-global forwarding options to be overridden in a variety of ways. You can set
-particular domains to use different forwarders, or have a different forward
-only/first behavior, or not forward at all. See zone Statement Grammar for
-more information.
-
-6.2.12.3 Name Checking
-
-The server can check domain names based upon their expected client contexts.
-For example, a domain name used as a hostname can be checked for compliance
-with the RFCs defining valid hostnames.
-
-Three checking methods are available:
-
- ignore No checking is done.
-
- warn Names are checked against their expected client contexts. Invalid
- names are logged, but processing continues normally.
-
- fail Names are checked against their expected client contexts. Invalid
- names are logged, and the offending data is rejected.
-
-The server can check names in three areas: master zone files, slave zone
-files, and in responses to queries the server has initiated. If check-names
-response fail has been specified, and answering the client's question would
-require sending an invalid name to the client, the server will send a
-REFUSED response code to the client.
-
-The defaults are:
-
- check-names master fail;
- check-names slave warn;
- check-names response ignore;
-
-check-names may also be specified in the zone statement, in which case it
-overrides the options check-names statement. When used in a zone statement,
-the area is not specified because it can be deduced from the zone type.
-
-Name checking is not yet implemented in BIND 9.
-
-6.2.12.4 Access Control
-
-Access to the server can be restricted based on the IP address of the
-requesting system. See Address Match Lists for details on how to specify IP
-address lists.
-
- allow-query Specifies which hosts are allowed to ask ordinary
- questions. allow-query may also be specified in the zone
- statement, in which case it overrides the options
- allow-query statement. If not specified, the default is to
- allow queries from all hosts.
-
- allow-recursion Specifies which hosts are allowed to make recursive
- queries through this server. If not specified, the default
- is to allow recursive queries from all hosts.
-
- allow-transfer Specifies which hosts are allowed to receive zone
- transfers from the server. allow-transfer may also be
- specified in the zone statement, in which case it
- overrides the options allow-transfer statement. If not
- specified, the default is to allow transfers from all
- hosts.
-
- blackhole Specifies a list of addresses that the server will not
- accept queries from or use to resolve a query. Queries
- from these addresses will not be responded to. The default
- is none. Not yet implemented in BIND 9.
-
-6.2.12.5 Interfaces
-
-The interfaces and ports that the server will answer queries from may be
-specified using the listen-on option. listen-on takes an optional port, and
-an address_match_list. The server will listen on all interfaces allowed by
-the address match list. If a port is not specified, port 53 will be used.
-
-Multiple listen-on statements are allowed. For example,
-
-listen-on { 5.6.7.8; };
-listen-on port 1234 { !1.2.3.4; 1.2/16; };
-
-will enable the nameserver on port 53 for the IP address 5.6.7.8, and on
-port 1234 of an address on the machine in net 1.2 that is not 1.2.3.4.
-
-If no listen-on is specified, the server will listen on port 53 on all
-interfaces.
-
-The listen-on-v6 option is used to specify the ports on which the server
-will listen for incoming queries sent using IPv6.
-
-The server does not bind a separate socket to each IPv6 interface address as
-it does for IPv4. Instead, it always listens on the IPv6 wildcard address.
-Therefore, the only values allowed for the address_match_list argument to
-the listen-on-v6 statement are " { any; } " and " { none; } ".
-
-Multiple listen-on-v6 options can be used to listen on multiple ports:
-
-listen-on-v6 port 53 { any; };
-listen-on-v6 port 1234 { any; };
-
-To make the server not listen on any IPv6 address, use
-
-listen-on-v6 { none; };
-
-If no listen-on-v6 statement is specified, the server will listen on port 53
-on the IPv6 wildcard address.
-
-6.2.12.6 Query Address
-
-If the server doesn't know the answer to a question, it will query other
-nameservers. query-source specifies the address and port used for such
-queries. For queries sent over IPv6, there is a separate query-source-v6
-option. If address is * or is omitted, a wildcard IP address (INADDR_ANY)
-will be used. If port is * or is omitted, a random unprivileged port will be
-used. The defaults are
-
-query-source address * port *;
-query-source-v6 address * port *
-
-Note: query-source currently applies only to UDP queries; TCP queries always
-use a wildcard IP address and a random unprivileged port.
-
-6.2.12.7 Zone Transfers
-
-BIND has mechanisms in place to facilitate zone transfers and set limits on
-the amount of load that transfers place on the system. The following options
-apply to zone transfers.
-
-
-
- also-notify Defines a global list of IP addresses that are also
- sent NOTIFY messages whenever a fresh copy of the
- zone is loaded. This helps to ensure that copies of
- the zones will quickly converge on stealth servers.
- If an also-notify list is given in a zone statement,
- it will override the options also-notify statement.
- When a zone notify statement is set to no, the IP
- addresses in the global also-notify list will not be
- sent NOTIFY messages for that zone. The default is
- the empty list (no global notification list).
-
-
- max-transfer-time-in Inbound zone transfers running longer than this many
- minutes will be terminated. The default is 120
- minutes (2 hours).
-
- max-transfer-idle-in Inbound zone transfers making no progress in this
- many minutes will be terminated. The default is 60
- minutes (1 hour).
-
- max-transfer-time-out Outbound zone transfers running longer than this
- many minutes will be terminated. The default is 120
- minutes (2 hours).
-
- max-transfer-idle-out Outbound zone transfers making no progress in this
- many minutes will be terminated. The default is 60
- minutes (1 hour).
-
- serial-queries Slave servers will periodically query master servers
- to find out if zone serial numbers have changed.
- Each such query uses a minute amount of the slave
- server's network bandwidth, but more importantly
- each query uses a small amount of memory in the
- slave server while waiting for the master server to
- respond. The serial-queries option sets the maximum
- number of concurrent serial-number queries allowed
- to be outstanding at any given time. The default is
- 4. Note: If a server loads a large (tens or hundreds
- of thousands) number of slave zones, then this limit
- should be raised to the high hundreds or low
- thousands, otherwise the slave server may never
- actually become aware of zone changes in the master
- servers. Beware, though, that setting this limit
- arbitrarily high can spend a considerable amount of
- your slave server's network, CPU, and memory
- resources. As with all tunable limits, this one
- should be changed gently and monitored for its
- effects. Not yet implemented in BIND 9.
-
- transfer-format The server supports two zone transfer methods.
- one-answer uses one DNS message per resource record
- transferred. many-answers packs as many resource
- records as possible into a message. many-answers is
- more efficient, but is only known to be understood
- by BIND 9, BIND 8.x and patched versions of
- BIND 4.9.5. The default is many-answers.
- transfer-format may be overridden on a per-server
- basis by using the server statement.
-
- transfers-in The maximum number of inbound zone transfers that
- can be running concurrently. The default value is 10.
- Increasing transfers-in may speed up the
- convergence of slave zones, but it also may increase
- the load on the local system.
-
- transfers-out The maximum number of outbound zone transfers that
- can be running concurrently. Zone transfer requests
- in excess of the limit will be refused. The default
- value is 10.
-
- transfers-per-ns The maximum number of inbound zone transfers that
- can be concurrently transferring from a given remote
- nameserver. The default value is 2. Increasing
- transfers-per-ns may speed up the convergence of
- slave zones, but it also may increase the load on
- the remote nameserver. transfers-per-ns may be
- overridden on a per-server basis by using the
- transfers phrase of the server statement.
-
- transfer-source transfer-source determines which local address will
- be bound to IPv4 TCP connections used to fetch zones
- transferred inbound by the server. If not set, it
- defaults to a system controlled value which will
- usually be the address of the interface "closest to"
- the remote end. This address must appear in the
- remote end's allow-transfer option for the zone
- being transferred, if one is specified. This
- statement sets the transfer-source for all zones,
- but can be overridden on a per-zone basis by
- including a
- transfer-source statement within the zone block in
- the configuration file.
-
- transfer-source-v6 The same as transfer-source, except zone transfers
- are performed using IPv6.
-
-6.2.12.8 Resource Limits
-
-The server's usage of many system resources can be limited. Some operating
-systems don't support some of the limits. On such systems, a warning will be
-issued if the unsupported limit is used. Some operating systems don't
-support limiting resources.
-
-Scaled values are allowed when specifying resource limits. For example, 1G
-can be used instead of 1073741824 to specify a limit of one gigabyte.
-unlimited requests unlimited use, or the maximum available amount. default
-uses the limit that was in force when the server was started. See the
-description of size_spec in Configuration File Elements for more details.
-
-
-
- coresize The maximum size of a core dump. The default is default.
- Not yet implemented in BIND 9.
-
- datasize The maximum amount of data memory the server may use.
- The default is default. Not yet implemented in BIND 9.
-
- The maximum number of files the server may have open
- concurrently. The default is unlimited. Note: on some
- operating systems the server cannot set an unlimited
- value and cannot determine the maximum number of open
- files files the kernel can support. On such systems, choosing
- unlimited will cause the server to use the larger of the
- rlim_max for RLIMIT_NOFILE and the value returned by
- sysconf(_SC_OPEN_MAX). If the actual kernel limit is
- larger than this value, use limit files to specify the
- limit explicitly. Not yet implemented in BIND 9.
-
- max-ixfr-log-size The max-ixfr-log-size will be used in a future release
- of the server to limit the size of the transaction log
- kept for Incremental Zone Transfer. Not yet implemented
- in BIND 9.
-
- recursive-clients The maximum number of simultaneous recursive lookups the
- server will perform on behalf of clients. The default is
- 1000.
-
- stacksize The maximum amount of stack memory the server may use.
- The default is default. Not yet implemented in BIND 9.
-
- tcp-clients The maximum number of simultaneous client TCP
- connections that the server will accept. The default is
- 100.
-
-Resource limits are not yet implemented in BIND 9.
-
-6.2.12.9 Periodic Task Intervals
-
-
-
- cleaning-interval The server will remove expired resource records from
- the cache every cleaning-interval minutes. The default
- is 60 minutes. If set to 0, no periodic cleaning will
- occur.
-
- heartbeat-interval The server will perform zone maintenance tasks for all
- zones marked dialup yes whenever this interval
- expires. The default is 60 minutes. Reasonable values
- are up to 1 day (1440 minutes). If set to 0, no zone
- maintenance for these zones will occur. Not yet
- implemented in BIND 9.
-
- interface-interval The server will scan the network interface list every
- interface-interval minutes. The default is 60 minutes.
- If set to 0, interface scanning will only occur when
- the configuration file is loaded. After the scan,
- listeners will be started on any new interfaces
- (provided they are allowed by the listen-on
- configuration). Listeners on interfaces that have gone
- away will be cleaned up.
-
- statistics-interval Nameserver statistics will be logged every
- statistics-interval minutes. The default is 60. If
- set to 0, no statistics will be logged. Not yet
- implemented in BIND 9.
-
-6.2.12.10 Topology
-
-All other things being equal, when the server chooses a nameserver to query
-from a list of nameservers, it prefers the one that is topologically closest
-to itself. The topology statement takes an address_match_list and interprets
-it in a special way. Each top-level list element is assigned a distance.
-Non-negated elements get a distance based on their position in the list,
-where the closer the match is to the start of the list, the shorter the
-distance is between it and the server. A negated match will be assigned the
-maximum distance from the server. If there is no match, the address will get
-a distance which is further than any non-negated list element, and closer
-than any negated element. For example,
-
- topology {
- 10/8;
- !1.2.3/24;
- { 1.2/16; 3/8; };
- };
-
-will prefer servers on network 10 the most, followed by hosts on network
-1.2.0.0 (netmask 255.255.0.0) and network 3, with the exception of hosts on
-network 1.2.3 (netmask 255.255.255.0), which is preferred least of all.
-
-The default topology is
-
- topology { localhost; localnets; };
-
-The topology option is not yet implemented in BIND 9.
-
-6.2.12.11 The sortlist Statement
-
-Resource Records (RRs) are the data associated with the names in a domain
-name space. The data is maintained in the form of sets of RRs. The order of
-RRs in a set is, by default, not significant. Therefore, to control the
-sorting of records in a set of resource records, or RRset, you must use the
-sortlist statement.
-
-RRs are explained more fully in See Types of Resource Records and When to
-Use Them. Specifications for RRs are documented in RFC 1035.
-
-When returning multiple RRs the nameserver will normally return them in
-Round Robin order, that is, after each request the first RR is put at the
-end of the list. The client resolver code should rearrange the RRs as
-appropriate, that is, using any addresses on the local net in preference to
-other addresses. However, not all resolvers can do this or are correctly
-configured. When a client is using a local server the sorting can be
-performed in the server, based on the client's address. This only requires
-configuring the nameservers, not all the clients.
-
-The sortlist statement (see below) takes an address_match_list and
-interprets it even more specifically than the topology statement does (see
-Topology). Each top level statement in the sortlist must itself be an
-explicit address_match_list with one or two elements. The first element
-(which may be an IP address, an IP prefix, an ACL name or a nested
-address_match_list) of each top level list is checked against the source
-address of the query until a match is found.
-
-Once the source address of the query has been matched, if the top level
-statement contains only one element, the actual primitive element that
-matched the source address is used to select the address in the response to
-move to the beginning of the response. If the statement is a list of two
-elements, then the second element is treated the same as the
-address_match_list in a topology statement. Each top level element is
-assigned a distance and the address in the response with the minimum
-distance is moved to the beginning of the response.
-
-In the following example, any queries received from any of the addresses of
-the host itself will get responses preferring addresses on any of the
-locally connected networks. Next most preferred are addresses on the
-192.168.1/24 network, and after that either the 192.168.2/24 or
-192.168.3/24 network with no preference shown between these two networks.
-Queries received from a host on the 192.168.1/24 network will prefer other
-addresses on that network to the 192.168.2/24 and
-192.168.3/24 networks. Queries received from a host on the 192.168.4/24 or
-the 192.168.5/24 network will only prefer other addresses on their directly
-connected networks.
-
-sortlist {
- { localhost; // IF the local host
- { localnets; // THEN first fit on the
- 192.168.1/24; // following nets
- { 192,168.2/24; 192.168.3/24; }; }; };
- { 192.168.1/24; // IF on class C 192.168.1
- { 192.168.1/24; // THEN use .1, or .2 or .3
- { 192.168.2/24; 192.168.3/24; }; }; };
- { 192.168.2/24; // IF on class C 192.168.2
- { 192.168.2/24; // THEN use .2, or .1 or .3
- { 192.168.1/24; 192.168.3/24; }; }; };
- { 192.168.3/24; // IF on class C 192.168.3
- { 192.168.3/24; // THEN use .3, or .1 or .2
- { 192.168.1/24; 192.168.2/24; }; }; };
- { { 192.168.4/24; 192.168.5/24; };
- // if .4 or .5, prefer that net
- };
-};
-
-The following example will give reasonable behavior for the local host and
-hosts on directly connected networks. It is similar to the behavior of the
-address sort in BIND 8.x. Responses sent to queries from the local host will
-favor any of the directly connected networks. Responses sent to queries from
-any other hosts on a directly connected network will prefer addresses on
-that same network. Responses to other queries will not be sorted.
-
-sortlist {
- { localhost; localnets; };
- { localnets; };
-};
-
-The sortlist option is not yet implemented in BIND 9.
-
-6.2.12.12 RRset Ordering
-
-When multiple records are returned in an answer it may be useful to
-configure the order of the records placed into the response. For example,
-the records for a zone might be configured always to be returned in the
-order they are defined in the zone file. Or perhaps a random shuffle of the
-records as they are returned is wanted. The rrset-order statement permits
-configuration of the ordering made of the records in a multiple record
-response. The default, if no ordering is defined, is a cyclic ordering
-(round robin).
-
-An order_spec is defined as follows:
-
-[ class class_name ][ type type_name ][ name "domain_name"]
- order ordering
-
-If no class is specified, the default is ANY. If no type is specified, the
-default is ANY. If no name is specified, the default is "*".
-
-The legal values for ordering are:
-
- fixed Records are returned in the order they are defined in the zone
- file.
-
- random Records are returned in some random order.
-
- cyclic Records are returned in a round-robin order.
-
-For example:
-
- rrset-order {
- class IN type A name "host.example.com" order random;
- order cyclic;
- };
-
-will cause any responses for type A records in class IN that have
-"host.example.com" as a suffix, to always be returned in random
-order. All other records are returned in cyclic order.
-
-If multiple rrset-order statements appear, they are not combined--the last
-one applies.
-
-If no rrset-order statement is specified, then a default one of:
-
- rrset-order { class ANY type ANY name "*"; order cyclic ;
- };
-
-is used.
-
-The rrset-order statement is not yet implemented in BIND 9.
-
-6.2.12.13 Tuning
-
-
- lame-ttl Sets the number of seconds to cache a lame server
- indication. 0 disables caching. (This is NOT
- recommended.) Default is 600 (10 minutes). Maximum
- value is 1800 (30 minutes). Not yet implemented in
- BIND 9.
-
- max-ncache-ttl To reduce network traffic and increase performance
- the server stores negative answers. max-ncache-ttl
- is used to set a maximum retention time for these
- answers in the server in seconds. The default
- max-ncache-ttl is 10800 seconds (3 hours).
- max-ncache-ttl cannot exceed 7 days and will be
- silently truncated to 7 days if set to a greater
- value.
-
- max-cache-ttl max-cache-ttl sets the maximum time for which the
- server will cache ordinary (positive) answers. The
- default is one week (7 days).
-
- min-roots The minimum number of root servers that is required
- for a request for the root servers to be accepted.
- Default is 2. Not yet implemented in BIND 9.
-
- sig-validity-interval Specifies the number of days into the future when
- DNSSEC signatures automatically generated as a
- result of dynamic updates (see Dynamic Update) will
- expire. The default is 30 days. The signature
- inception time is unconditionally set to one hour
- before the current time to allow for a limited
- amount of clock skew.
-
-6.2.12.14 Deprecated Features
-
-use-ixfr is deprecated in BIND 9. If you need to disable IXFR to a
-particular server or servers see the information on the provide-ixfr option
-in server Statement Definition and Usage. See also the description of IXFR
-in the section Incremental Zone Transfers (IXFR).
-
-6.2.13 server Statement Grammar
-
-server ip_addr {
-
- [ bogus yes_or_no ; ]
- [ provide-ixfr yes_or_no ; ]
- [ request-ixfr yes_or_no ; ]
- [ transfers number ; ]
- [ transfer-format ( one-answer | many-answers ) ; ]
- [ keys { string ; [ string ; [...]] } ; ]
-}; }
-
-6.2.14 server Statement Definition and Usage
-
-The server statement defines the characteristics to be associated with a
-remote nameserver.
-
-If you discover that a remote server is giving out bad data, marking it as
-bogus will prevent further queries to it. The default value of bogus is no.
-The bogus clause is not yet implemented in BIND 9.
-
-The provide-ixfr clause determines whether the local server, acting as
-master, will respond with an incremental zone transfer when the given remote
-server, a slave, requests it. If set to yes, incremental transfer will be
-provided whenever possible. If set to no, all transfers to the remote
-server will be nonincremental. If not set, the value of the provide-ixfr
-option in the global options block is used as a default.
-
-The request-ixfr clause determines whether the local server, acting as a
-slave, will request incremental zone transfers from the given remote server,
-a master. If not set, the value of the request-ixfr option in the global
-options block is used as a default.
-
-IXFR requests to servers that do not support IXFR will automatically fall
-back to AXFR. Therefore, there is no need to manually list which servers
-support IXFR and which ones do not; the global default of yes should always
-work. The purpose of the provide-ixfr and request-ixfr clauses is to make it
-possible to disable the use of IXFR even when both master and slave claim to
-support it, for example if one of the servers is buggy and crashes or
-corrupts data when IXFR is used.
-
-The server supports two zone transfer methods. The first, one-answer, uses
-one DNS message per resource record transferred. many-answers packs as many
-resource records as possible into a message. many-answers is more efficient,
-but is only known to be understood by BIND 9, BIND 8.x, and patched versions
-of BIND 4.9.5. You can specify which method to use for a server with the
-transfer-format option. If transfer-format is not specified, the
-transfer-format specified by the options statement will be used.
-
-transfers is used to limit the number of concurrent inbound zone transfers
-from the specified server. If no transfers clause is specified, the limit is
-set according to the transfers-per-ns option.
-
-The keys clause is used to identify a key_id defined by the key statement,
-to be used for transaction security when talking to the remote server. The
-key statement must come before the server statement that references it. When
-a request is sent to the remote server, a request signature will be
-generated using the key specified here and appended to the message. A
-request originating from the remote server is not required to be signed by
-this key.
-
-Although the grammar of the keys clause allows for multiple keys, only a
-single key per server is currently supported.
-
-6.2.15 trusted-keys Statement Grammar
-
-trusted-keys {
- string number number number string ;
- [ string number number number string ; [...]]
-}; }
-
-6.2.16 trusted-keys Statement Definition and Usage
-
-The trusted-keys statement defines DNSSEC security roots. See DNSSEC for a
-description. A security root is defined when the public key for a
-non-authoritative zone is known, but cannot be securely obtained through
-DNS, either because it is the DNS root zone or its parent zone is unsigned.
-Once a key has been configured as a trusted key, it is treated as if it had
-been validated and proven secure. The resolver attempts DNSSEC validation on
-all DNS data in subdomains of a security root.
-
-The trusted-keys statement can contain multiple key entries, each consisting
-of the key's domain name, flags, protocol, algorithm, and the base-64
-representation of the key data.
-
-6.2.17 view Statement Grammar
-
- view view name {
- match-clients { address_match_list } ;
- [view_option; ...]
- [zone_statement; ...]]
-};
-
-6.2.18 view Statement Definition and Usage
-
-The view statement is a powerful new feature of BIND 9 that lets a name
-server answer a DNS query differently depending on who is asking. It is
-particularly useful for implementing split DNS setups without having to run
-multiple servers.
-
-Each view statement defines a view of the DNS namespace that will be seen by
-those clients whose IP addresses match the address_match_list of the view's
-match-clients clause. The order of the view statements is significant--a
-client query will be resolved in the context of the first view whose
-match-clients list matches the client's IP address.
-
-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 a 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.
-
-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";
- };
- };
-
-6.2.19 zone Statement Grammar
-
-zone zone name [class] [{
- type ( master|slave|hint|stub|forward ) ;
- [ allow-query { address_match_list } ; ]
- [ allow-transfer { address_match_list } ; ]
- [ allow-update { address_match_list } ; ]
- [ update-policy { update_policy_rule[...] } ; ]
- [ allow-update-forwarding { address_match_list } ; ]
- [ also-notify { [ ip_addr ; [ip_addr ; [...]]] } ; ]
- [ check-names (warn|fail|ignore) ; ]
- [ dialup true_or_false ; ]
- [ file string ; ]
- [ forward (only|first) ; ]
- [ forwarders { [ ip_addr ; [ ip_addr ; [...]]] } ; ]
- [ ixfr-base string ; ]
- [ ixfr-tmp-file string ; ]
- [ maintain-ixfr-base true_or_false ; ]
- [ masters [port number] { ip_addr ; [ip_addr ; [...]] } ; ]
- [ max-ixfr-log-size number ; ]
- [ max-transfer-idle-in number ; ]
- [ max-transfer-idle-out number ; ]
- [ max-transfer-time-in number ; ]
- [ max-transfer-time-out number ; ]
- [ notify true_or_false ; ]
- [ pubkey number number number string ; ]
- [ transfer-source (ip4_addr | *) ; ]
- [ transfer-source-v6 (ip6_addr | *) ; ]
- [ sig-validity-interval number ; ]}]
-;
-
-6.2.20 zone Statement Definition and Usage
-
-6.2.20.1 Zone Types
-
- master The server has a master copy of the data for the zone and will be
- able to provide authoritative answers for it.
-
- slave A slave zone is a replica of a master zone. The masters list
- specifies one or more IP addresses that the slave contacts to
- update its copy of the zone. If a port is specified, the slave
- then checks to see if the zone is current and zone transfers will
- be done to the port given. If a file is specified, then the
- replica will be written to this file whenever the zone is changed,
- and reloaded from this file on a server restart. Use of a file is
- recommended, since it often speeds server start-up and eliminates
- a needless waste of bandwidth. Note that for large numbers (in the
- tens or hundreds of thousands) of zones per server, it is best to
- use a two level naming scheme for zone file names. For example, a
- slave server for the zone example.com might place the zone
- contents into a file called
- ex/example.com where ex/ is just the first two letters of the zone
- name. (Most operating systems behave very slowly if you put 100K
- files into a single directory.)
-
-stub A stub zone is similar to a slave zone, except that it replicates
- only the NS records of a master zone instead of the entire zone.
- Stub zones are not a standard part of the DNS; they are a
- peculiarity of BIND 4 and BIND 8 that relies heavily on the
- particular way the zone data is structured in those servers.
- BIND 9 attempts to emulate the BIND 4/8 stub zone feature for
- backwards compatibility, but we do not recommend its use in new
- configurations.
- In BIND 4/8, zone transfers of a parent zone included the NS
- records from stub children of that zone. This meant that, in some
- cases, users could get away with configuring child stubs only in
- the master server for the parent zone. BIND 9 never mixes together
- zone data from different zones in this way. Therefore, if a BIND 9
- master serving a parent zone has child stub zones configured, all
- the slave servers for the parent zone also need to have the same
- child stub zones configured..
-
- forward A "forward zone" is a way to configure forwarding on a per-domain
- basis. A zone statement of type forward can contain a forward
- and/or forwarders statement, which will apply to queries within
- the domain given by the zone name. If no forwarders statement is
- present or an empty list for forwarders is given, then no
- forwarding will be done for the domain, cancelling the effects of
- any forwarders in the options statement. Thus if you want to use
- this type of zone to change the behavior of the global forward
- option (that is, "forward first to", then "forward only", or vice
- versa, but want to use the same servers as set globally) you need
- to respecify the global forwarders. Domain-specific forwarding is
- not yet implemented in BIND 9.
-
- hint The initial set of root nameservers is specified using a "hint
- zone". When the server starts up, it uses the root hints to find a
- root nameserver and get the most recent list of root nameservers.
- If no hint zone is specified for class IN, the server users a
- compiled-in default set of root servers hints. Classes other than
- IN have no built-in defaults hints.
-
-6.2.20.2 Class
-
-The zone's name may optionally be followed by a class. If a class is not
-specified, class IN (for Internet), is assumed. This is correct for the
-vast majority of cases.
-
-The hesiod class is named for an information service from MIT's Project
-Athena. It is used to share information about various systems databases,
-such as users, groups, printers and so on. The keyword HS is a synonym for
-hesiod.
-
-Another MIT development is CHAOSnet, a LAN protocol created in the
-mid-1970s. Zone data for it can be specified with the CHAOS class.
-
-6.2.20.3 Zone Options
-
- allow-query See the description of allow-query under Access
- Control.
-
- allow-transfer See the description of allow-transfer under Access
- Control.
-
- allow-update Specifies which hosts are allowed to submit Dynamic DNS
- updates for master zones. The default is to deny updates
- from all hosts.
-
- update-policy Specifies a "Simple Secure Update" policy. See
- description in Dynamic Update Policies.
-
- allow-update-forwarding Specifies which hosts are allowed to submit
- Dynamic DNS updates to slave zones to be forwarded
- to the master. The default is to deny update
- forwarding from all hosts. Update forwarding is
- not yet implemented.
-
- also-notify Only meaningful if notify is active for this zone. The
- set of machines that will receive a DNS
- NOTIFY message for this zone is made up of
- all the listed nameservers (other than the
- primary master) for the zone plus any IP
- addresses specified with also-notify.
- also-notify is not meaningful for stub
- zones. The default is the empty list.
-
- check-names See Name Checking.
- Not yet implemented in BIND 9.
-
- dialup See the description of dialup under Boolean
- Options.
- Not yet implemented in BIND 9.
-
- forward Only meaningful if the zone has a forwarders list.
- The only value causes the lookup to fail after
- trying the forwarders and getting no answer, while
- first would allow a normal lookup to be tried.
- Not yet implemented in BIND 9.
-
- forwarders Used to override the list of global forwarders. If
- it is not specified in a zone of type forward, no
- forwarding is done for the zone; the global
- options are not used.
- Not yet implemented in BIND 9.
-
- ixfr-base Was used in BIND 8 to specify the name of the
- transaction log (journal) file for dynamic update
- and IXFR. BIND 9 ignores the option and constructs
- the name of the journal file by appending ".jnl"
- to the name of the zone file.
-
- max-transfer-time-in See the description of
- max-transfer-time-in under Zone Transfers.
-
- max-transfer-idle-in See the description of
- max-transfer-idle-in under Zone Transfers.
-
- max-transfer-time-out See the description of
- max-transfer-time-out under Zone Transfers.
-
- max-transfer-idle-out See the description of
- max-transfer-idle-out under Zone Transfers.
-
- notify See the description of notify under Boolean
- Options.
-
- pubkey In BIND 8, this option was intended for specifying
- a public zone key for verification of signatures
- in DNSSEC signed zones when they are loaded from
- disk. BIND 9 does not verify signatures on loading
- and ignores the option.
-
- sig-validity-interval See the description of sig-validity-interval in
- Tuning.
-
- transfer-source Determines which local address will be bound
- to the IPv4 TCP connection used to fetch this
- zone. If not set, it defaults to a system
- controlled value which will
- usually be the address of the interface
- "closest to" the remote end. If the remote
- end user is an allow-transfer option for
- this zone, the address, supplied by the
- transfer-source option, needs to be specified
- in that allow-transfer option.
-
- transfer-source-v6 Similar to transfer-source, but for zone transfers
- performed using IPv6.
-
-6.2.20.4 Dynamic Update Policies
-
-BIND 9 supports two alternative methods of granting clients the right to
-perform dynamic updates to a zone, configured by the allow-update and
-update-policy option, respectively.
-
-The allow-update clause works the same way as in previous versions of BIND.
-It grants given clients the permission to update any record of any name in
-the zone.
-
-The update-policy clause is new in BIND 9 and allows more fine-grained
-control over what updates are allowed. A set of rules is specified, where
-each rule either grants or denies permissions for one or more names to be
-updated by one or more identities. If the dynamic update request message is
-signed (that is, it includes either a TSIG or SIG(0) record), the identity
-of the signer can be determined.
-
-Rules are specified in the update-policy zone option, and are only
-meaningful for master zones. When the update-policy statement is present, it
-is a configuration error for the allow-update statement to be present. The
-update-policy statement only examines the signer of a message; the source
-address is not relevant.
-
-This is how a rule definition looks:
-
-( grant | deny ) identity nametype name [ types ]
-
-Each rule grants or denies privileges. Once a messages has successfully
-matched a rule, the operation is immediately granted or denied and no
-further rules are examined. A rule is matched when the signer matches the
-identity field, the name matches the name field, and the type is specified
-in the type field.
-
-The identity field specifies a name or a wildcard name. The nametype field
-has 4 values: name, subdomain, wildcard, and self.
-
- name Matches when the updated name is the same as the name in the
- name field.
- subdomain Matches when the updated name is a subdomain of the name in the
- name field.
- wildcard Matches when the updated name is a valid expansion of the
- wildcard name in the name field.
- self Matches when the updated name is the same as the message signer.
- The name field is ignored.
-
-If no types are specified, the rule matches all types except SIG, NS, SOA,
-and NXT. Types may be specified by name, including "ANY" (ANY matches all
-types except NXT, which can never be updated).
-
-6.3 Zone File
-
-6.3.1 Types of Resource Records and When to Use Them
-
-This section, largely borrowed from RFC 1034, describes the concept of a
-Resource Record (RR) and explains when each is used. Since the publication
-of RFC 1034, several new RRs have been identified and implemented in the
-DNS. These are also included.
-
-6.3.1.1 Resource Records
-
-A domain name identifies a node. Each node has a set of resource
-information, which may be empty. The set of resource information associated
-with a particular name is composed of separate RRs. The order of RRs in a
-set is not significant and need not be preserved by nameservers, resolvers,
-or other parts of the DNS. However, sorting of multiple RRs is permitted for
-optimization purposes, for example, to specify that a particular nearby
-server be tried first. See The sortlist Statement and RRset Ordering for
-details.
-
-The components of a Resource Record are
-
- owner namethe domain name where the RR is found.
-
- type an encoded 16 bit value that specifies the type of the resource
- in this resource record. Types refer to abstract resources.
- the time to live of the RR. This field is a 32 bit integer in
- TTL units of seconds, and is primarily used by resolvers when they
- cache RRs. The TTL describes how long a RR can be cached before
- it should be discarded.
-
- class an encoded 16 bit value that identifies a protocol family or
- instance of a protocol.
-
- RDATA the type and sometimes class-dependent data that describes the
- resource.
-
-The following are types of valid RRs (some of these listed, although not
-obsolete, are experimental (x) or historical (h) and no longer in general
-use):
-
- A a host address.
-
- A6 an IPv6 address.
-
- AAAA Obsolete format of IPv6 address
-
- AFSDB(x) location of AFS database servers. Experimental.
-
- CNAME identifies the canonical name of an alias.
-
- DNAME for delegation of reverse addresses. Replaces the domain name
- specified with another name to be looked up. Described in RFC 2672.
-
- HINFO identifies the CPU and OS used by a host.
-
- ISDN (x) representation of ISDN addresses. Experimental.
-
- KEY stores a public key associated with a DNS name.
-
- LOC (x) for storing GPS info. See RFC 1876. Experimental.
-
- MX identifies a mail exchange for the domain. See RFC 974 for details.
-
- NS the authoritative nameserver for the domain.
- used in DNSSEC to securely indicate that RRs with an owner name in a
-
- NXT certain name interval do not exist in a zone and indicate what RR
- types are present for an existing name. See RFC 2535 for details.
-
- PTR a pointer to another part of the domain name space.
-
- RP (x) information on persons responsible for the domain. Experimental.
-
- RT (x) route-through binding for hosts that do not have their own direct
- wide area network addresses. Experimental.
-
- SIG ("signature") contains data authenticated in the secure DNS. See RFC
- 2535 for details.
-
- SOA identifies the start of a zone of authority.
-
- SRV information about well known network services (replaces WKS).
-
- WKS (h) information about which well known network services, such as
- SMTP, that a domain supports. Historical, replaced by newer RR SRV.
-
- X25 (x) representation of X.25 network addresses. Experimental.
-
-The following classes of resource records are currently valid in the DNS:
-
- IN the Internet system.
- For information about other, older classes of RRs, see Classes of Resource
- Records in the Appendix.
-
-RDATA is the type-dependent or class-dependent data that describes the
-resource:
-
- A for the IN class, a 32 bit IP address.
-
- A6 maps a domain name to an IPv6 address, with a provision for
- indirection for leading "prefix" bits.
-
- CNAME a domain name.
- provides alternate naming to an entire subtree of the domain name
-
- DNAME space, rather than to a single node. It causes some suffix of a
- queried name to be substituted with a name from the DNAME record's
- RDATA.
-
- MX a 16 bit preference value (lower is better) followed by a host name
- willing to act as a mail exchange for the owner domain.
-
- NS a fully qualified domain name.
-
- PTR a fully qualified domain name.
-
- SOA several fields.
-
-The owner name is often implicit, rather than forming an integral part of
-the RR. For example, many nameservers internally form tree or hash
-structures for the name space, and chain RRs off nodes. The remaining RR
-parts are the fixed header (type, class, TTL) which is consistent for all
-RRs, and a variable part (RDATA) that fits the needs of the resource being
-described.
-
-The meaning of the TTL field is a time limit on how long an RR can be kept
-in a cache. This limit does not apply to authoritative data in zones; it is
-also timed out, but by the refreshing policies for the zone. The TTL is
-assigned by the administrator for the zone where the data originates. While
-short TTLs can be used to minimize caching, and a zero TTL prohibits
-caching, the realities of Internet performance suggest that these times
-should be on the order of days for the typical host. If a change can be
-anticipated, the TTL can be reduced prior to the change to minimize
-inconsistency during the change, and then increased back to its former value
-following the change.
-
-The data in the RDATA section of RRs is carried as a combination of binary
-strings and domain names. The domain names are frequently used as "pointers"
-to other data in the DNS.
-
-6.3.1.2 Textual expression of RRs
-
-RRs are represented in binary form in the packets of the DNS protocol, and
-are usually represented in highly encoded form when stored in a nameserver
-or resolver. In the examples provided in RFC 1034, a style similar to that
-used in master files was employed in order to show the contents of RRs. In
-this format, most RRs are shown on a single line, although continuation
-lines are possible using parentheses.
-
-The start of the line gives the owner of the RR. If a line begins with a
-blank, then the owner is assumed to be the same as that of the previous RR.
-Blank lines are often included for readability.
-
-Following the owner, we list the TTL, type, and class of the RR. Class and
-type use the mnemonics defined above, and TTL is an integer before the type
-field. In order to avoid ambiguity in parsing, type and class mnemonics are
-disjoint, TTLs are integers, and the type mnemonic is always last. The IN
-class and TTL values are often omitted from examples in the interests of
-clarity.
-
-The resource data or RDATA section of the RR are given using knowledge of
-the typical representation for the data.
-
-For example, we might show the RRs carried in a message as:
-
- ISI.EDU. MX 10 VENERA.ISI.EDU.
- MX 10 VAXA.ISI.EDU
- VENERA.ISI.EDU A 128.9.0.32
- A 10.1.0.52
- VAXA.ISI.EDU A 10.2.0.27
- A 128.9.0.33
-
-The MX RRs have an RDATA section which consists of a 16 bit number followed
-by a domain name. The address RRs use a standard IP address format to
-contain a 32 bit internet address.
-
-This example shows six RRs, with two RRs at each of three domain names.
-
-Similarly we might see:
-
- XX.LCS.MIT.EDU. IN A 10.0.0.44
- CH A MIT.EDU. 2420
-
-This example shows two addresses for XX.LCS.MIT.EDU, each of a different
-class.
-
-6.3.2 Discussion of MX Records
-
-As described above, domain servers store information as a series of resource
-records, each of which contains a particular piece of information about a
-given domain name (which is usually, but not always, a host). The simplest
-way to think of a RR is as a typed pair of datum, a domain name matched with
-relevant data, and stored with some additional type information to help
-systems determine when the RR is relevant.
-
-MX records are used to control delivery of email. The data specified in the
-record is a priority and a domain name. The priority controls the order in
-which email delivery is attempted, with the lowest number first. If two
-priorities are the same, a server is chosen randomly. If no servers at a
-given priority are responding, the mail transport agent will fall back to
-the next largest priority. Priority numbers do not have any absolute meaning
-- they are relevant only respective to other MX records for that domain
-name. The domain name given is the machine to which the mail will be
-delivered. It must have an associated A record--a CNAME is not sufficient.
-
-For a given domain, if there is both a CNAME record and an MX record, the MX
-record is in error, and will be ignored. Instead, the mail will be delivered
-to the server specified in the MX record pointed to by the CNAME.
-
-For example:
-
- example.com. IN MX 10 mail.example.com.
- IN MX 10 mail2.example.com.
- IN MX 20 mail.backup.org.
- mail.example.com. IN A 10.0.0.1
- mail2.example.com. IN A 10.0.0.2
-
-Mail delivery will be attempted to mail.example.com and mail2.example.com
-(in any order), and if neither of those succeed, delivery to mail.backup.org
-will be attempted.
-
-6.3.3 Setting TTLs
-
-The time to live of the RR field is a 32 bit integer represented in units of
-seconds, and is primarily used by resolvers when they cache RRs. The TTL
-describes how long a RR can be cached before it should be discarded. The
-following three types of TTL are currently used in a zone file.
-
-
- SOA The last field in the SOA is the negative caching TTL. This
- controls how long other servers will cache no-such-domain
- (NXDOMAIN) responses from you.
-
- The maximum time for negative caching is 3 hours (3h).
-
- $TTL The $TTL directive at the top of the zone file (before the SOA)
- gives a default TTL for every RR without a specific TTL set.
-
- RR TTLs Each RR can have a TTL as the second field in the RR, which will
- control how long other servers can cache the it.
-
-All of these TTLs default to units of seconds, though units can be
-explicitly specified, for example, 1h30m.
-
-6.3.4 Inverse Mapping in IPv4
-
-Reverse name resolution (that is, translation from IP address to name) is
-achieved by means of the in-addr.arpa domain and PTR records. Entries in the
-in-addr.arpa domain are made in least-to-most significant order, read left
-to right. This is the opposite order to the way IP addresses are usually
-written. Thus, a machine with an IP address of 10.1.2.3 would have a
-corresponding in-addr.arpa name of
-3.2.1.10.in-addr.arpa. This name should have a PTR resource record whose
-data field is the name of the machine or, optionally, multiple PTR records
-if the machine has more than one name. For example, in the example.com
-domain:
-
-
-
-$ORIGIN 2.1.10.in-addr.arpa
-3 IN PTR foo.example.com.
-
-(Note: The $ORIGIN lines in the examples are for providing context to the
-examples only--they do not necessarily appear in the actual usage. They are
-only used here to indicate that the example is relative to the listed
-origin.)
-
-6.3.5 Other Zone File Directives
-
-The Master File Format was initially defined in RFC 1035 and has
-subsequently been extended. While the Master File Format itself is class
-independent all records in a Master File must be of the same class.
-
-Master File Directives include $ORIGIN, $INCLUDE, and $TTL.
-
-6.3.5.1 The $ORIGIN Directive
-
-Syntax: $ORIGIN < domain-name > [ < comment > ]
-
-$ORIGIN sets the domain name that will be appended to any unqualified
-records. When a zone is first read in there is an implicit $ORIGIN
-<zone-name>. The current $ORIGIN is appended to the domain specified
-in the $ORIGIN argument if it is not absolute.
-
-$ORIGIN example.com
-WWW CNAME MAIN-SERVER
-
-is equivalent to
-
-WWW.EXAMPLE.COM CNAME MAIN-SERVER.EXAMPLE.COM.
-
-6.3.5.2 The $INCLUDE Directive
-
-Syntax: $INCLUDE < filename > [ < origin > ] [ < comment > ]
-
-Read and process the file filename as if it were included into the file at
-this point. If origin is specified the file is processed with $ORIGIN set to
-that value, otherwise the current $ORIGIN is used.
-
-NOTE: The behavior when origin is specified differs from that described in
-RFC 1035. The origin and current domain revert to the values they were prior
-to the $INCLUDE once the file has been read.
-
-6.3.5.3 The $TTL Directive
-
-Syntax: $TTL < default-ttl > [ < comment > ]
-
-Set the default Time To Live (TTL) for subsequent records with undefined
-TTLs. Valid TTLs are of the range 0-2147483647 seconds.
-
-$TTL is defined in RFC 2308.
-
-6.3.6 BIND Master File Extension: the $GENERATE Directive
-
-$GENERATE
-
-Syntax: $GENERATE < range > < lhs > < type > < rhs > [ < comment > ]
-
-$GENERATE is used to create a series of resource records that only differ
-from each other by an iterator. $GENERATE can be used to easily generate the
-sets of records required to support sub /24 reverse delegations described in
-RFC 2317: Classless IN-ADDR.ARPA delegation.
-
-$ORIGIN 0.0.192.IN-ADDR.ARPA.
-$GENERATE 1-2 0 NS SERVER$.EXAMPLE.
-$GENERATE 1-127 $ CNAME $.0
-
-is equivalent to
-
-0.0.0.192.IN-ADDR.ARPA NS SERVER1.EXAMPLE.
-0.0.0.192.IN-ADDR.ARPA NS SERVER2.EXAMPLE.
-1.0.0.192.IN-ADDR.ARPA CNAME 1.0.0.0.192.IN-ADDR.ARPA
-2.0.0.192.IN-ADDR.ARPA CNAME 2.0.0.0.192.IN-ADDR.ARPA
-...
-127.0.0.192.IN-ADDR.ARPA CNAME 127.0.0.0.192.IN-ADDR.ARPA
-.
-
-
-
- range This can be one of two forms: start-stop or start-stop/step. If the
- first form is used then step is set to 1. All of start, stop and
- step must be positive.
-
- lhs lhs describes the owner name of the resource records to be created.
- Any single $ symbols within the lhs side are replaced by the
- iterator value. To get a $ in the output use a double $, e.g. $$.
- If the lhs is not absolute, the current $ORIGIN is appended to the
- name.
-
- type At present the only supported types are PTR, CNAME and NS.
-
- rhs rhs is a domain name. It is processed similarly to lhs.
-
-The $GENERATE directive is a BIND extension and not part of the standard
-zone file format. It is not yet implemented in BIND 9.
-
-
- ------------------------------------------------------------------------
-
- Section 7. BIND 9 Security Considerations
-
- 7.1 Access Control Lists
-
-Access Control Lists (ACLs), are address match lists that you can set up and
-nickname for future use in allow-query, allow-recursion, blackhole,
-allow-transfer, etc.
-
-Using ACLs allows you to have finer control over who can access your
-nameserver, without cluttering up your config files with huge lists of IP
-addresses.
-
-It is a good idea to use ACLs, and to control access to your server.
-Limiting access to your server by outside parties can help prevent spoofing
-and DoS attacks against your server.
-
-Here is an example of how to properly apply ACLs:
-
-
-// Set up an ACL named "bogusnets" that will block RFC1918 space,
-// which is commonly used in spoofing attacks.
-
-acl bogusnets { 0.0.0.0/8; 1.0.0.0/8; 2.0.0.0/8; 192.0.2.0/24; 224.0.0.0/3;
-10.0.0.0/8; 172.16.0.0/12; 192.168.0.0/16; };
-
-// Set up an ACL called our-nets. Replace this with the real IP numbers.
-
-acl our-nets { x.x.x.x/24; x.x.x.x/21; };
-
-options {
- ...
- ...
- allow-query { our-nets; };
- allow-recursion { our-nets; };
- ...
- blackhole { bogusnets; };
- ...
-};
-zone "example.com" {
- type master;
- file "m/example.com";
- allow-query { any; };
-};
-
-This allows recursive queries of the server from the outside unless
-recursion has been previously disabled.
-
-For more information on how to use ACLs to protect your server, see the
-AUSCERT advisory at
-ftp://ftp.auscert.org.au/pub/auscert/advisory/AL-1999.004.dns_dos
-
- 7.2 chroot and setuid (for UNIX servers)
-
-On UNIX servers, it is possible to run BIND in a chrooted environment (
-chroot() ) by specifying the "-t" option. This can help improve system
-security by placing BIND in a "sandbox," which will limit the damage done if
-a server is compromised.
-
-Another useful feature in the UNIX version of BIND is the ability to run the
-daemon as a nonprivileged user (-u user). We suggest running as a
-nonprivileged user when using the chroot feature.
-
-Here is an example command line to load BIND in a chroot() sandbox,
-/var/named, and to run named setuid to user 202:
-
-/usr/local/bin/named -u 202 -t /var/named
-
- 7.2.1 The chroot Environment
-
-In order for a chroot() environment to work properly in a particular
-directory (for example, /var/named), you will need to set up an environment
-that includes everything BIND needs to run. From BIND's point of view,
-/var/named is the root of the filesystem. You will need /dev/null, and any
-library directories and files that BIND needs to run on your system. Please
-consult your operating system's instructions if you need help figuring out
-which library files you need to copy over to the chroot() sandbox.
-
-If you are running an operating system that supports static binaries, you
-can also compile BIND statically and avoid the need to copy system libraries
-over to your chroot() sandbox.
-
- 7.2.2 Using the setuid Function
-
-Prior to running the named daemon, use the touch utility (to change file
-access and modification times) or the chown utility (to set the user id
-and/or group id) on files to which you want BIND to write.
-
- 7.3 Dynamic Updates
-
-Access to the dynamic update facility should be strictly limited. In earlier
-versions of BIND the only way to do this was based on the IP address of the
-host requesting the update. BIND 9 also supports authenticating
-updates cryptographically by means of transaction signatures (TSIG). The use
-of TSIG is strongly recommended.
-
-Some sites choose to keep all dynamically updated DNS data in a subdomain
-and delegate that subdomain to a separate zone. This way, the top-level zone
-containing critical data such as the IP addresses of public web and mail
-servers need not allow dynamic update at all.
-
- ------------------------------------------------------------------------
-
- Section 8. Troubleshooting
-
- 8.1 Common Problems
-
- 8.1.1 It's not working; how can I figure out what's wrong?
-
-The best solution to solving installation and configuration issues is to
-take preventative measures by setting up logging files beforehand. (See the
-sample configurations) in Section 3. The log files provide a source of hints
-and information that can be used to figure out what went wrong and how to
-fix the problem.
-
- 8.2 Incrementing and Changing the Serial Number
-
-Zone serial numbers are just numbers--they aren't date related. A lot of
-people set them to a number that represents a date, usually of the form
-YYYYMMDDRR. A number of people have been testing these numbers for Y2K
-compliance and have set the number to the year 2000 to see if it will work.
-They then try to restore the old serial number. This will cause problems
-because serial numbers are used to indicate that a zone has been updated. If
-the serial number on the slave server is lower than the serial number on the
-master, the slave server will attempt to update its copy of the zone.
-
-Setting the serial number to a lower number on the master server than the
-slave server means that the slave will not perform updates to its copy of
-the zone.
-
-The solution to this is to add 2147483647 (2^31-1) to the number, reload the
-zone and make sure all slaves have updated to the new zone serial number,
-then reset the number to what you want it to be, and reload the zone again.
-
- 8.3 Where Can I Get Help?
-
-The Internet Software Consortium (ISC) offers a wide range of support and
-service agreements for BIND and DHCP servers. Four levels of premium support
-are available and each level includes support for all ISC programs,
-significant discounts on products and training, and a recognized priority on
-bug fixes and non-funded feature requests. In addition, ISC offers a
-standard support agreement package which includes services ranging from bug
-fix announcements to remote support. It also includes training in BIND and
-DHCP.
-
-To discuss arrangements for support, contact info@isc.org or visit the ISC
-web page at
-http://www.isc.org/services/support/ to read more.
-
- ------------------------------------------------------------------------
-
-APPENDICES
-
-Acknowledgements
-
-A Brief History of the DNS and BIND
-
-Although the "official" beginning of the Domain Name System occurred in 1984
-with the publication of RFC 920, the core of the new system was described in
-1983 in RFCs 882 and 883. From 1984 to 1987, the ARPAnet (the precursor to
-today's Internet) became a testbed of experimentation for developing the new
-naming/addressing scheme in an rapidly expanding, operational network
-environment. New RFCs were written and published in 1987 that modified the
-original documents to incorporate improvements based on the working model.
-RFC 1034, "Domain Names-Concepts and Facilities," and RFC 1035, "Domain
-Names-Implementation and Specification" were published and became the
-standards upon which all DNS implementations are built.
-
-The first working domain name server, called "Jeeves," was written in
-1983-84 by Paul Mockapetris for operation on DEC Tops-20 machines located at
-the University of Southern California's Information Sciences Institute
-(USC-ISI) and SRI International's Network Information Center (SRI-NIC). A
-DNS server for Unix machines, the Berkeley Internet Name Domain (BIND)
-package, was written soon after by a group of graduate students at the
-University of California at Berkeley under a grant from the US Defense
-Advanced Research Projects Administration (DARPA). Versions of BIND through
-4.8.3 were maintained by the Computer Systems Research Group (CSRG) at UC
-Berkeley. Douglas Terry, Mark Painter, David Riggle and Songnian Zhou made
-up the initial BIND project team. After that, additional work on the
-software package was done by Ralph Campbell. Kevin Dunlap, a Digital
-Equipment Corporation employee on loan to the CSRG, worked on BIND for 2
-years, from 1985 to 1987. Many other people also contributed to BIND
-development during that time: Doug Kingston, Craig Partridge, Smoot
-Carl-Mitchell, Mike Muuss, Jim Bloom and Mike Schwartz. BIND maintenance was
-subsequently handled by Mike Karels and O. Kure.
-
-BIND versions 4.9 and 4.9.1 were released by Digital Equipment Corporation
-(now Compaq Computer Corporation). Paul Vixie, then a DEC employee, became
-BIND's primary caretaker. Paul was assisted by Phil Almquist, Robert Elz,
-Alan Barrett, Paul Albitz, Bryan Beecher, Andrew Partan, Andy Cherenson, Tom
-Limoncelli, Berthold Paffrath, Fuat Baran, Anant Kumar, Art Harkin, Win
-Treese, Don Lewis, Christophe Wolfhugel, and others.
-
-BIND Version 4.9.2 was sponsored by Vixie Enterprises. Paul Vixie became
-BIND's principal architect/programmer.
-
-BIND versions from 4.9.3 onward have been developed and maintained by the
-Internet Software Consortium with support being provided by ISC's sponsors.
-As co-architects/programmers, Bob Halley and Paul Vixie released the first
-production-ready version of BIND version 8 in May 1997.
-
-BIND development work is made possible today by the sponsorship of several
-corporations, and by the tireless work efforts of numerous individuals.
-
-Historical DNS Information
-
-Classes of Resource Records
-
-HS = hesiod
-
-The hesiod class is an information service developed by MIT's Project
-Athena. It is used to share information about various systems databases,
-such as users, groups, printers and so on. The keyword hs is a synonym for
-hesiod.
-
-CH = chaos
-
-The chaos class is used to specify zone data for the MIT-developed CHAOSnet,
-a LAN protocol created in the mid-1970s.
-
-General DNS Reference Information
-
-IPv6 addresses (A6)
-
-IPv6 addresses are 128-bit identifiers for interfaces and sets of interfaces
-which were introduced in the DNS to facilitate scalable Internet routing.
-There are three types of addresses: Unicast, an identifier for a single
-interface; Anycast, an identifier for a set of interfaces; and Multicast,
-an identifier for a set of interfaces. Here we describe the global Unicast
-address scheme. For more information, see RFC 2374.
-
-The aggregatable global Unicast address format is as follows:
-
-
-
- 3 13 8 24 16 64 bits
- FP TLA ID RES NLA ID SLA ID Interface ID
- <-- Public Topology -->
- <-Site Topology->
-
- <- Interface Identifier ->
-
-Where
-
- FP = Format Prefix (001)
- TLA ID = Top-Level Aggregation Identifier
- RES = Reserved for future use
- NLA ID = Next-Level Aggregation Identifier
- SLA ID = Site-Level Aggregation Identifier
- INTERFACE ID = Interface Identifier
-
-The Public Topology is provided by the upstream provider or ISP, and
-(roughly) corresponds to the IPv4 network section of the address range. The
-Site Topology is where you can subnet this space, much the same as
-subnetting an IPv4 /16 network into /24 subnets. The Interface
-Identifier is the address of an individual interface on a given network.
-(With IPv6, addresses belong to interfaces rather than machines.)
-
-The subnetting capability of IPv6 is much more flexible than that of IPv4:
-subnetting can now be carried out on bit boundaries, in much the same way as
-Classless InterDomain Routing (CIDR).
-
-The internal structure of the Public Topology for an A6 global unicast
-address consists of:
-
-
-
- 3 13 8 24
- FP TLA ID RES NLA ID
-
-A 3 bit FP (Format Prefix) of 001 indicates this is a global Unicast
-address. FP lengths for other types of addresses may vary.
-
-13 TLA (Top Level Aggregator) bits give the prefix of your top-level IP
-backbone carrier.
-
-8 Reserved bits
-
-24 bits for Next Level Aggregators. This allows organizations with a TLA to
-hand out portions of their IP space to client organizations, so that the
-client can then split up the network further by filling in more NLA bits,
-and hand out IPv6 prefixes to their clients, and so forth.
-
-There is no particular structure for the Site topology section.
-Organizations can allocate these bits in any way they desire.
-
-The Interface Identifier must be unique on that network. On ethernet
-networks, one way to ensure this is to set the address to the first three
-bytes of the hardware address, "FFFE", then the last three bytes of the
-hardware address. The lowest significant bit of the first byte should then
-be complemented. Addresses are written as 32-bit blocks separated with a
-colon, and leading zeros of a block may be omitted, for example:
-
-3ffe:8050:201:9:a00:20ff:fe81:2b32
-
-IPv6 address specifications are likely to contain long strings of zeros, so
-the architects have included a shorthand for specifying them. The double
-colon ('::') indicates the longest possible string of zeros that can fit,
-and can be used only once in an address.
-
-Bibliography (and Suggested Reading)
-
-Request for Comments (RFCs)
-
-Specification documents for the Internet protocol suite, including the DNS,
-are published as part of the Request for Comments (RFCs) series of technical
-notes. The standards themselves are defined by the Internet Engineering Task
-Force (IETF) and the Internet Engineering Steering Group (IESG). RFCs can be
-obtained online via FTP at
-ftp://www.isi.edu/in-notes/RFCxxx.txt (where xxx is the number of the RFC).
-RFCs are also available via the Web at http://www.ietf.org/rfc/.
-
-Standards
-
-RFC974. Partridge, C. Mail Routing and the Domain System. January 1986.
-
-RFC1034. Mockapetris, P.V. Domain Names - Concepts and Facilities. P.V.
-November 1987.
-
-RFC1035. Mockapetris, P. V. Domain Names - Implementation and Specification
-. November 1987.
-
-Proposed Standards
-
-RFC2181. Elz, R., R. Bush. Clarifications to the DNS Specification. July
-1997.
-
-RFC2308. Andrews, M. Negative Caching of DNS Queries. March 1998.
-
-RFC1995. Ohta, M. Incremental Zone Transfer in DNS. August 1996.
-
-RFC1996. Vixie, P. A Mechanism for Prompt Notification of Zone Changes.
-August 1996.
-
-RFC2136. Vixie, P., S. Thomson, Y. Rekhter, J. Bound. Dynamic Updates in the
-Domain Name System. April 1997.
-
-RFC2845. Vixie, P., O. Gudmundsson, D. Eastlake 3rd, B. Wellington. Secret
-Key Transaction Authentication for DNS (TSIG). May 2000.
-
-Proposed Standards Still Under Development
-
-Note: the following list of RFCs are undergoing major revision by the IETF.
-
-RFC1886. Thomson, S., C. Huitema. DNS Extensions to support IP version 6.
-S. December 1995.
-
-RFC2065. Eastlake, 3rd, D., C. Kaufman. Domain Name System Security
-Extensions. January 1997.
-
-RFC2137. Eastlake, 3rd, D. Secure Domain Name System Dynamic Update. April
-1997.
-
-Other Important RFCs About DNS Implementation
-
-RFC1535. Gavron, E. A Security Problem and Proposed Correction With Widely
-Deployed DNS Software. October 1993.
-
-RFC1536. Kumar, A., J. Postel, C. Neuman, P. Danzig, S. Miller. Common DNS
-Implementation Errors and Suggested Fixes. October 1993.
-
-RFC1982. Elz, R., R. Bush. Serial Number Arithmetic. August 1996.
-
-Resource Record Types
-
-RFC1183. Everhart, C.F., L. A. Mamakos, R. Ullmann, P. Mockapetris. New DNS
-RR Definitions. October 1990.
-
-RFC1706. Manning, B., R. Colella. DNS NSAP Resource Records. October 1994.
-
-RFC2168. Daniel, R., M. Mealling. Resolution of Uniform Resource Identifiers
-using the Domain Name System. June 1997.
-
-RFC1876. Davis, C., P. Vixie, T. Goodwin, I. Dickinson. A Means for
-Expressing Location Information in the Domain Name System. January 1996.
-
-RFC2052. Gulbrandsen, A., P. Vixie. A DNS RR for Specifying the Location of
-Services. October 1996.
-
-RFC2163. Allocchio, A. U sing the Internet DNS to Distribute MIXER
-Conformant Global Address Mapping. January 1998.
-
-RFC2230. Atkinson, R. Key Exchange Delegation Record for the DNS. October
-1997.
-
-DNS and the Internet
-
-RFC1101. Mockapetris, P. V. DNS Encoding of Network Names and Other Types.
-April 1989.
-
-RFC1123. Braden, R. Requirements for Internet Hosts - Application and
-Support. October 1989.
-
-RFC1591. Postel, J. D omain Name System Structure and Delegation. March
-1994.
-
-RFC2317. Eidnes, H., G. de Groot, P. Vixie. Classless IN-ADDR.ARPA
-Delegation. March 1998.
-
-DNS Operations
-
-RFC1537. Beertema, P. Common DNS Data File Configuration Errors. October
-1993.
-
-RFC1912. Barr, D. Common DNS Operational and Configuration Errors. February
-1996.
-
-RFC1912. Barr, D. Common DNS Operational and Configuration Errors. February
-1996.
-
-RFC2010. Manning, B., P. Vixie. Operational Criteria for Root Name Servers.
-October 1996.
-
-RFC2219. Hamilton, M., R. Wright. Use of DNS Aliases for Network Services.
-October 1997.
-
-Other DNS-related RFCs
-
-Note: the following list of RFCs, although DNS-related, are not concerned
-with implementing software.
-
-RFC1464. Rosenbaum, R. Using the Domain Name System To Store Arbitrary
-String Attributes. May 1993.
-
-RFC1713. Romao, A. Tools for DNS Debugging. November 1994.
-
-RFC1794. Brisco, T. DNS Support for Load Balancing. April 1995.
-
-RFC2240. Vaughan, O. A Legal Basis for Domain Name Allocation.
-November1997.
-
-RFC2345. Klensin, J., T. Wolf, G. Oglesby. Domain Names and Company Name
-Retrieval. May 1998.
-
-RFC2352. Vaughan, O. A Convention For Using Legal Names as Domain Names.
-May 1998.
-
-Obsolete and Unimplemented Experimental RRs
-
-RFC1712. Farrell, C., M. Schulze, S. Pleitner, D. Baldoni. DNS Encoding of
-Geographical Location. November 1994.
-
-Internet Drafts
-
-Internet Drafts (IDs) are rough-draft working documents of the Internet
-Engineering Task Force. They are, in essence, RFCs in the preliminary stages
-of development. Implementors are cautioned not to regard IDs as archival,
-and they should not be quoted or cited in any formal documents unless
-accompanied by the disclaimer that they are "works in progress." IDs have a
-lifespan of six months after which they are deleted unless updated by their
-authors.
-
-Other BIND Documents
-
-Albitz, Paul and Cricket Liu. 1998. DNS and BIND. Sebastopol, CA: O'Reilly
-and Associates.
-
- ------------------------------------------------------------------------
-