update to 9.7.1-P2
[tridge/bind9.git] / doc / rfc / rfc1912.txt
1
2
3
4
5
6
7 Network Working Group                                            D. Barr
8 Request for Comments: 1912             The Pennsylvania State University
9 Obsoletes: 1537                                            February 1996
10 Category: Informational
11
12
13             Common DNS Operational and Configuration Errors
14
15 Status of this Memo
16
17    This memo provides information for the Internet community.  This memo
18    does not specify an Internet standard of any kind.  Distribution of
19    this memo is unlimited.
20
21 Abstract
22
23    This memo describes errors often found in both the operation of
24    Domain Name System (DNS) servers, and in the data that these DNS
25    servers contain.  This memo tries to summarize current Internet
26    requirements as well as common practice in the operation and
27    configuration of the DNS.  This memo also tries to summarize or
28    expand upon issues raised in [RFC 1537].
29
30 1. Introduction
31
32    Running a nameserver is not a trivial task.  There are many things
33    that can go wrong, and many decisions have to be made about what data
34    to put in the DNS and how to set up servers.  This memo attempts to
35    address many of the common mistakes and pitfalls that are made in DNS
36    data as well as in the operation of nameservers.  Discussions are
37    also made regarding some other relevant issues such as server or
38    resolver bugs, and a few political issues with respect to the
39    operation of DNS on the Internet.
40
41 2. DNS Data
42
43    This section discusses problems people typically have with the DNS
44    data in their nameserver, as found in the zone data files that the
45    nameserver loads into memory.
46
47 2.1 Inconsistent, Missing, or Bad Data
48
49    Every Internet-reachable host should have a name.  The consequences
50    of this are becoming more and more obvious.  Many services available
51    on the Internet will not talk to you if you aren't correctly
52    registered in the DNS.
53
54
55
56
57
58 Barr                         Informational                      [Page 1]
59 \f
60 RFC 1912                   Common DNS Errors               February 1996
61
62
63    Make sure your PTR and A records match.  For every IP address, there
64    should be a matching PTR record in the in-addr.arpa domain.  If a
65    host is multi-homed, (more than one IP address) make sure that all IP
66    addresses have a corresponding PTR record (not just the first one).
67    Failure to have matching PTR and A records can cause loss of Internet
68    services similar to not being registered in the DNS at all.  Also,
69    PTR records must point back to a valid A record, not a alias defined
70    by a CNAME.  It is highly recommended that you use some software
71    which automates this checking, or generate your DNS data from a
72    database which automatically creates consistent data.
73
74    DNS domain names consist of "labels" separated by single dots.  The
75    DNS is very liberal in its rules for the allowable characters in a
76    domain name.  However, if a domain name is used to name a host, it
77    should follow rules restricting host names.  Further if a name is
78    used for mail, it must follow the naming rules for names in mail
79    addresses.
80
81    Allowable characters in a label for a host name are only ASCII
82    letters, digits, and the `-' character.  Labels may not be all
83    numbers, but may have a leading digit  (e.g., 3com.com).  Labels must
84    end and begin only with a letter or digit.  See [RFC 1035] and [RFC
85    1123].  (Labels were initially restricted in [RFC 1035] to start with
86    a letter, and some older hosts still reportedly have problems with
87    the relaxation in [RFC 1123].)  Note there are some Internet
88    hostnames which violate this rule (411.org, 1776.com).  The presence
89    of underscores in a label is allowed in [RFC 1033], except [RFC 1033]
90    is informational only and was not defining a standard.  There is at
91    least one popular TCP/IP implementation which currently refuses to
92    talk to hosts named with underscores in them.  It must be noted that
93    the language in [1035] is such that these rules are voluntary -- they
94    are there for those who wish to minimize problems.  Note that the
95    rules for Internet host names also apply to hosts and addresses used
96    in SMTP (See RFC 821).
97
98    If a domain name is to be used for mail (not involving SMTP), it must
99    follow the rules for mail in [RFC 822], which is actually more
100    liberal than the above rules.  Labels for mail can be any ASCII
101    character except "specials", control characters, and whitespace
102    characters.  "Specials" are specific symbols used in the parsing of
103    addresses.  They are the characters "()<>@,;:\".[]".  (The "!"
104    character wasn't in [RFC 822], however it also shouldn't be used due
105    to the conflict with UUCP mail as defined in RFC 976)  However, since
106    today almost all names which are used for mail on the Internet are
107    also names used for hostnames, one rarely sees addresses using these
108    relaxed standard, but mail software should be made liberal and robust
109    enough to accept them.
110
111
112
113
114 Barr                         Informational                      [Page 2]
115 \f
116 RFC 1912                   Common DNS Errors               February 1996
117
118
119    You should also be careful to not have addresses which are valid
120    alternate syntaxes to the inet_ntoa() library call.  For example 0xe
121    is a valid name, but if you were to type "telnet 0xe", it would try
122    to connect to IP address 0.0.0.14.  It is also rumored that there
123    exists some broken inet_ntoa() routines that treat an address like
124    x400 as an IP address.
125
126    Certain operating systems have limitations on the length of their own
127    hostname.  While not strictly of issue to the DNS, you should be
128    aware of your operating system's length limits before choosing the
129    name of a host.
130
131    Remember that many resource records (abbreviated RR) take on more
132    than one argument.  HINFO requires two arguments, as does RP.  If you
133    don't supply enough arguments, servers sometime return garbage for
134    the missing fields.  If you need to include whitespace within any
135    data, you must put the string in quotes.
136
137 2.2 SOA records
138
139    In the SOA record of every zone, remember to fill in the e-mail
140    address that will get to the person who maintains the DNS at your
141    site (commonly referred to as "hostmaster").  The `@' in the e-mail
142    must be replaced by a `.' first.  Do not try to put an `@' sign in
143    this address.  If the local part of the address already contains a
144    `.' (e.g., John.Smith@widget.xx), then you need to quote the `.' by
145    preceding it with `\' character.  (e.g., to become
146    John\.Smith.widget.xx) Alternately (and preferred), you can just use
147    the generic name `hostmaster', and use a mail alias to redirect it to
148    the appropriate persons.  There exists software which uses this field
149    to automatically generate the e-mail address for the zone contact.
150    This software will break if this field is improperly formatted.  It
151    is imperative that this address get to one or more real persons,
152    because it is often used for everything from reporting bad DNS data
153    to reporting security incidents.
154
155    Even though some BIND versions allow you to use a decimal in a serial
156    number, don't.  A decimal serial number is converted to an unsigned
157    32-bit integer internally anyway.  The formula for a n.m serial
158    number is n*10^(3+int(0.9+log10(m))) + m which translates to
159    something rather unexpected.  For example it's routinely possible
160    with a decimal serial number (perhaps automatically generated by
161    SCCS) to be incremented such that it is numerically larger, but after
162    the above conversion yield a serial number which is LOWER than
163    before.  Decimal serial numbers have been officially deprecated in
164    recent BIND versions.  The recommended syntax is YYYYMMDDnn
165    (YYYY=year, MM=month, DD=day, nn=revision number.  This won't
166    overflow until the year 4294.
167
168
169
170 Barr                         Informational                      [Page 3]
171 \f
172 RFC 1912                   Common DNS Errors               February 1996
173
174
175    Choose logical values for the timer values in the SOA record (note
176    values below must be expressed as seconds in the zone data):
177
178       Refresh: How often a secondary will poll the primary server to see
179           if the serial number for the zone has increased (so it knows
180           to request a new copy of the data for the zone).  Set this to
181           how long your secondaries can comfortably contain out-of-date
182           data.  You can keep it short (20 mins to 2 hours) if you
183           aren't worried about a small increase in bandwidth used, or
184           longer (2-12 hours) if your Internet connection is slow or is
185           started on demand.  Recent BIND versions (4.9.3) have optional
186           code to automatically notify secondaries that data has
187           changed, allowing you to set this TTL to a long value (one
188           day, or more).
189
190       Retry: If a secondary was unable to contact the primary at the
191           last refresh, wait the retry value before trying again.  This
192           value isn't as important as others, unless the secondary is on
193           a distant network from the primary or the primary is more
194           prone to outages.  It's typically some fraction of the refresh
195           interval.
196
197
198       Expire: How long a secondary will still treat its copy of the zone
199           data as valid if it can't contact the primary.  This value
200           should be greater than how long a major outage would typically
201           last, and must be greater than the minimum and retry
202           intervals, to avoid having a secondary expire the data before
203           it gets a chance to get a new copy.  After a zone is expired a
204           secondary will still continue to try to contact the primary,
205           but it will no longer provide nameservice for the zone.  2-4
206           weeks are suggested values.
207
208       Minimum: The default TTL (time-to-live) for resource records --
209           how long data will remain in other nameservers' cache.  ([RFC
210           1035] defines this to be the minimum value, but servers seem
211           to always implement this as the default value)  This is by far
212           the most important timer.  Set this as large as is comfortable
213           given how often you update your nameserver.  If you plan to
214           make major changes, it's a good idea to turn this value down
215           temporarily beforehand.  Then wait the previous minimum value,
216           make your changes, verify their correctness, and turn this
217           value back up.  1-5 days are typical values.  Remember this
218           value can be overridden on individual resource records.
219
220
221
222
223
224
225
226 Barr                         Informational                      [Page 4]
227 \f
228 RFC 1912                   Common DNS Errors               February 1996
229
230
231    As you can see, the typical values above for the timers vary widely.
232    Popular documentation like [RFC 1033] recommended a day for the
233    minimum TTL, which is now considered too low except for zones with
234    data that vary regularly.  Once a DNS stabilizes, values on the order
235    of 3 or more days are recommended.  It is also recommended that you
236    individually override the TTL on certain RRs which are often
237    referenced and don't often change to have very large values (1-2
238    weeks).  Good examples of this are the MX, A, and PTR records of your
239    mail host(s), the NS records of your zone, and the A records of your
240    nameservers.
241
242 2.3 Glue A Records
243
244    Glue records are A records that are associated with NS records to
245    provide "bootstrapping" information to the nameserver.  For example:
246
247            podunk.xx.      in      ns      ns1.podunk.xx.
248                            in      ns      ns2.podunk.xx.
249            ns1.podunk.xx.  in      a       1.2.3.4
250            ns2.podunk.xx.  in      a       1.2.3.5
251
252    Here, the A records are referred to as "Glue records".
253
254    Glue records are required only in forward zone files for nameservers
255    that are located in the subdomain of the current zone that is being
256    delegated.  You shouldn't have any A records in an in-addr.arpa zone
257    file (unless you're using RFC 1101-style encoding of subnet masks).
258
259    If your nameserver is multi-homed (has more than one IP address), you
260    must list all of its addresses in the glue to avoid cache
261    inconsistency due to differing TTL values, causing some lookups to
262    not find all addresses for your nameserver.
263
264    Some people get in the bad habit of putting in a glue record whenever
265    they add an NS record "just to make sure".  Having duplicate glue
266    records in your zone files just makes it harder when a nameserver
267    moves to a new IP address, or is removed. You'll spend hours trying
268    to figure out why random people still see the old IP address for some
269    host, because someone forgot to change or remove a glue record in
270    some other file.  Newer BIND versions will ignore these extra glue
271    records in local zone files.
272
273    Older BIND versions (4.8.3 and previous) have a problem where it
274    inserts these extra glue records in the zone transfer data to
275    secondaries.  If one of these glues is wrong, the error can be
276    propagated to other nameservers.  If two nameservers are secondaries
277    for other zones of each other, it's possible for one to continually
278    pass old glue records back to the other.  The only way to get rid of
279
280
281
282 Barr                         Informational                      [Page 5]
283 \f
284 RFC 1912                   Common DNS Errors               February 1996
285
286
287    the old data is to kill both of them, remove the saved backup files,
288    and restart them.  Combined with that those same versions also tend
289    to become infected more easily with bogus data found in other non-
290    secondary nameservers (like the root zone data).
291
292 2.4 CNAME records
293
294    A CNAME record is not allowed to coexist with any other data.  In
295    other words, if suzy.podunk.xx is an alias for sue.podunk.xx, you
296    can't also have an MX record for suzy.podunk.edu, or an A record, or
297    even a TXT record.  Especially do not try to combine CNAMEs and NS
298    records like this!:
299
300
301            podunk.xx.      IN      NS      ns1
302                            IN      NS      ns2
303                            IN      CNAME   mary
304            mary            IN      A       1.2.3.4
305
306
307    This is often attempted by inexperienced administrators as an obvious
308    way to allow your domain name to also be a host.  However, DNS
309    servers like BIND will see the CNAME and refuse to add any other
310    resources for that name.  Since no other records are allowed to
311    coexist with a CNAME, the NS entries are ignored.  Therefore all the
312    hosts in the podunk.xx domain are ignored as well!
313
314    If you want to have your domain also be a host, do the following:
315
316            podunk.xx.      IN      NS      ns1
317                            IN      NS      ns2
318                            IN      A       1.2.3.4
319            mary            IN      A       1.2.3.4
320
321    Don't go overboard with CNAMEs.  Use them when renaming hosts, but
322    plan to get rid of them (and inform your users).  However CNAMEs are
323    useful (and encouraged) for generalized names for servers -- `ftp'
324    for your ftp server, `www' for your Web server, `gopher' for your
325    Gopher server, `news' for your Usenet news server, etc.
326
327    Don't forget to delete the CNAMEs associated with a host if you
328    delete the host it is an alias for.  Such "stale CNAMEs" are a waste
329    of resources.
330
331
332
333
334
335
336
337
338 Barr                         Informational                      [Page 6]
339 \f
340 RFC 1912                   Common DNS Errors               February 1996
341
342
343    Don't use CNAMEs in combination with RRs which point to other names
344    like MX, CNAME, PTR and NS.  (PTR is an exception if you want to
345    implement classless in-addr delegation.)  For example, this is
346    strongly discouraged:
347
348            podunk.xx.      IN      MX      mailhost
349            mailhost        IN      CNAME   mary
350            mary            IN      A       1.2.3.4
351
352
353    [RFC 1034] in section 3.6.2 says this should not be done, and [RFC
354    974] explicitly states that MX records shall not point to an alias
355    defined by a CNAME.  This results in unnecessary indirection in
356    accessing the data, and DNS resolvers and servers need to work more
357    to get the answer.  If you really want to do this, you can accomplish
358    the same thing by using a preprocessor such as m4 on your host files.
359
360    Also, having chained records such as CNAMEs pointing to CNAMEs may
361    make administration issues easier, but is known to tickle bugs in
362    some resolvers that fail to check loops correctly.  As a result some
363    hosts may not be able to resolve such names.
364
365    Having NS records pointing to a CNAME is bad and may conflict badly
366    with current BIND servers.  In fact, current BIND implementations
367    will ignore such records, possibly leading to a lame delegation.
368    There is a certain amount of security checking done in BIND to
369    prevent spoofing DNS NS records.  Also, older BIND servers reportedly
370    will get caught in an infinite query loop trying to figure out the
371    address for the aliased nameserver, causing a continuous stream of
372    DNS requests to be sent.
373
374 2.5 MX records
375
376    It is a good idea to give every host an MX record, even if it points
377    to itself!  Some mailers will cache MX records, but will always need
378    to check for an MX before sending mail.  If a site does not have an
379    MX, then every piece of mail may result in one more resolver query,
380    since the answer to the MX query often also contains the IP addresses
381    of the MX hosts.  Internet SMTP mailers are required by [RFC 1123] to
382    support the MX mechanism.
383
384    Put MX records even on hosts that aren't intended to send or receive
385    e-mail.  If there is a security problem involving one of these hosts,
386    some people will mistakenly send mail to postmaster or root at the
387    site without checking first to see if it is a "real" host or just a
388    terminal or personal computer that's not set up to accept e-mail.  If
389    you give it an MX record, then the e-mail can be redirected to a real
390    person.  Otherwise mail can just sit in a queue for hours or days
391
392
393
394 Barr                         Informational                      [Page 7]
395 \f
396 RFC 1912                   Common DNS Errors               February 1996
397
398
399    until the mailer gives up trying to send it.
400
401    Don't forget that whenever you add an MX record, you need to inform
402    the target mailer if it is to treat the first host as "local".  (The
403    "Cw" flag in sendmail, for example)
404
405    If you add an MX record which points to an external host (e.g., for
406    the purposes of backup mail routing) be sure to ask permission from
407    that site first.  Otherwise that site could get rather upset and take
408    action (like throw your mail away, or appeal to higher authorities
409    like your parent DNS administrator or network provider.)
410
411 2.6 Other Resource Records
412
413 2.6.1 WKS
414
415    WKS records are deprecated in [RFC 1123].  They serve no known useful
416    function, except internally among LISP machines.  Don't use them.
417
418 2.6.2 HINFO
419
420    On the issue HINFO records, some will argue that these is a security
421    problem (by broadcasting what vendor hardware and operating system
422    you so people can run systematic attacks on known vendor security
423    holes).  If you do use them, you should keep up to date with known
424    vendor security problems.  However, they serve a useful purpose.
425    Don't forget that HINFO requires two arguments, the hardware type,
426    and the operating system.
427
428    HINFO is sometimes abused to provide other information.  The record
429    is meant to provide specific information about the machine itself.
430    If you need to express other information about the host in the DNS,
431    use TXT.
432
433 2.6.3 TXT
434
435    TXT records have no specific definition.  You can put most anything
436    in them.  Some use it for a generic description of the host, some put
437    specific information like its location, primary user, or maybe even a
438    phone number.
439
440 2.6.4 RP
441
442    RP records are relatively new.  They are used to specify an e-mail
443    address (see first paragraph of section 2.2)  of the "Responsible
444    Person" of the host, and the name of a TXT record where you can get
445    more information.  See [RFC 1183].
446
447
448
449
450 Barr                         Informational                      [Page 8]
451 \f
452 RFC 1912                   Common DNS Errors               February 1996
453
454
455 2.7 Wildcard records
456
457    Wildcard MXs are useful mostly for non IP-connected sites.  A common
458    mistake is thinking that a wildcard MX for a zone will apply to all
459    hosts in the zone.  A wildcard MX will apply only to names in the
460    zone which aren't listed in the DNS at all.  e.g.,
461
462            podunk.xx.      IN      NS      ns1
463                            IN      NS      ns2
464            mary            IN      A       1.2.3.4
465            *.podunk.xx.    IN      MX      5 sue
466
467    Mail for mary.podunk.xx will be sent to itself for delivery.  Only
468    mail for jane.podunk.xx or any hosts you don't see above will be sent
469    to the MX.  For most Internet sites, wildcard MX records are not
470    useful.  You need to put explicit MX records on every host.
471
472    Wildcard MXs can be bad, because they make some operations succeed
473    when they should fail instead.  Consider the case where someone in
474    the domain "widget.com" tries to send mail to "joe@larry".  If the
475    host "larry" doesn't actually exist, the mail should in fact bounce
476    immediately.  But because of domain searching the address gets
477    resolved to "larry.widget.com", and because of the wildcard MX this
478    is a valid address according to DNS.  Or perhaps someone simply made
479    a typo in the hostname portion of the address.  The mail message then
480    gets routed to the mail host, which then rejects the mail with
481    strange error messages like "I refuse to talk to myself" or "Local
482    configuration error".
483
484    Wildcard MX records are good for when you have a large number of
485    hosts which are not directly Internet-connected (for example, behind
486    a firewall) and for administrative or political reasons it is too
487    difficult to have individual MX records for every host, or to force
488    all e-mail addresses to be "hidden" behind one or more domain names.
489    In that case, you must divide your DNS into two parts, an internal
490    DNS, and an external DNS.  The external DNS will have only a few
491    hosts and explicit MX records, and one or more wildcard MXs for each
492    internal domain.  Internally the DNS will be complete, with all
493    explicit MX records and no wildcards.
494
495    Wildcard As and CNAMEs are possible too, and are really confusing to
496    users, and a potential nightmare if used without thinking first.  It
497    could result (due again to domain searching) in any telnet/ftp
498    attempts from within the domain to unknown hosts to be directed to
499    one address.  One such wildcard CNAME (in *.edu.com) caused
500    Internet-wide loss of services and potential security nightmares due
501    to unexpected interactions with domain searching.  It resulted in
502    swift fixes, and even an RFC ([RFC 1535]) documenting the problem.
503
504
505
506 Barr                         Informational                      [Page 9]
507 \f
508 RFC 1912                   Common DNS Errors               February 1996
509
510
511 2.8 Authority and Delegation Errors (NS records)
512
513    You are required to have at least two nameservers for every domain,
514    though more is preferred.  Have secondaries outside your network.  If
515    the secondary isn't under your control, periodically check up on them
516    and make sure they're getting current zone data from you.  Queries to
517    their nameserver about your hosts should always result in an
518    "authoritative" response.  If not, this is called a "lame
519    delegation".  A lame delegations exists when a nameserver is
520    delegated responsibility for providing nameservice for a zone (via NS
521    records) but is not performing nameservice for that zone (usually
522    because it is not set up as a primary or secondary for the zone).
523
524    The "classic" lame delegation can be illustrated in this example:
525
526            podunk.xx.      IN      NS      ns1.podunk.xx.
527                            IN      NS      ns0.widget.com.
528
529    "podunk.xx" is a new domain which has recently been created, and
530    "ns1.podunk.xx" has been set up to perform nameservice for the zone.
531    They haven't quite finished everything yet and haven't made sure that
532    the hostmaster at "ns0.widget.com" has set up to be a proper
533    secondary, and thus has no information about the podunk.xx domain,
534    even though the DNS says it is supposed to.  Various things can
535    happen depending on which nameserver is used.  At best, extra DNS
536    traffic will result from a lame delegation.  At worst, you can get
537    unresolved hosts and bounced e-mail.
538
539    Also, sometimes a nameserver is moved to another host or removed from
540    the list of secondaries.  Unfortunately due to caching of NS records,
541    many sites will still think that a host is a secondary after that
542    host has stopped providing nameservice.  In order to prevent lame
543    delegations while the cache is being aged, continue to provide
544    nameservice on the old nameserver for the length of the maximum of
545    the minimum plus refresh times for the zone and the parent zone.
546    (See section 2.2)
547
548    Whenever a primary or secondary is removed or changed, it takes a
549    fair amount of human coordination among the parties involved.  (The
550    site itself, it's parent, and the site hosting the secondary)  When a
551    primary moves, make sure all secondaries have their named.boot files
552    updated and their servers reloaded.  When a secondary moves, make
553    sure the address records at both the primary and parent level are
554    changed.
555
556    It's also been reported that some distant sites like to pick popular
557    nameservers like "ns.uu.net" and just add it to their list of NS
558    records in hopes that they will magically perform additional
559
560
561
562 Barr                         Informational                     [Page 10]
563 \f
564 RFC 1912                   Common DNS Errors               February 1996
565
566
567    nameservice for them.  This is an even worse form of lame delegation,
568    since this adds traffic to an already busy nameserver.  Please
569    contact the hostmasters of sites which have lame delegations.
570    Various tools can be used to detect or actively find lame
571    delegations.  See the list of contributed software in the BIND
572    distribution.
573
574    Make sure your parent domain has the same NS records for your zone as
575    you do.  (Don't forget your in-addr.arpa zones too!).  Do not list
576    too many (7 is the recommended maximum), as this just makes things
577    harder to manage and is only really necessary for very popular top-
578    level or root zones.  You also run the risk of overflowing the 512-
579    byte limit of a UDP packet in the response to an NS query.  If this
580    happens, resolvers will "fall back" to using TCP requests, resulting
581    in increased load on your nameserver.
582
583    It's important when picking geographic locations for secondary
584    nameservers to minimize latency as well as increase reliability.
585    Keep in mind network topologies.  For example if your site is on the
586    other end of a slow local or international link, consider a secondary
587    on the other side of the link to decrease average latency.  Contact
588    your Internet service provider or parent domain contact for more
589    information about secondaries which may be available to you.
590
591 3. BIND operation
592
593    This section discusses common problems people have in the actual
594    operation of the nameserver (specifically, BIND).  Not only must the
595    data be correct as explained above, but the nameserver must be
596    operated correctly for the data to be made available.
597
598 3.1 Serial numbers
599
600    Each zone has a serial number associated with it.  Its use is for
601    keeping track of who has the most current data.  If and only if the
602    primary's serial number of the zone is greater will the secondary ask
603    the primary for a copy of the new zone data (see special case below).
604
605    Don't forget to change the serial number when you change data!  If
606    you don't, your secondaries will not transfer the new zone
607    information.  Automating the incrementing of the serial number with
608    software is also a good idea.
609
610    If you make a mistake and increment the serial number too high, and
611    you want to reset the serial number to a lower value, use the
612    following procedure:
613
614
615
616
617
618 Barr                         Informational                     [Page 11]
619 \f
620 RFC 1912                   Common DNS Errors               February 1996
621
622
623       Take the `incorrect' serial number and add 2147483647 to it.  If
624       the number exceeds 4294967296, subtract 4294967296.  Load the
625       resulting number.  Then wait 2 refresh periods to allow the zone
626       to propagate to all servers.
627
628       Repeat above until the resulting serial number is less than the
629       target serial number.
630
631       Up the serial number to the target serial number.
632
633    This procedure won't work if one of your secondaries is running an
634    old version of BIND (4.8.3 or earlier).  In this case you'll have to
635    contact the hostmaster for that secondary and have them kill the
636    secondary servers, remove the saved backup file, and restart the
637    server.  Be careful when editing the serial number -- DNS admins
638    don't like to kill and restart nameservers because you lose all that
639    cached data.
640
641 3.2 Zone file style guide
642
643    Here are some useful tips in structuring your zone files.  Following
644    these will help you spot mistakes, and avoid making more.
645
646    Be consistent with the style of entries in your DNS files. If your
647    $ORIGIN is podunk.xx., try not to write entries like:
648
649            mary            IN      A       1.2.3.1
650            sue.podunk.xx.  IN      A       1.2.3.2
651
652    or:
653
654            bobbi           IN      A       1.2.3.2
655                            IN      MX      mary.podunk.xx.
656
657
658    Either use all FQDNs (Fully Qualified Domain Names) everywhere or
659    used unqualified names everywhere.  Or have FQDNs all on the right-
660    hand side but unqualified names on the left.  Above all, be
661    consistent.
662
663    Use tabs between fields, and try to keep columns lined up.  It makes
664    it easier to spot missing fields (note some fields such as "IN" are
665    inherited from the previous record and may be left out in certain
666    circumstances.)
667
668
669
670
671
672
673
674 Barr                         Informational                     [Page 12]
675 \f
676 RFC 1912                   Common DNS Errors               February 1996
677
678
679    Remember you don't need to repeat the name of the host when you are
680    defining multiple records for one host.  Be sure also to keep all
681    records associated with a host together in the file.  It will make
682    things more straightforward when it comes time to remove or rename a
683    host.
684
685    Always remember your $ORIGIN.  If you don't put a `.' at the end of
686    an FQDN, it's not recognized as an FQDN.  If it is not an FQDN, then
687    the nameserver will append $ORIGIN to the name.  Double check, triple
688    check, those trailing dots, especially in in-addr.arpa zone files,
689    where they are needed the most.
690
691    Be careful with the syntax of the SOA and WKS records (the records
692    which use parentheses).  BIND is not very flexible in how it parses
693    these records.  See the documentation for BIND.
694
695 3.3 Verifying data
696
697    Verify the data you just entered or changed by querying the resolver
698    with dig (or your favorite DNS tool, many are included in the BIND
699    distribution) after a change.  A few seconds spent double checking
700    can save hours of trouble, lost mail, and general headaches.  Also be
701    sure to check syslog output when you reload the nameserver.  If you
702    have grievous errors in your DNS data or boot file, named will report
703    it via syslog.
704
705    It is also highly recommended that you automate this checking, either
706    with software which runs sanity checks on the data files before they
707    are loaded into the nameserver, or with software which checks the
708    data already loaded in the nameserver.  Some contributed software to
709    do this is included in the BIND distribution.
710
711 4. Miscellaneous Topics
712
713 4.1 Boot file setup
714
715    Certain zones should always be present in nameserver configurations:
716
717            primary         localhost               localhost
718            primary         0.0.127.in-addr.arpa    127.0
719            primary         255.in-addr.arpa        255
720            primary         0.in-addr.arpa          0
721
722    These are set up to either provide nameservice for "special"
723    addresses, or to help eliminate accidental queries for broadcast or
724    local address to be sent off to the root nameservers.  All of these
725    files will contain NS and SOA records just like the other zone files
726    you maintain, the exception being that you can probably make the SOA
727
728
729
730 Barr                         Informational                     [Page 13]
731 \f
732 RFC 1912                   Common DNS Errors               February 1996
733
734
735    timers very long, since this data will never change.
736
737    The "localhost" address is a "special" address which always refers to
738    the local host.  It should contain the following line:
739
740            localhost.      IN      A       127.0.0.1
741
742    The "127.0" file should contain the line:
743
744            1    PTR     localhost.
745
746    There has been some extensive discussion about whether or not to
747    append the local domain to it.  The conclusion is that "localhost."
748    would be the best solution.  The reasons given include:
749
750       "localhost" by itself is used and expected to work in some
751       systems.
752
753       Translating 127.0.0.1 into "localhost.dom.ain" can cause some
754       software to connect back to the loopback interface when it didn't
755       want to because "localhost" is not equal to "localhost.dom.ain".
756
757    The "255" and "0" files should not contain any additional data beyond
758    the NS and SOA records.
759
760    Note that future BIND versions may include all or some of this data
761    automatically without additional configuration.
762
763 4.2 Other Resolver and Server bugs
764
765    Very old versions of the DNS resolver have a bug that cause queries
766    for names that look like IP addresses to go out, because the user
767    supplied an IP address and the software didn't realize that it didn't
768    need to be resolved.  This has been fixed but occasionally it still
769    pops up.  It's important because this bug means that these queries
770    will be sent directly to the root nameservers, adding to an already
771    heavy DNS load.
772
773    While running a secondary nameserver off another secondary nameserver
774    is possible, it is not recommended unless necessary due to network
775    topologies.  There are known cases where it has led to problems like
776    bogus TTL values.  While this may be caused by older or flawed DNS
777    implementations, you should not chain secondaries off of one another
778    since this builds up additional reliability dependencies as well as
779    adds additional delays in updates of new zone data.
780
781
782
783
784
785
786 Barr                         Informational                     [Page 14]
787 \f
788 RFC 1912                   Common DNS Errors               February 1996
789
790
791 4.3 Server issues
792
793    DNS operates primarily via UDP (User Datagram Protocol) messages.
794    Some UNIX operating systems, in an effort to save CPU cycles, run
795    with UDP checksums turned off.  The relative merits of this have long
796    been debated.  However, with the increase in CPU speeds, the
797    performance considerations become less and less important.  It is
798    strongly encouraged that you turn on UDP checksumming to avoid
799    corrupted data not only with DNS but with other services that use UDP
800    (like NFS).  Check with your operating system documentation to verify
801    that UDP checksumming is enabled.
802
803 References
804
805    [RFC 974] Partridge, C., "Mail routing and the domain system", STD
806               14, RFC 974, CSNET CIC BBN Laboratories Inc, January 1986.
807
808    [RFC 1033] Lottor, M, "Domain Administrators Operations Guide", RFC
809               1033, USC/Information Sciences Institute, November 1987.
810
811    [RFC 1034] Mockapetris, P., "Domain Names - Concepts and Facilities",
812               STD 13, RFC 1034, USC/Information Sciences Institute,
813               November 1987.
814
815    [RFC 1035] Mockapetris, P., "Domain Names - Implementation and
816               Specification", STD 13, RFC 1035, USC/Information Sciences
817               Institute, November 1987.
818
819    [RFC 1123] Braden, R., "Requirements for Internet Hosts --
820               Application and Support", STD 3, RFC 1123, IETF, October
821               1989.
822
823    [RFC 1178] Libes, D., "Choosing a Name for Your Computer", FYI 5, RFC
824               1178, Integrated Systems Group/NIST, August 1990.
825
826    [RFC 1183] Ullman, R., Mockapetris, P., Mamakos, L, and C. Everhart,
827               "New DNS RR Definitions", RFC 1183, October 1990.
828
829    [RFC 1535] Gavron, E., "A Security Problem and Proposed Correction
830               With Widely Deployed DNS Software", RFC 1535, ACES
831               Research Inc., October 1993.
832
833    [RFC 1536] Kumar, A., Postel, J., Neuman, C., Danzig, P., and S.
834               Miller, "Common DNS Implementation Errors and Suggested
835               Fixes", RFC 1536, USC/Information Sciences Institute, USC,
836               October 1993.
837
838
839
840
841
842 Barr                         Informational                     [Page 15]
843 \f
844 RFC 1912                   Common DNS Errors               February 1996
845
846
847    [RFC 1537] Beertema, P., "Common DNS Data File Configuration Errors",
848               RFC 1537, CWI, October 1993.
849
850    [RFC 1713] A. Romao, "Tools for DNS debugging", RFC 1713, FCCN,
851               November 1994.
852
853    [BOG] Vixie, P, et. al., "Name Server Operations Guide for BIND",
854               Vixie Enterprises, July 1994.
855
856 5. Security Considerations
857
858    Security issues are not discussed in this memo.
859
860 6. Author's Address
861
862    David Barr
863    The Pennsylvania State University
864    Department of Mathematics
865    334 Whitmore Building
866    University Park, PA 16802
867
868    Voice: +1 814 863 7374
869    Fax: +1 814 863-8311
870    EMail: barr@math.psu.edu
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898 Barr                         Informational                     [Page 16]
899 \f