xref: /minix3/external/bsd/bind/dist/doc/misc/migration (revision 00b67f09dd46474d133c95011a48590a8e8f94c7)
1*00b67f09SDavid van MoolenbroekCopyright (C) 2004, 2007, 2008  Internet Systems Consortium, Inc. ("ISC")
2*00b67f09SDavid van MoolenbroekCopyright (C) 2000, 2001, 2003  Internet Software Consortium.
3*00b67f09SDavid van MoolenbroekSee COPYRIGHT in the source root or http://isc.org/copyright.html for terms.
4*00b67f09SDavid van Moolenbroek
5*00b67f09SDavid van Moolenbroek                   BIND 8 to BIND 9 Migration Notes
6*00b67f09SDavid van Moolenbroek
7*00b67f09SDavid van MoolenbroekBIND 9 is designed to be mostly upwards compatible with BIND 8, but
8*00b67f09SDavid van Moolenbroekthere is still a number of caveats you should be aware of when
9*00b67f09SDavid van Moolenbroekupgrading an existing BIND 8 installation to use BIND 9.
10*00b67f09SDavid van Moolenbroek
11*00b67f09SDavid van Moolenbroek
12*00b67f09SDavid van Moolenbroek1. Configuration File Compatibility
13*00b67f09SDavid van Moolenbroek
14*00b67f09SDavid van Moolenbroek1.1. Unimplemented Options and Changed Defaults
15*00b67f09SDavid van Moolenbroek
16*00b67f09SDavid van MoolenbroekBIND 9 supports most, but not all of the named.conf options of BIND 8.
17*00b67f09SDavid van MoolenbroekFor a complete list of implemented options, see doc/misc/options.
18*00b67f09SDavid van Moolenbroek
19*00b67f09SDavid van MoolenbroekIf your named.conf file uses an unimplemented option, named will log a
20*00b67f09SDavid van Moolenbroekwarning message.  A message is also logged about each option whose
21*00b67f09SDavid van Moolenbroekdefault has changed unless the option is set explicitly in named.conf.
22*00b67f09SDavid van Moolenbroek
23*00b67f09SDavid van MoolenbroekThe default of the "transfer-format" option has changed from
24*00b67f09SDavid van Moolenbroek"one-answer" to "many-answers".  If you have slave servers that do not
25*00b67f09SDavid van Moolenbroekunderstand the many-answers zone transfer format (e.g., BIND 4.9.5 or
26*00b67f09SDavid van Moolenbroekolder) you need to explicitly specify "transfer-format one-answer;" in
27*00b67f09SDavid van Moolenbroekeither the options block or a server statement.
28*00b67f09SDavid van Moolenbroek
29*00b67f09SDavid van MoolenbroekBIND 9.4 onwards implements "allow-query-cache".  The "allow-query"
30*00b67f09SDavid van Moolenbroekoption is no longer used to specify access to the cache.  The
31*00b67f09SDavid van Moolenbroek"allow-query" option continues to specify which hosts are allowed
32*00b67f09SDavid van Moolenbroekto ask ordinary DNS questions.  The new "allow-query-cache" option
33*00b67f09SDavid van Moolenbroekis used to specify which hosts are allowed to get answers from the
34*00b67f09SDavid van Moolenbroekcache. Since BIND 9.4.1, if "allow-query-cache" is not set then
35*00b67f09SDavid van Moolenbroek"allow-recursion" is used if it is set, otherwise "allow-query" is
36*00b67f09SDavid van Moolenbroekused if it is set, otherwise the default localnets and localhost
37*00b67f09SDavid van Moolenbroekis used.
38*00b67f09SDavid van Moolenbroek
39*00b67f09SDavid van Moolenbroek1.2. Handling of Configuration File Errors
40*00b67f09SDavid van Moolenbroek
41*00b67f09SDavid van MoolenbroekIn BIND 9, named refuses to start if it detects an error in
42*00b67f09SDavid van Moolenbroeknamed.conf.  Earlier versions would start despite errors, causing the
43*00b67f09SDavid van Moolenbroekserver to run with a partial configuration.  Errors detected during
44*00b67f09SDavid van Moolenbroeksubsequent reloads do not cause the server to exit.
45*00b67f09SDavid van Moolenbroek
46*00b67f09SDavid van MoolenbroekErrors in master files do not cause the server to exit, but they
47*00b67f09SDavid van Moolenbroekdo cause the zone not to load.
48*00b67f09SDavid van Moolenbroek
49*00b67f09SDavid van Moolenbroek1.3. Logging
50*00b67f09SDavid van Moolenbroek
51*00b67f09SDavid van MoolenbroekThe set of logging categories in BIND 9 is different from that
52*00b67f09SDavid van Moolenbroekin BIND 8.  If you have customised your logging on a per-category
53*00b67f09SDavid van Moolenbroekbasis, you need to modify your logging statement to use the
54*00b67f09SDavid van Moolenbroeknew categories.
55*00b67f09SDavid van Moolenbroek
56*00b67f09SDavid van MoolenbroekAnother difference is that the "logging" statement only takes effect
57*00b67f09SDavid van Moolenbroekafter the entire named.conf file has been read.  This means that when
58*00b67f09SDavid van Moolenbroekthe server starts up, any messages about errors in the configuration
59*00b67f09SDavid van Moolenbroekfile are always logged to the default destination (syslog) when the
60*00b67f09SDavid van Moolenbroekserver first starts up, regardless of the contents of the "logging"
61*00b67f09SDavid van Moolenbroekstatement.  In BIND 8, the new logging configuration took effect
62*00b67f09SDavid van Moolenbroekimmediately after the "logging" statement was read.
63*00b67f09SDavid van Moolenbroek
64*00b67f09SDavid van Moolenbroek1.4. Notify messages and Refresh queries
65*00b67f09SDavid van Moolenbroek
66*00b67f09SDavid van MoolenbroekThe source address and port for these is now controlled by
67*00b67f09SDavid van Moolenbroek"notify-source" and "transfer-source", respectively, rather that
68*00b67f09SDavid van Moolenbroekquery-source as in BIND 8.
69*00b67f09SDavid van Moolenbroek
70*00b67f09SDavid van Moolenbroek1.5. Multiple Classes.
71*00b67f09SDavid van Moolenbroek
72*00b67f09SDavid van MoolenbroekMultiple classes have to be put into explicit views for each class.
73*00b67f09SDavid van Moolenbroek
74*00b67f09SDavid van Moolenbroek
75*00b67f09SDavid van Moolenbroek2. Zone File Compatibility
76*00b67f09SDavid van Moolenbroek
77*00b67f09SDavid van Moolenbroek2.1. Strict RFC1035 Interpretation of TTLs in Zone Files
78*00b67f09SDavid van Moolenbroek
79*00b67f09SDavid van MoolenbroekBIND 9 strictly complies with the RFC1035 and RFC2308 rules regarding
80*00b67f09SDavid van Moolenbroekomitted TTLs in zone files.  Omitted TTLs are replaced by the value
81*00b67f09SDavid van Moolenbroekspecified with the $TTL directive, or by the previous explicit TTL if
82*00b67f09SDavid van Moolenbroekthere is no $TTL directive.
83*00b67f09SDavid van Moolenbroek
84*00b67f09SDavid van MoolenbroekIf there is no $TTL directive and the first RR in the file does not
85*00b67f09SDavid van Moolenbroekhave an explicit TTL field, the zone file is illegal according to
86*00b67f09SDavid van MoolenbroekRFC1035 since the TTL of the first RR is undefined.  Unfortunately,
87*00b67f09SDavid van MoolenbroekBIND 4 and many versions of BIND 8 accept such files without warning
88*00b67f09SDavid van Moolenbroekand use the value of the SOA MINTTL field as a default for missing TTL
89*00b67f09SDavid van Moolenbroekvalues.
90*00b67f09SDavid van Moolenbroek
91*00b67f09SDavid van MoolenbroekBIND 9.0 and 9.1 completely refused to load such files.  BIND 9.2
92*00b67f09SDavid van Moolenbroekemulates the nonstandard BIND 4/8 SOA MINTTL behaviour and loads the
93*00b67f09SDavid van Moolenbroekfiles anyway (provided the SOA is the first record in the file), but
94*00b67f09SDavid van Moolenbroekwill issue the warning message "no TTL specified; using SOA MINTTL
95*00b67f09SDavid van Moolenbroekinstead".
96*00b67f09SDavid van Moolenbroek
97*00b67f09SDavid van MoolenbroekTo avoid problems, we recommend that you use a $TTL directive in each
98*00b67f09SDavid van Moolenbroekzone file.
99*00b67f09SDavid van Moolenbroek
100*00b67f09SDavid van Moolenbroek2.2. Periods in SOA Serial Numbers Deprecated
101*00b67f09SDavid van Moolenbroek
102*00b67f09SDavid van MoolenbroekSome versions of BIND allow SOA serial numbers with an embedded
103*00b67f09SDavid van Moolenbroekperiod, like "3.002", and convert them into integers in a rather
104*00b67f09SDavid van Moolenbroekunintuitive way.  This feature is not supported by BIND 9; serial
105*00b67f09SDavid van Moolenbroeknumbers must be integers.
106*00b67f09SDavid van Moolenbroek
107*00b67f09SDavid van Moolenbroek2.3. Handling of Unbalanced Quotes
108*00b67f09SDavid van Moolenbroek
109*00b67f09SDavid van MoolenbroekTXT records with unbalanced quotes, like 'host TXT "foo', were not
110*00b67f09SDavid van Moolenbroektreated as errors in some versions of BIND.  If your zone files
111*00b67f09SDavid van Moolenbroekcontain such records, you will get potentially confusing error
112*00b67f09SDavid van Moolenbroekmessages like "unexpected end of file" because BIND 9 will interpret
113*00b67f09SDavid van Moolenbroekeverything up to the next quote character as a literal string.
114*00b67f09SDavid van Moolenbroek
115*00b67f09SDavid van Moolenbroek2.4. Handling of Line Breaks
116*00b67f09SDavid van Moolenbroek
117*00b67f09SDavid van MoolenbroekSome versions of BIND accept RRs containing line breaks that are not
118*00b67f09SDavid van Moolenbroekproperly quoted with parentheses, like the following SOA:
119*00b67f09SDavid van Moolenbroek
120*00b67f09SDavid van Moolenbroek	@	IN SOA	ns.example. hostmaster.example.
121*00b67f09SDavid van Moolenbroek			( 1 3600 1800 1814400 3600 )
122*00b67f09SDavid van Moolenbroek
123*00b67f09SDavid van MoolenbroekThis is not legal master file syntax and will be treated as an error
124*00b67f09SDavid van Moolenbroekby BIND 9.  The fix is to move the opening parenthesis to the first
125*00b67f09SDavid van Moolenbroekline.
126*00b67f09SDavid van Moolenbroek
127*00b67f09SDavid van Moolenbroek2.5. Unimplemented BIND 8 Extensions
128*00b67f09SDavid van Moolenbroek
129*00b67f09SDavid van Moolenbroek$GENERATE: The "$$" construct for getting a literal $ into a domain
130*00b67f09SDavid van Moolenbroekname is deprecated.  Use \$ instead.
131*00b67f09SDavid van Moolenbroek
132*00b67f09SDavid van Moolenbroek2.6. TXT records are no longer automatically split.
133*00b67f09SDavid van Moolenbroek
134*00b67f09SDavid van MoolenbroekSome versions of BIND accepted strings in TXT RDATA consisting of more
135*00b67f09SDavid van Moolenbroekthan 255 characters and silently split them to be able to encode the
136*00b67f09SDavid van Moolenbroekstrings in a protocol conformant way. You may now see errors like this
137*00b67f09SDavid van Moolenbroek        dns_rdata_fromtext: local.db:119: ran out of space
138*00b67f09SDavid van Moolenbroekif you have TXT RRs with too longs strings. Make sure to split the
139*00b67f09SDavid van Moolenbroekstring in the zone data file at or before a single one reaches 255
140*00b67f09SDavid van Moolenbroekcharacters.
141*00b67f09SDavid van Moolenbroek
142*00b67f09SDavid van Moolenbroek3. Interoperability Impact of New Protocol Features
143*00b67f09SDavid van Moolenbroek
144*00b67f09SDavid van Moolenbroek3.1. EDNS0
145*00b67f09SDavid van Moolenbroek
146*00b67f09SDavid van MoolenbroekBIND 9 uses EDNS0 (RFC2671) to advertise its receive buffer size.  It
147*00b67f09SDavid van Moolenbroekalso sets DO EDNS flag bit in queries to indicate that it wishes to
148*00b67f09SDavid van Moolenbroekreceive DNSSEC responses.
149*00b67f09SDavid van Moolenbroek
150*00b67f09SDavid van MoolenbroekMost older servers that do not support EDNS0, including prior versions
151*00b67f09SDavid van Moolenbroekof BIND, will send a FORMERR or NOTIMP response to these queries.
152*00b67f09SDavid van MoolenbroekWhen this happens, BIND 9 will automatically retry the query without
153*00b67f09SDavid van MoolenbroekEDNS0.
154*00b67f09SDavid van Moolenbroek
155*00b67f09SDavid van MoolenbroekUnfortunately, there exists at least one non-BIND name server
156*00b67f09SDavid van Moolenbroekimplementation that silently ignores these queries instead of sending
157*00b67f09SDavid van Moolenbroekan error response.  Resolving names in zones where all or most
158*00b67f09SDavid van Moolenbroekauthoritative servers use this server will be very slow or fail
159*00b67f09SDavid van Moolenbroekcompletely.  We have contacted the manufacturer of the name server in
160*00b67f09SDavid van Moolenbroekcase, and they are working on a solution.
161*00b67f09SDavid van Moolenbroek
162*00b67f09SDavid van MoolenbroekWhen BIND 9 communicates with a server that does support EDNS0, such as
163*00b67f09SDavid van Moolenbroekanother BIND 9 server, responses of up to 4096 bytes may be
164*00b67f09SDavid van Moolenbroektransmitted as a single UDP datagram which is subject to fragmentation
165*00b67f09SDavid van Moolenbroekat the IP level.  If a firewall incorrectly drops IP fragments, it can
166*00b67f09SDavid van Moolenbroekcause resolution to slow down dramatically or fail.
167*00b67f09SDavid van Moolenbroek
168*00b67f09SDavid van Moolenbroek3.2. Zone Transfers
169*00b67f09SDavid van Moolenbroek
170*00b67f09SDavid van MoolenbroekOutgoing zone transfers now use the "many-answers" format by default.
171*00b67f09SDavid van MoolenbroekThis format is not understood by certain old versions of BIND 4.
172*00b67f09SDavid van MoolenbroekYou can work around this problem using the option "transfer-format
173*00b67f09SDavid van Moolenbroekone-answer;", but since these old versions all have known security
174*00b67f09SDavid van Moolenbroekproblems, the correct fix is to upgrade the slave servers.
175*00b67f09SDavid van Moolenbroek
176*00b67f09SDavid van MoolenbroekZone transfers to Windows 2000 DNS servers sometimes fail due to a
177*00b67f09SDavid van Moolenbroekbug in the Windows 2000 DNS server where DNS messages larger than
178*00b67f09SDavid van Moolenbroek16K are not handled properly.  Obtain the latest service pack for
179*00b67f09SDavid van MoolenbroekWindows 2000 from Microsoft to address this issue.  In the meantime,
180*00b67f09SDavid van Moolenbroekthe problem can be worked around by setting "transfer-format one-answer;".
181*00b67f09SDavid van Moolenbroekhttp://support.microsoft.com/default.aspx?scid=kb;en-us;297936
182*00b67f09SDavid van Moolenbroek
183*00b67f09SDavid van Moolenbroek4. Unrestricted Character Set
184*00b67f09SDavid van Moolenbroek
185*00b67f09SDavid van Moolenbroek		BIND 9.2 only
186*00b67f09SDavid van Moolenbroek
187*00b67f09SDavid van MoolenbroekBIND 9 does not restrict the character set of domain names - it is
188*00b67f09SDavid van Moolenbroekfully 8-bit clean in accordance with RFC2181 section 11.
189*00b67f09SDavid van Moolenbroek
190*00b67f09SDavid van MoolenbroekIt is strongly recommended that hostnames published in the DNS follow
191*00b67f09SDavid van Moolenbroekthe RFC952 rules, but BIND 9 will not enforce this restriction.
192*00b67f09SDavid van Moolenbroek
193*00b67f09SDavid van MoolenbroekHistorically, some applications have suffered from security flaws
194*00b67f09SDavid van Moolenbroekwhere data originating from the network, such as names returned by
195*00b67f09SDavid van Moolenbroekgethostbyaddr(), are used with insufficient checking and may cause a
196*00b67f09SDavid van Moolenbroekbreach of security when containing unexpected characters; see
197*00b67f09SDavid van Moolenbroek<http://www.cert.org/advisories/CA-96.04.corrupt_info_from_servers.html>
198*00b67f09SDavid van Moolenbroekfor details.  Some earlier versions of BIND attempt to protect these
199*00b67f09SDavid van Moolenbroekflawed applications from attack by discarding data containing
200*00b67f09SDavid van Moolenbroekcharacters deemed inappropriate in host names or mail addresses, under
201*00b67f09SDavid van Moolenbroekthe control of the "check-names" option in named.conf and/or "options
202*00b67f09SDavid van Moolenbroekno-check-names" in resolv.conf.  BIND 9 provides no such protection;
203*00b67f09SDavid van Moolenbroekif applications with these flaws are still being used, they should
204*00b67f09SDavid van Moolenbroekbe upgraded.
205*00b67f09SDavid van Moolenbroek
206*00b67f09SDavid van Moolenbroek	BIND 9.3 onwards implements check-names.
207*00b67f09SDavid van Moolenbroek
208*00b67f09SDavid van Moolenbroek5. Server Administration Tools
209*00b67f09SDavid van Moolenbroek
210*00b67f09SDavid van Moolenbroek5.1 Ndc Replaced by Rndc
211*00b67f09SDavid van Moolenbroek
212*00b67f09SDavid van MoolenbroekThe "ndc" program has been replaced by "rndc", which is capable of
213*00b67f09SDavid van Moolenbroekremote operation.  Unlike ndc, rndc requires a configuration file.
214*00b67f09SDavid van MoolenbroekThe easiest way to generate a configuration file is to run
215*00b67f09SDavid van Moolenbroek"rndc-confgen -a"; see the man pages for rndc(8), rndc-confgen(8),
216*00b67f09SDavid van Moolenbroekand rndc.conf(5) for details.
217*00b67f09SDavid van Moolenbroek
218*00b67f09SDavid van Moolenbroek5.2. Nsupdate Differences
219*00b67f09SDavid van Moolenbroek
220*00b67f09SDavid van MoolenbroekThe BIND 8 implementation of nsupdate had an undocumented feature
221*00b67f09SDavid van Moolenbroekwhere an update request would be broken down into multiple requests
222*00b67f09SDavid van Moolenbroekbased upon the discovered zones that contained the records.  This
223*00b67f09SDavid van Moolenbroekbehaviour has not been implemented in BIND 9.  Each update request
224*00b67f09SDavid van Moolenbroekmust pertain to a single zone, but it is still possible to do multiple
225*00b67f09SDavid van Moolenbroekupdates in a single invocation of nsupdate by terminating each update
226*00b67f09SDavid van Moolenbroekwith an empty line or a "send" command.
227*00b67f09SDavid van Moolenbroek
228*00b67f09SDavid van Moolenbroek
229*00b67f09SDavid van Moolenbroek6. No Information Leakage between Zones
230*00b67f09SDavid van Moolenbroek
231*00b67f09SDavid van MoolenbroekBIND 9 stores the authoritative data for each zone in a separate data
232*00b67f09SDavid van Moolenbroekstructure, as recommended in RFC1035 and as required by DNSSEC and
233*00b67f09SDavid van MoolenbroekIXFR.  When a BIND 9 server is authoritative for both a child zone and
234*00b67f09SDavid van Moolenbroekits parent, it will have two distinct sets of NS records at the
235*00b67f09SDavid van Moolenbroekdelegation point: the authoritative NS records at the child's apex,
236*00b67f09SDavid van Moolenbroekand a set of glue NS records in the parent.
237*00b67f09SDavid van Moolenbroek
238*00b67f09SDavid van MoolenbroekBIND 8 was unable to properly distinguish between these two sets of NS
239*00b67f09SDavid van Moolenbroekrecords and would "leak" the child's NS records into the parent,
240*00b67f09SDavid van Moolenbroekeffectively causing the parent zone to be silently modified: responses
241*00b67f09SDavid van Moolenbroekand zone transfers from the parent contained the child's NS records
242*00b67f09SDavid van Moolenbroekrather than the glue configured into the parent (if any).  In the case
243*00b67f09SDavid van Moolenbroekof children of type "stub", this behaviour was documented as a feature,
244*00b67f09SDavid van Moolenbroekallowing the glue NS records to be omitted from the parent
245*00b67f09SDavid van Moolenbroekconfiguration.
246*00b67f09SDavid van Moolenbroek
247*00b67f09SDavid van MoolenbroekSites that were relying on this BIND 8 behaviour need to add any
248*00b67f09SDavid van Moolenbroekomitted glue NS records, and any necessary glue A records, to the
249*00b67f09SDavid van Moolenbroekparent zone.
250*00b67f09SDavid van Moolenbroek
251*00b67f09SDavid van MoolenbroekAlthough stub zones can no longer be used as a mechanism for injecting
252*00b67f09SDavid van MoolenbroekNS records into their parent zones, they are still useful as a way of
253*00b67f09SDavid van Moolenbroekdirecting queries for a given domain to a particular set of name
254*00b67f09SDavid van Moolenbroekservers.
255*00b67f09SDavid van Moolenbroek
256*00b67f09SDavid van Moolenbroek
257*00b67f09SDavid van Moolenbroek7. Umask not Modified
258*00b67f09SDavid van Moolenbroek
259*00b67f09SDavid van MoolenbroekThe BIND 8 named unconditionally sets the umask to 022.  BIND 9 does
260*00b67f09SDavid van Moolenbroeknot; the umask inherited from the parent process remains in effect.
261*00b67f09SDavid van MoolenbroekThis may cause files created by named, such as journal files, to be
262*00b67f09SDavid van Moolenbroekcreated with different file permissions than they did in BIND 8.  If
263*00b67f09SDavid van Moolenbroeknecessary, the umask should be set explicitly in the script used to
264*00b67f09SDavid van Moolenbroekstart the named process.
265*00b67f09SDavid van Moolenbroek
266*00b67f09SDavid van Moolenbroek
267*00b67f09SDavid van MoolenbroekId: migration,v 1.49 2008/03/18 15:42:53 jreed Exp
268