home *** CD-ROM | disk | FTP | other *** search
/ Unix System Administration Handbook 1997 October / usah_oct97.iso / rfc / 1900s / rfc1912.txt < prev    next >
Text File  |  1996-02-15  |  38KB  |  900 lines

  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.  
  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.  
  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.  
  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.  
  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.  
  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.  
  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.  
  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.  
  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.  
  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.  
  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.  
  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.  
  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.  
  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.  
  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.  
  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.  
  900.