2001-01-09 22:01:04 +00:00
|
|
|
Copyright (C) 2000, 2001 Internet Software Consortium.
|
2000-08-09 04:37:43 +00:00
|
|
|
See COPYRIGHT in the source root or http://isc.org/copyright.html for terms.
|
2000-06-30 22:44:08 +00:00
|
|
|
|
2000-07-27 23:48:49 +00:00
|
|
|
BIND 8 to BIND 9 Migration Notes
|
2000-06-30 22:44:08 +00:00
|
|
|
|
|
|
|
BIND 9 is designed to be mostly upwards compatible with BIND 8, but
|
|
|
|
there is still a number of caveats you should be aware of when
|
|
|
|
upgrading an existing BIND 8 installation to use BIND 9.
|
|
|
|
|
|
|
|
|
2000-07-12 05:06:33 +00:00
|
|
|
1. Configuration File Compatibility
|
2000-06-30 22:44:08 +00:00
|
|
|
|
2000-07-12 05:06:33 +00:00
|
|
|
1.1. Unimplemented Options and Changed Defaults
|
2000-06-30 22:44:08 +00:00
|
|
|
|
2001-03-11 18:39:19 +00:00
|
|
|
BIND 9.1 supports most, but not all of the named.conf options of BIND 8.
|
|
|
|
For a complete list of implemented options, see doc/misc/options.
|
2000-06-30 22:44:08 +00:00
|
|
|
|
2000-07-12 05:06:33 +00:00
|
|
|
If your named.conf file uses an unimplemented option, named will log a
|
|
|
|
warning message. A message is also logged about each option whose
|
|
|
|
default has changed unless the option is set explicitly in named.conf.
|
|
|
|
|
2001-03-19 18:07:32 +00:00
|
|
|
The default of the "transfer-format" option has changed from
|
|
|
|
"one-answer" to "many-answers". If you have slave servers that do not
|
|
|
|
understand the many-answers zone transfer format (e.g., BIND 4.9.5 or
|
|
|
|
older) you need to explicitly specify "transfer-format one-answer;" in
|
|
|
|
either the options block or a server statement.
|
|
|
|
|
2000-08-29 17:57:29 +00:00
|
|
|
1.2. Handling of Configuration File Errors
|
2000-07-12 05:06:33 +00:00
|
|
|
|
2000-08-29 17:57:29 +00:00
|
|
|
In BIND 9, named refuses to start if it detects an error in
|
|
|
|
named.conf. Earlier versions would start despite errors, causing the
|
|
|
|
server to run with a partial configuration. Errors detected during
|
|
|
|
subsequent reloads do not cause the server to exit.
|
|
|
|
|
2001-01-10 18:20:10 +00:00
|
|
|
Errors in master files never cause the server to exit.
|
|
|
|
|
2000-08-29 17:57:29 +00:00
|
|
|
1.3. Logging
|
2000-07-14 17:11:07 +00:00
|
|
|
|
|
|
|
The set of logging categories in BIND 9 is different from that
|
|
|
|
in BIND 8. If you have customized your logging on a per-category
|
|
|
|
basis, you need to modify your logging statement to use the
|
|
|
|
new categories.
|
|
|
|
|
|
|
|
Another difference is that the "logging" statement only takes effect
|
|
|
|
after the entire named.conf file has been read. This means that when
|
|
|
|
the server starts up, any messages about errors in the configuration
|
|
|
|
file are always logged to the default destination (syslog) when the
|
|
|
|
server first starts up, regardless of the contents of the "logging"
|
|
|
|
statement. In BIND 8, the new logging configuration took effect
|
|
|
|
immediately after the "logging" statement was read.
|
|
|
|
|
2001-03-05 20:58:57 +00:00
|
|
|
1.4. Notify messages and Refesh queries
|
2000-10-31 05:34:18 +00:00
|
|
|
|
|
|
|
The source address and port for these is now controlled by
|
2000-11-30 23:24:01 +00:00
|
|
|
"notify-source" and "transfer-source", respectively, rather that
|
|
|
|
query-source as in BIND 8.
|
2000-08-22 00:58:12 +00:00
|
|
|
|
2001-03-05 20:58:57 +00:00
|
|
|
1.5. Multiple Classes.
|
2000-12-19 00:36:05 +00:00
|
|
|
|
|
|
|
Multiple classes have to be put into explicit views for each class.
|
|
|
|
|
2000-07-12 05:06:33 +00:00
|
|
|
2. Zone File Compatibility
|
|
|
|
|
|
|
|
2.1. Strict RFC1035 Interpretation of TTLs in Zone Files
|
2000-06-30 22:44:08 +00:00
|
|
|
|
|
|
|
BIND 8 allowed you to omit all TTLs from a zone file, and used the
|
|
|
|
value of the SOA MINTTL field as a default for missing TTL values.
|
|
|
|
|
|
|
|
BIND 9 enforces strict compliance with the RFC1035 and RFC2308 TTL
|
|
|
|
rules. The default TTL is the value specified with the $TTL
|
|
|
|
directive, or the previous explicit TTL if there is no $TTL directive.
|
|
|
|
If there is no $TTL directive and the first RR in the file does not
|
|
|
|
have an explicit TTL field, the error message "no TTL specified" is
|
|
|
|
logged and loading the zone file fails.
|
|
|
|
|
|
|
|
To avoid problems, use a $TTL directive in each zone file.
|
|
|
|
|
2000-07-12 05:06:33 +00:00
|
|
|
2.2. Periods in SOA Serial Numbers Deprecated
|
|
|
|
|
|
|
|
Some versions of BIND allow SOA serial numbers with an embedded
|
|
|
|
period, like "3.002", and convert them into integers in a rather
|
|
|
|
unintuitive way. This feature is not supported by BIND 9; serial
|
|
|
|
numbers must be integers.
|
|
|
|
|
|
|
|
2.3. Handling of Unbalanced Quotes
|
|
|
|
|
|
|
|
TXT records with unbalanced quotes, like 'host TXT "foo', were not
|
|
|
|
treated as errors in some versions of BIND. If your zone files
|
|
|
|
contain such records, you will get potentially confusing error
|
|
|
|
messages like "unexpected end of file" because BIND 9 will interpret
|
|
|
|
everything up to the next quote character as a literal string.
|
|
|
|
|
2000-08-31 01:38:20 +00:00
|
|
|
2.4. Handling of Line Breaks
|
|
|
|
|
|
|
|
Some versions of BIND accept RRs containing line breaks that are not
|
|
|
|
properly quoted with parentheses, like the following SOA:
|
|
|
|
|
|
|
|
@ IN SOA ns.example. hostmaster.example.
|
|
|
|
( 1 3600 1800 1814400 3600 )
|
|
|
|
|
|
|
|
This is not legal master file syntax and will be treated as an error
|
|
|
|
by BIND 9. The fix is to move the opening parenthesis to the first
|
|
|
|
line.
|
|
|
|
|
2000-09-05 16:51:01 +00:00
|
|
|
2.5. Unimplemented BIND 8 Extensions
|
|
|
|
|
2000-11-30 23:24:01 +00:00
|
|
|
$GENERATE: The "$$" construct for getting a literal $ into a domain
|
|
|
|
name is deprecated. Use \$ instead.
|
2000-07-12 05:06:33 +00:00
|
|
|
|
|
|
|
3. Interoperability Impact of New Protocol Features
|
2000-06-30 22:44:08 +00:00
|
|
|
|
2001-04-25 17:35:10 +00:00
|
|
|
3.1. EDNS0
|
|
|
|
|
2000-06-30 22:44:08 +00:00
|
|
|
BIND 9 uses EDNS0 (RFC2671) to advertise its receive buffer size. It
|
2000-11-30 23:24:01 +00:00
|
|
|
also sets an EDNS flag bit in queries to indicate that it wishes to
|
|
|
|
receive DNSSEC responses; this flag bit usage is not yet standardized,
|
|
|
|
but we hope it will be.
|
2000-06-30 22:44:08 +00:00
|
|
|
|
2000-11-30 23:24:01 +00:00
|
|
|
Most older servers that do not support EDNS0, including prior versions
|
|
|
|
of BIND, will send a FORMERR or NOTIMP response to these queries.
|
|
|
|
When this happens, BIND 9 will automatically retry the query without
|
|
|
|
EDNS0.
|
2000-06-30 22:44:08 +00:00
|
|
|
|
|
|
|
Unfortunately, there exists at least one non-BIND name server
|
|
|
|
implementation that silently ignores these queries instead of sending
|
|
|
|
an error response. Resolving names in zones where all or most
|
|
|
|
authoritative servers use this server will be very slow or fail
|
|
|
|
completely. We have contacted the manufacturer of the name server in
|
2000-11-30 23:24:01 +00:00
|
|
|
case, and they are working on a solution.
|
2000-06-30 22:44:08 +00:00
|
|
|
|
2001-04-25 17:35:10 +00:00
|
|
|
3.2. Zone transfers
|
|
|
|
|
|
|
|
Outgoing zone transfers now use the "many-answers" format by default.
|
|
|
|
This format is not understood by certain old versions of BIND 4.
|
|
|
|
You can work around this problem using the option "transfer-format
|
|
|
|
one-answer;", but since these old versions all have known security
|
|
|
|
problems, the correct fix is to upgrade the slave servers.
|
|
|
|
|
|
|
|
Some BIND 9 users have reported interoperability problems with zone
|
|
|
|
transfers to Microsoft DNS servers that were solved by specifying
|
|
|
|
"transfer-format one-answer;", but we are still lacking detailed
|
|
|
|
information about this issue.
|
|
|
|
|
2000-09-01 18:30:30 +00:00
|
|
|
|
|
|
|
4. Unrestricted Character Set
|
|
|
|
|
|
|
|
BIND 9 does not restrict the character set of domain names - it is
|
|
|
|
fully 8-bit clean in accordance with RFC2181 section 11.
|
|
|
|
|
|
|
|
It is strongly recommended that hostnames published in the DNS follow
|
|
|
|
the RFC952 rules, but BIND 9 will not enforce this restriction.
|
|
|
|
|
|
|
|
Historically, some applications have suffered from security flaws
|
|
|
|
where data originating from the network, such as names returned by
|
|
|
|
gethostbyaddr(), are used with insufficient checking and may cause a
|
|
|
|
breach of security when containing unexpected characters; see
|
|
|
|
<http://www.cert.org/advisories/CA-96.04.corrupt_info_from_servers.html>
|
|
|
|
for details. Some earlier versions of BIND attempt to protect these
|
|
|
|
flawed applications from attack by discarding data containing
|
|
|
|
characters deemed inappropriate in host names or mail addresses, under
|
|
|
|
the control of the "check-names" option in named.conf and/or "options
|
|
|
|
no-check-names" in resolv.conf. BIND 9 provides no such protection;
|
|
|
|
if applications with these flaws are still being used, they should
|
|
|
|
be upgraded.
|
|
|
|
|
|
|
|
|
2000-09-08 21:34:28 +00:00
|
|
|
5. Server Administration Tools
|
|
|
|
|
|
|
|
The "ndc" program has been replaced by "rndc", which is capable of
|
|
|
|
remote operation. Unlike ndc, rndc requires a configuration file;
|
2001-03-27 23:59:53 +00:00
|
|
|
see the man pages in bin/rndc/rndc.1 and bin/rndc/rndc.conf.5 for
|
2000-11-30 23:24:01 +00:00
|
|
|
details. Some of the ndc commands are still unimplemented in rndc.
|
2000-09-08 21:34:28 +00:00
|
|
|
|
|
|
|
|
2001-01-16 20:35:31 +00:00
|
|
|
6. No Information Leakage between Zones
|
|
|
|
|
|
|
|
BIND 9 stores the authoritative data for each zone in a separate data
|
|
|
|
structure, as recommended in RFC1035 and as required by DNSSEC and
|
|
|
|
IXFR. When a BIND 9 server is authoritative for both a child zone and
|
|
|
|
its parent, it will have two distinct sets of NS records at the
|
|
|
|
delegation point: the authoritative NS records at the child's apex,
|
|
|
|
and a set of glue NS records in the parent.
|
|
|
|
|
|
|
|
BIND 8 was unable to properly distinguish between these two sets of NS
|
|
|
|
records and would "leak" the child's NS records into the parent,
|
|
|
|
effectively causing the parent zone to be silently modified: responses
|
|
|
|
and zone transfers from the parent contained the child's NS records
|
|
|
|
rather than the glue configured into the parent (if any). In the case
|
|
|
|
of children of type "stub", this behavior was documented as a feature,
|
|
|
|
allowing the glue NS records to be omitted from the parent
|
|
|
|
configuration.
|
|
|
|
|
|
|
|
Sites that were relying on this BIND 8 behavior need to add any
|
|
|
|
omitted glue NS records, and any necessary glue A records, to the
|
|
|
|
parent zone.
|
|
|
|
|
|
|
|
Although stub zones can no longer be used as a mechanism for injecting
|
|
|
|
NS records into their parent zones, they are still useful as a way of
|
|
|
|
directing queries for a given domain to a particular set of name
|
|
|
|
servers.
|
|
|
|
|
|
|
|
|
2001-04-25 17:35:10 +00:00
|
|
|
$Id: migration,v 1.29 2001/04/25 17:35:10 gson Exp $
|