From 6d2a687f9cee072e3a2a5b028bb17b24e6a551ae Mon Sep 17 00:00:00 2001 From: mrg Date: Sun, 13 Apr 1997 09:06:10 +0000 Subject: [PATCH] BIND 4.9.5-P1 --- usr.sbin/named/CHANGES | 2864 +++++++ usr.sbin/named/OPTIONS | 412 + usr.sbin/named/README | 480 ++ usr.sbin/named/TODO | 187 + usr.sbin/named/conf/options.h | 23 +- usr.sbin/named/conf/portability.h | 150 +- usr.sbin/named/dig/dig.c | 110 +- usr.sbin/named/dnsquery/dnsquery.c | 111 +- usr.sbin/named/doc/bog/00macs.me | 51 + usr.sbin/named/doc/bog/00title.me | 94 + usr.sbin/named/doc/bog/Makefile | 93 + usr.sbin/named/doc/bog/ack.me | 287 + usr.sbin/named/doc/bog/build.me | 102 + usr.sbin/named/doc/bog/file.lst | 3036 +++++++ usr.sbin/named/doc/bog/file.psf | 2836 +++++++ usr.sbin/named/doc/bog/files.me | 1154 +++ usr.sbin/named/doc/bog/intro.me | 75 + usr.sbin/named/doc/bog/manage.me | 156 + usr.sbin/named/doc/bog/named.boot.cache | 77 + usr.sbin/named/doc/bog/named.boot.primary | 78 + usr.sbin/named/doc/bog/named.boot.secondary | 77 + usr.sbin/named/doc/bog/named.local | 75 + usr.sbin/named/doc/bog/ns.me | 127 + usr.sbin/named/doc/bog/resolv.conf | 67 + usr.sbin/named/doc/bog/root.cache | 102 + usr.sbin/named/doc/bog/setup.me | 88 + usr.sbin/named/doc/bog/types.me | 163 + usr.sbin/named/doc/bog/ucbhosts | 118 + usr.sbin/named/doc/bog/ucbhosts.rev | 86 + .../doc/i-d/draft-andrews-dns-ascii-02.txt | 109 + .../i-d/draft-andrews-dns-hostnames-02.txt | 339 + .../doc/i-d/draft-andrews-dns-more-02.txt | 262 + .../doc/i-d/draft-ietf-dnsind-2ndry-03.txt | 670 ++ .../doc/i-d/draft-ietf-dnsind-clarify-01.txt | 334 + .../doc/i-d/draft-ietf-dnsind-defupd-00.txt | 476 ++ .../doc/i-d/draft-ietf-dnsind-dynDNS-09.txt | 1482 ++++ .../doc/i-d/draft-ietf-dnsind-ixfr-07.txt | 391 + .../doc/i-d/draft-ietf-dnsind-notify-08.txt | 423 + .../doc/i-d/draft-ietf-dnssec-secext-10.txt | 2609 ++++++ .../doc/i-d/draft-ietf-dnssec-update-00.txt | 871 ++ .../i-d/draft-manning-dnssvr-criteria-04.txt | 367 + usr.sbin/named/doc/info/49vs483 | 37 + usr.sbin/named/doc/info/AIX | 49 + usr.sbin/named/doc/info/AIX.bsdcc | 66 + usr.sbin/named/doc/info/AIX.bsdcc.too | 73 + usr.sbin/named/doc/info/AIX.makefile | 52 + usr.sbin/named/doc/info/AIX.mkdep | 87 + usr.sbin/named/doc/info/AIX.too | 525 ++ usr.sbin/named/doc/info/AIX3.2-yp | 62 + usr.sbin/named/doc/info/AIX4 | 60 + usr.sbin/named/doc/info/AUX | 20 + usr.sbin/named/doc/info/Cisco | 4 + usr.sbin/named/doc/info/History | 26 + usr.sbin/named/doc/info/Linux | 104 + usr.sbin/named/doc/info/Linux-elf | 361 + usr.sbin/named/doc/info/Linux-libc | 417 + usr.sbin/named/doc/info/NCR | 142 + usr.sbin/named/doc/info/RFS | 26 + usr.sbin/named/doc/info/RUNSON | 44 + usr.sbin/named/doc/info/SCO | 110 + usr.sbin/named/doc/info/SCO-2 | 84 + usr.sbin/named/doc/info/Solaris | 85 + usr.sbin/named/doc/info/SunOS | 4 + usr.sbin/named/doc/info/SunSecurity | 33 + usr.sbin/named/doc/info/SunSecurity-too | 58 + usr.sbin/named/doc/info/Ultrix | 108 + usr.sbin/named/doc/info/Ultrix-VAX | 83 + usr.sbin/named/doc/info/Ultrix-hesiod | 78 + usr.sbin/named/doc/info/Ultrix-ncache | 73 + usr.sbin/named/doc/info/glue | 49 + usr.sbin/named/doc/info/glue.2 | 57 + usr.sbin/named/doc/info/ibm-dyndns | 76 + usr.sbin/named/doc/info/interactive | 574 ++ usr.sbin/named/doc/info/interactive-2 | 138 + usr.sbin/named/doc/info/local-hosts-file | 59 + usr.sbin/named/doc/info/nsmaint | 28 + usr.sbin/named/doc/info/sVr4 | 39 + usr.sbin/named/doc/info/sequent | 99 + usr.sbin/named/doc/info/sequent-too | 289 + usr.sbin/named/doc/info/soa-trouble | 39 + usr.sbin/named/doc/info/solaris | 60 + usr.sbin/named/doc/info/solaris.too | 50 + usr.sbin/named/doc/info/upgrade | 56 + usr.sbin/named/doc/misc/DynamicUpdate | 286 + usr.sbin/named/doc/misc/FAQ.1of2 | 1602 ++++ usr.sbin/named/doc/misc/FAQ.2of2 | 1298 +++ usr.sbin/named/doc/misc/IPv6 | 72 + usr.sbin/named/doc/misc/dns-setup | 1081 +++ usr.sbin/named/doc/misc/domain.ps | 701 ++ usr.sbin/named/doc/misc/purdue-paper.ps | 3424 ++++++++ usr.sbin/named/doc/misc/purdue-thesis.ps | 7129 +++++++++++++++++ usr.sbin/named/doc/misc/style.txt | 172 + usr.sbin/named/doc/misc/vixie-security.ps | 2915 +++++++ usr.sbin/named/doc/rfc/rfc1032 | 781 ++ usr.sbin/named/doc/rfc/rfc1033 | 1229 +++ usr.sbin/named/doc/rfc/rfc1034 | 3077 +++++++ usr.sbin/named/doc/rfc/rfc1035 | 3077 +++++++ usr.sbin/named/doc/rfc/rfc1101 | 787 ++ usr.sbin/named/doc/rfc/rfc1122 | 6844 ++++++++++++++++ usr.sbin/named/doc/rfc/rfc1123 | 5782 +++++++++++++ usr.sbin/named/doc/rfc/rfc1183 | 619 ++ usr.sbin/named/doc/rfc/rfc1535 | 283 + usr.sbin/named/doc/rfc/rfc1536 | 675 ++ usr.sbin/named/doc/rfc/rfc1537 | 507 ++ usr.sbin/named/doc/rfc/rfc1591 | 395 + usr.sbin/named/doc/rfc/rfc1597 | 451 ++ usr.sbin/named/doc/rfc/rfc1627 | 451 ++ usr.sbin/named/doc/rfc/rfc1637 | 619 ++ usr.sbin/named/doc/rfc/rfc1713 | 731 ++ usr.sbin/named/doc/rfc/rfc1794 | 395 + usr.sbin/named/doc/rfc/rfc1876 | 1011 +++ usr.sbin/named/doc/rfc/rfc1884 | 1011 +++ usr.sbin/named/doc/rfc/rfc1886 | 268 + usr.sbin/named/doc/rfc/rfc1912 | 899 +++ usr.sbin/named/doc/rfc/rfc1995 | 451 ++ usr.sbin/named/doc/rfc/rfc1996 | 395 + usr.sbin/named/doc/rfc/rfc2010 | 395 + usr.sbin/named/doc/rfc/rfc2052 | 563 ++ usr.sbin/named/doc/rfc/rfc819 | 1044 +++ usr.sbin/named/doc/rfc/rfc920 | 798 ++ usr.sbin/named/doc/rfc/rfc974 | 399 + usr.sbin/named/host/RELEASE_NOTES | 192 +- usr.sbin/named/host/conf.h | 56 +- usr.sbin/named/host/defs.h | 74 +- usr.sbin/named/host/exit.h | 5 +- usr.sbin/named/host/host.1 | 872 ++ usr.sbin/named/host/host.c | 1315 ++- usr.sbin/named/host/malloc.c | 669 ++ usr.sbin/named/host/port.h | 24 +- usr.sbin/named/host/rrec.h | 73 +- usr.sbin/named/host/send.c | 133 +- usr.sbin/named/host/type.h | 123 +- usr.sbin/named/host/vers.c | 4 +- usr.sbin/named/man/Makefile | 451 ++ usr.sbin/named/man/dig.1 | 18 +- usr.sbin/named/man/gethostbyname.3 | 16 +- usr.sbin/named/man/getnetent.3 | 10 +- usr.sbin/named/man/host.1 | 948 +-- usr.sbin/named/man/hostname.7 | 20 +- usr.sbin/named/man/mailaddr.7 | 8 +- usr.sbin/named/man/named-xfer.8 | 14 +- usr.sbin/named/man/named.reload.8 | 10 +- usr.sbin/named/man/named.restart.8 | 8 +- usr.sbin/named/man/ndc.8 | 36 +- usr.sbin/named/man/nslookup.8 | 7 +- usr.sbin/named/man/resolver.3 | 54 +- usr.sbin/named/man/resolver.5 | 14 +- usr.sbin/named/named/Version.c | 10 +- usr.sbin/named/named/db_defs.h | 17 +- usr.sbin/named/named/db_dump.c | 281 +- usr.sbin/named/named/db_func.h | 25 +- usr.sbin/named/named/db_glob.h | 8 +- usr.sbin/named/named/db_glue.c | 521 +- usr.sbin/named/named/db_load.c | 1274 ++- usr.sbin/named/named/db_lookup.c | 74 +- usr.sbin/named/named/db_reload.c | 9 +- usr.sbin/named/named/db_save.c | 36 +- usr.sbin/named/named/db_secure.c | 6 +- usr.sbin/named/named/db_update.c | 126 +- usr.sbin/named/named/named.h | 4 +- usr.sbin/named/named/ns_defs.h | 44 +- usr.sbin/named/named/ns_forw.c | 323 +- usr.sbin/named/named/ns_func.h | 27 +- usr.sbin/named/named/ns_glob.h | 36 +- usr.sbin/named/named/ns_init.c | 378 +- usr.sbin/named/named/ns_maint.c | 40 +- usr.sbin/named/named/ns_ncache.c | 130 +- usr.sbin/named/named/ns_req.c | 643 +- usr.sbin/named/named/ns_resp.c | 1495 ++-- usr.sbin/named/named/ns_sort.c | 4 +- usr.sbin/named/named/ns_stats.c | 32 +- usr.sbin/named/named/ns_udp.c | 113 + usr.sbin/named/named/ns_validate.c | 17 +- usr.sbin/named/named/pathnames.h | 4 +- usr.sbin/named/named/storage.c | 5 +- usr.sbin/named/named/tree.c | 2 - usr.sbin/named/named/tree.h | 4 +- usr.sbin/named/ndc/ndc.sh | 6 +- usr.sbin/named/reload/named.reload.sh | 5 +- usr.sbin/named/restart/named.restart.sh | 5 +- 180 files changed, 85953 insertions(+), 3618 deletions(-) create mode 100644 usr.sbin/named/CHANGES create mode 100644 usr.sbin/named/OPTIONS create mode 100644 usr.sbin/named/README create mode 100644 usr.sbin/named/TODO create mode 100644 usr.sbin/named/doc/bog/00macs.me create mode 100644 usr.sbin/named/doc/bog/00title.me create mode 100644 usr.sbin/named/doc/bog/Makefile create mode 100644 usr.sbin/named/doc/bog/ack.me create mode 100644 usr.sbin/named/doc/bog/build.me create mode 100644 usr.sbin/named/doc/bog/file.lst create mode 100644 usr.sbin/named/doc/bog/file.psf create mode 100644 usr.sbin/named/doc/bog/files.me create mode 100644 usr.sbin/named/doc/bog/intro.me create mode 100644 usr.sbin/named/doc/bog/manage.me create mode 100644 usr.sbin/named/doc/bog/named.boot.cache create mode 100644 usr.sbin/named/doc/bog/named.boot.primary create mode 100644 usr.sbin/named/doc/bog/named.boot.secondary create mode 100644 usr.sbin/named/doc/bog/named.local create mode 100644 usr.sbin/named/doc/bog/ns.me create mode 100644 usr.sbin/named/doc/bog/resolv.conf create mode 100644 usr.sbin/named/doc/bog/root.cache create mode 100644 usr.sbin/named/doc/bog/setup.me create mode 100644 usr.sbin/named/doc/bog/types.me create mode 100644 usr.sbin/named/doc/bog/ucbhosts create mode 100644 usr.sbin/named/doc/bog/ucbhosts.rev create mode 100644 usr.sbin/named/doc/i-d/draft-andrews-dns-ascii-02.txt create mode 100644 usr.sbin/named/doc/i-d/draft-andrews-dns-hostnames-02.txt create mode 100644 usr.sbin/named/doc/i-d/draft-andrews-dns-more-02.txt create mode 100644 usr.sbin/named/doc/i-d/draft-ietf-dnsind-2ndry-03.txt create mode 100644 usr.sbin/named/doc/i-d/draft-ietf-dnsind-clarify-01.txt create mode 100644 usr.sbin/named/doc/i-d/draft-ietf-dnsind-defupd-00.txt create mode 100644 usr.sbin/named/doc/i-d/draft-ietf-dnsind-dynDNS-09.txt create mode 100644 usr.sbin/named/doc/i-d/draft-ietf-dnsind-ixfr-07.txt create mode 100644 usr.sbin/named/doc/i-d/draft-ietf-dnsind-notify-08.txt create mode 100644 usr.sbin/named/doc/i-d/draft-ietf-dnssec-secext-10.txt create mode 100644 usr.sbin/named/doc/i-d/draft-ietf-dnssec-update-00.txt create mode 100644 usr.sbin/named/doc/i-d/draft-manning-dnssvr-criteria-04.txt create mode 100644 usr.sbin/named/doc/info/49vs483 create mode 100644 usr.sbin/named/doc/info/AIX create mode 100644 usr.sbin/named/doc/info/AIX.bsdcc create mode 100644 usr.sbin/named/doc/info/AIX.bsdcc.too create mode 100644 usr.sbin/named/doc/info/AIX.makefile create mode 100644 usr.sbin/named/doc/info/AIX.mkdep create mode 100644 usr.sbin/named/doc/info/AIX.too create mode 100644 usr.sbin/named/doc/info/AIX3.2-yp create mode 100644 usr.sbin/named/doc/info/AIX4 create mode 100644 usr.sbin/named/doc/info/AUX create mode 100644 usr.sbin/named/doc/info/Cisco create mode 100644 usr.sbin/named/doc/info/History create mode 100644 usr.sbin/named/doc/info/Linux create mode 100644 usr.sbin/named/doc/info/Linux-elf create mode 100644 usr.sbin/named/doc/info/Linux-libc create mode 100644 usr.sbin/named/doc/info/NCR create mode 100644 usr.sbin/named/doc/info/RFS create mode 100644 usr.sbin/named/doc/info/RUNSON create mode 100644 usr.sbin/named/doc/info/SCO create mode 100644 usr.sbin/named/doc/info/SCO-2 create mode 100644 usr.sbin/named/doc/info/Solaris create mode 100644 usr.sbin/named/doc/info/SunOS create mode 100644 usr.sbin/named/doc/info/SunSecurity create mode 100644 usr.sbin/named/doc/info/SunSecurity-too create mode 100644 usr.sbin/named/doc/info/Ultrix create mode 100644 usr.sbin/named/doc/info/Ultrix-VAX create mode 100644 usr.sbin/named/doc/info/Ultrix-hesiod create mode 100644 usr.sbin/named/doc/info/Ultrix-ncache create mode 100644 usr.sbin/named/doc/info/glue create mode 100644 usr.sbin/named/doc/info/glue.2 create mode 100644 usr.sbin/named/doc/info/ibm-dyndns create mode 100644 usr.sbin/named/doc/info/interactive create mode 100644 usr.sbin/named/doc/info/interactive-2 create mode 100644 usr.sbin/named/doc/info/local-hosts-file create mode 100644 usr.sbin/named/doc/info/nsmaint create mode 100644 usr.sbin/named/doc/info/sVr4 create mode 100644 usr.sbin/named/doc/info/sequent create mode 100644 usr.sbin/named/doc/info/sequent-too create mode 100644 usr.sbin/named/doc/info/soa-trouble create mode 100644 usr.sbin/named/doc/info/solaris create mode 100644 usr.sbin/named/doc/info/solaris.too create mode 100644 usr.sbin/named/doc/info/upgrade create mode 100644 usr.sbin/named/doc/misc/DynamicUpdate create mode 100644 usr.sbin/named/doc/misc/FAQ.1of2 create mode 100644 usr.sbin/named/doc/misc/FAQ.2of2 create mode 100644 usr.sbin/named/doc/misc/IPv6 create mode 100644 usr.sbin/named/doc/misc/dns-setup create mode 100644 usr.sbin/named/doc/misc/domain.ps create mode 100644 usr.sbin/named/doc/misc/purdue-paper.ps create mode 100644 usr.sbin/named/doc/misc/purdue-thesis.ps create mode 100644 usr.sbin/named/doc/misc/style.txt create mode 100644 usr.sbin/named/doc/misc/vixie-security.ps create mode 100644 usr.sbin/named/doc/rfc/rfc1032 create mode 100644 usr.sbin/named/doc/rfc/rfc1033 create mode 100644 usr.sbin/named/doc/rfc/rfc1034 create mode 100644 usr.sbin/named/doc/rfc/rfc1035 create mode 100644 usr.sbin/named/doc/rfc/rfc1101 create mode 100644 usr.sbin/named/doc/rfc/rfc1122 create mode 100644 usr.sbin/named/doc/rfc/rfc1123 create mode 100644 usr.sbin/named/doc/rfc/rfc1183 create mode 100644 usr.sbin/named/doc/rfc/rfc1535 create mode 100644 usr.sbin/named/doc/rfc/rfc1536 create mode 100644 usr.sbin/named/doc/rfc/rfc1537 create mode 100644 usr.sbin/named/doc/rfc/rfc1591 create mode 100644 usr.sbin/named/doc/rfc/rfc1597 create mode 100644 usr.sbin/named/doc/rfc/rfc1627 create mode 100644 usr.sbin/named/doc/rfc/rfc1637 create mode 100644 usr.sbin/named/doc/rfc/rfc1713 create mode 100644 usr.sbin/named/doc/rfc/rfc1794 create mode 100644 usr.sbin/named/doc/rfc/rfc1876 create mode 100644 usr.sbin/named/doc/rfc/rfc1884 create mode 100644 usr.sbin/named/doc/rfc/rfc1886 create mode 100644 usr.sbin/named/doc/rfc/rfc1912 create mode 100644 usr.sbin/named/doc/rfc/rfc1995 create mode 100644 usr.sbin/named/doc/rfc/rfc1996 create mode 100644 usr.sbin/named/doc/rfc/rfc2010 create mode 100644 usr.sbin/named/doc/rfc/rfc2052 create mode 100644 usr.sbin/named/doc/rfc/rfc819 create mode 100644 usr.sbin/named/doc/rfc/rfc920 create mode 100644 usr.sbin/named/doc/rfc/rfc974 create mode 100644 usr.sbin/named/host/host.1 create mode 100644 usr.sbin/named/host/malloc.c create mode 100644 usr.sbin/named/man/Makefile create mode 100644 usr.sbin/named/named/ns_udp.c diff --git a/usr.sbin/named/CHANGES b/usr.sbin/named/CHANGES new file mode 100644 index 000000000000..bd2b4f2bc491 --- /dev/null +++ b/usr.sbin/named/CHANGES @@ -0,0 +1,2864 @@ +$Id: CHANGES,v 1.1.1.1 1997/04/13 09:06:11 mrg Exp $ + + --- 4.9.5-p1 released --- + +776. [doc] doc/misc/FAQ.* updated by its author. + +775. [bug] KEY RRs were not allowed to default fields per [DNSSEC]. + +774. [bug] nslookup was overflowing yet another internal data structure. + +773. [bug] syslog was being given an unprotected string to format from. + +772. [debug] a debugging syslog() was made clearer. + +771. [contrib] contrib/host updated by its author. + +770. [bug] nslookup was overflowing an internal data structure. + +769. [port] ultrix linkage hackery removed from res/res_comp.c. + +768. [lint] named-xfer u_char* vs. char*. + +767. [port] shres/sunos updates from the author. + +766. [bug] nslookup was not limiting the number of addresses it handled. + +765. [port] LOG_NOWAIT turned on if available. + +764. [lint] nslookup NULL vs ERROR. + +763. [bug] p_rr() was erroneously reporting short packets. + +762. [bug] minor memory leak fixed (during bad-name syslogging). + +761. [port] NeXTstep portability improved for modern systems. + +760. [bug] NAPTR RR support was incomplete/broken in named-xfer. + +759. [port] The resolver's POSIX.3 conformance is now optional since + it was causing trouble for vendor shared library editing. + + --- 4.9.5-rel released --- + +758. [doc] more Linux libc discussions included. + +757. [doc] RFCs 1876, 1995, 1996, 2010, and 2052 now included. + +756. [contrib] new version of contrib/host received from author. + +755. [bug] nslookup had a latent buffer overrun in initialization. + +754. [port] NCR's flavour of SVr4 is now supported. + +753. [bug] fp_nquery() could read past end of buffer. (fix from BIND 8.1) + +752. [conf] SENSIBLE_DOTS is now the default. SGI can use WANT_PIDFILE. + +751. [doc] the the BOG had an extra "the" in two places. + +750. [bug] erroneous zones weren't resetting z_ftime. + +749. [bug] named-xfer's handling of unknown type codes was not robust. + (it's still wrong but now it's wrong more gracefully.) + +748. [lint] u_char vs. char changes in db_load.c. + +747. [bug] a previous patch had leftovers. + +746. [bug] dangling CNAMEs were not handled properly. + +745. [doc] shres/sunos/INSTALL, ./INSTALL and man/gethostbyname.3 + modernized. + +744. [bug] NAPTR replacement domains were being verified as hostnames. + +743. [port] hpux10.10 makefile cleanup. + +742. [bug] inet_net_pton() was doing bad things to subnets and b'casts. + +741. [func] source and owner are now logged with name errors. + + --- 4.9.5-t6b released --- + +740. [bug] dangling cname checking had a few memory leaks. + +739. [func] SRV support made more complete; NAPTR support added. + +738. [protocol] dangling CNAMEs are no longer considered format errors. + +737. [bug] owner domain names like "*." were not considered valid. + +736. [contrib] new version of contrib/host included. + +735. [doc] added some text to shres/solaris/INSTALL. + +734. [bug] loading a zone with a single line SOA RR killed following line. + +733. [bug] priming could deadlock in odd cases. + +732. [bug] SIGHUP now caught before initial zone load. + +731. [bug] IP/TCP session logging now controlled by #ifdef DEBUG. + +730. [port] untested HPUX 10 support added to top level Makefile. + +729. [port] ultrix vs. _res_close(); ultrix wins. + +728. [bug] several d_rcode references weren't #ifdef'd NCACHE. + +727. [bug] SOA timer warnings now consistently logged at LOG_WARNING. + +726. [protocol] added T_NAPTR as RR type 35, hoping the IANA concurs. + + --- 4.9.5-t5b released --- + +725. [port] shared libraries should work on Linux now. + +724. [bug] "dig @0 VERSION.BIND TXT CHAOS" had never been tested. + +723. [port] Solaris 2.6 has AF_LINK but not sa_len. + +722. [protocol] verify RdLength of A and AAAA RRs. + +721. [port] missing include directories will be made during "install". + +720. [port] solaris and sunos should use native assemblers with gcc. + +719. [port] cleaned up some A/UX linkages. + +718. [func] some SOA sanity checks were changed from errors to warnings. + +717. [port] BSD/named/Makefile needed to have dmalloc.c reference removed. + +716. [protocol] cnames and referrals were generating spurious log messages. + +715. [port] ultrix PCC didn't like a =&, said it was ambigious somehow. + + --- 4.9.5-t4b released --- + +714. [port] contrib/os2-emx now contains files nec'y for OS/2 (EMX). + +713. [func] gethostbyname2(x, AF_INET6) now accepts address literals. + +712. [bug] gethostbyname() wasn't seeing RES_USE_INET6 early enough. + +711. [bug] nslookup was printing IPv6 addresses improperly. + +710. [port] an alignment bug was found and fixed by Cray. + +709. [bug] named-xfer was dumping core on incoming LOC RRs. + +708. [protocol] primary zones are edited to make rrset ttl's coherent during + loading. + +707. [protocol] rrsets with coherent ttl's won't be overridden by new rrsets + with incoherent ttl's. + +706. [port] Ultrix portability restored. + +705. [func] added "limit files XXX" to boot file. + +704. [bug] trace generation code was getting unaligned accesses. + +703. [contrib] added contrib/getkeyby, from gnu@toad.com. + +702. [func] MAXDNAME is now 4*256+1 to allow for \000 and the NUL. + +701. [bug] samedomain() wasn't paying attention to escapes. + +700. [func] allow long text strings in T_X25 RRs. + +699. [port] added base64.c to shres/*/Makefile. + +698. [port] picked some lint out of tools/nslookup/getinfo.c. + +697. [bug] we were calling isupper() without calling isascii() first. + +696. [protocol] a new kind of bad referral is now caught and ignored. + + --- 4.9.5-t3b released --- + +695. [func] Use delete_stale() in preference to delete_all() more often. + +694. [func] DATUMREFCNT is no longer an option. + +693. [port] fixed up the CPPFLAGS usage in the top level Makefile. + +692. [port] fixed up the __ defines (for POSIX.3) in include/resolv.h. + +691. [port] removed all uses of "ssize_t", the world is not ready for it. + (fixed two latent signed/unsigned code bugs in the process.) + + --- 4.9.5-t3a released --- + +690. [bug] the stale() and delete_all() calls in finddata() weren't + respectful toward T_ANY and C_ANY queries. + +689. [lint] miscellaneous compiler warnings were disappeared. + +688. [func] handles insane/unreachable root servers a little better now. + +687. [bug] T1A's core dumps from bad databufs should be all fixed now. + +686. [func] overlong TXT strings should work again. + +685. [port] updated compat/include/sys/cdefs.h to BSD 4.4-Lite (8.7) vers. + +684. [doc] doc/i-d/* added. + +683. [contrib] "nslint" added to contrib/. + +682. [protocol] irrelevant authority information is now correctly ignored. + +681. [func] DO_RELOAD Is no longer optional. + +680. [cleanup] ALLOW_UPDATES is gone. + +679. [port] some systems need _res to be in text rather than bss. + +678. [port] -Dssize_t=int is gone; see portability.h. + +677. [contrib] outdates #671; update to contrib/host version 960808. + +676. [doc] formatting fix to man/named.man8. + + --- 4.9.5-t2a released --- + +675. [lint] various. + +674. [feature] support added for SRV RR (untested). + +673. [protocol] added definitions for EID, NIMLOC, SRV, ATMA, and IXFR. + +672. [bug] fixed decoding problem wrt AAAA in tools/nslookup/debug.c. + +671. [bug] fixed formatting problem wrt TXT in contrib/host/host.c. + + --- 4.9.5-t1a released --- + +670. [feature] added SIG and KEY RR support (without signature or + verification). + +669. [internal] name/number translations are now mostly table driven. + +668. [feature] nslookup now has better[/different] error messages. + +667. [feature] inet_neta(), inet_net_ntop(), inet_net_pton() added. + +666. [bug] parent zone will be reloaded when a child zone changes. + +665. [protocol] RETURNSOA logic has been refined, and now ships "enabled." + +664. [protocol] cached RRsets are now completely flushed when new data arrives. + +663. [port] IRIX shared libraries are now supported. + +662. [port] SCO OSE5 support has been upgraded slightly. + +661. [bug] insane root servers will now be handled correctly. + +660. [bug] TXT RRs are now parsed and displayed in full RFC1035 form. + +659. [port] UXP/DS is now supported in the top level Makefile. + +658. [feature] BIND now checks that UDP checksums are enabled in the kernel. + + --- 4.9.4-p1 released --- + +657. [bug] some configurations were mistakenly disabling cache purges. + +656. [doc] "\ " was causing a line break in zone file parsing. + +655. [doc] named(8) wasn't describing the "response" literal. + +654. [doc] formatting errors fixed in include/arpa/nameser.h. + +653. [doc] doc/misc/DynamicUpdate now has a deprecating comment. + +652. [bug] BSD/nslookup/Makefile was making the wrong links. + +651. [bug] a hashing function should be as simple as possible, + but not simpler. + +650. [bug] dn_mailok() could walk off the end of the name buffer. + +649. [bug] bad names were not exiting through the right code path. + +648. [bug] we were referencing dynamic memory after free()'ing it. + +647. [bug] savename() was bzero()'ing the wrong number of bytes. + +646. [bug] ctypes.h needed to be included in res/res_debug.c. + +645. [port] sys/types.h needed to be included in a lot of places. + + --- 4.9.4-rel released --- + +644. [bug] gethnamadr.c:getanswer() wasn't decrementing buflen. + +643. [contrib] new contrib/misc/gencidrzone. + + --- 4.9.4-t5b released --- + +642. [bug] SOA serial checking was not trying backup servers. + +641. [doc] added doc/rfc/rfc1713. + +640. [bug] don't try to purge the cache on nonrecursive servers. + +639. [bug] sysquery() was not recovering from lack of root servers. + +638. [bug] dnsquery.c wasn't calling res_init(). + +637. [bug] ns_resp() was erroneously detecting name errors. + +636. [bug] nslookup() was returning failure even when fwdrs were avail. + +635. [bug] inet_pton() was returning EINVAL rather than EAFNOSUPPORT. + + --- 4.9.4-t4b released --- + +634. [bug] named-xfer was writing AAAA RRs to the wrong file pointer. + +633. [port] ULTRIX and RISCOS both need NEED_STRDUP in conf/portability.h. + +632. [bug] BSD/named/Makefile was installing its man page in section 1. + + --- 4.9.4-t4a released --- + +631. [bug] nslookup was dumping core on bad 'server' commands. + +630. [bug] dig was not able to print SRV RRs. + +629. [bug] dig was seeing artificial protocol errors printing AAAA RRs. + + --- 4.9.4-t3b released --- + +628. [bug] "stub ." changes were being updated in the wrong place. + +627. [bug] forgot to remove fourth arg from inet_pton() in tools/addr.c. + +626. [port] was missing -DSPRINTF_CHAR in one spot in the top Makefile. + + --- 4.9.4-t3a released --- + +625. [api] inet_pton()'s signature changed due to ipng@sunroof discussion. + +624. [port] shres/* should work again (was broken by inet_ntop, inet_pton) + +623. [bug] sprintf() doesn't return "int" on DomainOS, either. + + --- 4.9.4-t2a released --- + +622. [bug] sprintf() doesn't return "int" on SunOS or ULTRIX. + + --- 4.9.4-t1a released --- + +622. [bug] more print errors in the name validation logic fixed. + +621. [feature] added support for IPv6 addresses to the resolver and daemon. + see doc/misc/IPv6 for details. + +620. [perf] XSTATS off by default. client stats now in XSTATS. + +619. [conf] LOC_RR is on by default (it's an RFC now). + +618. [perf] pulled in memory saving NAME,NAMELEN,NAMESIZE logic from + development source pool. + +617. [bug] we were logging at INFO priority even when not loading a + zone due to certain kinds of database format errors. + +616. [bug] truncated responses were not being forwarded. + +615. [contrib] added contrib/misc/gencidrzone.pl, updated contrib/host. + +614. [bug] minor and latent bug in dcalloc() fixed. + +613. [bug] the RFC952 + "_" code wasn't strict enough. + +612. [bug] the PTR name check was using ipv6.int rather than ip6.int. + +611. [conf] changed "check-names forwarded" to "check-names response". + +610. [doc] man page said check-name, should have said check-names. + +609. [bug] in res_send(), query ID mismatches weren't handled in VC's. + +608. [bug] res_send() would overrun its buffer when parsing truncated + replies for its diagnostic output. + +607. [bug] EINTR wasn't causing a select() restart in res_send. + +606. [bug] fixed a race condition related to SO_LINGER. + +605. [bug] some "lame delegation" messages were printing wrong information + +604. [bug] uncached out of zone CNAMEs were returning SERVFAIL rather + than timing out; this prevented the client from retrying. + +603. [bug] lame delegations will now try other servers rather than just + SERVFAIL'ing. the old behaviour was too draconian. + +602. [security] we were cycling back through the volatile cache when searching + for glue to match the bootstrap cache. + +601. [bug] we were not recognizing upward zone cuts in some circumstances + +600. [API bug] getnetbyaddr() was taking a long, rather than a u_long. + +599. [bug] PX RRs were not properly handled by named-xfer.c. + +598. [bug] WKS RRs were written incorrectly in db_dump.c. + +597. [bug] named would not create a brand new pid file. + +596. [bug] memory leak in ns_resp.c plugged. + +595. [bug] another wildcarding bug (in ns_maint.c) stomped. + +594. [contrib] added contrib/misc/settransfer-gaine.shar. + +593. [security] db_load() will allow invalid SOA ANAMEs, for now. + +592. [bug] dig and nslookup needed code from 4.9.4-T1A for AXFR (#589). + +591. [bug] dig and nslookup both dumped core if dn_expand() failed. + +590. [port] changed __RES to 19960229 due to dn_isvalid() API addition. + +589. [bug] named-xfer was unable to handle some compliant AXFR streams. + +588. [security] call dn_isvalid() from db_load() to catch zone naming errors. + +587. [security] added function dn_isvalid(), called from dn_expand(), per CERT. + +586. [bug] dangling NS RR's (no A RR's in cache) weren't recoverable. + +585. [bug] named was ignoring the cache for "." even after priming. + +584. [bug] ns_resp() could dump core during some kinds of query restarts. + +583. [bug] default logging priority for lame delegations now LOG_DEBUG. + +582. [doc] added RFC 1912 which expands upon RFC 1537. + +581. [port] BSD really does not have SIGIOT any more, stop using it. + +580. [bug] getnetent() could mangle /etc/networks input lines. + +579. [bug] db_dump was printing -1 for TTL wherever default TTL was used. + +578. [port] many scanf/printf patterns misused %lu, DEC AXP didn't like it. + +577. [bug] named-xfer and res_debug were mishandling "\\" in TXT/HINFO. + +576. [bug] "limit" directive was setting current but not max system limit. + + --- 4.9.3-p1 released --- + +575. [port] Ultrix/Hesiod named responses are oversized, we were + incorrectly accepting them and then overwriting the stack. + +574. [port] BSD/OS 2.1 required some ./BSD/Makefile changes. + + --- 4.9.3-rel released --- + +573. [contrib] put in "951231" version of contrib/host. + +572. [doc] new file doc/info/SCO-2 concerning porting. + +571. [bug] zones whose master files contained only $INCLUDEs were + incorrectly considered to not have any RR's (old bug.) + +570. [doc] trivial man/named.8 tweak. + +569. [doc] minor documentation tweak to shres/solaris/ISSUES. + + --- 4.9.3-beta34 released --- + +568. [bug] very minor initialization bug fixed in tools/dig.c. + +567. [bug] disabled VALIDATE; all this code is trash and will be removed + along with ALLOW_UPDATES very early in the next alpha cycle. + we are now back to the B26 level of stability, with several + minor bug fixes from intervening betas. + +566. [bug] fixed memory leak introduced in #565. + + --- 4.9.3-beta33 released --- + +565. [proto] we were generating truncated RRsets due to VALIDATE bugs. + +564. [proto] we weren't stopping early enough on some kinds of truncation. + +563. [doc] added doc/info/Solaris, concerning Sun Patch-ID# 102165-02. + +562. [bug] named/ns_resp.c had an overzealous #ifdef. + +561. [port] tools/nslookup/getinfo.c had an ANSI C nit. + +560. [port] shres/netbsd and Makefile's netbsd stuff was wrong. + +559. [doc] shres/* documentation had more pathname problems. + +558. [port] SCO OSE5 portability problem (minor). + +557. [doc] added doc/misc/style.txt out of my archives. + +556. [contrib] updated contrib/arlib, contrib/dnsparse (really!). + +555. [bug] quoted newlines were still broken even after #509. + +554. [bug] dangling CNAME cache chains could make named dump core. + +553. [bug] forwarders didn't work well with VALIDATE. + + --- 4.9.3-beta32 released --- + +552. [doc] ./Makefile had some out of date comments. + +551. [bug] shres/sunos/* needed some fine tuning. + +550. [contrib] contrib/dnsparse replaced with a later version. + + --- 4.9.3-beta31 released --- + +549. [bug] "make links" hadn't been tested in a while; shres/* req'd chg. + +548. [bug] shres/sunos/* needed some fixups due to a late Sun patch. + +547. [doc] Makefile comments for Linux were out of date. + +546. [doc] OPTIONS had an incorrect path name and some factual errors. + +545. [bug] shres/sunos/Makefile had some incorrect path names. + + --- 4.9.3-beta30 released --- + +544. [port] some systems with broken CPP's wouldn't compile ns_req.c. + +543. [bug] query restart bug in ns_resp.c. + + --- 4.9.3-beta29 released --- + +542. [port] rearranged signal() calls to make POSIX + SYSV possible. + +541. [port] padded _res to 512 bytes; moved initialized data to res_data.c. + +540. [port] added experimental shres/netbsd/ directory. + +539. [bug] we weren't able to load 0 ttl's in zone files. + +538. [doc] BOG corrections. + + --- 4.9.3-beta28 never released --- + +537. [contrib] new contrib/lamers/ directory. + +536. [bug] there was a possible deadlock condition over missing glue. + +535. [bug] previous patch to db_load() was misapplied. + +534. [bug] several ancient cache corruption bugs fixed in ns_resp(). + +533. [root] root servers required a new ``no-fetch-glue'' option. + +532. [bug] all kinds of stuff was broken under shres/ due to new subdir. + + --- 4.9.3-beta27 released --- + +531. [bug] limited support for labels containing \. (literal dot.) + +530. [bug] new root.cache file imported from internic. + +529. [bug] another set of bug fixes to the zone transfer scheduler. + +528. [bug] VALIDATE reenabled but without packet editing. + +527. [bug] glue passing through CNAMEs will now be cached properly. + +526. [bug] deleted zones should no longer cause core dumps. + +525. [func] several messages changed to be more informative. + +524. [bug] loc_ntoa() was returning a pointer to a stack variable. + +523. [bug] wildcard RR's were being deleted by purge_zone(). + +522. [bug] "ndc start" didn't work if no pid file existed. + +521. [port] Sun SVR4 fixes, including shared library support. + +520. [bug] we weren't using "forwarders" if "options forward_only" + wasn't set (in some cases.) + +519. [bug] named-xfer wasn't called res_init(). + +518. [bug] lots of byte order nits. + +517. [bug] "tools/host -a" now prints in RR format again. + +516. [proto] minimum TTL changes from five minutes to zero seconds. + +515. [bug] SOA TTL of zero is no longer considered an error. + +514. [bug] division by zero error corrected in ns_refreshtime(). + +513. [bug] we had the #ifdefs nexted backwards in . + +512. [bug] we were able to dump core while tracing due to a NULL pointer. + +511. [bug] DiG wasn't able to suppress all of res_debug.c's comments. + +510. [doc] BOG typos. new doc/misc/FAQ. new site in MIRRORS. + +509. [bug] another side effect of the inet_aton() change was fixed, + this time it was breaking escaped newlines in named.boot. + +508. [contrib] new contrib/host, contrib/misc/settransfer, contrib/msql. + contrib/umich/lame_delegation was withdrawn by the author. + +507. [bug] DiG didn't do ndots and was trigger happy about options. + +506. [port] NextStep, Interactive, SCO, Digital UNIX, ULTRIX improvements. + +505. [bug] we were overly restrictive about nonauthoritative NXDOMAINs. + +504. [bug] named was generating corrupt responses in au truncation. + +503. [port] shres/* now supports SunOS 4.1.4. + +502. [bug] nslookup wasn't behaving properly in the presence of "ndots". + +501. [bug] we now delay 5 seconds after an "ndc restart" or "ndc start". + +500. [bug] change #494 was incomplete. + + --- 4.9.3-beta26 released --- + +499. [bug] we needed a SERVFAIL in an error case. + +498. [bug] some recently added byte order bugs were stomped; + data_inaddr() was made slightly more conservative. + +497. [port] local_hostname_length() moved to its own source file. + +496. [bug] Beta25's change to compat/Makefile was wrong. + +495. [bug] tools/host.c wasn't processing cnames properly. + + --- 4.9.3-beta25 released --- + +494. [func] "include" directive in boot file is no longer fatal if the + specified file doesn't exist or is not readable. + +493. [bug] new interfaces' UDP sockets weren't affecting select()'s mask. + +492. [doc] another round of changes and cleanups to the BOG. + +491. [bug] various cleanups to lame server detection. + +490. [port] completely new shres/* from CKD. + +489. [doc] added a ***NOTE*** to ./INSTALL about operating system files. + +488. [port] GNU C Library changes for include/netdb.h. + +487. [func] named will try a little bit longer to bind() its stream socket. + +486. [contrib] new packages: contrib/inaddrtool and contrib/trnamed. + +485. [func] ns_forw will no longer forward to 0.0.0.0, 255.255.255.255, + or 127.0.0.1. + +484. [port] more POSIX_SIGNALS conversions. + +483. [bug] compat/Makefile wasn't passing on all definitions to submakes. + +482. [port] bad bug in NeXT C Library worked around. + +481. [doc] RFC 1794 is now included in doc/rfc. + +480. [bug] a debugging printf() was accessing freed memory. + +479. [port] doc/info/NCR has been replaced. + +478. [port] doc/info/interactive has been replaced by its author. + +477. [port] UNIXWARE 2.X changes. + +476. [bug] ns_init.c was creating files in "//tmp" rather than "/tmp". + +475. [bug] inet_aton() reverts to mostly previous behaviour. + +474. [bug] PTR->CNAME support added; name test fixed. + +473. [func] added gethostbyname2(), improved its man page. + +472. [port] Linux connect() can reconnect, res/res_send.c now knows this. + +471. [build] several "clean" targets were not removing ".depend" files. + +470. [bug] dqflush() was using memory after free()ing it and never closing + any file descriptors and not clearing select()'s mask bits. + + --- 4.9.3-beta24 released --- + +469. [bug] We no longer share static return buffers across functions in + res_debug.c. + +468. [logging] An extraneous haveComplained() was removed from ns_resp.c. + +467. [portdoc] Linux build doc changes. + + --- 4.9.3-beta23 released --- + +466. [doc] big reorg to BOG. + +465. [doc] minor corrections to man pages. + +464. [port] NEC Makefile changes. + +463. [contrib] random updates. + +462. [bug] res_send() wasn't always clearing errno, which led to + false-negative return conditions. + +461. [port] minor u_char-vs-char lint removed. + +460. [port] backed out a recent Linux portability change. + + --- 4.9.3-beta22 released --- + +459. [port] made a major lint pass. + +458. [func] paved over a bad security hole in named-xfer. + +457. [bug] negative caching vs (secure_zone | cname checking) bugs. + +456. [port] moved all:: target to be first in top level Makefile. + +455. [bug] res/res_send.c had a bad macro definition. + +454. [doc] RUNSON moved to doc/info. MIRRORS file added. + +453. [quality] learntFrom() was reformatted. + +452. [doc] minor changes for shlib/ISSUES, tools/nslookup/nslookup.help. + +451. [port] linux, NCR, Solaris, NExT portability changes. + +450. [func] added RES_NOALIASES flag, needed for security. + +449. [bug] we were defining a nonstandard DNS header flag as PR. no more. + + --- 4.9.3-beta21 released --- + +448. [port] systems with hundreds of network interfaces need big ioctl()'s. + +447. [func] zones without NS RR's or with mismatching SOA RR's are caught. + +446. [bug] miscellaneous fixes to res/gethnamaddr.c. + +445. [bug] the secure_zone logic was incomplete. + +444. [bug] bootfile "options" parsing was broken. + +443. [bug] named-xfer was munging incoming WKS RR's. + +442. [contrib] various cleanups. + + --- 4.9.3-beta20 released --- + +441. [contrib] put in DOC 2.1.1. + +440. [func] change/addition to the "lame delegation" syslog message. + +439. [bug] emulation macros WIFSIGNALED and WIFEXITED were bogus. + +438. [bug] missing "#ifndef INVQ" added. + +437. [doc] man pages and BOG updated to include new B18/B19 features. + +436. [port] PIDDIR definition removed from Solaris 2.X. + +435. [port] shres/Makefile fixed for new location of inet_addr.c. + +434. [port] getnetnamaddr.c had a spurious "#if defined(sun)" + +433. [bugs] random typos and glitches from the beta19 afternoon rush. + + --- 4.9.3-beta19 released --- + +432. [func] we should be much more resistant to root cache corruption now. + +431. [bug] tcp socket send buffer will now be set at 16K to avoid blocks. + +430. [bug] ns_req.c had two cases where it could overflow a buffer. + +429. [bug] the "." zone will now respect the setting of NO_GLUE. + +428. [func] 0.0.0.0 A RR's are allowed in the DB but we won't use them. + +427. [func] "options fake-iquery" added, users of Sun nslookup take note. + +426. [port] include/netdb.h now has some #ifdef sun defs in it. + +425. [bug] negative caching bugs in findns() and in ns_forw.c. + +424. [func] "limit transfers-per-ns" directive added. + +423. [bug] infinite loop fixed in named-xfer.c's version number printing. + +422. [bug] gethostbyname() of a dotted quad in an auto variable will + no longer cause the caller to consume random stack trash. + +421. [port] inet_aton() has moved from lib44bsd.a back to libresolv.a. + +420. [func] any punctuation character can now terminate an inet_aton(). + +419. [port] use sigemptyset(), sigaddset() - in preference to sigmask(). + + --- 4.9.3-beta18 released --- + +418. [bug] ``close(11): interrupted system call'' now fixed. + +417. [bug] big name servers would never refresh all their zones since + tryxfer() wasn't a "fair" scheduler. it is now. + +416. [func] SOA syntax errors will now lead to dead zones, not dead srvrs. + +415. [func] expiration values lower than refresh values cause a warning. + +414. [func] added "options" and "limit" directives to named.boot. + +413. [port] new file: doc/info/solaris.too. + +412. [bug] possible div-by-zero in ns_init.c. + +411. [port] NeXTstep, UNIXWARE, ISC, AUX changes/additions to top Makefile. + +410. [port] POSIX_SIGNALS covers a bit more code now. + +409. [bug] CNAME->PTR responses were triggering syslog() unnecessarily. + +408. [port] res_send.c's socket() calls were using the wrong arguments. + this was benign but with IPv6 looming, we need to clean it up. + +407. [bug] the delayed free() logic (DATUMREFCNT) didn't account for + the possibility of some NULL pointers, in ns_resp.c. + +406. [bug] we were walking through purged list items in ns_forw.c. + this caused bad things to happen when glue expired. + +405. [bug] "attempted update to auth zone" is no longer a warning. + +404. [bug] fp_nquery() is now used everywhere, fp_query() is deprecated. + +403. [port] hstrerror()'s result is now declared as const. + +402. [bug] a flakey initialization in the resolver has been fixed. + +401. [port] removed some junk around getnetbyname(), needs testing on suns. + +400. [func] BIND's version number now appears as a comment in zone files + written by named-xfer. + +399. [func] older, bogus HINFO RR's will now be fixed up with warnings. + +398. [bug] "SOA class not same as zone's" is now a zone load error. + +397. [func] all of the syslog() priorities have been lowered. + +396. [doc] added doc/misc/{FAQ.1of2,FAQ.2of2,vixie-security.ps}. + +368. [port] top level Makefile updates: .depend files aren't shipped; + solaris, linux, dec osf/1, dynix build more cleanly. + +367. [port] LOC RR logic has had some lint removed. also named-xfer.c. + +366. [contrib] dnswalk 1.8.3 is now included. + +365. [security] initial query ID is no longer a fixed constant. + + --- 4.9.3-beta17 released --- + +364. named/ndc.sh didn't always exit with nonzero on errors. + +363. include/arpa/Makefile was installing into //. + +362. convex cleanups. osf/1 cleanups. + +361. minor nit in sprintf() format string in tools/host.c. + + --- 4.9.3-beta16 released --- + +360. CRED is long gone. + +359. convex systems have getrusage(). + +358. CPPFLAGS wasn't quite right. + + --- 4.9.3-beta15 released --- + +357. netdb.h now externs h_errno. + +356. fixed odd corner case bug in res_query(). + +355. no BIND beta is complete without a patch to shres/PROBLEMS. + +354. minor addition to the "ndc" command line syntax. + +353. "." domain syslog() raised from LOG_DEBUG to LOG_WARNING. + +352. minor nit in named-xfer.c. + +351. the BSD/* Makefiles were mode 440, are now 444. + +350. new (undocumented) make target: "make mkdirs". + +349. output format change in tools/host.c. + +348. contrib/* updates. + +347. CPPFLAGS variable added to the Makefile tree, should quieten some makes. + nextstep, solaris, and svr4 systems have some new build parameters. + +346. BOG cleanups and addition of PX RR documentation. + +345. more items for RUNSON. + +344. several combinations and permutations of compilation options didn't work. + + --- 4.9.3-beta14 released --- + +343. Type cast fix for #340. + +343. Small change to RUNSON. + +342. Removed fsync() call, it really wasn't nec'y and was causing trouble. + + --- 4.9.3-beta13 released --- + +341. Small fix for #331. + +340. Inverse queries, if enabled, will be logged if QRYLOG is enabled and on. + +339. Nonrecursive servers (-r) will once again sysquery() for missing glue. + +338. named/ndc now preserves the user's $PATH. + +337. SUNSECURITY is now only on for shres/*. + +336. New version of contrib/host has been included. + +335. tools/nsquery.c and tools/nstest.c were moved to contrib/old/. + +334. Portability changes for HP-UX, Solaris, Linux, SCO UNIX. + +333. INVQ (inverse query support) now defaults to "off". + +332. Some of the internal hashing logic for syslog() rate limiting was not + accurate (more things were logged than should have been). + + --- 4.9.3-beta12-patch2 released --- + +331. Default domain in $INCLUDE files is now intuitive (rather than "."). + +330. Lame delegations are now only logged for class "IN". + +329. Format change to XSTATS output to make it more readable. + +328. Bad responses could cause core dumps in DiG, nslookup, etc. + +327. The now-requisite change to shres/* was discovered and put in. + +326. Portability changes for Linux, SCO, ULTRIX3, NeXT. + +325. Bit the bullet and reset all the RCS revision numbers to 8.1==4.9.3.b12. + + --- 4.9.3-beta12-patch1 released --- + +324. Added some missing pieces to the NSAP and NSAP_PTR handling. + +323. Tightened some of the GEN_AXFR code, fixed potential C_HS problem. + +322. Fixed minor niggle in the way "dig" parses its arguments. + +321. Final(?) tuning of the SunOS shres stuff. + +320. Reorganized the SunOS build params in the top level Makefile. + + --- 4.9.3-beta12 released --- + +319. Fixed DiG so that ". IN NS" was the default if no args are given. (Vixie) + +318. Merged the resolver with 4.4BSD's; made a BSD/ subdirectory off the main + tree for easy integration into BSD/OS, FreeBSD, NetBSD, et al; moved the + "master" subdirectory to "conf/master" to cut down on top level clutter. + +317. Lots of last minute fiddling to make Beta12 "right". (cast of thousands) + +316. Minor byte order bug in BIND_NOTIFY. (Grange) + +315. Added code to db_load() to detect "no RR's found" case. (Vixie; Heiney) + +314. "Zone declared more than once" test added. (Grange; Vixie) + +313. XSTATS interval was changed from "no more than once a minute, and usually + every fifteen minutes" to "no more than once an hour, and usually every + hour". (Gianopoulos; Vixie) + +312. Minor stuff in BIND_NOTIFY and the Ultrix and OSF/1 builds. (Heiney) + +311. Continuing hacks to LOC RR (experimental) and shres/*. (Davis) + + --- 4.9.3-beta11-patch5 released --- + +310. Minor BOG patches. (Shapiro) + +309. Minor LOC RR lint. (Heiney; Truck) + +308. Minor STUBS changes in ns_req.c. (Andrews) + +307. Ultrix and OSF/1 now install "man" (not "cat") pages. AIX now installs + *.[0-9] rather than *.0 pages. (Vixie, et al) + +306. conf/Info.* moved to new directory doc/info/*. (Vixie) + +305. NOTIFY could cause multiple simultaneous axfr's. (Andrews; Vixie) + + --- 4.9.3-beta11-patch4 released --- + +304. Minor fixes to PURGE_ZONE, CLEANCACHE, RETURNSOA, and dig. (Mark Andrews) + +303. LOC RR support is now in. (Chris Davis; Vixie) + +302. General portability stuff (with ISC leanings). (Mark Galbraith) + +301. Minor DiG portability fix. (Dima Volodin) + +300. Yet more HINFO fixes. (Gianopoulos) + +299. Really minor patch to tools/nstest.c, plus AIX fixes. (David Bolen) + +298. More shres/* fixes. (Davis; Woods) + +297. Minor SCO fixups. (Eduard Vopicka) + +296. Fixed #include problem in db_glue.c. (cast of thousands) + +295. Minor goofs in the sources. (Grange; Gianopoulos) + +294. Minor patch to the BOG (font problem). (Shapiro; Vixie) + + --- 4.9.3-beta11-patch3 released --- + +293. Minor #ifdef screwup corrected. (Mohamed Ellozy) + +292. Small HP-UX portability change. (Truck) + +291. Minor BOG correction. (Harlan Stenn) + +290. PX RR support. (Pierluigi Bonetti) + +289. Made random refresh interval a little more robust. (Miller; Vixie) + +288. Minor portability changes for DEC OSF/1. (Bob Heiney) + +287. We now do a setvbuf() on outbound AXFR streams since the system's + default size causes more write()'s (and therefore TCP segments) + than we really want. (Paul Mockapetris' idea; Paul Vixie's code.) + +286. Recast all uses of abort() to call private function panic(). This was + nec'y since we use the ABRT (IOT) signal to force a statistics dump, and + having it dump statistics inside of abort() was a bad thing. + (Mark Andrews noticed the problem; Paul Vixie fixed it.) + +285. Minor change to top-level Makefile for OSF/1 man pages. (Shapiro) + +284. Minor change to HINFO stuff. (Gianopoulos) + +283. Minor changes to XSTATS #ifdef's. (Benoit Grange) + +282. Minor change to top-level Makefile for ULTRIX/VAX. (William Gianopoulos) + + --- 4.9.3-beta11-patch2 released --- + +281. Another batch of (minor) HINFO changes. (William Gianopoulos) + +280. Minor formatting changes to keep ctags happy. (Craig Leres) + +279. Minor changes to OPTIONS. (Mark Seiden) + +278. New option XSTATS (default "on" for now). (Benoit Grange) + +277. res_mkquery() wasn't calling res_init(). (Philip Gladstone) + +276. Minor cleanup to shres/INSTALL. (Chris Davis) + +275. We now set a SO_LINGER on outbound zone transfers. (Peter Wemm; Vixie) + +274. Minor portability fix for VAX Ultrix. (Stan Barber) + +273. Fixed two time warp problems. (Bob Heiney; Paul Vixie) + +272. Named-xfer will now log and error and abort if it encounters an RR type + it doesn't recognize. (Mark Andrews; Paul Vixie) + +271. Minor cleanups to the HINFO comparison code in db_update. (Bryan Beecher) + +270. Made CLEANCACHE less of a CPU hog. (Benoit Grange; Mark Andrews) + +269. Add even more branches to the cred/clev decision tree, to make it more + robust about borderline data at zone cuts. (Jack McCann; Mark Andrews) + +268. New option (default: "on" for now): PURGE_ZONE. (Mark Andrews) + +267. Added contrib/misc/{soa-easy,dnsfind}.shar. I will not be including + this in the b11p2 diffs, though it will be in the next full kit. + (Tim Cook) + +266. I finally broke down and made a recommendation in the BOG with respect to + "nameserver 127.0.0.1". (Greg Woods supplied the patch) + +265. Minor portability stuff for SunOS. (Greg Woods) + + --- 4.9.3-beta11-patch1 released --- + +264. 900-second check removed; TTL==0 should work now. (Mark Andrews) + +263. Minor db_save() patch for initializing memory. (Bryan Beecher) + +262. Minor ESIX (SVR4.0.4/gcc) changes. (John Polstra) + +261. Minor dig-related patch to res_send.c. (Mark Andrews) + +260. Minor line number fix for ns_init(). (Havard Eidnes) + +259. NetBSD shared library stuff is now in contrib/misc/netbsd-shlib.shar. + (Matt Ragan) + +258. NeXT portability changes. (Allan Nathanson) + +257. Minor HP-UX portability stuff. (Lewis; Corrigan) + +256. Two medium sized bugs in BIND_NOTIFY. (Don "Truck" Lewis) + +255. Minor lint in ns_req.c. (Mark Andrews) + +254. Minor ndc.sh build problem. (Michael Corrigan) + +253. Minor coding inconsistency in res/res_comp.c. (Jeff Schreiber; Vixie) + +252. Minor BOG addition (SIGIOT). (Bryan Knowles) + + --- 4.9.3-beta11 released --- + +251. If a master zone's serial number goes backwards, named now logs a + warning. (Mark Andrews) + +250. Minor portability nit in ns_forw(). (Simon Leinen) + +249. Another portability problem fixed in ndc.sh. (Corrigan) + +248. Declaration problem with findZonePri() fixed. (Corrigan) + +247. References to CNAMES from MX/NS/MB will now be explicitly logged. (Vixie) + +246. Made the BIND_NOTIFY logic more robust; it still does not match the + current I-D (no delays yet). (Vixie) + +245. Fixed a writable-string problem. Added a lot of ANSI "const"'s. (Vixie) + + --- 4.9.3-beta10-patch1 released --- + +244. Added shres/PROBLEMS file. (Chris Davis) + +243. Corrected the BOG on the meaning of ".". (Doug Luce, Paul Vixie) + +242. SOA's can now be stored in $INCLUDE files. (John Lind) + +241. Rejection of 0.0.0.0 had a potential seg fault. (Mark Andrews) + +240. NoRecurse wasn't preventing queries for missing glue. (Mark Andrews) + +239. WKS nonaggregation test had bad length. (Ed Clarke, Chris Britton) + +238. NeXT library problem worked around. (Greg Wohletz) + +237. Core dump fixed in the dprintf() macro. (Eric Murray) + +236. MBZ fields in new queries were actually stack trash. (Olson, Vixie) + +235. Adds and changes to contrib/: + Added contrib/misc/dnstools.shar, from alt.sources. (Eric Murray) + Added contrib/misc/settransfer.shar (nonrecommended). (Tom Brisco) + Updated contrib/host/* with latest public version. (Eric Wassenaar) + Updated contrib/host/makezones with latest pub. version. (Philip Hazel) + +234. Made the "ps" command needed by ndc.sh a configurable parameter. + + --- 4.9.3-beta10 released --- + +233. Added and reordered a lot of code in ns_resp() to cause it to be + slighly harder to spoof with bad packets. More work needs to be done, + so that named will be as spoof-proof as the resolver has become. (Vixie.) + +232. Added new RR types to include/arpa/nameser.h, per RFC 1700. (Vixie) + +231. New "ndc" command. (Vixie) + +230. The VALIDATE option is now formally deprecated. It has bugs its detection + of invalid responses, and is known to mutilate perfectly valid CNAME + responses, to the detriment of clients. This code will likely be deleted + in the next BIND release, to be replaced by an ``always restart query'' + strategy. (Vixie) + +229. Moved a syslog() so that primary as well as secondary loads are logged. + +228. Resolver functions now reliably set h_errno. (Vixie, Wassenaar) + +227. Expired zones now lose their cached serial number information, giving + an opportunity to refresh a zone after a serial number goes backward. + (Andrews) + +226. Sun386i support crept in on little cat feet. (Brownlee) + +225. UDP packets could be overstuffed by 12 bytes. (Reilly, Vixie) + +224. failing connect()'s in named-xfer will no longer be logged. (Andrews) + +223. merged IETF stream (Vixie): + a. made ALLOW_UPDATES even more optional (it will disappear soon); + b. added NOTIFY option (experimental); + c. cleaned up some comments; + d. removed T_SA (was experimental, replaced by ROUND_ROBIN); + e. made named/Makefile's default CFLAGS -g (it usually inherits -O); + f. random code cleanup; + g. some internal errors are now fatal instead of warnings. + these changes were brought in once it became clear that there would be + another Beta of 4.9.3. + +222. tools/Makefile was using "make" instead of "${MAKE}". (Day) + +221. yet another bug was found and fixed in the SUNSECURITY code. (Brown) + +220. a variable reuse problem in the SUNSECURITY syslog()'s in gethnamaddr.c + was fixed. (Wohletz, Wemm, Vixie) + +219. "stub" root zones now affect the hint cache (STUBS is experimental). + in this situation it is reasonable to not have a "cache" directive, + and some code was reordered to make this possible. (Andrews) + +218. contrib/umich/lame-delegation/LISA-VI-paper.ps is now a proper + PostScript(tm) file. (Davis) + +217. syslog() cleanups in named-xfer.c. (Vixie, Barrett) + +216. shres/Makefile now forces -O. (Braniss, Ray) + +215. New contrib/misc/ctldns.sh. (Bush) + +214. New contrib/misc/dns-peers.info. (Wolfhugel) + +213. BOG and named(8) fixes. (Paffrath, Vixie, Hawkinson) + +212. database input errors will no longer cause the following line to + be ignored. (Gianopoulos) + +211. the TXT RR fixes done so far in 4.9.3 have been backed out; we're + back to the 4.9.2 behaviour. (Gianopoulos) + +210. the authority section will no longer duplicate the answer section + if both would contain the same NS RR set. (Vixie) + + --- 4.9.3-beta9-patch1 released --- + +209. installed marka's patch to CRED that fixes BETA9's flaw. + +208. added comment to README about -l44bsd and inet_aton(). + +207. new directory: contrib/multizdb. highly nonrecommended. + +206. small NextStep change in Makefile. + + --- 4.9.3-beta9 released --- + +205. minor Makefile fix after beta9 was previewed on bind-workers; also, a + new file conf/Info.Linux-more has been included. + +204. BOG fixes. + +203. netlists elements are now + { addr [ "&" mask ] } + which for the EBNF-impaired, means that "&" introduces an explicit mask. + implicit masks are either by-class or 0xffffffff, depending on ALLOW_HOSTS + in the call to get_netlist(). + +202. name compression is now case-insensitive. + +201. duplicate RRDATA won't trigger the new "auth warning" in db_update(). + + --- 4.9.3-beta8-patch2 released --- + +200. added a haveComplained() to limit auth warnings. + +199. fixed idiotic code reordering from patch1. + + --- 4.9.3-beta8-patch1 released --- + +198. a bad-string-termination bug was fixed in getnetanswer(). + +197. an uninitialized-variable bug was fixed in db_update(). + + --- 4.9.3-beta8 released --- + +196. Several minor corrections were made to the BOG. + +195. "clev" now distinguishes between root and TLD (wasn't worth a darn before) + +194. empty nodes in authority zones are now protected from non-auth updates. + (most of db_update() was rewritten to fix/support this.) + +193. negative cache items weren't updated before, now they are. + +192. zone updates from answers were prevented for new types but not if some + rr already existed with that type. fixed. also syslogged. + +191. the cache now distinguishes between authoritative answers and zone rr's. + +190. negative cache items are now marked appropriately authoritative. + +189. CRED is no longer optional. + +188. Another enhancement has been made to HINFO parsing. Named-xfer now + accepts RFC-bogus input formats generated by previous versions of BIND. + +187. SUNSECURITY now forces RES_DEFNAMES on so that relative "localhost" works. + +186. Minor portability fixes for DEC OSF/1, HP-UX. + + --- 4.9.3-beta7-patch2 released --- + +186. i forgot to comment out template Linux lines in top Makefile. fixed. + +185. "bogusns" directive significantly strengthened, for IN-ADDR.ARPA problem. + also fixed a bug in hardcoded root server lame detection. + + --- 4.9.3-beta7-patch1 released --- + +184. Yet another ULTRIX incompatibility has been worked around. + +183. Bogus HINFO RR's will no longer cause corrupt secondary zone files. + +182. NeXT support is now complete. Builds right out of the box. + +181. Updated TODO file. + +180. Added new INSTALL file. + +179. Minor doc fix in OPTIONS file. + +178. Security-related bug fix to new sunos shres/* stuff. + +177. Limited Linux portability was added. + +176. Trailing dots on zone names in named.boot are now ignored. + +175. Random lint was removed. + +174. DiG changes: increment version number (2.1), allow default domain (.). + + --- 4.9.3-beta7 released --- + +173. named-xfer would act strangely if trailing dot domains given as arguments. + +172. setenv() now provided on systems that need it (NeXTStep, e.g.). + +171. doc changes for shres/*. + +170. fixed debugging output problem in ns_req.c. + +169. fixed portability "bugs" on ultrix systems (some tools wouldn't link). + +168. minor functionality change in named/ns_validate.c. + +167. minor lint in res/res_comp.c. + +166. minor change to contrib/doc-2.0/*. + + --- 4.9.3-beta6 released --- + +165. another small adjustment to the Apollo section of the Makefile. + +164. a completely new shres/* was submitted; contrib/sunlibc is deprecated. + +163. INVQ is back on again by default. See README. + +162. another set of patches for obscure corner cases in the HINFO parser. + +161. added new SUNOS4 macro to Makefile and conf/portability.h; this should + fix the trouble folks were having with strerror() on SunOS 4.X systems. + +160. minor Makefile changes. + +159. processes which send outbound zone transfers now close all inherited + descriptors, since they can be longer-lived than the main named. + + --- 4.9.3-beta5 released --- + +158. various lint involving options which are rarely defined. + +157. sunos needed -DBSD=43 rather than -DBSD. + +156. minor memory leak fixed in ns_req.c. + +155. some install directories for DGUX were wrong. + + --- 4.9.3-beta4 released --- + +154. a new man/* hierarchy was installed which should be more portable. + +153. a new contrib/host has been included. + +152. a parsing problem in HINFO was fixed. + +151. a few minor changes to contrib/sunlibc/Makefile. + +150. typo in res_send.c fixed. + +149. fine tuning the credibility-level heuristics. + +148. dn_expand() will fail on names which have bad characters in them. + +147. disappearing zones could cause a core dump in syslog() - fixed. + +146. text of warnings in named-xfer corrected. + +145. limited DGUX, RISCOS support added. + +144. contrib/sunlibc/Makefile MFLAGS/MARGS problem fixed. + +143. another SunOS recv() bug has been worked around. + +142. various BOG fixes. + +141. updated master/root.cache file from latest InterNIC version. + +140. Added ``max-fetch'' to named(8). + +139. NOT_BIND problem in named/tree.c fixed. + +138. minor lint, memory leaks, and portability problems were fixed. + + --- 4.9.3-beta3 released --- + +137. some serious (and recently) dynamic memory bugs were killed. + +136. a reference to uninitialized data was fixed in res_query(). + +135. a RES_STAYOPEN-related bug was fixed in res_send(). + +134. isascii() and isxdigit() now simulated on systems which lack them. + +133. named's local setproctitle() has been renamed to avoid system conflicts. + +132. minor bugfix to negative caching code. + +131. minor bugfix in validation code. + +130. the typestats[] multiple definition problem was fixed. + +129. some Sequent portability changes were folded in. + +128. a new contrib/sunlibc was donated, but hasn't been tested. + +127. minor changes to contrib/sunlibc/Info.*. is anybody using shres/*, tho? + +126. STDIN_FILENO and STDOUT_FILENO are now defined by conf/portability.h. + +125. there is now a ``max-fetch'' directive in the boot file (see the BOG). + +124. there is now a RENICE option in conf/options.h. + +123. the toplevel Makefile has been made slightly more readable. + +122. <> + +121. minor fixups in the lame delegation code. + + --- 4.9.3-beta2 released --- + +120. I upgraded my "-me" macros so that the included doc/bog/file.psf is OK. + +119. NXDOMAIN responses from the negative cache will now always be + authoritative. this is the least of all evils, trust me. + +118. strcasecmp() in compat/lib is now ANSI compliant. + +117. PTR RR's are no longer subject to ROUND_ROBIN processing. + +116. writev() emulation for SCO had a bug. + +115. the resolver no longer calls sscanf() or qsort(). + +114. minor debugging nit cleaned up in res_querydomain(). + +113. IP options on incoming connections are now logged and ignored. This + should probably be done for datagrams as well but not today. + +112. tree.c made portable to non-POSIX/ANSI systems. + +111. NSAP RR's are now supported. NSAP_PTR RR's are deprecated and so left out. + +110. outbound zone transfers are now logged. + +109. various lint cleaned up wrt 16-bit integer handling. + +108. named-xfer was exiting bogusly on some systems due to flakey kernel + interfaces. i've rewritten some of the code to avoid the problem, + and fixed plenty of lint in the process. + + --- 4.9.3-beta1 released --- + +107. Apollo systems were dumping core because of a missing #include . + +106. NSAP and NSAP_PTR RR's now recognized by res_debug() (but nothing else). + +105. NeXTstep 2.1/3.0 and Pyramid dcosx now nominally supported. + +104. res_querydomain() was doing Bad things if given an empty name. + + --- 4.9.3.a5.p4 published --- + +103. named-xfer's exit cause is now syslog()'d more often/clearly (Paul Vixie). + +102. I left out a ";" in the new compat/lib/ftruncate.c file (Craig Leres). + +101. X25, ISDN, and RT RR support have been added (Michael A. Meiszl). + + --- 4.9.3.a5.p3 published --- + +100. Another glitch (very minor this time) was found and fixed in the + QSERIAL logic. This was a performance problem only -- reliability + wasn't affected (Bob Heiney). + +99. SCO UNIX is now supported, thanks in part to Michael A. Meiszl. + +98. I witlessly used a GCC-only feature (automatic aggregate initialization) + in a5p2. Kazuhisa Shimizu was the first to report it. + + --- 4.9.3.a5.p2 published --- + +97. NEC EWS4800 EWS-UX/V Rel4.0/Rel4.2 support (from Kazuhisa Shimizu). + +96. Some of the security checking logic in the new res/gethnamaddr.c's + getanswer() was happening in the wrong order (thanks, Bob Heiney). + +95. Minor typo in the man/host.1 man page (caught by Robert Elz). + +94. DiG was groping core if given more than 10 tokens in a lookup string + (Michael J. Corrigan provided the fix). + +93. Queries to INADDR_ANY ("0.0.0.0") come back from the system's primary + interface, and res_send() was discarding them. A proper fix would add + a lot of code to the resolver, so for now we'll just work around it + (Michael J. Corrigan reported this). + +92. The "data outside zone" syslog message was misleading (Bob Heiney). + + --- 4.9.3.a5.p1 published --- + +91. res/gethnamaddr.c wouldn't compile on non-BSD systems since it depended + on LOG_AUTH which is a post-4.3 feature (Bob Heiney reported this). + + ****** 4.9.3-alpha5 released ****** + +90. redid most of my previous round of prototyping now that i truly + understand which variables and parameters should be u_char and which + ones should be char. (Vixie) + +89. added (optional) prototypes for _getshort() and _getlong(); this means + the calls all need casts of their argument since it usually isn't a + u_char*. Also prototyped res_query(), res_search, and the nominally + private but for some reason not static res_querydomain(). (Vixie) + +88. security related: responses from servers we didn't query are now ignored + by the resolver; answers with QDCOUNT!=1 are treated as errors; name + mismatches in the question or any part of the answer field are syslog()'d + and ignored. (Vixie) + +87. fixed a bug in the SUNSECURITY stuff. (Vixie) + +86. a long standing bug in the name hashing code that caused it to ``hash in'' + the case of the name's characters, was found and fixed. (twice.) (Vixie) + +85. Bob Heiney did some performance analysis and concluded that samedomain() + was soaking down cycles at a rate disproportionate to its usefulness; he + reimplemented it in a way that violated the (good,fast,cheap) rule. + +84. the RFC1101 implementation of getnetby*() was using case-sensitive + string compares. + +83. fp_query() will no longer try to format packets larger than PACKETSZ, + and for perversity, dig and named are now prepared to handle replies + (via TCP) larger than PACKETSZ. new function: __fp_nquery(). (Vixie) + +82. multiline initial syslog() is fixed (Bill G). + +81. Don Lewis sent in a big update for the lame delegation logic. Vixie fixed + one bug. Bryan Beecher had a big hand in this. + +80. TCP replies can now be up to 8K in size (don walsh). + +79. validation bug fixed (don lewis). + +78. BOG patches from mike minnich and others. + +77. more lint fixes for Cray (norb brotz). + +76. a new hostname(7) man page was contributed by Art Harkin. + +75. DESTINC is now a settable Makefile parameter (Marion Hakanson). + +74. the zones-not-transferring bug is finally gone. + +73. now using LOG_PERROR in openlog(); many parallel dprintf()'s are gone. + +72. inability to retrieve serial number via UDP now forces TCP transfer. + +71. removing secondary zone files and SIGHUP'ing will now force a transfer. + +70. "cache" directives can now specify "/class" as documented in the BOG. + +69. Mark Andrews' fix for the ns_forw core dump is in. + +68. Keith Bostic fixed some typo's in the man pages. + +67. Compiling without NCACHE is possible now (John Hanley). + +66. Bill Gianopoulos and Alan Barrett finally agreed on what glue was and + Bill's alpha4 patch is mostly gone now, and one new idea was added. + +65. BOG improvements (Vixie, Brooks). + +64. Mark Andrews' CLEANCACHE (recommended) and RETURNSOA (__NOT__ recommended!) + are in. RETURNSOA should not be enabled at this time; there's nothing + wrong with the code but it will cause cache corruption in older servers + and may not be necessary. The jury is still out. + +63. outbound zone transfers are now logged (requested by Ron Johnson). + +62. serial number queries sent out for zone transfer purposes will now be + limited to a maximum of four (4) simultaneous outstanding; this keeps + BIND from overflowing its UDP socket buffer when hundreds of zones must + be checked (still trying to fix Paul Pomes' problem). + +61. short A RR's in responses will no longer lead to purify errors due to short + malloc()'s in savedata() (thanks to Nicholas Briggs for reporting this). + + ****** 4.9.3-alpha4 released ****** + +60. manifest constants used instead of "sizeof({u_,}int{16,32}_t)", for + systems which lack 16- and 32-bit integers (paul vixie for norm brotz). + +59. zone transfer anti-glue logic made RFC1034-compliant (bill gianopoulos). + +58. seg fault in sysquery() (from LAME_DELEGATION) fixed (mark andrews). + + ****** 4.9.3-alpha3 released ****** + +57. a big, hefty patch was made to the negative caching logic (mark andrews). + +56. named-xfer will no longer scramble the default origin (alan barrett). + +55. random bits of lint found and removed (mario guerra). + +54. convexos-10 is now supported (jukka ukkonen). + +53. seg fault in database dumps (from VALIDATE) fixed (don lewis). + +52. problem with extra bogus 0.0.0.0 A RR's from VALIDATE fixed (mark andrews). + +51. the LAME_DELEGATION logic once written into 4.8.3 by don lewis has + been substantially reworked and put into 4.9.3-alpha3 (bryan beecher). + +50. all instances of "sizeof(HEADER)" were changed to "HFIXEDSZ" to make + life easier for the cray. also, "struct HEADER" in include/arpa/nameser.h + uses just bit fields now, for portability to 64-bit systems without + 16-bit integer types. (norb brotz suggested it; paul vixie did it). + +49. build changes for NeXT and AIX systems (artur romao; c. wolfhugel). + +48. random sunshlib changes (piete brooks). + +47. minor fixes for solaris build (carson gaspar; paul pomes). + +48. a few bugs were wrung out of the BOG (per hedeland; vixie). + + ****** 4.9.3-alpha2 released ****** + +47. several obscure Makefile problems were fixed (vixie). + +46. there is now a per-primary-NS quota for simultaneous zone transfers; this + will cut down on the retry thrashing seen on servers that are secondary for + thousands of zones (vixie). + +45. a bug introduced by change #23 has been fixed (marten terpstra; apb). + +44. the "data outside zone" messages are now consistent (piete brooks; vixie). + +43. several #include's were reordered in res/*.c and a few #ifdef's were + changed; BIND should now run OK on DGUX (henry miller). + +42. several changes to the conf/options.h and Makefile (vixie): + -> SVR4 has been added as a top-level Makefile CDEFS option + -> SYSV has moved from conf/options.h to the top level Makefile + -> INVQ is now an "#ifdef" rather than a "#if" + +41. resolver no longer uses initialized static data, which should make shared + libraries easier to generate (vixie did it, at the urging of many others). + +40. now compiles on Apollo DomainOS (don lewis). + + ****** 4.9.3-alpha1 released ****** + +39. lots of lint found and fixed (craig leres). + +38. illegal enum compare fixed in named/ns_stats.c (vixie). + +37. missing ')' added in SUNSECURITY section of res/gethnamaddr.c (h miller). + + ****** 4.9.3-prealpha released ****** + +36. ***REMOVED*** + +35. various bugs were fixed in the negative caching (vixie; mark andrews). + +34. several debugging and dump output problems were fixed (mark andrews). + +33. TXT RR's can now be read from zone files even if they lack quotes; + the RFC doesn't say quotes are needed (jim martin). + +32. limited support for AIX-3 is now included (christoph wolfhugel). + +31. SUNSECURITY is now an obvious default in ./Makefile (p killey; b beecher). + +30. VC queries that time out are now GC'd and SERVFAIL'd (mark andrews). + +29. HP-UX 9.0's top-level makefile variables have been changed (don lewis). + +28. various fixes for tools/host.c (jim martin; mark andrews). + +27. syslog messages logged by SUNSECURITY will now include the address of + the host that's having problems (david morrison). + +26. systems whose connect() calls fail if a socket is already connect()'d + will now have their sockets closed and recreated in res_send() (piete + brooks; mark andrews; vixie). + +25. res_send() will now corrected reset its "connected" variable when the + connectedness of a socket changes (mark andrews). + +24. SERVFAIL responses will no longer terminate the res_search() inner loop, + thus catastrophic problems with early search elements will no longer + prevent res_search() from trying later search elements (bryan beecher;vix). + +23. non-NS RR's for delegated subzones will no longer be accepted in a zone + transfer (alan p barrett). + +22. the setting for _PATH_PIDFILE is now overridden by the Makefile (l hume). + +21. named.restart.sh now has a smaller path with %DESTSBIN% first therein; + this should prevent the vendor version of named from being exec'd by + accident (leigh hume). + +20. big change: statistics are now kept "per name server" rather than as + a single global array. the /var/tmp/named.stats file format has changed + quite a bit, so older awk/perl scripts are likely to stop working. + +19. big change: every RR now keeps a pointer to a "nameser" struct; this + currently permits SIGINT-initiated dumps to include the address of all + non-zone data, which will help with tracking down corrupt data. + +18. db_load.c was missing two #ifdef/#endif's for CRED (mike minnich). + +17. don't aggregate SOA or WKS RR's in the cache (vixie). + +16. minor cosmetic changes (vixie). + +15. fixed typo in compat/Makefile ("LIBDIR" -> "DESTDIR") (rob davies). + +14. fixed spurious "accept: interrupted system calls" (vixie). + +13. named will now start as many named-xfer's as it should; previously it + lost track of the need for transfers at the beginning of each maint + cycle. also, we don't bother asking for an SOA if we know that our + zone is out of date. i've changed the transfer metrics so that more + transfers can happen concurrently, and maint cycles come more often. + (andrew partan; vixie). + +12. a number of LOG_ERR and LOG_CRIT syslogs were downgraded to LOG_NOTICE + (rob davies; vixie). + +11. sequence number checking now treats "zero" as a special case. + (craig leres; andrew partan; vixie). + +10. MFLAGS no longer used explicitly, since it is often used implicitly + (mark andrews; vixie). + +9. ADDAUTH is no longer considered experimental (tony stoneley; vixie). + +8. several obscure type bugs fixed (don lewis). + +7. signal handlers all now preserve errno (don lewis). + +6. TTL deprecation made more portable (don lewis). + +5. now compiles on Apollo DomainOS and is generally more POSIX-ish (don lewis). + +4. bryan beecher's "query" tool has been promoted to tools/ and renamed to + dnsquery. minor changes were required in several Makefiles (vixie). + +3. "make links" at the top level will now make a higher resolution link tree, + which makes porting easier on some systems (ian dickinson). + +2. Convex feof() bug now has a workaround (jukka ukkonen). + +1. gethostby*() will no longer overwrite its fixed-size array if a host with + too many addresses is handled (reported by piete brooks, fixed by vixie). + +-------------------------------------- 4.9.3 above, 4.9.2 below + +4.9.2 ------------------ FINAL ----------------- Paul Vixie + +57. updated TODO, README files. + +56. fix to contrib/sunlibc/Makefile. + +55. several new items in contrib/. + +54. Corrected bad command line parsing bug in tools/dig.c; also added the + old query timing code back in (thanks to Havard Eidnes). + +53. Ported contrib/decwrl/host.c to the modern interfaces. + +4.9.2 ------------------ BETA5 ----------------- Paul Vixie + +52. A number of optimizations that fell out of negative caching and/or the + validation code have been turned off in order to avoid confusing older + nameservers and their unfortunate assumptions about co-invariants. + Mark Andrews and Robert Elz were the principle debuggers and contributors + to this part of the effort. + +51. We're now much more portable to systems without Posix or BSD signals, + thanks to Bill Wisner. + +50. tools/host.c now has more reasonable error messages and can deal with + negative caching servers. + +49. Lots of Makefile gaffes are now fixed. + +48. New "host" in contrib/host/, complements of Eric Wassenaar. + +47. AFSDB support is now complete, thanks to Chris Everhart. + +46. The bug whereby named would sporadically return NXDOMAIN when it should + have sent back a referral has been fixed. + +4.9.2 ------------------ BETA3, BETA4 ----------------- Paul Vixie + +45. Robert Elz has provided updated LOCALDOMAIN environment variable + processing, making it more like resolv.conf's "search" than "domain". + In the spirit of this I have added a RES_OPTIONS environment variable + and a corresponding "options" keyword to resolv.conf. All of this is + documented in the man pages and in the BOG. Robert has also contributed + several bug fixes to the validation and negative caching code. + +4.9.2 ------------------ ALPHA ----------------- Paul Vixie + +44. BETA1, BETA2, and three patches to BETA2 have all come and gone without + itemized descriptions in this file. I'll provide the RCS history on the + code to anyone who asks, but basically what's been happening is that some + core dumps were fixed, others added, then those were fixed too. Meanwhile + RFC 1535 has been published, codifying CERT's concerns and our answer to + them. BIND is now RFC 1535 compatible. RFC's 1535, 1536, and 1537 are + now included in the doc/ directory. Note that Mark Andrews supplied many + of the fixes to the core dumps, some of which were introduced by me and + some by ISI's negative caching and/or validation code. + +43. patch05 to ALPHA2 (930908) released: this includes new DNSRCH logic to + correct a serious problem that CERT called me with today. the change is + subtle and will have the effect that names which could match either as + fully qualified names or partially qualified names using the local search + list will be found as fully qualified. previous releases would have found + them first through the local search list. local search lists are a bad + idea in my opinion; see new SEARCH_DEFAULT option in OPTIONS file for more + information. also in this release: limited Solaris support, in the form + of POSIX-style signal handling used on systems which support (or require) + it. as of this patch, 4.9.2 has a good chance of compiling out of the box + on Solaris, modulo makefile edits. dig and host should be more portable + now, too. + +42. patch04 to ALPHA2 (930908) released: this corrects several borderline + syntax errors in various Makefiles (Sun and Ultrix makes complained); + it corrects a coredump on Ultrix systems (which aren't really as POSIX + as i thought they were); it lets dig and nslookup compile again on SunOS; + and it cleans up some dirty junk in named-xfer.c. this stuff is really + really minor but i would like to see it tested on a Sun system before the + beta. + +41. patch03 to ALPHA2 (930908) released: this uses compat/include by default + which is helpful on BSD/386 systems and shouldn't hurt any others except + perhaps real 4.4BSD systems (and maybe not even those); it removes Bryan + Beecher's SHUFFLE_ADDRS option since he and I agree that Marshall Rose's + ROUND_ROBIN stuff is more general and cleaner; it includes various patches + to the documentation sent in by several folks (please print the BOG and + let me know if you find problems in it); it fixes "make depend" problem + in "man/" subdirectory; it fixes several outright bugs in Gregory Shapiro's + SECURE_ZONES code; it removes an obscure syslog() that should have been a + dprintf() ("validate_count -> 0"); it fixes a bug in NCACHE whereby a T_ANY + query for a name which was negatively cached but had children would return + _answers_ with the T_ANY type for subsequent queries; several newer syslog + messages were reworded to make them clearer; a portability bug in the + SUNSECURITY logic was fixed; another in the RFC1101 logic was fixed; + support for the PAGER environment variable was added to nslookup (sorry, + i know we're in functional freeze but this will enable development in the + next cycle and it was pretty simple) and only affects the "view" and "help" + commands. + +40. patch02 to ALPHA2 (930908) released; this includes more fixed from Mark + Andrews, this time to Anant's NCACHE stuff (memory leak and functional + bug). Also included is a patch from Gregory Neil Shapiro to his SECURE_ + ZONES code, which I hadn't noticed since I don't run it here. + +39. patch01 to ALPHA2 (930908) released; this includes some fixes from Mark + Andrews to his "clev" and ADDAUTH stuff. The "clev" patch fixes a problem + on all servers; the ADDAUTH stuff is still experimental so most users will + not be affected by it. Dave Morrison also sent a patch for the USE_UTIME + logic, which is important for ULTRIX systems. + +38. 4.9.2-ALPHA2 released on 930908. + +37. Mark Andrews sent an initial attempt at implementing ADDAUTH, which will + eventually allow named to include authority and glue RR's with all + authoritative answers. I am not sure that the design goal is right, and + the implementation currently sends back glue RR's but no authority RR's, + so I'm recommending against using this for now. But since it changes some + internal interfaces in a harmless enough way, I'm including the changes. + +36. Marshall Rose's ROUND_ROBIN code snuck in at the last hour. This is the + best answer I've seen to the problems purported to be solved by SA RR's, + and my wording in the OPTIONS file shows this. + +35. These items from TODO is now done: + + [vixie@pa.dec.com 25apr93]: clean up debugging + replace all "#ifdef DEBUG...fprintf(...)...#endif" with dprintf(...) + which would be a macro that only expands to an fprintf() if DEBUG is + set. dprintf(x, (args)) with x as the log level. perhaps change log + levels to be symbolic, and perhaps make them a mask instead of a limit. + + [vixie@pa.dec.com 25apr93]: clean up #ifdef's and portability + add and use function prototypes. make everything static that can be. + externs should only be in .h files (add more .h files, per module if + needed, to cover these). add "export" keyword (null define) to make + it clear which names are exported and which are static. all top-blevel + names in a module must be "export" or "static". + + [gshapiro@wpi.edu and vixie@pa.dec.com 26apr93]: access control + "xfrnets" is ok but what we really need is full access control per + zone rather than a global list of acceptable client nets. this is + especially important if you send /etc/passwd via zone transfer. + + [postel@isi.edu anant@isi.edu jaffe@noc.rutgers.edu + 28apr93]: negative caching + Paul: + We'ed like to have included in 4.9.1 + our implemention for negative caching. + --jon & Anant. + + [vixie@pa.dec.com 16may93]: inet_addr needs to die + to be replaced by calls to inet_aton, which doesn't confuse the + broadcast address with bad addresses. + + [Paul: I know you said that you'd like to wait for the IETF DNS WG to + "bless" an official load balancing scheme, but I'll be adding my + shuffle A records to BIND 4.9 for use here at U-M anyhow. The code + mods to existing source files are minimal since the bulk of the work + is done in a separate .c I added. If you don't want SA records to + move into 4.9.1 unless they become official, please just toss this + first entry. --bryan@umich.edu] + + [bryan@umich.edu 25apr93]: add "shuffle A" records + There are several schemes for adding some kind of load balancing + capability to the DNS. Our "Shuffle Address" (SA) records are one + stab at this, and since they're in use at U-M, I need to add them + so we can use BIND 4.9 here. + + [bryan@umich.edu 25apr93]: add AFSDB records + AFSDB records were proposed in RFC xxxx. We use them here at the + University of Michigan, so I need to add them for our copy of + BIND 4.9. + + [bryan@umich.edu 25apr93]: small fix to resolver's p_cdname() + The current copy of p_cdname() in the resolver does not work + for query responses larger than 512 bytes (which can happen when + using TCP). A very small modification changes the "sanity check" + argument (the second one) to dn_expand() from "msg + 512" to + "cp + MAXCDNAME". (This showed up very recently.) + +34. While waiting for some last minute changes from volunteers, I looked + at my work queue and saw that asp@uunet.uu.net had asked a while ago + that named not fork/exec a named-xfer unless it had already determined + that the serial number was out of date. This is important to sites like + UUNET and DECWRL, which have thousands of "secondary" lines in their + named.boot and can take hours to check all the serial numbers at boot + time if named forks/execs named-xfer and lets named-xfer compare the + serial numbers, rather than comparing them in named and only fork/exec'ing + a named-xfer if it's actually neccessary to do a transfer. In spite of + C's lack of threads, this only took a few hours to do. So it's in. + +33. Gregory Shapiro's "secure_zone" changes are in. See the BOG. + +32. Internals changes: STATS is no longer optional; ns_req() has been split + into three functions for readability. Convex systems are now supported. + You can now define LOG_FAC in conf/options.h if you want to syslog as + LOG_LOCAL1 or some other non-LOG_DAEMON value. The mkstemp() problem on + ULTRIX has been fixed. More dead code has been eliminated. + +31. Large TCP queries are now printable in debug mode (which is used by + "dig" and "nslookup"), thanks to a patch and a lot of patient explain- + ations from Bryan Beecher. + +30. Data from subdomains ("deeper zones") is now considered more credible + than data from parent zones, if both are authoritative. This permits + a subdomain's data to differ from its parents delegation information + and have the most-local information supercede the least-local. Mark + Andrews sent this in, and it is nonoptional. + +29. rossc@ucc.su.oz.au's SUNSECURITY patch is now included, along with + marka@syd.dms.csiro.au's performance improvement to it. Note that + I am violating my own policies by including this, since it came + without a corresponding patch to OPTIONS, conf/options.h, and the BOG. + +28. Interfaces with multiple addresses were not being handled properly. + This is an issue for 4.3-Reno and later BSD systems, including BNR2 + ("Net-2") and 4.4BSD. Multiple addresses are not properly handled + as if they were all aliases for the localhost. + +27. Jukka Ukkonen sent me some patches for the Convex, + which I've put it but cannot test. + +26. sob@tmc.edu (Stan Barber) sent me new versions of contrib/host/host.c + and contrib/host/send.c, which I have installed but not tested. I am + still waiting for someone to update the version in tools/host.c, which + is going to be a lot more work. Contact me via e-mail if you want to + help. + +25. My credibility stuff from the original 4.9 (and before that, KJB) + was operating under a ``scorched earth'' policy due to a brain fault + on my part when I wrote the code originally. Tim.Goodwin@pipex.net + discovered this and sent in a patch. Note that throwing out glue is + generally OK since glue is generally NOT OK, but disposing of it after + ~20 references is a lot better than disposing of it after 1 reference. + +24. NS RR sorting on forwarded and system queries was not happening + unless more than 1024 milliseconds of RTT variance existed among + the servers. This was a good value for development and testing + but not for production use. The value is now 128 milliseconds. + No, this should not be a configurable in the boot file. + +23. I am including a file doc/FAQ which was posted to usenet as: + From: craig@ecel.uwa.edu.au (Craig Richmond - division) + Newsgroups: comp.protocols.tcp-ip.domains + Subject: FAQ: Setting up a basic DNS server for a domain + Date: 3 Aug 1993 10:53:51 GMT + Organization: The University of Western Australia + Lines: 1088 + Message-ID: <23lg3v$1go@uniwa.uwa.edu.au> + Summary: Step by Step implementation of a DNS server + Keywords: FAQ DNS setup + +22. named-xfer now syslogs if the remote server's serial number is _lower_ + than ours, which does seem like a bad thing. per@erix.ericsson.se + (Per Hedeland) sent this in. + +21. man/resolver.3 had a typo on the exp_dn argument to dn_expand. fixed. + (Steve Alexander sent this in.) + +20. include/sys/cdefs.h moved to compat/include/sys/cdefs.h since some + systems have their own which must be used. the top-level makefile + must be edited if you are on one of these systems, since the default + CFLAGS includes this new directory as a -I directive. sys/bitypes.h + has also moved. + +19. A neccessary bug fix for ISI's VALIDATE/NCACHE code has been incorporated. + If you had to rebuild without these turned on in options.h to get your + CNAME lookups to work again in an earlier 4.9.2 ALPHA, you can turn them + on again now. + +18. The q_system field of the query structure has been removed in favor of + a q_type field containing bit definitions. The old PRIMING_CACHE magic + cookie is no longer used. Go to the end of the universe, do not pass go. + +17. Converted to ANSI C. All functions are static unless they are actually + needed outside the current module ("file" in C terminology); static + functions are declared with prototypes if they are forward-referenced. + Externally visible functions are declared in separate header files, with + prototypes. ns.h and db.h have been split into four new header files: + db.h -> db_defs.h db_glob.h db_func.h + ns.h -> ns_defs.h ns_glob.h ns_func.h + + The *_defs files contain only structure and type definitions, and macro + definitions. Nothing that generates text or data space in the executable + is declared here. + + The *_glob files contain only global variable declarations, which used to + be defined in the various *.c files in a more or less random fashion. The + declarations are "extern" if included from non-main()-containing files, but + are defined globally and given initial values in main()-ish files. This + reuse of the same declarations insures that the type and size declarations + match between definitions and external references to them. + + The *_func files contains function prototypes for global ("extern") + functions. The prototypes are all optional so will not break non-ANSI + systems. Note that I don't have such a system any more so I may be wrong. + +16. Removed all remaining references to "short" or "long" that did not + depend on the vague semantics of those types. Most uses were actually + depending on a size of 16 bits for short and 32 bits for long, and there + are processors/compilers where each of these types is different. This + work was begun in 4.9 and is now complete. Note that some structs that + are used in large data structures use "char" for 8-bit integers. It helps. + +05Jul93 - ALPHA Released + +This is the cleanup release after 4.9. I'm going to try the TCSH style of +logging the changes; let me know if you think it's a bad way of doing it. + +15. the resolver now includes an implementation of RFC 1101, which allows + network names to be encoded in the DNS tree rather than in /etc/networks. + this implementation is by rps@matuc2.mat.uc.pt (Rui Pedro Mendes Salgueiro) + i put the test program and original documentation in contrib/rfc1101/. i + would like to see their main.c ("nettest") turned into a tools/nettest, + but i'm not willing to do the work myself. it needs a man page, etc. + +14. as expected the initial HS zone transfer stuff didn't work that well. + thanks to , retries after failed SOA queries will use + C_IN rather than falling through to C_HS inappropriately. + +13. ns_init.c was fcntl(SETFL)'ing in a destructive way. it now does a + fcntl(GETFL) to get the old option mask and then |'s in the new flag. + this patch came from Eduard Vopicka . + +12. there are two new conf/Info.* files; check 'em out. + +11. ultrix (some versions, especially the vax ones) libc.a had some bad + naming conventions for some resolver routines. getshort/putshort just + have to be real functions, not just macros, or you can't link anything + with this resolver. patch was sent by . + +10. sethostent(x) for host files was sticky for nonzero 'x' (avalon@anu.edu.au) + +9. hp9000s700 is now supported in include/arpa/nameser.h (avalon@anu.edu.au) + +8. statistics dumps now print the time in decimal-seconds-since-1970 in + addition to the old "ctime" format, for ease of debugging. (Peter Koch). + +7. systems with 14-character filename limitations have apparently been + having trouble in named-xfer since its temporary file names are bigger + than they can handle. ash@hp sent in some patches a while ago, enabled + with SHORT_FNAMES in conf/options.h, to deal with this appropriately. + We should probably just generate short names always. + +6. Some security stuff from ISI. According to Anant Kumar : + + The validation procedure is the major change here. Currently, we + accept anything from a server, as long as we had asked it a question. + This implies that a malicious server can really send us any data and + we not only pass it on, we also cache it for as long as the TTL + holds. This can be really bad for our health and for that of those + who use the DNS. + + We add this procedure to verify for each RR returned by a server + that it is indeed authoritative for either that zone, or for a + parent zone. We end up trusting the root servers for everything! + Also, the more rich our cache is the more choosy we become about the + data we add on to it. This stuff is all ifdef'd with "#ifdef VALIDATE" + + The negative caching stuff adds on a d_rcode field to the databufs. + Any positive entry now shows a NOERROR there while negative entries + have either a NXDOMAIN or NOERROR_NODATA. NOERROR_NODATA rcode is + never returned. It is used only to differentiate, within the + internal database, between negative and positive entries. We use the + regular hash table (hashtab) to store negative entries, too. Only + authoritative answers are negative cached, for NTTL (parameterized, + currently 10 minutes) seconds. Non-authoritative NXDOMAINs or + NOERROR with zero RR count, now generated, are now accepted but + never cached. This is ifdef'd with "#ifdef NCACHE". + +5. "make install" now has a prayer of working for the man pages. an observation + was made that net2++ systems _require_ formatted "cat" pages and that older + systems are _able_ to use them, so that's all we install. + +4. i wrote man pages for named.reload, named.restart, and named-xfer. these + were actually in 4.9.1 for 4.4BSD. + +3. unneeded functions in compat/lib will now generate placeholder symbols, to + make sure that the linker doesn't generate ugly-but-harmless warnings. + +2. my ignorance of the true meaning of _POSIX_SOURCE has been corrected, + along with the ugly-but-working code in conf/portability.h and elsewhere. + +1. non-resolver routines moved from res/ to compat/lib/. this will shorten + libresolv.a and make it easier to integrate new BIND releases into Net-2 + descendents such as 4.4BSD and BSD/386. + +4.9.1 ------------------ + +This is the integration of the changes that were made for 4.4BSD. This +release will not be published. Changes include: + +doc/BOG/*: many changes to improve appearance of the output, including + orphan-avoidance and better tab stops. Sent to me by someone on + the net who deserves thanks but I've lost the original mail. Oops. + +include/*: the CSRG people weren't entirely pleased with the interface + changes i made to the res_*() and inet_*() functions. in particular, + the changes from "long" to "u_int32_t" were too sweeping in their + opinion since Posix is already working on standardizing them and + might look unkindly on an apparently-still-evolving interface. also, + the possibility that all the vendors will change their implementations + to match the new interface is apparently rather dim. therefore most + externally-visible occurances of the int32_t type have been changed + back to "long" in the resolver interface. we believe that this should + still be portable to Cray and AXP machines, but i'll wait to hear from + someone who can actually try it out and let me know. + +tools/*: the "net2" version of "lex" requires some additional flags and libs, + and this had implications for the Makefiles and the dig.c source file. + nslookup's man page is now in man/ rather than tools/nslookup, for + consistency. + +named/*: last-minute 4.9-FINAL changes to named-xfer.c and db_load.c resulted + in corruption of TXT records on zone transfers, and a high number of + useless syslog(SYS_ERR) messages about zones already being up to date. + these last-minute changes have been massaged into better shape and are + now a lot readier for prime time than they were. a lesson was learned. + + the inet_aton() function is now used where appropriate, rather than the + old inet_addr(). this is just an evolutionary move that should have no + practical implications. bad addresses in the "tcplist", "bogusns", and + "sortlist" directives (from named.boot) are now syslogged. + + some open files are still inherited by named-xfer from named, but they + are properly closed now. + + the SIGXFSZ signal is now accepted as an alias for SIGHUP, in support + of the wierd DEC Hesiod implementation. no practical significance. + +res/*: one important bug fix in the gethostent() stuff, and a whole bunch of + evolutionary include file changes. + +include/*: include/sys was moved to compat/include/sys, since systems that + do not need it really really really need to get their own instead. + at some point i'm going to move the res/*.c files that are needed for + compatibility but not really part of the resolver, into compat/lib. + +general: there are more settable parameters in the top-level Makefile, and + they are propagated downward into the subdirectories' Makefiles. you + should not have to edit any Makefile except the top-level one. Note + that "make links" still creates local Makefiles in the build directory + because "mkdep" still edits the Makefiles on most systems. + +4.9-FINAL ------------------- + +Kevin Dunlap sent in some changes for the BOG. So did a lot of other folks. + +Someone asked about AXP-OSF, so I did a trivial 64-bit port. Porting to +other 64-bit systems should be simple now. Someone also sent in some MIPS +RISCOS portability changes, which were simple and therefore were put in. +Note that some type names have been added to BSD 4.4 as a result of this +work; they are going to be in in BSD 4.4 but they are in a +local include file called in this distribution, with +appropriate #ifdef's in the include files that depend on them. Those of you +who are porting to 64-bit platforms where "long" isn't 32 bits should be +using these new names for your types; there was no standard before this, +but the names we've added for BIND 4.9 and BSD 4.4 are going to be proposed +to Posix at some point. Sometimes it's just not OK for "int" to be the +"natural integer size of the machine" and you just _have_ to tell the compiler +how many bits you want. + +The NIC added a new root server, thus pushing the size of a nonauthoritative +root server response (which includes the root server list in the answer as +well as the authority sections) over the 512-byte limit. This showed up a +long-term BIND bug wherein it failed to set the TC ("truncation occurred") +bit if truncation occurred anywhere but the answer section. Since truncation +was occuring at the end of the packet, in the additional data section, this +meant that BIND was generating truncated responses without setting TC in the +response header. Upon further investigation, I found that BIND ignored TC +on responses it received from other name servers. RFC 1035 states that RR's +from truncated responses should not be cached; with creative interpretation +of the exact 1035 wording, I found a way to reach this goal while still +caching the answer section (as long as the truncation occurred in some other +section, which 1035 gives no definitive way to determine but I'm happy with +my guess). + +While researching the above, I finally broke down and added credibility +output to the zone dump files. They are in the comments so should cause +no trouble. There's more work to be done on the dump output; in particular, +Phil Almquist proposed and even prototyped a "tagging" of all RR's with the +A RR of the nameserver that sent them to us; this feature should be added +and the dump output should include it. This would add a lot to our ability +to track down corrupt data. + +Don Lewis and I had more discussions about TC and ended up agreeing that the +right thing to do is to set TC on responses that overflow in the answer or +authority section, truncating at an RR boundary, but do not set TC on responses +that overflow in the additional-data section (truncating at a {name,type} +boundary). This actually solves the root server problem pretty well, since +BIND 4.9 will, when it tries to use an NS whose A isn't in the cache, generate +a sysquery() for the missing A. (Heck, additional data TTL's are depreciated +at the rate of 5% per use, so this would end up happening pretty quickly even +if we did cache a partial {name,type} -- but now we won't have to.) + +While trying to fix all of this stuff I ended up moving some functions around +to avoid duplicating them in different source files, and I reformatted some +source lines that went over 80 characters. I also made a few things "static" +that used to be unneccessarily global. More of that will happen in 4.9.1. + +DEC's product version of MIT Hesiod uses SIGXFSZ for what we do with SIGHUP; +since the default for SIGXFSZ is to exit, it seemed prudent to wire it up to +do what SIGHUP does instead, so that this BIND can run on DEC Hesiod servers. + +At the request of several people, I integrated the USC "dig" and Rutgers +"host" tools into the distribution. This required some changes to the +resolver library's debugging output formats, which will be visible in +nslookup, nsquery, and any other tool that sets the RES_DEBUG option. +Note that there is no support for "DEFNAMES" in this version of dig, due +to design changes between 4.8 (from which "dig" is derived) and 4.9. there +is no reason in principle why it can't be made to work, but it doesn't work +now. therefore only fully-qualified names can be looked up with this "dig". + +I had to change the name of the resolver "state" structure to be "__res_state" +for standards conformance (really, it is not reasonable to expect that because +a program includes it will never define its own structure called +"state". This change highlights the imperative that any application which is +relinked against this resolver must first be recompiled against these include +files (notably ). This is true for almost all versions of libresolv. + +I asked for items for the "TODO" list and got quite a few. Check them out +before you hack; someone else may already have started doing what you want to +do. I also asked for tools for the "contrib" subdirectory and got 650KB worth. +They make the BIND 4.9 distribution a lot larger than 4.8.3 was, but the extra +bytes are well worth their weight. + +Kenneth Almquist (no relation to Phil, as far as I know) posted a patch for +res_send() that lets it keep track of servers that are responding "SERVFAIL" +or some other fatal condition; these servers are NOT used for retries of the +current query. This information is not persistent between calls to res_send() +since future calls will probably be for different {name,type} queries, which +will not neccessarily fail in the same way. This change is trivial and makes +a measurable difference in the amount of DNS traffic on my local net. + +4.9-BETA ------------------- April 17, 1993 -- Paul Vixie -- DECWRL + +"Peter Koch" 's previous patch caused core +dumps on some systems. I fixed part of it and Peter sent me a fix for +the rest of it. All is now well. + +The Bind Operations Guide in doc/BOG has been updated to 4.9. Also, the +man page in man/named.8 has had some patches applied. The copyrights are +all fixed now. Let's get this thing OUT of here! + +4.9-ALPHA ------------------- March 15, 1993 -- Paul Vixie -- DECWRL + +There was a really bad bug affecting wildcards. I received a patch +from "Peter Koch" which fixes some of +it, but I can't quite motivate myself to fix the rest of it since I +know that what's _really_ wrong is going to require chainsaws and +dynamite to fix and that'll add another year to the release. I think +that this patch will hold us for a while. + +There are a LOT of portability changes that I'm holding onto, especially +including 64-bit fixes. Do not submit any more portability changes +until 4.9.1 opens. Go ahead and make them, but be prepared to remake +them later. Let me know what you are doing but don't send me any diffs +for portability until I ask for them. 4.9 has been stuck in the barrel +for way too long already -- patches that don't fix RFC-noncompliance or +core dumps will just go into my "todo" folder (which is presently a +black hole of great mass). + +4.9-ALPHA ---------------- Febrtuary 2, 1992 -- Paul Vixie -- DECWRL + +Mostly portability fixes. The nslookup "lex" problem is BSDI-specific +and I'm not going to hold up release because of it. This will be the +last alpha release before the public beta. It is, as usual, running +the DEC.COM primary name service and has done so for more than a week +without any problems. + +4.9-ALPHA ---------------- January 10, 1993 -- Paul Vixie -- DECWRL + +Once I get the known bug in nslookup (see below) fixed, this version is going +to go into public beta. I would appreciate it if everyone would try it out. + +KNOWN BUG IN THIS RELEASE: something wild is going on inside of the yylex() +routing on BSD/386 systems. It only affects nslookup. I'm still trying to +figure out how I'm going to debug this; lex experts, please see what's going +on. None of the changes since the 930105 release should have been capable +of producing this change, but something is sure doing it. + +I finally fixed the {GET,PUT}{SHORT,LONG} macros to stop issuing warnings +on HP-UX systems. They are also warning-free on Ultrix(SPIM,VAX), BSDI(386), +and SunOS(SPARC) systems. I took the plunge and changed the internal functions +in res/res_comp.c to depend on these macros instead of duplicating the code, +and everything still works. + +Tom Limoncelli found three ancient memory leaks. I fixed two of them +but the last one looks too much like a "cannot happen" for me to be +willing to experiment with it. Besides which, it's "very" minor. + +Uses setsid() on POSIX systems. PID file is now optional. (arc@sgi) + +Comments (";" or "#") are now allowed in resolv.conf (arc@sgi). + +Documentation and copyright changes in README. + +Known to compile on NeXT machines. + +Some portability changes for AIX, whose CC is very picky. + +I forgot to mention in the 921227 release that T_RP is supported (arc@sgi). + +I included a number of changes that Alan Barrett has been trying to get +in since the 921221 version. Most are portability-related, and the few +things that are functional are changes to my own previous additions :-), +so I'm fairly sure that they are doing the right thing. Alan's changes +include: + + include/arpa/nameser.h + improved error diagnosis in the BYTE_ORDER configuration. + + changed hp9000 test to hp9000s300. As far as I know, there is + no hp9000 preprocessor symbol. Should probably add other + hp9000s tests, but have not done so. + + named/ns.h + Moved the XFER-related stuff from the end of the file to near + the top, where it is grouped with similar stuff. + + Makefiles: + Add SYSLIBS variable, so folk can compile with -lBSD easily. + + Changed install targets to make them easier to customise. + + make links wasn't handling named.{reload,restart}* + + Add ${CDEBUG} flag to link step. Some debuggers don't work + right if the program isn't linked with the -g flag. + + struct timeval members are declared as unsigned long on some systems. + Add casts to (long) in several if statements that appear to assume + that tv_sec is signed. + + PID_FIX in ns_main.c controlled more than just whether or not the + pid file gets fixed. + Changed it to control only that one feature. + + For debugging, it is useful for a nameserver to listen to non-standard + port, but to forward requests to a standard port. + Add "-p remote/local" option to named/ns_main.c. + Also needed some other changes elsewhere. + + Don't forward back to the host that asked us a question, unless they + asked from some port other than their nameserver port. This allows a + dig or nslookup user on a host to ask us questions with + recursion-desired, where we are willing to recursively ask the + nameserver on their host. However, if a nameserver asks us something + we will not recurse back to them. + nslookup() in named/ns_forw.c checks for this and returns -1. + ns_forw() and sysquery() notice this and return SERVFAIL. + + Moved the nsContainsUs functionality from a separate routine + into nslookup(). No need to do the same tree walk several times. + + While trying to track down various problems, added detection + and logging of errors in several syscalls in ns_main.c. + + Avoid integer overflow in roundtrip time calc in ns_resp. + This needs a definition for INT_MAX. + + Fixed root zone transfer bug. Also corrected some slightly misleading + comments in the doaxfr() code, and added some more comments. + +4.9-ALPHA ---------------- January 5, 1993 -- Paul Vixie -- DECWRL + +This one was built and tested on Ultrix 4.2 (SPIM, MIPS CC and GCC), +BSD/386 (Gamma.4), Sun SPARC (4.0.3, sorry, that's the latest I have), +4.3BSD Reno (VAX, PCC), and Ultrix 3.0 (VAX PCC). + +Moved res/defs.h to conf/portability.h; named/options.h to conf/options.h. + +Portability changes for O_NDELAY. SUNOS is really strange about this. + +Removed some unneccessary goto's added to ns_main.c on 1jan. Oops. + +Art Harkin of HP sent in a number of small (read: obviously correct) +improvements, some related to portability, some to functionality. + +4.9-ALPHA ---------------- January 1, 1993 -- Paul Vixie -- DECWRL + +Changed all O_NONBLOCK to O_NDELAY. Changed all {r}index to str{r}chr. + +Added some SysV support in the form of bcopy->memcpy, bzero->memset. + +Added C_HS support to named-xfer (greg@duke.cs.unlv.edu). + +Fixed a line-number problem in asp's "include" logic (asp@uunet.uu.net). + +streamq's were being used after free(). bug report from fuat@ans.net +and jpe@ee.egr.duke.edu. bug fix by vixie. + +In the resolver, we now default to address 127.0.0.1 rather than 0.0.0.0. +There's a comment in the code that explains why. + +In the resolver, arc@xingping.esg.sgi.com changed it to use inet_aton() +and included that function for those not running 4.4bsd. + +arc@xingping.esg.sgi.com also provided lots of portability fixes and +general cleanups, in particular to nslookup which he maintains for CSRG. + +4.9-ALPHA ---------------- December 27, 1992 -- Paul Vixie -- DECWRL + +Added strtoul() to libresolv.a since it's yet another neccessary function +that older systems don't have. If we can stomach strcasecmp() we can sure +handle this. + +Moved res/named/gethostnamadr.c to res/gethnamaddr.c (note basename change) +and res/named/sethostent.c to res/sethostent.c. Since the host table stuff +isn't in separate files any more I saw no reason to retain the subdirectory. + +Updated all the copyrights and applied the small lint changes that bring +the baseline of this version from "4.8.3 as seen on ucbarpa" up to "4.8.3 +as released with net-2". Thanks to the alpha testers for pointing this out +to me and for sending in the diffs. + +With much howling and screaming, I ported this to UMIPS (MIPS System V). +There are a lot of really bad things going on in their libc.a, and now +they're going on in BIND as well. + +I added a "res/defs.h" file and then proceeded to include it from all kinds +of files that aren't in res/. I'm thinking of moving it but I'm also trying +to figure out where -- include/ is the wrong place. res/defs.h has in it all +the ugly ifdef's needed to figure out whether this is a late-model BSD system, +a POSIX system, or just old. + +All the "#endif" and "#else" cpp directives now have comments around their +annotations. It turns out that System V CPP complains about "#endif DEBUG" +but has no problem with "#endif /*DEBUG*/". In many cases where the #ifdef +was obviously visible and unambiguous, I simply removed the annotation. + +The "l" is now a ";". Thanks to all who replied :-). + +There was a very bad bug in the named-xfer interface. 'nuff said. + +AIX needs a 32-bit field for PID's. I can't imagine. But it's fixed. + +The "domain" directive in named.boot is now an option, defaulting to off. + +There was a benign bug in sqrm(). + +doaxfr() is now shorter and clearer. + +There is an "include" directive in the named.boot file now. Its syntax is +simple: "include somefile". No quotes, no "#", no . This feature +was in 4.9-ALPHA as well, courtesy of Andrew Partan. I forgot to document it. + +4.9-ALPHA ---------------- December 21, 1992 -- Paul Vixie -- DECWRL + +This release incorporates fixes from a lot of people, including many from +DECWRL. Some fixes are just lint; some are to avoid dumping core on non-VAX +computers; many are to fix promiscuity, corruption, and rudeness. + +Various internal DEC programmers have ported the old 4.8.3 code to various +not-entirely-BSD-like platforms and turned up some interesting lint. All +of this has been fixed. Also, we fixed a bad bug in the handling of timeouts +and SERVFAIL's when forwarders and slave are both used. + +I have made major changes to the code inside the ALLOW_UPDATES ifdef's, but +I don't use it and have never compiled with that option turned on so I don't +know if it still works. Given that SNMP has come and there is an IETF WG for +SNMP management of the DNS, I am thinking very seriously of purging all of the +ALLOW_UPDATES code in 4.9.1. I suspect that Mike Schwartz will let me know if +this is ok.. + +(interrim "KJB" notes) ------------------- March, 1992 -- Paul Vixie -- DECWRL + +If we are about to forward a query for some zone for which we are one of the +servers, we send back a SERVFAIL instead. If we don't have it, chances are +good that the other name servers won't have it either. This is the major +cause of "network meltdown" when the root servers declare you as a name server +for some zone you don't know about and havn't configured yourself for. + +Fixed a memory leak such that if db_update() fails to update the database +from a response packet, a databuf will no longer be orphaned. Also fixed +what looks like a similar leak in the ALLOW_UPDATES code but I don't use it +that hasn't been tested. + +Fixed a memory sponge such that if we forward a query to someone who is not +ever going to answer it, we will eventually expire it from our query queue. +Previously it would expire after N retries to N' different servers, which +could be a very long time. Particularly in the case of lame delegations and +other forwarding loops, we feel that 90 seconds (two max-retry intervals) is +enough time for a query to be answered. While we were into this code we made +several fields in the query structure into "short"'s since they were only +being used to store smallish integers. The query list gets Very Long during +a forwarding loop -- even 90 seconds worth of queries is a lot of queries. + +This version includes my hacks that assign a "credibility index" to each + such that when more credible data arrives for a given +, all old data is purged. When equally-credible data arrives it +is aggregated in the way we all know and love; when less credible data +arrives it is completely ignored. Credibility, from best to worst, is: + 1. zone files (primary or secondary) + 2. authoritative answers + 3. non-authoritative answers and authority records + 4. additional data + 5. zone files ("cache" or "bootstrap" information) +You need this version of bind if you still show any A RR's in network +32.0.0.0 when you look up uucp-gw-1.pa.dec.com's A or adobe.com's NS. + +I have also added some extra code to prevent pollution of the internal +"hint cache." In all versions of BIND that I was able to test, any IN_A +response to any sysquery() would cause the IN_A RR to be added to the +fcachetab ("hint cache"). This resulted in lots of extra cruft in the hint +cache, that wasn't timed out properly, which in turn resulted in lots of +strange answers ('nuff said, take my word for it.) + +Though changes have been made to make the Ultrix and GNU (2.1) C compilers +stop complaining about the source, it should still compile and run just +about anywhere. In fact, after I cleaned up lots of old lint, this version +of BIND is known to compile and run on: + + Ultrix 4.2 (MIPS or VAX) + SunOS 4.0.3 + BSD/386 (BSDi beta) + +This was being released as King James Bind because, like KJ Sendmail, it is +a merge of every major variant of Bind that we know about. It was +assembled and tested by Paul Vixie of DEC NSL/WRL, with generous donations +of code and advice from Win Treese of DEC CRL. Changes from Don Lewis of +Harris, Andrew Partan of UUNET, and Piet Beertema of EUNet are also included. +See the OPTIONS file for a description of the changes you can control with +#ifdef's. + +This server has been run on UUCP-GW-{1,2}.PA.DEC.COM, which are in the UUCP +Zone. Our named.boot file has ~1900 lines in it. Before we instituted the +changes in this release, our name server usually ran at about 16MB virtual, +15MB physical, growing slowly but constantly until we restarted it. +Whenever a new zone was added to the NIC's root zone listing us as a name +server, our servers would kill themselves and eachother (and NS.UU.NET, one +of the other UUCP Zone name servers) with forwarding loops. After these +changes, we run at a fairly constant 8MB virtual and physical size, and our +apparent CPU utilization is always 0.0% since we never finish a quantum and +the scheduler always sees us as waiting for I-O. In other words, life is good. + +Notes from UCB version 4.8.3 follow: + +------------------- + +This is version 4.8.3 of bind. It is a test release that updates +versions 4.8 and 4.8.1 with fixes, and is essentially the same as +the version of named on the 4.3BSD Reno release. Although it is +currently described as a test release, it is believed to be reasonably +stable and more usable than the previously-released versions. +Here are some of the more important changes: + + o A list of domains may be specified for searching in resolv.conf instead + of just the local domain name. + + o gethostbyname() will accept a dotted quad. + + o Support has been added for the the T_TXT data type and for the class + C_HS. These are both used by Hesiod from Project Athena at MIT. + + o All of the pathnames have been put into one header file. This + makes it easier to change the location based upon your local + configuration. + + o Responses are only accepted from an address to which we might of sent + the request. This might cause problems if some server is multihomed + and is still running BIND 4.3, but it prevents attacks induced by + sending responses from another address. + + o Numerous bugs have been fixed: Adding a new authoritative zone now + works when the server has a cached SOA record. Comparisons in the + db now look at type and class as well instead of dropping records + with identical data. Scheduling of maintenance interrupts has been + moved to one routine avoid spurious ones. Named goes into the background + after more of the initialization is done. Stream connection queue + handling was cleaned up including a bug that caused data corruption + and core dumps. Sys5 no longer can have multiple transfers of the + same zone occuring at the same time. Handle CNAME -> CNAME loops + more gracefully. Avoid making one server never get queried. Border + conditions in resolver are checked more accurately. + + o Nslookup has been updated. + +There are several bug reports that have yet to be integrated into this +version. Hopefully they will be dealt with in the next release. Please +send feedback on this release. + +Notes from versions 4.8.1 and 4.8 follow: + +------------------ + +This is version 4.8.1 of bind. It is a test release that includes +version 4.8 with fixes, asynchronous zone transfer and better reload +capabilities. Although it is currently described as a test release, +it is believed to be reasonably stable and more usable than the currently- +released version, 4.8. The changes of note are: + + o The asynchronous zone transfer code previously posted to the bind + mailing list has been integrated, completed and tested. There are + a number of changes from the version posted, including fixes to + allow top-level domains to work and a simplification of the timer + code. + + o The code for reloading the server has been changed so that only + primary zones master files that have changed are reloaded. The + cache and secondary zones are not flushed, and the sortlist, domain, + etc. are reset to correspond to the boot file contents. + + o Several bugs have been fixed: the name "*" is not interpreted as + a wildcard in cached zones, only in primary zones. Secondary servers + no longer decrement the time-to-live of records by the time since + they verified the zone with the master; as a result, they never + hand out nameserver referrals with too short a TTL to be usable. + A bug was fixed that caused secondary servers with out-of-date + zones to return empty answers between the actual expiration time + and the next timeout. + +There are several other bugs that have been reported but have not yet +been fixed. In addition, the next regular release of named will +support negative caching, but this has not been integrated. + +I would appreciate receiving feedback on this release; in particular, +problems (or lack of problems) when installing on various systems. +I attempted to update the SysV code when integrating the zone-transfer, +but haven't tested it. + +The notes from version 4.8 follow. + +---------- +Welcome to version 4.8 of bind. + +There have been several changes to the named boot file (/etc/named.boot) +of which you should be aware. The "domain" line for each zone is no longer +needed, but one such line may still be used to specify a default domain +to be used for queries containing names with only a single component. +The term "suffixes", which was added in version 4.7alpha, has been removed. + +The manual page on named (named.8) has been updated to reflect all +these changes. Please read this and look at the example files +before installation. You should also note the changes in the +resolver code to support non-fully-qualified addresses and per-user +host aliases. See hostname(7) for an overview. Two new routines +have been added to the resolver library since the last test release: +res_query formulates a query, sends it, waits for a response and does +preliminary error checking; res_search implements the search rules +of gethostbyname using res_query. + +The MX lookup routine in sendmail has been modified to use res_search. +Also, dn_skip takes an additional parameter and has been renamed +to dn_skipname. While old sendmail binaries will work with the new +version of bind, because of these changes, it is desirable to install +new sendmail sources and recompile sendmail. Do not rebuild sendmail +from old sources. The new sendmail is on ucbarpa.Berkeley.EDU for +anonymous FTP from pub/4.3/sendmail.MX.tar and pub/4.3/sendmail.MX.tar.Z. + +There have been numerous changes to named, fixing most of the known +bugs that can be fixed without major structural changes in the server. +Several server configurations that failed before should now work. +Certain robustness problems have been fixed, in particular bounds- +checking when processing incoming packets. Two changes have been made +in preparation for negative caching: SOA records are sent in the authority +section in negative responses with NXDOMAIN set, and a bug was fixed that +caused confusion and repeated requests if a response had no error, no answer +and an SOA in the authority section. As such responses are already sent +by other servers, and will be sent by the next release of BIND, it is +important that all sites upgrade to this version as quickly as possible. + +The root "hint" cache and cache file remain the largest problem area, +along with named's naivete in accepting bogus server's data. +These will be addressed in the next release, along with asynchronous +zone transfers, intelligent reloading of zone files, faster startup, +and caching of negative responses. + +This version (4.8) will replace the last officially released version (4.5). +Version 4.5 has a serious bug that causes the generation of a continuous +stream of bogons to the root domain servers (bogus queries with the query +response bit set and possibly garbage for nsid and rcode). It is imperative +that these versions of named be replaced as fast as possible. We urge you to +field 4.8 quickly, for the sake of the root domain servers. + + Mike Karels + Jean Wood + bind@ucbarpa.Berkeley.EDU + +## ++Copyright++ +## - +## Copyright (c) +## The Regents of the University of California. All rights reserved. +## +## Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions +## are met: +## 1. Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## 2. Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in the +## documentation and/or other materials provided with the distribution. +## 3. All advertising materials mentioning features or use of this software +## must display the following acknowledgement: +## This product includes software developed by the University of +## California, Berkeley and its contributors. +## 4. Neither the name of the University nor the names of its contributors +## may be used to endorse or promote products derived from this software +## without specific prior written permission. +## +## THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +## ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +## IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +## ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +## FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +## DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +## OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +## HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +## LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +## OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +## SUCH DAMAGE. +## - +## Portions Copyright (c) 1993 by Digital Equipment Corporation. +## +## Permission to use, copy, modify, and distribute this software for any +## purpose with or without fee is hereby granted, provided that the above +## copyright notice and this permission notice appear in all copies, and that +## the name of Digital Equipment Corporation not be used in advertising or +## publicity pertaining to distribution of the document or software without +## specific, written prior permission. +## +## THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL +## WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES +## OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT +## CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL +## DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR +## PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS +## ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +## SOFTWARE. +## - +## --Copyright-- diff --git a/usr.sbin/named/OPTIONS b/usr.sbin/named/OPTIONS new file mode 100644 index 000000000000..a6407961eb54 --- /dev/null +++ b/usr.sbin/named/OPTIONS @@ -0,0 +1,412 @@ +OPTIONS + Original: Paul Vixie, 28Mar92 + Revised: $Id: OPTIONS,v 1.1.1.1 1997/04/13 09:06:11 mrg Exp $ + +Options available in this version of BIND are controlled by conf/options.h, +rather than by $(DEFS) in the Makefile. The options are: + +DEBUG (origin: U C Berkeley) + enables the -d command line option, and allows SIGUSR1 to increment +and SIGUSR2 to clear the internal variable "debug", which in turn controls +hundreds of fprintf()'s out to /usr/tmp/named.run. + you probably want this. it makes the binary bigger but not slower (or +at least not much slower), but SIGUSR[12] are the only way you'll track down +misconfigured name servers that hose you down with billions of bogus requests. + you may need this, it is on by default. + +ALLOW_T_UNSPEC (origin: MIT Project Athena) + enables the "unspec" RR type for ancient Athena software that does not +know about TXT RR's. + you probably do not care about this, it is off by default. + +ALLOW_UPDATES (origin: Mike Schwartz, University of Washington) + enables "dynamic updates", described in "doc/DynamicUpdate". this lets +you update named's in-memory database on the fly if you have the right client. +there is absolutely no security around this; if you enable it, anyone who can +reach your server can update your database. + this code doesn't compile any more and will be removed shortly. + +INVQ (origin: U C Berkeley, with #ifdef's by Paul Vixie) + enables "inverse queries", which in all of the internet only one +client ever uses: ancient nslookup. if you build named with INVQ defined, +you get the time-honored behaviour of supporting this whole class of queries +for no real purpose other than to waste a few hundred kilobytes of your +memory and about 3% of named's total CPU time. if you build with INVQ +undefined, old nslookups will not be able to reach your server in their +startup phase, and you will have to use the "server" command after it fails +over to some other server, or use "nslookup - 0" to get in from the shell. + if you need to support old nslookups try "options fake-iquery" +instead of enabling this option. + you probably do not want this. + +DSTORAGE (origin: U C Berkeley, with #ifdef's by Paul Vixie) + enables a malloc-debugger that checks for overruns on both ends of +each allocated block of memory. used when debugging since C has no bounds +or type checking. + you probably do not want this, it is off by default. + +DMALLOC (origin: Paul Vixie of Digital) + enables a malloc-debugger that traces all allocated blocks of memory +such that SIGIOT's output (see STATS option) includes a list of all mallocs +in the program, how many times each has been called, how many blocks of memory +allocated by that malloc are not yet free, and how many bytes they use up. +under each one will be a list of each free/realloc that has deallocated a block +of that malloc's memory, and how many times it has done so. + this is extremely helpful for finding memory leaks. as such, you +probably do not want this unless you are debugging named. + you probably do not need this, it is off by default. + +XFRNETS (origin: Paul Vixie of Digital) + enables the "xfrnets" command in named.boot. this has the same +syntax as "forwarders" and "sortlist" -- that is, a list of dotted quads. +each one is a network (16.0.0.0 and 130.180.0.0 are examples) or a host. +if you put any xfrnets commands into your named.boot, then zone transfers +will only be honored if they come from inside one of the specified +networks. this is very useful if you want to keep people outside from +being able to trivially map your entire network, but it doesn't stop them +from iterating so it's more annoying than secure. + this feature was once called "tcplist" out of ignorance on my part, +but with advice from phil almquist i decided to rename it "xfrnets" and make +it only control zone transfers -- previously it controlled all TCP connections +which made certain TCP-only resolvers unable to use our servers. the "tcplist" +syntax still works; it is a synonym for "xfrnets". + it is also nice if you want to keep the outside world from making your +nameserver fork and swap trying to do unauthorized zone transfers. if you have +large zone files or use BIND for TXT records you will find this useful. + you probably want this, it is on by default. + +PID_FIX (origin: Don Lewis of Harris) + tells named that if it starts up but can't keep going because another +nameserver is already running (and sitting on the server port), it should +put the /etc/named.pid (/var/run/named.pid) file back the way it found it. + you probably want this, it is on by default. + +FWD_LOOP (origin: Don Lewis of Harris) + tells named that if you list any of your own IP addresses in a +"forwarders" command in your named.boot file, you should be scolded. + you probably want this, it is on by default. + +NO_GLUE (origin: Don Lewis of Harris, and Andrew Partan of UUNET) + tells named-xfer that incoming zone transfers should be checked +for "glue" that comes from a zone outside the zone being transfered, and +comment this garbage out in the zone file so that when named reads in the +zone file after named-xfer exits, the garbage will not be entered into the +memory-resident database. + also tells named that when it is performing an outgoing zone +transfer, it should not send any of these "glue" records. + you definitely want this, it is on by default. + +BOGUSNS (origin: Piet Beertema of EUNet) + enables the "bogusns" command in named.boot. this has the same +syntax as forwarders and sortlist. any NS RR's that come in whose addresses +are on the list of "bogusns" addresses will be ignored. this is the last +resort when someone is bogusly advertising themselves as a root server. + just in case, though you won't use it often. + you probably want this, it is on by default. + +QRYLOG (origin: Bryan Beecher of UMich) + enables "query logging", such that SIGWINCH toggles tracing of all +incoming queries. the trace is sent to syslog, and is huge, but when you +need this you will need it bad and it does not slow named down or make it +larger. + If you define QRYLOG you may also start up named in query logging +mode by using the -q flag. If you do so you will probably want to analyze +the logs produced, the dnsstats and lamers scrips (in the contrib/umich +and contrib/lamers directories) will do it for you. + you probably want this, it is on by default. + +LOGFAC (origin: various people) + If you start up named with the -q flag you will be logging +large amounts of data, and probably will not want them logged to the +default logging facility, which is LOG_DAEMON. You will want to +redefine LOGFAC, presumably to LOC_LOCALn (0 <= n <= 7). Remember to +modify /etc/syslog.conf appropriately. + This only works on a system with a modern syslogd. + as such, it is on by default. + +YPKLUDGE (origin: Piet Beertema of EUNet) + certain versions of NIS/YP are capable of using the DNS for names +that cannot be found in the YP servers. of these, certain versions can't +tell the difference between a dotted quad and a domain name, and they send +queries to the DNS for dotted quads as if they were domain names. if your +named does not do anything special with these queries, they will end up +getting forwarded to other servers, effectively hosing all of you down with +endless useless network traffic. YPKLUDGE enables some checking in named +that lets it catch these bogus queries and send back immediate errors. + If you run "ypserv -i" you definitely want this, as a malconfigured +NIS server can cause DNS "flood" queries otherwise. Trust me. + this is off by default. + +TRACEROOT (origin: pma@cnd.hp.com and Bryan Beecher of UMich) + enables some checking in named for bogus root nameservers. This +code has been in use at U-M for years, so it is pretty well tested, plus we +have never been burned by the "bogus root NS scares" that have plagued the +DNS off and on. + this feature people will very much want to use, it is on by default. + +LOCALDOM (origin: Berkeley) + if set, the "domain" directive is recognized in the named.boot file. +this causes us to retry queries with the specified domain appended to the +name if the first lookup fails. this is a very bad idea since a given name +server will often be used by clients in more than one domain -- a name server +should _not_ make any presumptions as to the "home domain" of a requestor. + you almost certainly do not want this, it is off by default. + +SLAVE_FORWARD (origin: pma@sdd.hp.com) + if set, "slave" servers behave in an arguably more-correct way. this +is an experimental addition to BIND 4.9 that causes slaves to time out queries +in 60/N seconds where N is the number of forwarders defined. previously a +query would time out almost immediately, which caused a lot of unnecessary +network traffic. + you probably want this, it is on by default. + +FORCED_RELOAD (origin: pma@sdd.hp.com) + if set, then when a HUP signal is received, all secondary zones are +scheduled for serial-number comparison with the primaries. this has the effect +that if you HUP your server, it will refresh any zones which have changed, +even if those zones' refresh times have not been reached. + you probably want this, it is on by default. + +WANT_PIDFILE (origin: berkeley, parameterized by arc@sgi) + if set, a file called named.pid will be created in /etc or /var/run +when the name server has started. this file can be used to send signals to +BIND, as in "kill -HUP `cat /etc/named.pid`". + unless you are only on an SGI (where killall(1M) makes the pid file +unnecessary); + you probably want this, it is on by default. + +DOTTED_SERIAL (origin: berkeley; parameterized by vixie) + if set, allows a somewhat arcane n.m syntax in the serial number +field of an SOA. this is officially deprecated for 4.9; you should use +straight integer values and find an encoding that does not depend on +scaled-integer pseudodecimals. i suggest YYYYMMDDnn where YYYY is the +four-digit year, MM is the two-digit month, DD is the two-digit day-of-month, +and nn is a daily version number in case you change your serial number more +than once in a day. this encoding will overflow in the year 4294 gregorian. + you almost certainly do not want this, but if you have old zone files +lying around and you don't want to think your way through converting their +serial numbers, this deprecated behaviour is available. + graciously, it is on by default. + +SENSIBLE_DOTS (origin: kagotani@cs.titech.ac.jp; parameterized by vixie) + if set, changes the semantics of an "n.m" serial number from + n*10^(3+int(0.9+log10(m))) + m +to + n*10000+m + if you are using DOTTED_SERIAL in spite of its deprecated status, +and you are interested in a more predictable and sensible interpretation of +dotted numbers, then you probably want this. + it is off by default. + +VALIDATE (origin: USC/ISI) + enables a validation procedure to provide some security in an +otherwise insecure environment. Any RRs are accepted from a server only if +the server is authoritative over that domain. We consider a server +authoritative (for validation purposes) for even the sub-domains that it has +delegated to others. RRs are validated against the data we have in cache +already. Invalid records are neither cached nor returned. + it is off by default because it is hopeless, and the code will all +be ripped out of BIND in the near future. + +NCACHE (origin: USC/ISI) + enables negative caching. We cache only authoritative NXDOMAIN or +authoritative NOERROR with zero RR count. Non-authoritative NXDOMAIN answers +now contain NS records in the authority section. Non-authoritative NOERROR +responses have no authority or additional records to differentiate them from +referrals. They are cached for NTTL secs (currently 10 minutes) and are timed +out when the ttl expires. + you probably want this, it is on by default. + +RESOLVSORT (origin: marka@syd.dms.csiro.au) + enable sorting of addresses returned by gethostbyname. Sorting order +is specified by address/netmask pairs. This enables a host to override the +sortlist specified in the nameserver. + you probably want this, it is on by default. + +STUBS (origin: marka@syd.dms.csiro.au) + enable transfer and loading of NS records only for a zone. +still experimental. it won't hurt to enable it, but it may not work perfectly +so using it could lead to some confusion. + you probably don't care, it is on by default. + +SUNSECURITY (origin: rossc@ucc.su.oz.au) + enable checking of PTR records in gethostbyaddr() to detect +spoofing. Forced on SunOS 4 shared library as rlogin etc. depend on this. + you should probably not set this by hand. + +SECURE_ZONES (origin: gshapiro@guest.wpi.edu) + enables support for secure zones. This restricts access to +information in the zone according to the information found in the +secure_zone TXT RR found in the zone. If none is found, the zone is +world-readable. For information on the format of the secure_zone TXT +RR, see the Name Server Operations Guide for BIND. + you probably want this, it is on by default. + +ROUND_ROBIN (origin: Marshall Rose of TPC.INT) + if set, causes the databuf list in a namebuf to be rotated by one +slot after each access to it. this has the effect that if multiple RR's +of a given type are present, they will be given in "round robin" order +instead of always being given in the same order. + you probably want this, it is on by default. + +ADDAUTH (origin: marka@syd.dms.csiro.au) + if set, cause NS and glue A records to be returned with authoritative +answers. this causes slightly larger replies but less DNS traffic overall. + unless you have Mac's with an older version of Mac/TCP; + you probably want this, it is on by default. + +RFC1535 (origin: paul@vix.com) + if set, the resolver's default "search" list will be just the entire +"domain" name rather than the sliding window it had before 4.9.2. this will +make the default search list shorter, so folks who are saying "domain a.b.c" +and relying on the implicit "search a.b.c a.b c" will miss "a.b" and "c". + this option is on for compatibility with RFC 1535. + you should NOT turn it off, it is on by default. + +GEN_AXFR (origin: mark@comp.vuw.ac.nz, tytso@ATHENA.MIT.EDU, gdmr@dcs.ed.ac.uk) + if set, allows specification of zones in classes other than "IN" in +the named.boot file. Allows an optional "/class" on the "primary" and +"secondary" directives. Also fixes zone transfers so only data in the class +requested is transfered. + you probably want this, it is on by default. + +DATUMREFCNT (origin: mark andrews) + you want this. it will not be optional in future releases. + +LAME_DELEGATION (origin: don lewis; reworked by bryan beecher and don lewis) + this will detect the condition where some other server has told you +that a given set of servers is authoritative for some domain, and at least +one of those "delegated" servers disagrees (i.e., answers non-authoritatively). + you probably want this, it is on by default. + +LAME_LOGGING (origin: don lewis) + enable logging of lame delegations and set the log level + you may want this, it is on by default. + +RETURNSOA (origin: mark andrews) + This allows negative caching to work. Without this, older +pre-4.9.3 nameservers will not accept -ve cached anwsers. We actually +store the SOA record from the authority section rather that what was +requested because it is the existence of the NXDOMAIN that matters not +the type of data. The zone of the SOA record is tagged to the end of +the SOA record to allow it to be reconstructed. + You probably DO NOT WANT THIS, it's experimental and dangerous. + it is off by default. + +CLEANCACHE (origin: mark andrews) + Bind consumes memory without bound without this option. This +patch allows bind to periodically remove any stale entries in the +cache. Bind's memory usage should stabilize after approximately 1 day of +operation, as most TTL's are <= 1 day. Without this option stale entries +are only removed when they are looked up. + You probably want this, it is on by default. + +PURGE_ZONE (origin: mark andrews) + Various junk below a zone tends to hang around and corrupt future +zone data if a zone grows deeper. PURGE_ZONE will remove all traces of or +data which could be part of zone before loading a new one. + You probably want this, it is on by default. + +STATS (origin: Paul Vixie) + Named's internal statistics can take a fair amount of memory and +if you aren't interested in looking at these numbers you should disable +the feature. Future versions may require this. + You probably want this, it is on by default. + +RENICE (origin: bp@deins.informatik.uni-dortmund.de) + if set, the process priority of the AXFR subprocesses is changed to +"normal". If you are planning to raise the priority of the main nameserver +process, you will use this. + You probably want this, it is on by default. + +GETSER_LOGGING (origin: Paul Vixie) + if set, errors that occur during the fetch of serial numbers for zone +transfer consideration will be syslog()'d. this can lead to a lot of logging, +but is very helpful if you don't know why a zone isn't transfering. + You may not want this, but it is on by default. + +SHORT_FNAMES (origin: pma@sdd.hp.com) + on systems whose file names can only be 14 characters long, the temp +files created by named-xfer need to be constructed somewhat differently. this +should probably become the default since it is harmless. + you probably don't care one way or the other, it is off by default. + +XSTATS (origin: Benoit.Grange@inria.fr) + if set, the name server keeps more STATS about requests +received, and logs to syslog total counters from time to time. If you +aren't interested in looking at these numbers you should not enable +the feature. Requires STATS. + You may want this, but it is off by default. + +BIND_NOTIFY (origin: paul@vix.com) + experimental at this time; an internet draft is circulating. this +option informs slaves ("secondary" servers in BIND's erroneous terminology) +instantly when the master (primary, or another slave) loads a new zone. it +works fine and seems to cause no problems with slaves that don't support it, +but it does not implement the current internet draft (it lacks some necessary +delays) and causes a lot of extra syslog traffic, especially at startup. if +you don't mind running code that will absolutely NOT be compatible with the +eventual standard when the RFC is released, go ahead and turn this on. + vendors should not enable this in versions shipped to customers. + You will want this when it becomes compliant, it is off by default. + +LOC_RR (origin: ckd@kei.com) + incorporates support for the (RFC 1876) LOC RR type. + You may want this, it is on by default. + +SORT_RESPONSE (legacy) + should responses be sorted in what the server considers an optimal +order for the client? this is on by default but it does very little good. + +## ++Copyright++ 1989 +## - +## Copyright (c) 1989 +## The Regents of the University of California. All rights reserved. +## +## Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions +## are met: +## 1. Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## 2. Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in the +## documentation and/or other materials provided with the distribution. +## 3. All advertising materials mentioning features or use of this software +## must display the following acknowledgement: +## This product includes software developed by the University of +## California, Berkeley and its contributors. +## 4. Neither the name of the University nor the names of its contributors +## may be used to endorse or promote products derived from this software +## without specific prior written permission. +## +## THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +## ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +## IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +## ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +## FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +## DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +## OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +## HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +## LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +## OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +## SUCH DAMAGE. +## - +## Portions Copyright (c) 1993 by Digital Equipment Corporation. +## +## Permission to use, copy, modify, and distribute this software for any +## purpose with or without fee is hereby granted, provided that the above +## copyright notice and this permission notice appear in all copies, and that +## the name of Digital Equipment Corporation not be used in advertising or +## publicity pertaining to distribution of the document or software without +## specific, written prior permission. +## +## THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL +## WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES +## OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT +## CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL +## DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR +## PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS +## ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +## SOFTWARE. +## - +## --Copyright-- diff --git a/usr.sbin/named/README b/usr.sbin/named/README new file mode 100644 index 000000000000..7346eef3f904 --- /dev/null +++ b/usr.sbin/named/README @@ -0,0 +1,480 @@ +The official place to get BIND is . + +The official mailing lists are: bind-users@vix.com - users/admins + (use *-request@* for admin mail) bind-workers@vix.com - developers + +The official Usenet newsgroups are: comp.protocols.tcp-ip.domains + +BIND is currently sponsored by: The Internet Software Consortium + (send to for details.) + +----- 4.9.3 BETA33 - December, 1995 - paul@vix.com + +Take a look around in doc/misc/ and contrib/. Reread INSTALL. Have fun. + +----- 4.9.3 BETA11, BETA12 release - December, 1994 - paul@vix.com + +If you maintain a BSD or are otherwise running a 4.4BSD-based system and want +to integrate BIND into it, check out BSD/README. + +Read the top of CHANGES for interesting stuff. + +Don't forget to purge all your secondary zone files before upgrading to this +BIND if your existing one came from a vendor. + +The NOTIFY feature is turned off by default, but it's really cool and you +should consider turning it on if you are willing to risk having it not work +after the RFC process is complete (if the protocol has to change at all.) +It already does not conform to the draft protocol so you should consider it +"experimental" even if it happens to work fine. + +----- 4.9.3 BETA10 release - August, 1994 - paul@vix.com + +I recommend reading this ENTIRE FILE before you attempt to build or use BIND. +However, you can get started quickly by scanning down this file for "QUICK" in +the right margin and just reading those sections. You can also look at the +INSTALL file. You should look at doc/info/* if you have trouble building. + +There are at least two known bugs in this BIND: + +1. if you have two authoritative zones (primary or secondary) where + one is a subzone of the other, e.g., + primary pa.dec.com z/pa.dec.com + primary dec.com z/dec.com + and you remove or comment out the subzone (pa.dec.com in our example) + and SIGHUP named, the delegation and other RR's at "pa.dec.com" will + be missing from your cache. to avoid this, you should "named.restart" + rather than SIGHUP ("named.reload") when making changes of this kind. + +2. the /HS qualifier doesn't work on "cache" directives. you will have + to put your hesiod root information into your main "root.cache" file. + +Also, you may find that your utilities will not link with this -lresolv +unless you also install lib44bsd.a and link with -lresolv -l44bsd. This +is because older systems do not include inet_aton() and other functions. + +----- 4.9.3 BETA6 release - June, 1994 - paul@vix.com + +Several private beta test releases have come and gone, and we've fixed a +number of things. See CHANGES for details. + +There is a new Sun Shared Library update mechanism in place, and it works +quite well. See shres/*. + +Versions of NSLOOKUP up through BIND 4.8.3's used IQUERY to ask the local +server for information about the server's own name. I assume that this was +done in a "what the heck, nothing uses these, how can we contrive a need?" +sort of spirit. I removed this code as of BIND 4.9's NSLOOKUP and had it +use the standard gethostbyaddr() mechanisms (which depend on normal queries +of PTR data). Disabling INVQ and putting "options fake-iquery" in the boot +file will cause IQUERY to be answered bogusly but in a way that old nslookup +programs won't trip on. INVQ is disabled by default in conf/options.h. + +----- 4.9.3 BETA2 release - June, 1994 - paul@vix.com + +News flash! BIND development is now funded by the Internet Software Consortium. + +Look at CHANGES to see what's new. Check out doc/misc to see some interesting +papers from Purdue (and Bell Labs, if we're lucky) on DNS security that +motivated many of the security-related changes present in this release. + +Check out shres/Makefile for SunOS4 shared library support. + +INVQ now defaults to "undef". See OPTIONS and conf/options.h. + +ALLOW_UPDATES is no longer available, and will be removed next release. + +You should look hard at the SENSIBLE_DOTS option and convert your serial +numbers either to "sensible" ones or ones without dots (YYYYMMDD## preferred). +SENSIBLE_DOTS will be the default in the next release. + +NCACHE and VALIDATE are _working_ now. + +Read the BOG! It's been updated since the previous release. + +If you are a vendor and are including some or all of this code in your product, +please drop me a line to let me know. I field a lot of questions about BIND +and it is helpful for me to know which vendor releases contain which versions +of BIND. It's also helpful for me to have contacts within the engineering +groups of the various vendors, since when I find a heinous bug I can let you +know. + +----- 4.9.2 FINAL (940221) release - February, 1994 - paul@vix.com + +If you look at the last entry in TODO, you'll see that there are a lot +of things in the queue waiting to go in. However, I'm holding the line +so that 4.9.2-FINAL can be the same as what goes out with 4.4BSD-Lite. +I expect to open 4.9.3-ALPHA fairly soon, with patches comprising new +work; 4.9.2-FINAL will have patches released for it only to correct bugs. + +The official way to get BIND 4.9.2 is: ftp gatekeeper.dec.com OUT OF DATE!!! + cd pub/misc/vixie OUT OF DATE!!! + binary OUT OF DATE!!! + get bind-940221.tar.gz OUT OF DATE!!! + or: get bind-940221.tar.Z OUT OF DATE!!! + +The official mailing lists are: bind-users@vix.com - users/admins + (use *-request for admin mail) bind-workers@vix.com - developers + +The official Usenet newsgroups are: comp.protocols.tcp-ip.domains + +My official e-mail address is: paul@vix.com + +----- 4.9.2 BETA5 (931205) release - December, 1993 - paul@vix.com + +no comments; see CHANGES file. + +----- 4.9.2 BETA4 (931104) release - November, 1993 - paul@vix.com + +All reported portability problems have been fixed. All core dumps have +had changes made for them and we are ready to have them tested again. As +usual, I am running this in production on my own zones and I am rather +confident in it. Note, again, that this is a BETA release and you should +not put it up for anon-ftp or otherwise republish it in any way. + +----- 4.9.2 ALPHA2 (930908) release - September, 1993 - paul@vix.com + +4.9.2 has fixes for most of the bugs that smb@bellcore's white paper talked +about, and CERT is going to be knocking on vendor's doors to get it shipped +with as many operating systems as possible. + +----- 4.9.2 ALPHA1 (930506) release - July, 1993 - Paul Vixie + +I don't work for DEC any more, so note the new e-mail address. The old + list has been moved to ; if +you intend to help hack BIND and you want to be advised of alpha-testing +releases, send mail to and ask to be added +to the list. + +Note that 4.9.1 was an interrim, nonpublished release intended to catch +the porting changes needed for 4.4BSD. It never really existed separately. + +----- 4.9 release - April, 1993 - Paul Vixie + +For information on what's new in 4.9, see OPTIONS and CHANGES. Also note +that the man page for named(8) in man/named.8, and the entire Bind Operations +Guide in doc/BOG/*, has been updated for 4.9. Both make excellent reading. + +Those of you who are thinking of adding features should first read TODO to +see if someone else has already indicated an intention to work on the same +thing. If your feature is significant you should ask +before you hack, if for no other reason than to tell other maintainers to +expect a patch soon. + +Note that the resolver has a number of routines that may already be present +on your system. Efforts have been made to avoid generating code for them on +systems where they aren't needed; don't worry about them if they're +generated unneccessarily since the linker will sort things out. + +This software is protected under the U C Regents' copyright. Changes made +by or released through Digital Equipment Corporation are subject to a +subsidiary copyright. The entire copyright is as follows: + +++Copyright++ 1989 +- +Copyright (c) 1989 + The Regents of the University of California. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. All advertising materials mentioning features or use of this software + must display the following acknowledgement: + This product includes software developed by the University of + California, Berkeley and its contributors. +4. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. +- +Portions Copyright (c) 1993 by Digital Equipment Corporation. + +Permission to use, copy, modify, and distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies, and that +the name of Digital Equipment Corporation not be used in advertising or +publicity pertaining to distribution of the document or software without +specific, written prior permission. + +THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL +WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT +CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL +DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR +PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS +ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. +- +--Copyright-- + +To build this: QUICK + + (on SUNOS, use the BSD build environment or you will + get the wrong definition for O_NDELAY) + + look at conf/options.h and edit to your tastes. + The OPTIONS file here in this directory will help you + figure out what to do. + + You should also look at the Makefile to select the proper set + of definitions depending on whether you are using Ultrix, + SunOS, and other 4.[23] BSD-alikes or using BSD 4.4, BSD/386, + and other net2-alikes. + + "make links" will build a shadow source tree full + of symbolic links. the default name of this tree + is "./native.b", but you can override it by setting + the DST variable on the "make" command line, as in: + make DST=vax.b SRC=.. + if your DST is not a subdir of "here", you will need to + override the SRC variable's default (which is ".."), + as in: + make DST=/tmp/vax.b SRC=`pwd` + note that the DST directory must be nonexistent at + the time that you run "make links". + + after "make links", you can cd to the new build + directory, check the settings in the Makefile, and + run "make depend". if you aren't using "make links" + (shame on you), just use "make depend" from "here". + "make depend" may fail on your system; if so, look in + the bin/ directory and find a mkdep that does in fact + work for you. + + if you skip the "make depend" phase, or after you run it, + you can do "make all" (from the build directory if you + used "make links" or from "here" if you're just hacking + around). you will get the following new things out of it: + res/libresolv.a + compat/lib/lib44bsd.a (optional) + include/{netdb,resolv}.h + include/arpa/{inet,nameser}.h + compat/include/sys/{cdefs,bitypes}.h + tools/{nstest,nsquery,dig,host} + tools/nslookup/nslookup + named/named + named/named-xfer + if you have trouble with "make all", check conf/portability.h + for things that your system needs, or doesn't need, or whatever. + it is preferable to add #ifdef's to conf/portability.h than to + add them anywhere else. + + from the build directory (or "here" if you didn't + use "make links"), you can try "make -n install" + which will tell you what will be installed. it might + actually be right; however, what you will probably have to + do is copy the above files into the places you want + run them from. the other files you will need are: + tools/nslookup/nslookup.help + named/named.restart + named/named.reload + + resolver library notes: to install it, either put the .a + file into /usr/local/lib or /usr/lib (if you use -lresolv + on all the links of your networking software), or use "ar" + to put all res/*.o directly into your /lib/libc.a file. + either way you will want to copy the include files + (including those from compat/include/sys) over to + /usr/include (or /usr/local/include if you're willing to + use -I/usr/local/include on all your network-software + compiles). something like this: + cp res/libresolv.a /usr/lib; ranlib /usr/lib/libresolv.a + tar chf - include | (cd /usr/include; tar xvpf -) + cp compat/include/sys/*.h /usr/include/sys + + installing the man pages is left as an exercise for the + reader. there are just too many different versions of + "man" floating around for me to be able to help you figure + out what to do for the one you happen to be using. + + WARNING: If you were running a BIND 4.8.3 or earlier based + named you should remove all cache files prior to starting + named. It would generally be a good idea to remove all cache + files regardless when installing a new version. The creadability + code depends upon the cache files having been made with the + latest named-xfer for correct operation. + +(special compilation-related warning about SunOS systems:) + + From: Tom Limoncelli + To: vixie (Paul A Vixie) + Date: Mon, 11 Jan 93 11:30:39 EST + + Sun compiler v2.0.1 hates bind4.9 code. + + Sun has 3 compilers: + + /usr/ucb/cc -- the default for SunOS 4.1.[123], + dropped in Solaris 2.0. + /usr/lang/cc -- the "unbundled" cc v1.0 + (pretty good, but expensive), only + generates code for SunOS 4.1.x. + /usr/lang/cc.2.0.1 -- the latest "unbundled" cc, + for when they stop shipping the + bundled version altogether. This + generates code for SunOS 4.1.x and Solaris 2.x. + + Sun's 2.0.1 C compiler (the one with the floating licenses) for SunOS + 4.1.x outputs a HUGE number of warnings. They can be ignored. + +--------------------- (4.8.3 README -- mostly obsolete now) + +This directory contains all the info and sources +for the Berkeley Internet Name Domain server. +You should read and understand these directions before starting +to install the libraries and nameserver. Some of these steps +replace existing source and binary files; you should make backups +of all existing files before you begin this installation. +Two installation procedures are described. The first is for 4.3BSD +and other similar systems that are already configured to use earlier +versions of the nameserver, and which have the new version of +(containing a h_addr_list field in the hostent structure). The second +procedure is for 4.2BSD and derived systems. This procedure requires +more decisions to be made, and may have to be varied due to system +or operation constraints. + +The subdirectories and their contents are: + +bin - shell scripts used by current Berkeley makefiles +man - manual pages & documentation +doc - copy of Bind Operations Guide, and other documents +include - include files to go in /usr/include +named - name server sources +res - source for C library resolver routines (and other libc additions) + (may be used as separate library, resolv.a) +conf/master - Sample data files +tools - some test programs + + +Here is how to install the name server on 4.3BSD: + +0) cp bin/mkdep.append /usr/ucb/mkdep + cp bin/manroff /usr/man/manroff +1) cp include/arpa/nameser.h /usr/include/arpa +2) cp include/*.h /usr/include +3) cp man/*.1 /usr/man/manl + cp man/*.3 /usr/man/man3 + cp man/*.5 /usr/man/man5 + cp man/*.7 /usr/man/man7 + cp man/*.8 /usr/man/man8 +4) NOTE: Don't install the Makefiles on 4.3 Tahoe Release + cp res/{res*.c,herror.c} /usr/src/lib/libc/net + cp res/Makefile.libc.net /usr/src/lib/libc/net/Makefile + cp res/strcasecmp.c /usr/src/lib/libc/gen + cp res/strpbrk.c /usr/src/lib/libc/compat-sys5 + cp res/named/{*.c,Makefile} /usr/src/lib/libc/net/named +5) add strcasecmp.[co] to the Makefile in /usr/src/lib/libc/gen +6) add strpbrk.[co] to the Makefile in /usr/src/lib/libc/compat-sys5 +7) rebuild and install /lib/libc.a. +8) edit named/pathnames.h to correpond with your system's configuration +9) cd named; make depend; make all; make install +10) cd tools/nslookup; make nslookup; make install +11) create the master files (samples in conf/master/*) +12) edit /etc/rc.local to include: + +if [ -f /etc/named ]; then + /etc/named; echo -n ' named' >/dev/console +fi + +13) recompile network client and server programs that use gethostbyname, etc. + + +Here is how to install the name server on 4.2BSD or similar systems. +First, a few notes on the choices that must be made. + +Rather than building libresolv.a, you may wish to integrate the resolver +routines into /lib/libc.a. This is recommended to make it easy to recompile +network programs once named is running. This procedure may require hand- +tayloring on some systems. + +You will have to choose a version of mkdep from the bin directory +that will work on your system: +If you've modified make(1) to use .depend files as described +in the current sendmail distribution, use mkdep; otherwise, +if you have the 4.3BSD cc -M option, use mkdep.append; on ultrix, +use mkdep.ultrix (uses cc -Em); otherwise, use mkdep.old.compiler. +The mkdep script is used by "make depend" to regenerate Makefile dependency +lists. + +You will need to chose a version of netdb.h. First, check /usr/include/netdb.h +on your system. If the hostent structure has a h_addr_list entry, you can +probably use your existing netdb.h or the one in include/netdb.h. +If the existing netdb.h in /usr/include does not have a h_addr_list field, +you will have to decide whether to update to the 4.3BSD format of the hostent +structure. This is the best approach, but cannot be used unless you plan +to upgrade entirely: if you use the new structure in /usr/include/resolv.h, +you must recompile everything that uses the hostent structure, including +the rest of the C library and all networking programs, without using +any pre-existing object files. If this isn't possible or desirable, +and /usr/include/netdb.h doesn't have an h_addr_list line, use +include/netdb.h.4.2 instead of netdb.h. The other version of netdb.h +(include/netdb.h.4.2.compat) may be used instead of include/netdb.h.4.2. +This version along with a change in res/named/gethostnamadr.c.compat +provide for using the new format of the hostent structure while having +binary compatibility with existing libraries. + +On systems with Sun RPC, you will have to merge include/netdb.h or +include/netdb.h.4.2 with /usr/include/netdb.h; copy the rpc-related lines +into the appropriate copy of netdb.h. Alternatively, use an alternate +include path when compiling the resolver library and programs that use it. + +0) cp bin/{whatever} /usr/ucb/mkdep (see above) + cp bin/manroff /usr/man/manroff +1) cp include/arpa/nameser.h /usr/include/arpa + Also, on ultrix 2.x, if you haven't fixed + the inet_addr definition in inet.h, do + cp include/arpa/inet.h /usr/include/arpa +2) cp include/resolv.h /usr/include +3) cp include/netdb.h /usr/include/netdb.h +OR + cp include/netdb.h.4.2 /usr/include/netdb.h +OR + edit /usr/include/netdb.h +4) cp man/*.1 /usr/man/manl + cp man/*.3 /usr/man/man3 + cp man/*.5 /usr/man/man5 + cp man/*.7 /usr/man/man7 + cp man/*.8 /usr/man/man8 +5) cd res; make depend; + make libresolv.a; + make install +OR + update the libc sources as in the 4.3BSD instructions above + and use res/Makefile as a guide for integration + and omit the RES=-lresolv in the next two steps +OR + compile the .o files in res according to Makefile, + then use place those object files in /lib/libc.a (keeping a backup!) + and omit the RES=-lresolv in the next two steps +6) edit named/pathnames.h to correpond with your system's configuration +7) cd named; make depend; make RES=-lresolv all; make install + (if your system defines signal-catching routines to return int + instead of void, use "make DEFINES=-DSIG_FN=int RES=-lresolv all") +8) edit tools/nslookup/pathnames.h to correpond with your system's + configuration +9) cd tools/nslookup; make RES=-lresolv nslookup install +10) create the master files (samples in conf/master/*) +11) edit /etc/rc.local to include: + +if [ -f /etc/named ]; then + /etc/named; echo -n ' named' >/dev/console +fi + +12) eventually, recompile network client and server programs that use +gethostbyname, etc. diff --git a/usr.sbin/named/TODO b/usr.sbin/named/TODO new file mode 100644 index 000000000000..68938f39eac8 --- /dev/null +++ b/usr.sbin/named/TODO @@ -0,0 +1,187 @@ +$Id: TODO,v 1.1.1.1 1997/04/13 09:06:10 mrg Exp $ + +Things to do. Each entry should contain the proposer, date proposed, and an +explaination of what's being proposed. New ones are added at the bottom. +Note that the author/coordinator of BIND does not neccessarily endorse all +of the proposals listed herein; if you did not get explicit "buy-in" then +your changes may not be accepted even if they appear in proposal form here +in this file. + +[Mark.Andrews@dms.CSIRO.AU 14dec94]: rfc952/rfc1123 host name compliance: + -> Test domain names to ensure that the name conforms to the form + specified by RFC952 as modified by RFC1123. + -> WARN if the domain name does not meet the conditions set by + rfc952/rfc1123 for the following resource records. + class == C_IN && type == T_A + class == C_IN && type == T_MX + -> REJECT this records on the primary server. + -> CNAME which doesn't match pointing to the above is also + illegal but harder to check. + +[paul@vix.com 30nov94]: cause NOTIFY to track the IETF process for it; + reorder ns_resp() again so that "Notify notimp" causes qdelete() + but the host source address checking and so on is still done. + +[paul@vix.com 25apr93]: clean up #ifdef's and portability + feature #ifdef's should be limited to whole functions, which will be + called no matter what and would only be non-empty if the feature is + enabled. allow feature ifdef's in .h files, though. + + portability #ifdef's should be limited to whole functions, too. add + a new portability.c module that implements anything which varies from + system to system. + + add a second portability.h-like file that is included _before_ all the + system includes. portability.h as it stands is included _after_ all + system includes, which is convenient for most things but not all. + +[sater@cs.vu.nl 26apr93]: sortlist improvement + Improve the code around the sortlist area to better cope with parallel + networks of different speeds. The -i hack I sent to you could function + as inspiration only. + +[kre@munnari.oz.au 26apr93]: add an INN style control interface + to replace sending signals. With that expand debugging to + permit monitoring of actions taken on a single query + (query through control port, full traced as it occurs) + or all queries that reference some particular name or + zone, or which are forwarded, or asked, of some + particluar server. Allow reloads & dumps of a single + zone, rather than the whole universe. Allow selective + cache pruning (to edit away bad data that's been obtained + from somewhere) + +[kre@munnari.oz.au 26apr93]: add a syntax to zone files (non rfc + standard, but I don't care) to permit RR's to age away + at some particular time, and others to become active at + some particular time (probably with a syntax something + like "<[date]" or "@[date]" preceding, or in the + former case, replacing, the TTL field of the record). + Approaching "date" in the "<[date]" case, the TTL's on + the record would be decreased, so no data cached anywhere + will remain valid after "date", after "date", this RR + would simply be inoperative (essentially identical to + a comment). In the "@[date]" case (or perhaps ">[date]" + for symmetry) the RR would be ignored until "date" at + which time the "@[date]" field would simply be ignored. + Both annotations could be used together (with + appropriate interpretations depending on which date is + earlier than the other). Annotations on RR's in a zone + would cause the SOA parameters to be automatically + adjusted in zone transfers (and SOA requests) so that + secondary servers would also hand out the same values + (dropping the TTL down low as a "<[date]" approaches, + and forcing a new zone transfer at "date"). + +[steve@uunet.uu.net 26apr93]: TXT RR improvements + - fix TXT records so that they can deal properly with multiple + strings (e.g., ``foo IN TXT "aaa" "bbb"''). This + results in a fair number of smallish changes throughout the + code and also throughout various tools (e.g., nslookup). + +[kyle@uunet.uu.net 16may93]: need an option to die if primary zone file missing + as of 4.9, a server will not forward a query if it is itself on the + NS list for the relevant domain. this means that if a primary server + cannot load its zone file, it will not be able to answer queries in + that zone -- it won't even forward them. this is arguably correct, + since it prevents bad forwarding loops when two or more servers are + all unable to load the zone (primary or secondary, with secondary + failures being the more common). what is needed is real loop detection + such that reasonable non-looping queries can be forwarded. what we're + likely to actually get is an option that causes named to just syslog + and die if it can't load a primary zone file. note that at present, + named is running somewhat bare-assed since an expired zone in a + secondary (or missing zone file in a primary) will cause that named + to return SERVFAIL for all queries to that zone. if your screwed up + primary/secondary server is also the forwarding server for a collection + of hosts, those hosts will get SERVFAIL's back from queries to the + affected domains, and depending on the age of their resolvers, they + might not try other servers after they get the first SERVFAIL. + [ this entry was written by Paul Vixie after getting a problem report + from Kyle after uu.net disappeared in a brief but ugly way. --vix ] + +[paul@vix.com 05jun94]: things i'm expecting to fix someday: + -> finish STATS (b+tree?), remove older A_RR-based tagging + -> (more?) svr4 changes from wisner@well, marc@cam, istewart@datlog + -> switch completely to posix-style signals + -> xfrnets directives should aggregate + -> syntactic sugar to use "mtime" of file as soa serial number + -> better support for "firewalls" (zohar@ibm, minnich@dupont) + -> attributes in TXT RR (cpw@lanl) + -> fix database consistency problems during zone reloads (Bob Heiney) + -> preliminary support for variable width subnet masks + -> failover isn't working very well for hesiod queries (gshapiro) + -> dig needs to be able to turn on RES_INSECURE{1,2} options + -> clean out old RR's that lay within a newly loaded zone file (heiney) + -> automatically refresh root.cache from the root servers periodically + -> Makefiles should use/pass CFLAGS rather than modifying CC + -> use Berkeley DB rather than malloc() for all database ops + -> include files should be generated from templates + -> use nvi-style port/* hierarchy, fewer portability #ifdef's + -> make __res static, add procedural interface to replace "extern"'ing + -> add hesiod/yp capable versions of get{pw,serv,???}by*() + -> add hesiod/yp to get{net,host}by*() + -> do something like solaris' /etc/nsswitch.conf (but in resolv.conf) + -> we should only need one copy of binary->text, text->binary, and + packet marshalling/unmarshalling. add general routines to -lresolv, + and rearrange the code to use them. + -> apps that want to do DNS queries should not have to learn res_query; + a higher level interface should be provided, that has its own cache + and/or shares with the server's DB-based one. + -> implement or integrate the next round of RFC's (coming soon). + +[paul@vix.com 05jun95]: more things i'm expecting to fix someday: + -> add "ndc checkconf" (i.e., "named -v") + +## ++Copyright++ 1993 +## - +## Copyright (c) 1993 +## The Regents of the University of California. All rights reserved. +## +## Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions +## are met: +## 1. Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## 2. Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in the +## documentation and/or other materials provided with the distribution. +## 3. All advertising materials mentioning features or use of this software +## must display the following acknowledgement: +## This product includes software developed by the University of +## California, Berkeley and its contributors. +## 4. Neither the name of the University nor the names of its contributors +## may be used to endorse or promote products derived from this software +## without specific prior written permission. +## +## THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +## ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +## IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +## ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +## FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +## DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +## OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +## HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +## LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +## OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +## SUCH DAMAGE. +## - +## Portions Copyright (c) 1993 by Digital Equipment Corporation. +## +## Permission to use, copy, modify, and distribute this software for any +## purpose with or without fee is hereby granted, provided that the above +## copyright notice and this permission notice appear in all copies, and that +## the name of Digital Equipment Corporation not be used in advertising or +## publicity pertaining to distribution of the document or software without +## specific, written prior permission. +## +## THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL +## WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES +## OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT +## CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL +## DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR +## PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS +## ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +## SOFTWARE. +## - +## --Copyright-- diff --git a/usr.sbin/named/conf/options.h b/usr.sbin/named/conf/options.h index c032527d5cc4..456cc4ce2943 100644 --- a/usr.sbin/named/conf/options.h +++ b/usr.sbin/named/conf/options.h @@ -1,9 +1,7 @@ -/* $NetBSD: options.h,v 1.1 1996/02/02 15:26:11 mrg Exp $ */ - /* options.h - specify the conditionally-compiled features * vix 28mar92 [moved out of the Makefile because they were getting too big] * - * $Id: options.h,v 8.7 1995/12/29 21:08:13 vixie Exp + * $Id: options.h,v 1.1.1.1 1997/04/13 09:06:59 mrg Exp $ */ /* @@ -95,7 +93,7 @@ #define SLAVE_FORWARD /* use sensible timeouts on slave forwarders (pma) */ #define WANT_PIDFILE /* if you want the named.pid file (ucb/arc) */ #define DOTTED_SERIAL /* if you want to be able to specify dotted serial#s */ -/*#define SENSIBLE_DOTS /* if you want dotted serial#s to make numeric sense */ +#define SENSIBLE_DOTS /* if you want dotted serial#s to make numeric sense */ #define NCACHE /* negative caching (anant@isi.edu) */ /*#define VALIDATE /* validation procedure (anant@isi.edu) (BUGGY!) */ /*#define SHORT_FNAMES /* file names used in named-xfer need to be short */ @@ -109,18 +107,17 @@ #define ADDAUTH /* return NS and glue w/ authorative answers (mpa) */ #define RFC1535 /* use RFC 1535 default for "search" list (vix) */ #define GEN_AXFR /* distinct zones within each class */ -#define DATUMREFCNT /* use reference counts on datums (mpa) */ #define LAME_DELEGATION /* lame delegations (original-del,reworked-bb&del)*/ -#define LAME_LOGGING LOG_WARNING /* log lame delegations, set log level */ +#define LAME_LOGGING LOG_DEBUG /* log lame delegations, set log level */ #define GETSER_LOGGING LOG_INFO /* log errors/timeouts getting serial number */ -/*#define RETURNSOA /* good code that the world isn't ready for yet */ +#define RETURNSOA /* good code that the world might be ready for now */ #define CLEANCACHE /* useful and necessary in the face of NCACHE */ #define PURGE_ZONE /* remove all traces of a zone when reloading (mpa) */ -/*#define STATS /* keep nameserver statistics; uses more memory */ +#define STATS /* keep nameserver statistics; uses more memory */ #define RENICE /* named-xfer should run at normal priority */ /*#define XSTATS /* extended statistics, syslogged periodically (bg) */ /*#define BIND_NOTIFY /* experimental - do not enable in customer products */ -#define LOC_RR /* support for (draft) LOC record parsing (ckd) */ +#define LOC_RR /* support for LOC record parsing (ckd/vix) */ #define SORT_RESPONSE /* should we try to sort responses optimally? (vix) */ /*--------------------------------------------* @@ -152,14 +149,6 @@ # include "dmalloc.h" #endif -/* systems with killall(1M) don't need this - */ -#ifdef __sgi -# ifdef WANT_PIDFILE -# undef WANT_PIDFILE -# endif -#endif - #ifdef LAME_LOGGING # define LAME_DELEGATION #endif diff --git a/usr.sbin/named/conf/portability.h b/usr.sbin/named/conf/portability.h index 3cfc15ae4c9b..f9682d992746 100644 --- a/usr.sbin/named/conf/portability.h +++ b/usr.sbin/named/conf/portability.h @@ -1,14 +1,10 @@ -/* $NetBSD: portability.h,v 1.1 1996/02/02 15:26:12 mrg Exp $ */ - /* portability.h - include or define things that aren't present on all systems * vixie@decwrl 26dec92 [new] * - * $Id: portability.h,v 8.11 1995/12/22 10:20:19 vixie Exp + * $Id: portability.h,v 1.1.1.1 1997/04/13 09:06:57 mrg Exp $ */ /* - * ++Copyright++ - * - * Copyright (c) * The Regents of the University of California. All rights reserved. * @@ -39,7 +35,9 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - + */ + +/* * Portions Copyright (c) 1993 by Digital Equipment Corporation. * * Permission to use, copy, modify, and distribute this software for any @@ -57,21 +55,38 @@ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS * SOFTWARE. - * - - * --Copyright-- */ -/* XXX: this file has become a hopeless morass, and will be redone someday. */ +/* + * Portions Copyright (c) 1996 by Internet Software Consortium. + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS + * ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE + * CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR + * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS + * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS + * SOFTWARE. + */ + +#ifndef __BIND_PORTABILITY_H +#define __BIND_PORTABILITY_H -#include -#include #include #include +#include +#include #ifndef TIME_H_INCLUDED # include # define TIME_H_INCLUDED #endif +/* (ISC = INTERACTIVE Systems Corporation in the next #ifdef, btw.) */ #ifdef ISC # ifndef _POSIX_SOURCE # define _POSIX_SOURCE @@ -104,7 +119,15 @@ # define setitimer(a,b,c) __setitimer(a,b,c) #endif -/* This is defined in the Makefile for ISC compiles. */ +/* This is for AIX 4.1.x */ +#ifdef _AIX41 +# include +# include +# include +# define vfork fork +#endif + +/* This is defined in the Makefile for INTERACTIVE compiles. */ #if defined(ISC) # define ftruncate(a,b) __ftruncate(a,b) # define USE_MEMCPY @@ -114,17 +137,23 @@ /* SCO UNIX defines only this unique symbol, apparently. */ #if defined(M_UNIX) -/* XXX - why is this POSIX_SOURCE instead of _POSIX_SOURCE? */ -# undef POSIX_SOURCE # define POSIX_SIGNALS -# define HAVE_FCHMOD 0 -# define writev(a,b,c) __writev(a,b,c) -# define ftruncate(a,b) __ftruncate(a,b) +# if !defined(_SCO_DS) +/* This section is for 3.2v4.2/ODT3.0 and maybe also for 3.2v4.1/3.2v4.0 */ +/* XXX - why is this POSIX_SOURCE instead of _POSIX_SOURCE? */ +# undef POSIX_SOURCE +# define HAVE_FCHMOD 0 +# define NEED_WRITEV +# define writev(a,b,c) __writev(a,b,c) +# define ftruncate(a,b) __ftruncate(a,b) +# endif #endif #ifdef NeXT # define NEED_PUTENV # define NEED_SETENV +# define HAVE_STDLIB_H +# define NEED_STRDUP # define inet_addr(a) __inet_addr(a) #endif @@ -135,9 +164,10 @@ #if defined(SUNOS4) # define BSD 43 +# define NEED_STRTOUL #endif -#if defined(__osf__) && defined(__alpha) +#if defined(__osf__) && defined(__alpha) && defined(BSD) && (BSD < 199103) # undef BSD # define BSD 199103 #endif @@ -150,14 +180,16 @@ # define USE_MEMCPY #endif +#if defined(apollo) +# define HAVE_STDLIB_H +#endif #if defined(SVR4) && !defined(SYSV) # define SYSV #endif #if defined(_POSIX_SOURCE) || defined(__sgi) || defined(__ultrix) || \ - defined(__hpux) || (defined(BSD) && (BSD >= 199103)) || \ - (defined(sun) && defined(SYSV)) + defined(__hpux) || (defined(BSD) && (BSD >= 199103)) || defined(sun) # define USE_POSIX #endif @@ -239,34 +271,43 @@ struct timezoneBSD { # define _TIMEZONE timezone #endif -#if defined(USE_POSIX) +#if defined(USE_POSIX) || defined(HAVE_STDLIB_H) # include -# include -# include +# if defined(__ultrix) +# define NEED_STRDUP +# endif #else -# define NEED_STRTOUL +# if !defined(_SCO_DS) +# define NEED_STRDUP +# define NEED_STRTOUL +# endif -# define STDIN_FILENO 0 -# define STDOUT_FILENO 1 -# define STDERR_FILENO 2 # ifndef NeXT extern char *getenv __P((char *)); # else extern char *getenv __P((const char *)); # endif -extern int errno; # if !defined(DMALLOC) && !defined(NeXT) extern char *malloc(), *realloc(), *calloc(); -# if defined(sun) -extern int free(); -# else extern void free(); -# endif # endif +#endif /*HAVE_STDLIB_H*/ + +#if defined(USE_POSIX) +# include +# include + +#else + +# define STDIN_FILENO 0 +# define STDOUT_FILENO 1 +# define STDERR_FILENO 2 +extern int errno; + extern int getdtablesize __P((void)); # ifdef SHORT_FNAMES extern long pathconf __P((const char *path, int name)); @@ -321,13 +362,15 @@ int strcasecmp __P((const char *, const char *)); extern void syslog(); # endif extern char *ctime __P((const time_t *clock)); +# if !defined(M_UNIX) extern int close(), setitimer(), recv(), sendto(), sigsetmask(), atoi(), getpid(), fork(), read(), ioctl(), setsockopt(), socket(), bind(); +# endif #endif #if !defined(bcopy) /* some machines have their own macros for this */ -# if defined(USE_POSIX) || \ +# if (defined(USE_POSIX) && !defined(SUNOS4)) || \ (defined(__STDC__) && !defined(sun) && !defined(sequent) \ && !defined(M_UNIX)) /* use ANSI C3.159-1989 (``ANSI C'') functions if possible; @@ -366,13 +409,15 @@ extern int bcmp(); # endif #endif -#if (!defined(BSD) || (BSD < 43)) +#if (!defined(BSD) || (BSD < 43)) && !defined(__hpux) # define NEED_MKSTEMP # if !defined(__ultrix) && !defined(apollo) -# define NEED_STRCASECMP -# define NEED_MKTEMP -# if !defined(SVR4) -# define NEED_STRPBRK +# if !defined(_SCO_DS) +# define NEED_STRCASECMP +# define NEED_MKTEMP +# if !defined(SVR4) +# define NEED_STRPBRK +# endif # endif # endif #endif @@ -409,8 +454,8 @@ extern int bcmp(); #if !defined(ntohl) && !defined(htonl) && defined(BSD) && (BSD <= 43) /* if these aren't null macros in netinet/in.h, extern them here. */ -extern u_short htons(), ntohs(); -extern u_long htonl(), ntohl(); +extern u_short htons __P((u_short)), ntohs __P((u_short)); +extern u_long htonl __P((u_long)), ntohl __P((u_long)); #endif #if defined(USE_POSIX) && !defined(sun) && !defined(__sgi) \ @@ -553,6 +598,25 @@ extern u_long htonl(), ntohl(); # define HAVE_FCHMOD 1 #endif +/* + * Some systems need _res to be linked into text rather than bss. + */ +#if defined(__m88k__) +# define __BIND_RES_TEXT +#endif + +/* + * We need to know the IPv6 address family number even on IPv4-only systems. + * Note that this is NOT a protocol constant, and that if the system has its + * own AF_INET6, different from ours below, all of BIND's libraries and + * executables will need to be recompiled after the system + * has had this type added. The type number below is correct on most BSD- + * derived systems for which AF_INET6 is defined. + */ +#ifndef AF_INET6 +#define AF_INET6 24 +#endif + /* * Prototype the functions we'll be supplying. */ @@ -567,3 +631,9 @@ extern int gettimeofday __P((struct timeval *, struct _TIMEZONE *)); #if defined(SVR4) && defined(sun) extern int gethostname __P((char *, size_t)); #endif + +#ifdef NEED_STRDUP +extern char *strdup __P((const char *)); +#endif + +#endif /*__BIND_PORTABILITY_H*/ diff --git a/usr.sbin/named/dig/dig.c b/usr.sbin/named/dig/dig.c index 25afd2a56fb0..b72588fb2918 100644 --- a/usr.sbin/named/dig/dig.c +++ b/usr.sbin/named/dig/dig.c @@ -1,7 +1,5 @@ -/* $NetBSD: dig.c,v 1.1 1996/02/02 15:26:18 mrg Exp $ */ - #ifndef lint -static char rcsid[] = "$Id: dig.c,v 8.6 1995/12/29 21:08:13 vixie Exp "; +static char rcsid[] = "$Id: dig.c,v 1.1.1.1 1997/04/13 09:07:00 mrg Exp $"; #endif /* @@ -142,8 +140,8 @@ static char rcsid[] = "$Id: dig.c,v 8.6 1995/12/29 21:08:13 vixie Exp "; *******************************************************************/ -#define VERSION 21 -#define VSTRING "2.1" +#define VERSION 22 +#define VSTRING "2.2" #include #include @@ -192,6 +190,8 @@ static void Usage(); static int SetOption(), printZone(), printRR(); static struct timeval difftv(); static void prnttime(); +static int xstrtonum(); +static void res_re_init(); /* stuff for nslookup modules */ FILE *filePtr; @@ -212,11 +212,13 @@ char *pager = NULL; ** Take arguments appearing in simple string (from file or command line) ** place in char**. */ +void stackarg(y, l) char *l; char **y; { int done=0; + while (!done) { switch (*l) { case '\t': @@ -241,6 +243,7 @@ stackarg(y, l) char myhostname[MAXHOSTNAMELEN]; +int main(argc, argv) int argc; char **argv; @@ -286,7 +289,6 @@ main(argc, argv) int envset=0, envsave=0; struct __res_state res_x, res_t; char *pp; - time_t t; res_init(); _res.pfcode = PRF_DEF; @@ -506,7 +508,7 @@ main(argc, argv) } /* while argv remains */ if (_res.pfcode & 0x80000) - printf("; pfcode: %08x, options: %08x\n", + printf("; pfcode: %08lx, options: %08lx\n", _res.pfcode, _res.options); /* @@ -627,8 +629,8 @@ main(argc, argv) myhostname, inet_ntoa(_res.nsaddr_list[i] .sin_addr)); - t = exectime.tv_sec; - printf(";; WHEN: %s", ctime(&t)); + printf(";; WHEN: %s", + ctime(&(exectime.tv_sec))); } if (!x) break; /* success */ @@ -682,8 +684,8 @@ main(argc, argv) gettimeofday(&exectime,NULL); printf(";; FROM: %s to SERVER: %s\n", myhostname, srvmsg); - t = exectime.tv_sec; - printf(";; WHEN: %s", ctime(&t)); + printf(";; WHEN: %s", + ctime(&(exectime.tv_sec))); printf(";; MSG SIZE sent: %d rcvd: %d\n", bytes_out, bytes_in); } @@ -902,6 +904,7 @@ SetOption(string) /* * Force a reinitialization when the domain is changed. */ +static void res_re_init() { static char localdomain[] = "LOCALDOMAIN"; @@ -926,7 +929,7 @@ res_re_init() /* * convert char string (decimal, octal, or hex) to integer */ -int +static int xstrtonum(p) char *p; { @@ -987,11 +990,13 @@ printZone(zone, sin) int amtToRead; int numRead; int numAnswers = 0; + int numRecords = 0; int result; int soacnt = 0; int sockFD; + int count, type, class, rlen, done, n; u_short len; - u_char *cp, *nmp; + u_char *cp; char dname[2][NAME_LEN]; char file[NAME_LEN]; static u_char *answer = NULL; @@ -1047,7 +1052,7 @@ printZone(zone, sin) } dname[0][0] = '\0'; - while (1) { + for (done = 0; !done; NULL) { u_int16_t tmp; /* @@ -1101,27 +1106,44 @@ printZone(zone, sin) error = ERR_PRINTING; break; } - + numRecords += htons(((HEADER *)answer)->ancount); numAnswers++; + + /* Header. */ cp = answer + HFIXEDSZ; - if (ntohs(((HEADER *)answer)->qdcount) > 0) - cp += dn_skipname((u_char *)cp, - (u_char *)answer + len) + QFIXEDSZ; - nmp = cp; - cp += dn_skipname((u_char *)cp, (u_char *)answer + len); - if ((_getshort((u_char*)cp) == T_SOA)) { - (void) dn_expand(answer, answer + len, nmp, - dname[soacnt], sizeof dname[0]); - if (soacnt) { - if (strcmp(dname[0], dname[1]) == 0) - break; - } else - soacnt++; + /* Question. */ + for (count = ntohs(((HEADER *)answer)->qdcount); + count > 0; + count--) + cp += dn_skipname(cp, answer + len) + QFIXEDSZ; + /* Answer. */ + for (count = ntohs(((HEADER *)answer)->ancount); + count > 0; + count--) { + n = dn_expand(answer, answer + len, cp, + dname[soacnt], sizeof dname[0]); + if (n < 0) { + error = ERR_PRINTING; + done++; + break; + } + cp += n; + GETSHORT(type, cp); + GETSHORT(class, cp); + cp += INT32SZ; /* ttl */ + GETSHORT(rlen, cp); + cp += rlen; + if (type == T_SOA && soacnt++ && + !strcasecmp(dname[0], dname[1])) { + done++; + break; + } } } - fprintf(stdout, ";; Received %d record%s.\n", - numAnswers, (numAnswers != 1) ? "s" : ""); + printf(";; Received %d answer%s (%d record%s).\n", + numAnswers, (numAnswers != 1) ? "s" : "", + numRecords, (numRecords != 1) ? "s" : ""); (void) close(sockFD); sockFD = -1; @@ -1176,20 +1198,23 @@ printRR(file, msg, eom) if (ntohs(headerPtr->ancount) == 0) { return(NO_INFO); - } else { - if (ntohs(headerPtr->qdcount) > 0) { - nameLen = dn_skipname(cp, eom); - if (nameLen < 0) - return (ERROR); - cp += nameLen + QFIXEDSZ; - } - cp = (u_char*) p_rr(cp, msg, stdout); } + for (n = ntohs(headerPtr->qdcount); n > 0; n--) { + nameLen = dn_skipname(cp, eom); + if (nameLen < 0) + return (ERROR); + cp += nameLen + QFIXEDSZ; + } +#ifdef PROTOCOLDEBUG + printf(";;; (message of %d octets has %d answers)\n", + eom - msg, ntohs(headerPtr->ancount)); +#endif + for (n = ntohs(headerPtr->ancount); n > 0; n--) + cp = (u_char*) p_rr(cp, msg, stdout); return(SUCCESS); } -static -struct timeval +static struct timeval difftv(a, b) struct timeval a, b; { @@ -1203,10 +1228,9 @@ difftv(a, b) return(diff); } -static -void +static void prnttime(t) struct timeval t; { - printf("%u msec", t.tv_sec * 1000 + (t.tv_usec / 1000)); + printf("%lu msec", (u_long)(t.tv_sec * 1000 + (t.tv_usec / 1000))); } diff --git a/usr.sbin/named/dnsquery/dnsquery.c b/usr.sbin/named/dnsquery/dnsquery.c index c64014677812..73949caf0a3a 100644 --- a/usr.sbin/named/dnsquery/dnsquery.c +++ b/usr.sbin/named/dnsquery/dnsquery.c @@ -1,5 +1,3 @@ -/* $NetBSD: dnsquery.c,v 1.1 1996/02/02 15:26:24 mrg Exp $ */ - #include #include #include @@ -56,82 +54,32 @@ char *argv[]; case 'h' : strcpy(name, optarg); break; - case 'c' : if (!strcasecmp(optarg, "IN")) - class = C_IN; - else if (!strcasecmp(optarg, "HS")) - class = C_HS; - else if (!strcasecmp(optarg, "CHAOS")) - class = C_CHAOS; - else if (!strcasecmp(optarg, "ANY")) - class = C_ANY; - else { - class = T_ANY; - fprintf(stderr, "optarg=%s\n", optarg); - } - break; + case 'c' : { + int success, proto_class; - case 't' : if (!strcasecmp(optarg, "A")) - type = T_A; - else if (!strcasecmp(optarg, "NS")) - type = T_NS; - else if (!strcasecmp(optarg, "MD")) - type = T_MD; - else if (!strcasecmp(optarg, "MF")) - type = T_MF; - else if (!strcasecmp(optarg, "CNAME")) - type = T_CNAME; - else if (!strcasecmp(optarg, "SOA")) - type = T_SOA; - else if (!strcasecmp(optarg, "MB")) - type = T_MB; - else if (!strcasecmp(optarg, "MG")) - type = T_MG; - else if (!strcasecmp(optarg, "MR")) - type = T_MR; - else if (!strcasecmp(optarg, "NULL")) - type = T_NULL; - else if (!strcasecmp(optarg, "WKS")) - type = T_WKS; - else if (!strcasecmp(optarg, "PTR")) - type = T_PTR; - else if (!strcasecmp(optarg, "HINFO")) - type = T_HINFO; - else if (!strcasecmp(optarg, "MINFO")) - type = T_MINFO; - else if (!strcasecmp(optarg, "MX")) - type = T_MX; - else if (!strcasecmp(optarg, "TXT")) - type = T_TXT; - else if (!strcasecmp(optarg, "RP")) - type = T_RP; - else if (!strcasecmp(optarg, "AFSDB")) - type = T_AFSDB; - else if (!strcasecmp(optarg, "ANY")) - type = T_ANY; - else if (!strcasecmp(optarg, "X25")) - type = T_X25; - else if (!strcasecmp(optarg, "ISDN")) - type = T_ISDN; - else if (!strcasecmp(optarg, "RT")) - type = T_RT; - else if (!strcasecmp(optarg, "NSAP")) - type = T_NSAP; - else if (!strcasecmp(optarg, "SIG")) - type = T_SIG; - else if (!strcasecmp(optarg, "KEY")) - type = T_KEY; - else if (!strcasecmp(optarg, "PX")) - type = T_PX; - else if (!strcasecmp(optarg, "GPOS")) - type = T_GPOS; - else if (!strcasecmp(optarg, "AAAA")) - type = T_AAAA; - else if (!strcasecmp(optarg, "LOC")) - type = T_LOC; + proto_class = sym_ston(__p_class_syms, + optarg, &success); + if (success) + class = proto_class; else { - fprintf(stderr, "Bad type (%s)\n", optarg); + fprintf(stderr, "Bad class (%s)\n", optarg); exit(-1); } + } + break; + + case 't' : { + int success, proto_type; + + proto_type = sym_ston(__p_type_syms, + optarg, &success); + if (success) + type = proto_type; + else { + fprintf(stderr, "Bad type (%s)\n", optarg); + exit(-1); + } + } break; case 'd' : debug++; @@ -189,10 +137,17 @@ char *argv[]; * set these here so they aren't set for a possible call to * gethostbyname above */ - if (debug) - _res.options |= RES_DEBUG; - if (stream) - _res.options |= RES_USEVC; + if (debug || stream) { + if (!(_res.options & RES_INIT)) + if (res_init() == -1) { + fprintf(stderr, "res_init() failed\n"); + exit(-1); + } + if (debug) + _res.options |= RES_DEBUG; + if (stream) + _res.options |= RES_USEVC; + } /* if the -n flag was used, add them to the resolver's list */ if (nameservers != 0) { diff --git a/usr.sbin/named/doc/bog/00macs.me b/usr.sbin/named/doc/bog/00macs.me new file mode 100644 index 000000000000..8ce02a287a1f --- /dev/null +++ b/usr.sbin/named/doc/bog/00macs.me @@ -0,0 +1,51 @@ +.\" Copyright (c) 1986, 1988 Regents of the University of California. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms are permitted +.\" provided that this notice is preserved and that due credit is given +.\" to the University of California at Berkeley. The name of the University +.\" may not be used to endorse or promote products derived from this +.\" software without specific prior written permission. This software +.\" is provided ``as is'' without express or implied warranty. +.\" +.\" @(#)00macs.me 6.3 (Berkeley) 2/28/88 +.\" +.\" usage: troff -me myfile +.nr EX 0 +.de BX +.sp +.ba +4 +.lp +.nr EX +1 +.b +.ta (\\n(.lu-\\n(.iu)R +EXAMPLE \\n(EX: \(*D +.r +.lp +.. +.de EX +.br +.ba +.b +.tl '''\(gr' +.r +.lp +.. +.if \nl .ls 2 +.if t .nr bi 5m +.nr si 3n +.de $0 \" create a table of contents magically. +.(x +.ti (\\$3u-1u)*2m +\\$2. \\$1 +.)x +.. +.de $1 +.sp +.. +.de BU +.ip "\ \(bu" \w'\ \(bu\ 'u +.. +.de SM +\s-1\\$1\s0\\$2 +.. diff --git a/usr.sbin/named/doc/bog/00title.me b/usr.sbin/named/doc/bog/00title.me new file mode 100644 index 000000000000..c9e708cdefe5 --- /dev/null +++ b/usr.sbin/named/doc/bog/00title.me @@ -0,0 +1,94 @@ +.\" ++Copyright++ 1986, 1988 +.\" - +.\" Copyright (c) 1986, 1988 +.\" The Regents of the University of California. All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" - +.\" Portions Copyright (c) 1993 by Digital Equipment Corporation. +.\" +.\" Permission to use, copy, modify, and distribute this software for any +.\" purpose with or without fee is hereby granted, provided that the above +.\" copyright notice and this permission notice appear in all copies, and that +.\" the name of Digital Equipment Corporation not be used in advertising or +.\" publicity pertaining to distribution of the document or software without +.\" specific, written prior permission. +.\" +.\" THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL +.\" WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES +.\" OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT +.\" CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL +.\" DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR +.\" PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS +.\" ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +.\" SOFTWARE. +.\" - +.\" --Copyright-- +.\" +.+c +.(l C +.sz 14 +.b "Name Server Operations Guide" +.b "for \s-1BIND\s+1" +.sz +\fIRelease 4.9.5\fP +.eh 'SMM:10-%''Name Server Operations Guide for \s-1BIND\s+1' +.oh 'Name Server Operations Guide for \s-1BIND\s+1''\s-1SMM\s+1:10-%' +.sp +\fIReleases from 4.9\fP +Paul Vixie\** +.(f +\** This author was employed by Digital Equipment Corporation's +Network Systems Laboratory during the development and release of +\s-1BIND\s+1 4.9. Release 4.9.2 was sponsored by Vixie +Enterprises. Releases from 4.9.3 were sponsored by the Internet +Software Consortium. +.)f + +.sp \n(psu +Internet Software Consortium +La Honda, CA +.sp 2 +\fIReleases through 4.8.3\fP +Kevin J. Dunlap\** +Michael J. Karels +.sp \n(psu +Computer Systems Research Group +Computer Science Division +Department of Electrical Engineering and Computer Sciences +University of California +Berkeley, CA 94720 +.)l +.sp 2 +.(f +\** This author was an employee of Digital Equipment Corporation's +\s-1ULTRIX\s+1 Engineering Advanced Development Group and was on loan to +CSRG when this work was done. \s-1ULTRIX\s+1 is a trademark of Digital +Equipment Corporation. +.)f diff --git a/usr.sbin/named/doc/bog/Makefile b/usr.sbin/named/doc/bog/Makefile new file mode 100644 index 000000000000..32456a075c06 --- /dev/null +++ b/usr.sbin/named/doc/bog/Makefile @@ -0,0 +1,93 @@ +# ++Copyright++ 1986, 1988 +# - +# Copyright (c) 1986, 1988 +# The Regents of the University of California. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. All advertising materials mentioning features or use of this software +# must display the following acknowledgement: +# This product includes software developed by the University of +# California, Berkeley and its contributors. +# 4. Neither the name of the University nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# - +# Portions Copyright (c) 1993 by Digital Equipment Corporation. +# +# Permission to use, copy, modify, and distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies, and that +# the name of Digital Equipment Corporation not be used in advertising or +# publicity pertaining to distribution of the document or software without +# specific, written prior permission. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL +# WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES +# OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT +# CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL +# DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR +# PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS +# ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +# SOFTWARE. +# - +# --Copyright-- +# +# @(#)Makefile 6.3 (Berkeley) 2/28/88 +# +FILES= 00macs.me 00title.me intro.me ns.me types.me\ + files.me named.boot.primary\ + named.boot.secondary named.boot.cache resolv.conf\ + root.cache named.local ucbhosts.rev ucbhosts \ + setup.me manage.me build.me ack.me +ME= -me +NROFF= nroff -rb3 +PRINTER= -Pdp +TBL= dtbl $(PRINTER) +# For Linux: +#PRINTER= +#TBL= tbl $(PRINTER) +TROFF= ditroff $(PRINTER) +GROFF= groff -Tps -t $(ME) + +all: file.lst + +file.lst: $(FILES) + tbl $(FILES)| $(NROFF) $(ME) $(FLAGS) > file.lst + +file.psf: $(FILES) + $(GROFF) $(FILES) > file.psf + +troff: $(FILES) + $(TBL) $(FILES)| $(TROFF) $(ME) $(FLAGS) + +cat: $(FILES) + @cat $(FILES) + +clean: + rm -f *.psf *.lst *.BAK *.CKP *~ *.orig + rm -f file + +spell: $(FILES) + @for i in $(FILES); do \ + echo $$i; \ + spell $$i | sort | comm -23 - spell.ok > $$i.spell; \ + done diff --git a/usr.sbin/named/doc/bog/ack.me b/usr.sbin/named/doc/bog/ack.me new file mode 100644 index 000000000000..5c02c14de460 --- /dev/null +++ b/usr.sbin/named/doc/bog/ack.me @@ -0,0 +1,287 @@ +.\" ++Copyright++ 1986, 1988 +.\" - +.\" Copyright (c) 1986, 1988 +.\" The Regents of the University of California. All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" - +.\" Portions Copyright (c) 1993 by Digital Equipment Corporation. +.\" +.\" Permission to use, copy, modify, and distribute this software for any +.\" purpose with or without fee is hereby granted, provided that the above +.\" copyright notice and this permission notice appear in all copies, and that +.\" the name of Digital Equipment Corporation not be used in advertising or +.\" publicity pertaining to distribution of the document or software without +.\" specific, written prior permission. +.\" +.\" THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL +.\" WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES +.\" OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT +.\" CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL +.\" DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR +.\" PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS +.\" ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +.\" SOFTWARE. +.\" - +.\" --Copyright-- +.\" +.\" @(#)ack.me +.\" +.sx 0 +.bp +.ce +.b "ACKNOWLEDGEMENTS \(em 4.9.3" +.pp +The \fI\fP mailing list was once again of great help; +this release would not be nearly as ready for prime time if not for their +efforts. Special commendations are owed to Robert Elz, Don "Truck" Lewis, +Bob Halley, Mark Andrews, Berthold Paffrath, Ruediger Volk, and Peter Koch. +.pp +Digital Equipment Corporation, Hewlett Packard, Silicon Graphics, and SunSoft +all made hardware available for integration testing; this made the release +far more solid than it would otherwise have been. More hardware loans are +welcome \(em if you are a system vendor and you would like \s-2BIND\s+2 to +run ``out of the box'' on your platform and are willing to lend some rusty +old hardware for the purpose, please contact me (\fI\fP) to +make the arrangements. +.pp +Special thanks to the Internet Software Consortium for funding this work. +Contact \fI\fP if your organization would like to +participate in funding future releases of \s-2BIND\s+2 and other freely +redistributable software packages that are in wide use on the Internet. +.sp 2 +.ce +.b "ACKNOWLEDGEMENTS \(em through 4.9" +.pp +The alpha-test group was extremely helpful in furnishing improvements, +finding and repairing bugs, and being patient. I would like to express +special thanks to Brian Reid of Digital Equipment corporation for funding +this work. Robert Elz, Alan Barrett, Paul Albitz, Bryan Beecher, Andrew +Partan, Andy Cherenson, Tom Limoncelli, Berthold Paffrath, Fuat Baran, Anant +Kumar, Art Harkin, Win Treese, Don Lewis, Christophe Wolfhugel, and a cast +of dozens all helped out above and beyond the call of duty. Special thanks +to Phil Almquist, who got the project started and contributed a lot of the +code and fixed several of the worst bugs. +.sp 2 +.ce +.b "ACKNOWLEDGEMENTS \(em through 4.8.3" +.pp +Many thanks to the users at U. C. Berkeley for falling into many of the holes +involved with integrating BIND into the system so that others would be +spared the trauma. I would also like to extend gratitude to Jim McGinness +and Digital Equipment Corporation for permitting me to spend most of my time +on this project. +.pp +Ralph Campbell, Doug Kingston, Craig Partridge, Smoot Carl-Mitchell, Mike +Muuss and everyone else on the DARPA Internet who has contributed to the +development of BIND. To the members of the original BIND project, Douglas +Terry, Mark Painter, David Riggle and Songnian Zhou. +.pp +Anne Hughes, Jim Bloom and Kirk McKusick and the many others who have +reviewed this paper giving considerable advice. +.pp +This work was sponsored by the Defense Advanced Research Projects Agency +(DoD), Arpa Order No. 4871 monitored by the Naval Electronics Systems +Command under contract No. N00039-84-C-0089. The views and conclusions +contained in this document are those of the authors and should not be +interpreted as representing official policies, either expressed or implied, +of the Defense Research Projects Agency, of the US Government, or of Digital +Equipment Corporation. +.bp +.ba 0 +.in 0 +.sp 2 +.ce +.b REFERENCES +.sp +.nr ii 1i +.ip [Birrell] +Birrell, A. D., +Levin, R., +Needham, R. M., +and Schroeder, M.D., +.q "Grapevine: An Exercise in Distributed Computing." +In +.ul +Comm. A.C.M. 25, +4:260-274 +April 1982. +.ip [RFC819] +Su, Z. +Postel, J., +.q "The Domain Naming Convention for Internet User Applications." +.ul +Internet Request For Comment 819 +Network Information Center, +SRI International, +Menlo Park, California. +August 1982. +.ip [RFC974] +Partridge, C., +.q "Mail Routing and The Domain System." +.ul +Internet Request For Comment 974 +Network Information Center, +SRI International, +Menlo Park, California. +February 1986. +.ip [RFC1032] +Stahl, M., +.q "Domain Administrators Guide" +.ul +Internet Request For Comment 1032 +Network Information Center, +SRI International, +Menlo Park, California. +November 1987. +.ip [RFC1033] +Lottor, M., +.q "Domain Administrators Guide" +.ul +Internet Request For Comment 1033 +Network Information Center, +SRI International, +Menlo Park, California. +November 1987. +.ip [RFC1034] +Mockapetris, P., +.q "Domain Names - Concept and Facilities." +.ul +Internet Request For Comment 1034 +Network Information Center, +SRI International, +Menlo Park, California. +November 1987. +.ip [RFC1035] +Mockapetris, P., +.q "Domain Names - Implementation and Specification." +.ul +Internet Request For Comment 1035 +Network Information Center, +SRI International, +Menlo Park, California. +November 1987. +.ip [RFC1101] +Mockapetris, P., +.q "DNS Encoding of Network Names and Other Types." +.ul +Internet Request For Comment 1101 +Network Information Center, +SRI International, +Menlo Park, California. +April 1989. +.ip [RFC1123] +R. Braden, Editor, +.q "Requirements for Internet Hosts -- Application and Support" +.ul +Internet Request For Comment 1123 +Network Information Center, +SRI International, +Menlo Park, California. +October 1989. +.ip [RFC1183] +Everhart, C., +Mamakos, L., +Ullmann, R., +and +Mockapetris, P., +.q "New DNS RR Definitions" +.ul +Internet Request For Comment 1183 +Network Information Center, +SRI International, +Menlo Park, California. +October 1990. +.ip [RFC1327] +Hardcastle-Kille, S., +.q "Mapping between X.400(1988) / ISO 10021 and RFC 822" +.ul +Internet Request For Comment 1327 +Network Information Center, +SRI International, +Menlo Park, California. +May 1992. +.ip [RFC1664] +Allocchio, C., +Bonito, A., +Cole, B., +Giordano, S., +Hagens, R., +.q "Using the Internet DNS to Distribute RFC1327 Mail Address Mapping Tables" +.ul +Internet Request For Comment 1664 +Network Information Center, +SRI International, +Menlo Park, California. +August 1994. +.ip [RFC1713] +Romao, A., +.q "Tools for DNS debugging" +.ul +Internet Request For Comment 1713, also FYI27 +Network Information Center, +SRI International, +Menlo Park, California. +November 1994. +.ip [Terry] +Terry, D. B., +Painter, M., +Riggle, D. W., +and +Zhou, S., +.ul +The Berkeley Internet Name Domain Server. +Proceedings USENIX Summer Conference, +Salt Lake City, Utah. +June 1984, pages 23-31. +.ip [Zhou] +Zhou, S., +.ul +The Design and Implementation of the Berkeley Internet Name Domain (BIND) Servers. +UCB/CSD 84/177. +University of California, Berkeley, +Computer Science Division. +May 1984. +.ip [Mockapetris] +Mockapetris, P., +Dunlap, K, +.ul +Development of the Domain Name System +ACM Computer Communications Review 18, 4:123-133. +Proceedings ACM SIGCOMM '88 Symposium, +August 1988. +.ul +.ip [Liu] +Liu, C., +Albitz, P., +.ul +DNS and BIND +O'Reilly & Associates, Sebastopol, CA, +502 pages, ISBN 0-937175-82-X +1992 diff --git a/usr.sbin/named/doc/bog/build.me b/usr.sbin/named/doc/bog/build.me new file mode 100644 index 000000000000..d6dab9f6f34b --- /dev/null +++ b/usr.sbin/named/doc/bog/build.me @@ -0,0 +1,102 @@ +.\" ++Copyright++ 1986, 1988 +.\" - +.\" Copyright (c) 1986, 1988 +.\" The Regents of the University of California. All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" - +.\" Portions Copyright (c) 1993 by Digital Equipment Corporation. +.\" +.\" Permission to use, copy, modify, and distribute this software for any +.\" purpose with or without fee is hereby granted, provided that the above +.\" copyright notice and this permission notice appear in all copies, and that +.\" the name of Digital Equipment Corporation not be used in advertising or +.\" publicity pertaining to distribution of the document or software without +.\" specific, written prior permission. +.\" +.\" THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL +.\" WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES +.\" OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT +.\" CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL +.\" DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR +.\" PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS +.\" ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +.\" SOFTWARE. +.\" - +.\" --Copyright-- +.\" +.\" @(#)build.me 6.3 (Berkeley) 9/19/89 +.\" +.sh 1 "Building a System with a Name Server" +.pp +BIND is composed of two parts. One is the user interface called the +\fIresolver\fP +which consists of a group of routines that reside in the C library +\fI/lib/libc.a\fP. +Second is the actual server called \fInamed\fP. +This is a daemon that runs in the background and services queries on a +given network port. The standard port for UDP and TCP is specified in +\fI/etc/services\fP. +.sh 2 "Resolver Routines in libc" +.pp +When building your 4.3BSD system you may either +build the C library to use the name server resolver routines +or use the host table lookup routines to do host name and address resolution. +The default resolver for 4.3BSD uses the name server. Newer BSD systems +include both name server and host table functionality with preference given +to the name server if there is one or if there is a \fI/etc/resolv.conf\fP +file. +.pp +Building the C library to use the name server changes the way +\fIgethostbyname\fP\|(3N), \fIgethostbyaddr\fP\|(3N), and +\fIsethostent\fP\|(3N) do their functions. The name server renders +\fIgethostent\fP\|(3N) obsolete, since it has no concept of a next line in +the database. These library calls are built with the resolver routines +needed to query the name server. +.pp +The \fIresolver\fP contains functions that build query +packets and exchange them with name servers. +.pp +Before building the 4.3BSD C library, set the variable \fIHOSTLOOKUP\fP +equal to \fInamed\fP in \fI/usr/src/lib/libc/Makefile\fP. You +then make and install the C library and compiler and then compile the rest +of the 4.3BSD system. For more information see section 6.6 of ``Installing +and Operating 4.3BSD on the VAX\(dd''. +.(f +\(ddVAX is a Trademark of Digital Equipment Corporation +.)f +.pp +If your operating system isn't VAX\(dd 4.3BSD, it is probably the case that +your vendor has included \fIresolver\fP support in the supplied C Library. +You should consult your vendor's documentation to find out what has to be +done to enable \fIresolver\fP support. Note that your vendor's \fIresolver\fP +may be out of date with respect to the one shipped with \s-1BIND\s+1, and that +you might want to build \s-1BIND\s+1's resolver library and install it, and +its include files, into your system's compile/link path so that your own +network applications will be able to use the newer features. diff --git a/usr.sbin/named/doc/bog/file.lst b/usr.sbin/named/doc/bog/file.lst new file mode 100644 index 000000000000..30f10160d674 --- /dev/null +++ b/usr.sbin/named/doc/bog/file.lst @@ -0,0 +1,3036 @@ + + + + + + + + + + + + NNaammee SSeerrvveerr OOppeerraattiioonnss GGuuiiddee + ffoorr BBIINNDD + _R_e_l_e_a_s_e _4_._9_._5 + + _R_e_l_e_a_s_e_s _f_r_o_m _4_._9 + Paul Vixie1 + + + Internet Software Consortium + La Honda, CA + + + _R_e_l_e_a_s_e_s _t_h_r_o_u_g_h _4_._8_._3 + Kevin J. Dunlap2 + Michael J. Karels + + Computer Systems Research Group + Computer Science Division + Department of Electrical Engineering and Computer Sciences + University of California + Berkeley, CA 94720 + + + + + +11.. IInnttrroodduuccttiioonn + + The Berkeley Internet Name Domain (BIND) implements + an Internet name server for BSD-derived operating sys- + tems. The BIND consists of a server (or ``daemon'') + called _n_a_m_e_d and a _r_e_s_o_l_v_e_r library. A name server is a + network service that enables clients to name resources or + objects and share this information with other objects in + the network. This in effect is a distributed data base + system for objects in a computer network. The BIND + server runs in the background, servicing queries on a +____________________ + 1 This author was employed by Digital Equipment Corpora- +tion's Network Systems Laboratory during the development and +release of BIND 4.9. Release 4.9.2 was sponsored by Vixie +Enterprises. Releases from 4.9.3 were sponsored by the In- +ternet Software Consortium. + 2 This author was an employee of Digital Equipment Corpo- +ration's ULTRIX Engineering Advanced Development Group and +was on loan to CSRG when this work was done. ULTRIX is a +trademark of Digital Equipment Corporation. + + + + + + + + + + + + +SSMMMM::1100--22 NNaammee SSeerrvveerr OOppeerraattiioonnss GGuuiiddee ffoorr BBIINNDD + + + well known network port. The standard port for UDP and + TCP is specified in _/_e_t_c_/_s_e_r_v_i_c_e_s. The _r_e_s_o_l_v_e_r is a set + of routines residing in a system library that provides + the interface that programs can use to access the domain + name services. + + BIND is fully integrated into BSD (4.3 and later + releases) network programs for use in storing and + retrieving host names and address. The system adminis- + trator can configure the system to use BIND as a replace- + ment to the older host table lookup of information in the + network hosts file _/_e_t_c_/_h_o_s_t_s. The default configuration + for BSD uses BIND. + + +22.. TThhee NNaammee SSeerrvviiccee + + The basic function of the name server is to provide + information about network objects by answering queries. + The specifications for this name server are defined in + RFC1034, RFC1035 and RFC974. These documents can be + found in _/_u_s_r_/_s_r_c_/_e_t_c_/_n_a_m_e_d_/_d_o_c in 4.3BSD or _f_t_ped from + ffttpp..rrss..iinntteerrnniicc..nneett. It is also recommended that you + read the related manual pages, _n_a_m_e_d(8), _r_e_s_o_l_v_e_r(3), and + _r_e_s_o_l_v_e_r(5). + + The advantage of using a name server over the host + table lookup for host name resolution is to avoid the + need for a single centralized clearinghouse for all + names. The authority for this information can be dele- + gated to the different organizations on the network + responsible for it. + + The host table lookup routines require that the mas- + ter file for the entire network be maintained at a cen- + tral location by a few people. This works fine for small + networks where there are only a few machines and the dif- + ferent organizations responsible for them cooperate. But + this does not work well for large networks where machines + cross organizational boundaries. + + With the name server, the network can be broken into + a hierarchy of domains. The name space is organized as a + tree according to organizational or administrative bound- + aries. Each node, called a _d_o_m_a_i_n, is given a label, and + the name of the domain is the concatenation of all the + labels of the domains from the root to the current + domain, listed from right to left separated by dots. A + label need only be unique within its domain. The whole + space is partitioned into several areas called _z_o_n_e_s, + each starting at a domain and extending down to the leaf + domains or to domains where other zones start. Zones + usually represent administrative boundaries. An example + + + + + + + + + + +NNaammee SSeerrvveerr OOppeerraattiioonnss GGuuiiddee ffoorr BBIINNDD SSMMMM::1100--33 + + + of a host address for a host at the University of Cali- + fornia, Berkeley would look as follows: + + _m_o_n_e_t.._B_e_r_k_e_l_e_y.._E_D_U + + The top level domain for educational organizations is + EDU; Berkeley is a subdomain of EDU and monet is the name + of the host. + + +33.. SSeeccuurriittyy + + This section examines some of the know security + implications of various versions of BIND. Some of these + have been used to attack the nameservers in the past. + + 33..11.. UUnnnneecceessssaarryy GGlluuee + + Unnecessary glue can lead to incorrect records + being loaded into the server. This can result in con- + nections going to the wrong machines. + + To prevent unnecessary glue being loaded, all the + servers of zones being servered by a server and the + servers of the parent zones need to be upgraded to + BIND 4.9.3 or later. + + 33..22.. IInnsseerrttiioonn ooff ddaattaa iinnttoo aa zzoonnee tthhaatt iiss bbeeiinngg + sseerrvveerreedd + + BIND versions prior to BIND 4.9.2 are subject to + the insertion of resource records into zone that they + are serving. + + 33..33.. DDeenniiaall ooff SSeerrvviiccee:: HHaasshh BBuugg EExxppllooiitt + + September 1996 saw the COM TLD subject to a + denial of service attack by injecting into the DNS a + record with a final label of COM, eight spaces and + COM. This effected BIND 4.9.4 servers. Similar attacks + are possible on BIND 4.9.3 and BIND 4.9.3-P1. + + It is recommend that you run a BIND 4.9.4-P1 or + later server to avoid this exploit. + + 33..44.. DDeenniiaall ooff SSeerrvviiccee:: TTTTLL IInnccoonnssiisstteennccyy AAttttaacckkss + + If you are still using multiple TTL values within + a RRset you can be subject to a denial of service + attack. BIND 4.9.5 onwards uses multiple ttl values + within a RRset to reject obviously bad RRset. + + + + + + + + + + + + +SSMMMM::1100--44 NNaammee SSeerrvveerr OOppeerraattiioonnss GGuuiiddee ffoorr BBIINNDD + + + It is recommend that you upgrade to BIND 4.9.5 or + later as these server prevent you loading multiple TTL + values and doesn't merge answers received across the + network. + + +44.. TTyyppeess ooff ZZoonneess + + A ``zone'' is a point of delegation in the DNS tree. + It contains all names from a certain point ``downward'' + except those which are delegated to other zones. A + ``delegation point'' has one or more _N_S records in the + ``parent zone'', which should be matched by equivalent _N_S + records at the root of the ``delegated zone'' (i.e., the + ``@'' name in the zone file). + + Understanding the difference between a ``zone'' and + a ``domain'' is crucial to the proper operation of a name + server. As an example, consider the DEC.COM _d_o_m_a_i_n, + which includes names such as POBOX1.PA.DEC.COM and QUAB- + BIN.CRL.DEC.COM even though the DEC.COM _z_o_n_e includes + only _d_e_l_e_g_a_t_i_o_n_s for the PA.DEC.COM and CRL.DEC.COM + zones. A zone can map exactly to a single domain, but + could also include only part of a domain (the rest of + which could be delegated to other name servers). Techni- + cally speaking, every name in the DNS tree is a + ``domain'', even if it is ``terminal'', that is, has no + ``subdomains''. Technically speaking, every subdomain is + a domain and every domain except the root is also a sub- + domain. The terminology is not intuitive and you would + do well to read RFC's 1033, 1034, and 1035 to gain a com- + plete understanding of this difficult and subtle topic. + + Though BIND is a _D_o_m_a_i_n Name Server, it deals pri- + marily in terms of _z_o_n_e_s. The _p_r_i_m_a_r_y and _s_e_c_o_n_d_a_r_y dec- + larations in the _n_a_m_e_d_._b_o_o_t file specify _z_o_n_e_s, not + _d_o_m_a_i_n_s. When you ask someone if they are willing to be + a secondary server for your ``domain'', you are actually + asking for secondary service for some collection of + _z_o_n_e_s. + + Each zone will have one ``primary'' server, which + loads the zone contents from some local file which is + edited by humans or perhaps generated mechanically from + some other local file which is edited by humans. Then + there will be some number of ``secondary'' servers, which + load the zone contents using the IP/DNS protocol (that + is, the secondary servers will contact the primary and + fetch the zone using IP/TCP). This set of servers (the + primary and all of the secondaries) should be listed in + the _N_S records in the parent zone, which will constitute + a ``delegation''. This set of servers must also be + listed in the zone file itself, usually under the ``@'' + + + + + + + + + + +NNaammee SSeerrvveerr OOppeerraattiioonnss GGuuiiddee ffoorr BBIINNDD SSMMMM::1100--55 + + + name which is a magic cookie that means the ``top level'' + or ``root'' of current zone. You can list servers in the + zone's top-level ``@'' _N_S records that are not in the + parent's _N_S delegation, but you cannot list servers in + the parent's delegation that are not present in the + zone's ``@''. Any servers listed in the _N_S records must + be configured as authoritative (either primary or sec- + ondary) for the zone. If a server listed in a _N_S record + is not authoritative, it will respond with a ``lame dele- + gation'' when queried. + + +55.. TTyyppeess ooff SSeerrvveerrss + + Servers do not really have ``types''. A server can + be a primary for some zones and a secondary for others, + or it can be only a primary, or only a secondary, or it + can serve no zones and just answer queries via its + ``cache''. Previous versions of this document referred + to servers as ``master'' and ``slave'' but we now feel + that those distinctions -- and the assignment of a + ``type'' to a name server -- are not useful. + + 55..11.. CCaacchhiinngg OOnnllyy SSeerrvveerr + + All servers are caching servers. This means that + the server caches the information that it receives for + use until the data expires. A _C_a_c_h_i_n_g _O_n_l_y _S_e_r_v_e_r is + a server that is not authoritative for any zone. This + server services queries and asks other servers, who + have the authority, for the information needed. All + servers keep data in their cache until the data + expires, based on a _T_T_L (``Time To Live'') field which + is maintained for all resource records. + + 55..22.. RReemmoottee SSeerrvveerr + + A Remote Server is an option given to people who + would like to use a name server from their workstation + or on a machine that has a limited amount of memory + and CPU cycles. With this option you can run all of + the networking programs that use the name server with- + out the name server running on the local machine. All + of the queries are serviced by a name server that is + running on another machine on the network. A host + which has an _/_e_t_c_/_r_e_s_o_l_v_._c_o_n_f file listing only remote + hosts, and which does not run a name server of its + own, is sometimes called a Remote Server (because the + actual server is remote?) but more often it is called + simply a DNS Client. This kind of host is technically + not a ``server'', since it has no cache and does not + answer queries. + + + + + + + + + + + +SSMMMM::1100--66 NNaammee SSeerrvveerr OOppeerraattiioonnss GGuuiiddee ffoorr BBIINNDD + + + 55..33.. SSllaavvee SSeerrvveerr + + A Slave Server is a server that always forwards + queries it cannot satisfy from its cache, to a fixed + list of _f_o_r_w_a_r_d_i_n_g servers instead of interacting with + the name servers for the root and other domains. The + queries to the _f_o_r_w_a_r_d_i_n_g _s_e_r_v_e_r_s are recursive + queries. There may be one or more forwarding servers, + and they are tried in turn until the list is + exhausted. A Slave and forwarder configuration is + typically used when you do not wish all the servers at + a given site to interact with the rest of the Internet + servers. A typical scenario would involve a number of + workstations and a departmental timesharing machine + with Internet access. The workstations might be + administratively prohibited from having Internet + access. To give the workstations the appearance of + access to the Internet domain system, the workstations + could be Slave servers to the timesharing machine + which would forward the queries and interact with + other name servers to resolve the query before return- + ing the answer. An added benefit of using the for- + warding feature is that the central machine develops a + much more complete cache of information that all the + workstations can take advantage of. The use of Slave + mode and forwarding is discussed further under the + description of the _n_a_m_e_d bootfile commands. + + There is no prohibition against declaring a + server to be a _s_l_a_v_e even though it has _p_r_i_m_a_r_y and/or + _s_e_c_o_n_d_a_r_y zones as well; the effect will still be that + anything in the local server's cache or zones will be + answered, and anything else will be forwarded using + the _f_o_r_w_a_r_d_e_r_s list. + + +66.. FFiilleess + + The name server uses several files to load its data + base. This section covers the files and their formats + needed for _n_a_m_e_d. + + 66..11.. BBoooott FFiillee + + This is the file that is first read when _n_a_m_e_d + starts up. This tells the server what type of server + it is, which zones it has authority over and where to + get its initial data. The default location for this + file is _/_e_t_c_/_n_a_m_e_d_._b_o_o_t. However this can be changed + by setting the _B_O_O_T_F_I_L_E variable when you compile + _n_a_m_e_d or by specifying the location on the command + line when _n_a_m_e_d is started up. + + + + + + + + + + + +NNaammee SSeerrvveerr OOppeerraattiioonnss GGuuiiddee ffoorr BBIINNDD SSMMMM::1100--77 + + + 66..11..11.. DDoommaaiinn + + A default domain may be specified for the name + server using a line such as + + _d_o_m_a_i_n _B_e_r_k_e_l_e_y.._E_d_u + + Older name servers use this information when they + receive a query for a name without a ``..'' that is + not known. Newer designs assume that the resolver + library will append its own idea of a ``default + domain'' to any unqualified names. Though the name + server can still be compiled with support for the + _d_o_m_a_i_n directive in the boot file, the default is + to leave it out and we strenuously recommend + against its use. If you use this feature, clients + outside your local domain which send you requests + about unqualified names will have the implicit + qualification of your domain rather than theirs. + The proper place for this function is on the + client, in their //eettcc//rreessoollvv..ccoonnff (or equivalent) + file. Use of the _d_o_m_a_i_n directive in your boot + file is strongly discouraged. + + 66..11..22.. DDiirreeccttoorryy + + The _d_i_r_e_c_t_o_r_y directive specifies the direc- + tory in which the name server should run, allowing + the other file names in the boot file to use rela- + tive path names. There can be only one _d_i_r_e_c_t_o_r_y + directive and it should be given before any other + directives that specify file names. + + _d_i_r_e_c_t_o_r_y _/_v_a_r_/_n_a_m_e_d + + If you have more than a couple of named files to be + maintained, you may wish to place the named files + in a directory such as /var/named and adjust the + directory command properly. The main purposes of + this command are to make sure named is in the + proper directory when trying to include files by + relative path names with $INCLUDE and to allow + named to run in a location that is reasonable to + dump core if it feels the urge. + + 66..11..33.. PPrriimmaarryy SSeerrvviiccee + + The line in the boot file that designates the + server as a primary master server for a zone looks + as follows: + + _p_r_i_m_a_r_y _B_e_r_k_e_l_e_y.._E_d_u _u_c_b_h_o_s_t_s + + + + + + + + + + + +SSMMMM::1100--88 NNaammee SSeerrvveerr OOppeerraattiioonnss GGuuiiddee ffoorr BBIINNDD + + + The first field specifies that the server is a pri- + mary one for the zone stated in the second field. + The third field is the name of the file from which + the data is read. + + The above assumes that the zone you are speci- + fying is a class _I_N zone. If you wish to designate + a different class you can append _/_c_l_a_s_s to the + first field, where _c_l_a_s_s is either the integer + value or the standard mnemonic for the class. For + example the line for a primary server for a hesiod + class zone looks as follows: + + _p_r_i_m_a_r_y_/_H_S _B_e_r_k_e_l_e_y.._E_d_u _h_e_s_i_o_d_._d_a_t_a + + Note that this support for specifying other than + class _I_N zones is a compile-time option which your + vendor may not have enabled when they built your + operating system. + + 66..11..44.. SSeeccoonnddaarryy SSeerrvviiccee + + The line for a secondary server is similar to + the primary except that it lists addresses of other + servers (usually primary servers) from which the + zone data will be obtained. + + _s_e_c_o_n_d_a_r_y _B_e_r_k_e_l_e_y.._E_d_u _1_2_8.._3_2.._0.._1_0 _1_2_8.._3_2.._0.._4 _u_c_b_h_o_s_t_s_._b_a_k + + The first field specifies that the server is a sec- + ondary server for the zone stated in the second + field. The two network addresses specify the name + servers which have data for the zone. Note that at + least one of these will be a _p_r_i_m_a_r_y, and, unless + you are using some protocol other than IP/DNS for + your zone transfer mechanism, the others will all + be other _s_e_c_o_n_d_a_r_y servers. Having your secondary + server pull data from other secondary servers is + usually unwise, since you can add delay to the + propagation of zone updates if your network's con- + nectivity varies in pathological but common ways. + The intended use for multiple addresses on a _s_e_c_- + _o_n_d_a_r_y declaration is when the _p_r_i_m_a_r_y server has + multiple network interfaces and therefore multiple + host addresses. The secondary server gets its data + across the network from one of the listed servers. + The server addresses are tried in the order listed. + If a filename is present after the list of primary + servers, data for the zone will be dumped into that + file as a backup. When the server is first + started, the data is loaded from the backup file if + possible, and a primary server is then consulted to + check that the zone is still up-to-date. Note that + + + + + + + + + + +NNaammee SSeerrvveerr OOppeerraattiioonnss GGuuiiddee ffoorr BBIINNDD SSMMMM::1100--99 + + + listing your server as a _s_e_c_o_n_d_a_r_y server does not + necessarily make it one -- the parent zone must + _d_e_l_e_g_a_t_e authority to your server as well as the + primary and the other secondaries, or you will be + transferring a zone over for no reason; no other + server will have a reason to query you for that + zone unless the parent zone lists you as a server + for the zone. + + As with primary you may specify a secondary + server for a class other than _I_N by appending + _/_c_l_a_s_s to the _s_e_c_o_n_d_a_r_y keyword, e.g., _s_e_c_- + _o_n_d_a_r_y_/_H_S. + + 66..11..55.. SSttuubb SSeerrvviiccee + + The line for a stub server is similar to a + secondary. (This feature is experimental as of + 4.9.3.) + + _s_t_u_b _B_e_r_k_e_l_e_y.._E_d_u _1_2_8.._3_2.._0.._1_0 _1_2_8.._3_2.._0.._4 _u_c_b_h_o_s_t_s_._b_a_k + + The first field specifies that the server is a stub + server for the zone stated in the second field. + + Stub zones are intended to ensure that a pri- + mary for a zone always has the correct _N_S records + for children of that zone. If the primary is not a + secondary for a child zone it should be configured + with stub zones for all its children. Stub zones + provide a mechanism to allow _N_S records for a zone + to be specified in only one place. + + _p_r_i_m_a_r_y _C_S_I_R_O.._A_U _c_s_i_r_o_._d_a_t + _s_t_u_b _d_m_s_._C_S_I_R_O.._A_U _1_3_0.._1_5_5.._1_6.._1 _d_m_s_._s_t_u_b + _s_t_u_b _d_a_p_._C_S_I_R_O.._A_U _1_3_0.._1_5_5.._9_8.._1 _d_a_p_._s_t_u_b + + + 66..11..66.. CCaacchhee IInniittiiaalliizzaattiioonn + + All servers, including ``caching only'' + servers, should have a line as follows in the boot + file to prime the name servers cache: + + _c_a_c_h_e .. _r_o_o_t.._c_a_c_h_e + + Do not put anything into your _c_a_c_h_e files other + than root server information. + + All cache files listed will be read in at + named boot time and any values still valid will be + reinstated in the cache. The root name server + information in the cache files will be used until a + + + + + + + + + + +SSMMMM::1100--1100 NNaammee SSeerrvveerr OOppeerraattiioonnss GGuuiiddee ffoorr BBIINNDD + + + root query is actually answered by one of the name + servers in the cache file, after which that answer + will be used instead of the cache file until the + answer times out. + + As with _p_r_i_m_a_r_y and _s_e_c_o_n_d_a_r_y, you may specify + a secondary server for a class other than _I_N by + appending _/_c_l_a_s_s to the _c_a_c_h_e keyword, e.g., + _c_l_a_s_s_/_H_S. + + 66..11..77.. FFoorrwwaarrddeerrss + + Any server can make use of _f_o_r_w_a_r_d_e_r_s. A _f_o_r_- + _w_a_r_d_e_r is another server capable of processing + recursive queries that is willing to try resolving + queries on behalf of other systems. The _f_o_r_w_a_r_d_e_r_s + command specifies forwarders by internet address as + follows: + + _f_o_r_w_a_r_d_e_r_s _1_2_8.._3_2.._0.._1_0 _1_2_8.._3_2.._0.._4 + + There are two main reasons for wanting to do so. + First, some systems may not have full network + access and may be prevented from sending any IP + packets into the rest of the Internet and therefore + must rely on a forwarder which does have access to + the full net. The second reason is that the for- + warder sees a union of all queries as they pass + through its server and therefore it builds up a + very rich cache of data compared to the cache in a + typical workstation name server. In effect, the + _f_o_r_w_a_r_d_e_r becomes a meta-cache that all hosts can + benefit from, thereby reducing the total number of + queries from that site to the rest of the net. + + The effect of ``forwarders'' is to prepend + some fixed addresses to the list of name servers to + be tried for every query. Normally that list is + made up only of higher-authority servers discovered + via _N_S record lookups for the relevant domain. If + the forwarders do not answer, then unless the _s_l_a_v_e + directive was given, the appropriate servers for + the domains will be queried directly. + + + 66..11..88.. SSllaavvee SSeerrvveerrss + + Slave mode is used if the use of forwarders is + the only possible way to resolve queries due to + lack of full net access or if you wish to prevent + the name server from using other than the listed + forwarders. Slave mode is activated by placing the + simple command + + + + + + + + + + +NNaammee SSeerrvveerr OOppeerraattiioonnss GGuuiiddee ffoorr BBIINNDD SSMMMM::1100--1111 + + + _o_p_t_i_o_n_s _f_o_r_w_a_r_d_-_o_n_l_y + + in the bootfile. If this option is used, then you + must specify forwarders. When in slave mode, the + server will forward each query to each of the for- + warders until an answer is found or the list of + forwarders is exhausted. The server will not try + to contact any remote name server other than those + named in the _f_o_r_w_a_r_d_e_r_s list. + + So while _f_o_r_w_a_r_d_e_r_s prepends addresses to the + ``server list'' for each query, _o_p_t_i_o_n_s _f_o_r_w_a_r_d_- + _o_n_l_y causes the ``server list'' to contain _o_n_l_y + those addresses listed in the _f_o_r_w_a_r_d_e_r_s declara- + tions. Careless use of the _o_p_t_i_o_n_s _f_o_r_w_a_r_d_-_o_n_l_y + directive can cause really horrible forwarding + loops, since you could end up forwarding queries + only to some set of hosts which are also slaves, + and one or several of them could be forwarding + queries back to you. + + Use of the _o_p_t_i_o_n_s _f_o_r_w_a_r_d_-_o_n_l_y directive + should be considered very carefully. Note that + this same behaviour can be achieved using the dep- + recated directive, _s_l_a_v_e. + + + 66..11..99.. NNoonnrreeccuurrssiivvee SSeerrvveerrss + + BIND's separation of authoritative (zone) and + nonauthoritiative (cache) data has always been + somewhat weak, and pollution of the former via the + latter has been known to occur. One way to prevent + this, as well as to save memory on servers carrying + a lot of authoritative data (e.g., root servers) is + to make such servers ``nonrecursive.'' This can be + achieved via the directive + + _o_p_t_i_o_n_s _n_o_-_r_e_c_u_r_s_i_o_n + + in the bootfile. A server with this option enabled + will not attempt to fetch data to help answer + queries -- if you ask it for data it does not have, + it will send you a referral to a more authoritative + server or, if it is itself authoritative for the + zone of the query, it will send you an negative + answer. + + A nonrecursive server can be named in an NS RR + but it cannot be listed in the _r_e_s_o_l_v_._c_o_n_f file. + + + + + + + + + + + + + +SSMMMM::1100--1122 NNaammee SSeerrvveerr OOppeerraattiioonnss GGuuiiddee ffoorr BBIINNDD + + + 66..11..1100.. QQuueerryy LLooggggiinngg + + If the file system containing your _s_y_s_l_o_g file + has quite a bit of space, you can consider using + the + + _o_p_t_i_o_n_s _q_u_e_r_y_-_l_o_g + + directive in your bootfile. This will cause your + name server to log every query it receives, which + when combined with a Perl or AWK script to postpro- + cess the logs, can be a useful management tool. + + + 66..11..1111.. IInnvveerrssee QQuueerryy PPsseeuuddoossuuppppoorrtt + + BIND by default does not support inverse + queries, and this has been known to cause problems + for certain microcomputer operating systems and for + older versions of BIND's _n_s_l_o_o_k_u_p tool. You may + decide that rather than answering with ``operation + not implemented,'' _n_a_m_e_d should detect the most + common inverse queries and answer them with bogus + information. It is better to upgrade your clients + to stop depending on inverse queries, but if that + is not possible, you should use the + + _o_p_t_i_o_n_s _f_a_k_e_-_i_q_u_e_r_y + + directive in your bootfile. _N_O_T_E_: the responses + are in fact bogus, in that they contain ISO8859 + square brackets ([[ and ]]), so your clients will not + be able to do anything useful with these responses. + It has been observed that no client ever did any- + thing useful with real inverse query responses, + either. + + + 66..11..1122.. SSeettttiinngg NNaammee SSeerrvveerr LLiimmiittss + + Some name server operations can be quite + resource intensive, and in order to tune your sys- + tem properly it is sometimes necessary to change + BIND's internal quotas. This is accomplished via + + _l_i_m_i_t _<_n_a_m_e_> _<_v_a_l_u_e_> + + directives in the bootfile. Limits, and their + default values, are as follows: + + _l_i_m_i_t _t_r_a_n_s_f_e_r_s_-_i_n _1_0 + + This is the number of simultaneous _n_a_m_e_d_-_x_f_e_r + + + + + + + + + + +NNaammee SSeerrvveerr OOppeerraattiioonnss GGuuiiddee ffoorr BBIINNDD SSMMMM::1100--1133 + + + processes BIND is willing to start. Higher numbers + yield faster convergence to primary servers if your + secondary server has hundreds or thousands of zones + to maintain, but setting this number too high can + cause thrashing due to starvation of resources such + as network bandwidth or swap space. _N_O_T_E_: this + limit can also be expressed via the deprecated + directive _m_a_x_-_f_e_t_c_h _N_N. + + _l_i_m_i_t _t_r_a_n_s_f_e_r_s_-_p_e_r_-_n_s _2 + + This is the number of simultaneous _n_a_m_e_d_-_x_f_e_r pro- + cesses BIND is willing to initiate _t_o _a_n_y _g_i_v_e_n + _n_a_m_e _s_e_r_v_e_r. In most cases, you should not need to + change it. If your secondary server is pulling + hundreds or thousands of zones from a single pri- + mary server, increasing _t_r_a_n_s_f_e_r_s_-_p_e_r_-_n_s may speed + convergence. It should be kept as small as possi- + ble, to avoid causing thrashing and resource star- + vation on the primary server. + + _l_i_m_i_t _d_a_t_a_s_i_z_e _<_s_y_s_t_e_m_-_d_e_p_e_n_d_e_n_t_> + + Most systems have a quota that limits the size of + the so-called ``data segment,'' which is where BIND + keeps all of its authority and cache data. BIND + will behave suboptimally (perhaps even exiting) if + it runs up against this quota. If your system sup- + ports a system call to change this quota for a + given process, you can ask BIND to use that system + call via the _l_i_m_i_t _d_a_t_a_s_i_z_e _N_N directive. The + value given here may be scaled by postfixing _k for + 1024X, _m for (1024^2)X, and _g for (1024^3)X. In + 1995, the root servers all use _l_i_m_i_t _d_a_t_a_s_i_z_e _6_4_m. + + + 66..11..1133.. ZZoonnee TTrraannssffeerr RReessttrriiccttiioonnss + + It may be the case that your organization does + not wish to give complete lists of your hosts to + anyone on the Internet who can reach your name + servers. While it is still possible for people to + ``iterate'' through your address range, looking for + _P_T_R records, and build a list of your hosts the + ``slow'' way, it is still considered reasonable to + restrict your export of zones via the zone transfer + protocol. To limit the list of neighbors who can + transfer zones from your server, use the _x_f_r_n_e_t_s + directive. + + This directive has the same syntax as _f_o_r_- + _w_a_r_d_e_r_s except that you can list network numbers in + addition to host addresses. For example, you could + + + + + + + + + + +SSMMMM::1100--1144 NNaammee SSeerrvveerr OOppeerraattiioonnss GGuuiiddee ffoorr BBIINNDD + + + add the directive + + _x_f_r_n_e_t_s _1_6_._0_._0_._0 + + if you wanted to permit only hosts on Class A net- + work number 16 to transfer zones from your server. + This is not nearly granular enough, and a future + version of BIND will permit such access-control to + be specified on a per-host basis rather than the + current per-net basis. Note that while addresses + without explicit masks are assumed by this direc- + tive to be networks, you can specify a mask which + is as granular as you wish, perhaps including all + bits of the address such that only a single host is + given transfer permission. For example, consider + + _x_f_r_n_e_t_s _1_6_._1_._0_._2_&_2_5_5_._2_5_5_._2_5_5_._2_5_5 + + which would permit only host _1_6_._1_._0_._2 to transfer + zones from you. Note that no spaces are allowed + surrounding the ``_&'' character that introduces a + netmask. + + The _x_f_r_n_e_t_s directive may also be given as + _t_c_p_l_i_s_t for compatibility with interim releases of + BIND 4.9. + + + 66..11..1144.. SSoorrttiinngg AAddddrreesssseess + + If there are multiple addresses available for + a name server which BIND wants to contact, BIND + will try the ones it believes are ``closest'' + first. ``Closeness'' is defined in terms of simi- + larity-of-address; that is, if one address is on + the same _s_u_b_n_e_t as some interface of the local + host, then that address will be tried first. Fail- + ing that, an address which is on the same _n_e_t_w_o_r_k + will be tried first. Failing that, they will be + tried in a more-or-less random order unless the + _s_o_r_t_l_i_s_t directive was given in the _n_a_m_e_d_._b_o_o_t + file. _s_o_r_t_l_i_s_t has a syntax similar to _f_o_r_w_a_r_d_e_r_s, + _x_f_r_n_e_t_s, and _b_o_g_u_s_n_s -- you give it a list of dot- + ted-quad networks and it uses these to ``prefer'' + some remote name server addresses over others. If + no explicit mask is provided with each element of a + _s_o_r_t_l_i_s_t, one will be inferred based on the high + order address bits. + + If you are on a Class C net which has a Class + B net between you and the rest of the Internet, you + could try to improve the name server's luck in get- + ting answers by listing the Class B network's + + + + + + + + + + +NNaammee SSeerrvveerr OOppeerraattiioonnss GGuuiiddee ffoorr BBIINNDD SSMMMM::1100--1155 + + + number in a _s_o_r_t_l_i_s_t directive. This should have + the effect of trying ``closer'' servers before the + more ``distant'' ones. Note that this behaviour is + new as of BIND 4.9. + + The other and older effect of the _s_o_r_t_l_i_s_t + directive is to cause BIND to sort the _A records in + any response it generates, so as to put those which + appear on the _s_o_r_t_l_i_s_t earlier than those which do + not. This is not as helpful as you might think, + since many clients will reorder the _A records + either at random or using LIFO; also, consider the + fact that the server won't be able to guess the + client's network topology, and so will not be able + to accurately order for ``closeness'' to all possi- + ble clients. Doing the ordering in the resolver is + clearly superior. + + In actual practice, this directive is used + only rarely since it hardwires information which + changes rapidly; a network which is ``close'' today + may be ``distant'' next month. Since BIND builds + up a cache of the remote name servers' response + times, it will quickly converge on ``reasonable'' + behaviour, which isn't the same as ``optimal'' but + it's close enough. Future directions for BIND + include choosing addresses based on local interface + metrics (on hosts that have more than one) and per- + haps on routing table information. We do not + intend to solve the generalized ``multihomed host'' + problem, but we should be able to do a little bet- + ter than we're doing now. Likewise, we hope to see + a higher level resolver library that sorts + responses using topology information that only + exists on the client's host. + + + 66..11..1155.. BBoogguuss NNaammee SSeerrvveerrss + + It happens occasionally that some remote name + server goes ``bad''. You can tell your name server + to refuse to listen to or ask questions of certain + other name servers by listing them in a _b_o_g_u_s_n_s + directive in your _n_a_m_e_d_._b_o_o_t file. Its syntax is + the same as _f_o_r_w_a_r_d_e_r_s, _x_f_r_n_e_t_s, and _s_o_r_t_l_i_s_t -- + you just give it a list of dotted-quad Internet + addresses. Note that zones delegated to such + servers will not be reachable from clients of your + servers; thus you should use this directive spar- + ingly or not at all. + + + + + + + + + + + + + +SSMMMM::1100--1166 NNaammee SSeerrvveerr OOppeerraattiioonnss GGuuiiddee ffoorr BBIINNDD + + + 66..11..1166.. SSeeggmmeenntteedd BBoooott FFiilleess + + If you are secondary for a lot of zones, you + may find it convenient to split your _n_a_m_e_d_._b_o_o_t + file into a static portion which hardly ever + changes (directives such as _d_i_r_e_c_t_o_r_y, _s_o_r_t_l_i_s_t, + _x_f_r_n_e_t_s and _c_a_c_h_e could go here), and dynamic por- + tions that change frequently (all of your _p_r_i_m_a_r_y + directives might go in one file, and all of your + _s_e_c_o_n_d_a_r_y directives might go in another file -- + and either or both of these might be fetched auto- + matically from some neighbor so that they can + change your list of secondary zones without requir- + ing your active intervention). You can accomplish + this via the _i_n_c_l_u_d_e directive, which takes just a + single file name as its argument. No quotes are + needed around the file name. The file name will be + evaluated after the name server has changed its + working directory to that specified in the _d_i_r_e_c_- + _t_o_r_y directive, so you can use relative pathnames + if your system supports them. + + + 66..22.. RReessoollvveerr CCoonnffiigguurraattiioonn + + The configuration file's name is + _/_e_t_c_/_r_e_s_o_l_v_._c_o_n_f. This file designates the name + servers on the network that should be sent queries. + The resolver will try to contact a name server on the + localhost if it cannot find its configuration file. + You should install the configuration file on every + host anyway, since this is the only recommended way to + specify a system-level default domain, and you can + still list the local host's address if it runs a name + server. It is considered reasonable to create this + file even if you run a local server, since its con- + tents will be cached by each client of the resolver + library when the client makes its first call to a + resolver routine. + + The _r_e_s_o_l_v_._c_o_n_f file contains directives, one per + line, of the following forms: + + ; comment + # another comment + domain _l_o_c_a_l_-_d_o_m_a_i_n + search _s_e_a_r_c_h_-_l_i_s_t + nameserver _s_e_r_v_e_r_-_a_d_d_r_e_s_s + sortlist _s_o_r_t_-_l_i_s_t + options _o_p_t_i_o_n_-_l_i_s_t + + Exactly one of the _d_o_m_a_i_n or _s_e_a_r_c_h directives should + be given, exactly once. If the _s_e_a_r_c_h directive is + + + + + + + + + + +NNaammee SSeerrvveerr OOppeerraattiioonnss GGuuiiddee ffoorr BBIINNDD SSMMMM::1100--1177 + + + given, the first item in the given _s_e_a_r_c_h_-_l_i_s_t will + override any previously-specified _l_o_c_a_l_-_d_o_m_a_i_n. The + _n_a_m_e_s_e_r_v_e_r directive may be given up to three times; + additional _n_a_m_e_s_e_r_v_e_r directives will be ignored. + Comments may be given by starting a line with a ``;;'' + or ``##''; note that comments were not permitted in + versions of the resolver earlier than the one included + with BIND 4.9 -- so if your vendor's resolver supports + comments, you know they are really on the ball. + + The _l_o_c_a_l_-_d_o_m_a_i_n will be appended to any query- + name that does not contain a ``..''. _l_o_c_a_l_-_d_o_m_a_i_n can + be overridden on a per-process basis by setting the + LOCALDOMAIN environment variable. Note that _l_o_c_a_l_- + _d_o_m_a_i_n processing can be disabled by setting an option + in the resolver. + + The _s_e_a_r_c_h_-_l_i_s_t is a list of domains which are + tried, in order, as qualifying domains for query-names + which do not contain a ``..''. Note that _s_e_a_r_c_h_-_l_i_s_t + processing can be disabled by setting an option in the + resolver. Also note that the environment variable + ``LOCALDOMAIN'' can override this _s_e_a_r_c_h_-_l_i_s_t on a + per-process basis. + + The _s_e_r_v_e_r_-_a_d_d_r_e_s_s's are aggregated and then used + as the default destination of queries generated + through the resolver. In other words, this is the way + you tell the resolver which name servers it should + use. It is possible for a given client application to + override this list, and this is often done inside the + name server (which is itself a _r_e_s_o_l_v_e_r client) and in + test programs such as _n_s_l_o_o_k_u_p. Note that if you wish + to list the local host in your resolver configuration + file, you should probably use its primary Internet + address rather than a local-host alias such as + 127.0.0.1 or 0.0.0.0. This is due to a bug in the + handling of connected SOCK_DGRAM sockets in some ver- + sions of the BSD networking code. If you must use an + address-alias, you should prefer 0.0.0.0 (or simply + ``0'') over 127.0.0.1, though be warned that depending + on the vintage of your BSD-derived networking code, + both of them are capable of failing in their own ways. + If your host's IP implementation does not create a + short-circuit route between the default interface and + the loopback interface, then you might also want to + add a static route (eg. in //eettcc//rrcc..llooccaall) to do so: + + _r_o_u_t_e _a_d_d _m_y_h_o_s_t_._d_o_m_a_i_n_._n_a_m_e _l_o_c_a_l_h_o_s_t _1 + + + The _s_o_r_t_-_l_i_s_t is a list of IP address, netmask + pairs. Addresses returned by gethostbyname are sorted + + + + + + + + + + +SSMMMM::1100--1188 NNaammee SSeerrvveerr OOppeerraattiioonnss GGuuiiddee ffoorr BBIINNDD + + + to the order specified by this list. Any addresses + that do not match the address netmask pair will be + returned after those that do. The netmask is optional + and the natural netmask will be used if not specified. + + The _o_p_t_i_o_n_-_l_i_s_t is a list of options which each + override some internal resolver variable. Supported + options at this time are: + + ddeebbuugg + sets the RES_DEBUG bit in __rreess..ooppttiioonnss. + + nnddoottss::_n + sets the lower threshold (measured in ``number of + dots'') on names given to _r_e_s___q_u_e_r_y() such that + names with more than this number of dots will be + tried as absolute names before any _l_o_c_a_l_-_d_o_m_a_i_n + or _s_e_a_r_c_h_-_l_i_s_t processing is done. The default + for this internal variable is ``1''. + + + 66..33.. CCaacchhee IInniittiiaalliizzaattiioonn FFiillee + + 66..33..11.. rroooott..ccaacchhee + + The name server needs to know the servers that + are the authoritative name servers for the root + domain of the network. To do this we have to prime + the name server's cache with the addresses of these + higher authorities. The location of this file is + specified in the boot file. This file uses the + Standard Resource Record Format (aka. Masterfile + Format) covered further on in this paper. + + + 66..44.. DDoommaaiinn DDaattaa FFiilleess + + There are two standard files for specifying the + data for a domain. These are _h_o_s_t_s and _h_o_s_t_._r_e_v. + These files use the Standard Resource Record Format + covered later in this paper. Note that the file names + are arbitrary; many network administrators prefer to + name their zone files after the domains they contain, + especially in the average case which is where a given + server is primary and/or secondary for many different + zones. + + 66..44..11.. hhoossttss + + This file contains all the data about the + machines in this zone. The location of this file + is specified in the boot file. + + + + + + + + + + + +NNaammee SSeerrvveerr OOppeerraattiioonnss GGuuiiddee ffoorr BBIINNDD SSMMMM::1100--1199 + + + 66..44..22.. hhoossttss..rreevv + + This file specifies the IN-ADDR.ARPA domain. + This is a special domain for allowing address to + name mapping. As internet host addresses do not + fall within domain boundaries, this special domain + was formed to allow inverse mapping. The + IN-ADDR.ARPA domain has four labels preceding it. + These labels correspond to the 4 octets of an + Internet address. All four octets must be speci- + fied even if an octet contains zero. The Internet + address 128.32.0.4 is located in the domain + 4.0.32.128.IN-ADDR.ARPA. This reversal of the + address is awkward to read but allows for the natu- + ral grouping of hosts in a network. + + 66..44..33.. nnaammeedd..llooccaall + + This file specifies the _P_T_R record for the + local loopback interface, better known as _l_o_c_a_l_- + _h_o_s_t, whose network address is 127.0.0.1. The + location of this file is specified in the boot + file. It is vitally important to the proper opera- + tion of every name server that the 127.0.0.1 + address have a _P_T_R record pointing back to the name + ``llooccaallhhoosstt..''. The name of this _P_T_R record is + always ``11..00..00..112277..IINN--AADDDDRR..AARRPPAA''. This is neces- + sary if you want your users to be able to use host- + name-authentication (_h_o_s_t_s_._e_q_u_i_v or _~_/_._r_h_o_s_t_s) on + the name ``llooccaallhhoosstt''. As implied by this _P_T_R + record, there should be a ``llooccaallhhoosstt.._m_y_._d_o_m_._a_i_n'' + _A record (with address 127.0.0.1) in every domain + that contains hosts. ``llooccaallhhoosstt..'' will lose its + trailing dot when 11..00..00..112277..iinn--aaddddrr..aarrppaa is queried + for; then, the DEFNAMES and/or DNSRCH resolver + options will cause ``llooccaallhhoosstt'' to be evaluated as + a host name in the local domain, and that means the + top domains (or ideally, every domain) in your + resolver's search path had better have something by + that name. + + 66..55.. SSttaannddaarrdd RReessoouurrccee RReeccoorrdd FFoorrmmaatt + + The records in the name server data files are + called resource records. The Standard Resource Record + Format (RR) is specified in RFC1035. The following is + a general description of these records: + + _{_n_a_m_e_} _{_t_t_l_} _a_d_d_r_-_c_l_a_s_s _R_e_c_o_r_d _T_y_p_e _R_e_c_o_r_d _S_p_e_c_i_f_i_c _d_a_t_a + + Resource records have a standard format shown above. + The first field is always the name of the domain + + + + + + + + + + + +SSMMMM::1100--2200 NNaammee SSeerrvveerr OOppeerraattiioonnss GGuuiiddee ffoorr BBIINNDD + + + record and it must always start in column 1. For all + RR's other than the first in a file, the name may be + left blank; in that case it takes on the name of the + previous RR. The second field is an optional time to + live field. This specifies how long this data will be + stored in the data base. By leaving this field blank + the default time to live is specified in the _S_t_a_r_t _O_f + _A_u_t_h_o_r_i_t_y resource record (see below). The third + field is the address class; currently, only one class + is supported: _I_N for internet addresses and other + internet information. Limited support is included for + the _H_S class, which is for MIT/Athena ``Hesiod'' + information. The fourth field states the type of the + resource record. The fields after that are dependent + on the type of the RR. Case is preserved in names and + data fields when loaded into the name server. All + comparisons and lookups in the name server data base + are case insensitive. + + TThhee ffoolllloowwiinngg cchhaarraacctteerrss hhaavvee ssppeecciiaall mmeeaanniinnggss:: + + ``..'' + A free standing dot in the name field refers to + the root domain. + + ``@'' + A free standing @ in the name field denotes the + current origin. + + ``\X'' + Where X is any character other than a digit + (0-9), quotes that character so that its special + meaning does not apply. For example, ``\.'' can + be used to place a dot character in a label. + + ``\DDD'' + Where each D is a digit, is the octet correspond- + ing to the decimal number described by DDD. The + resulting octet is assumed to be text and is not + checked for special meaning. + + ``( )'' + Parentheses are used to group data that crosses a + line. In effect, line terminations are not rec- + ognized within parentheses. (At present, this + notation only works for SOA RR's and is not + optional.) + + ``;'' + Semicolon starts a comment; the remainder of the + line is ignored. Note that a completely blank + line is also considered a comment, and ignored. + + + + + + + + + + + +NNaammee SSeerrvveerr OOppeerraattiioonnss GGuuiiddee ffoorr BBIINNDD SSMMMM::1100--2211 + + + ``*'' + An asterisk signifies wildcarding. Note that + this is just another data character whose special + meaning comes about only during internal name + server search operations. Wildcarding is only + meaningful for some RR types (notably _M_X), and + then only in the name field -- not in the data + fields. + + Anywhere a name appears -- either in the name + field or in some data field defined to contain names + -- the current origin will be appended if the name + does not end in a ``..''. This is useful for appending + the current domain name to the data, such as machine + names, but may cause problems where you do not want + this to happen. A good rule of thumb is that, if the + name is not in the domain for which you are creating + the data file, end the name with a ``..''. + + 66..55..11.. $$IINNCCLLUUDDEE + + An include line begins with $INCLUDE, starting + in column 1, and is followed by a file name, and, + optionally, by a new temporary $ORIGIN to be used + while reading this file. This feature is particu- + larly useful for separating different types of data + into multiple files. An example would be: + + $INCLUDE /usr/local/adm/named/data/mail-exchanges + + The line would be interpreted as a request to load + the file _/_u_s_r_/_l_o_c_a_l_/_a_d_m_/_n_a_m_e_d_/_d_a_t_a_/_m_a_i_l_-_e_x_c_h_a_n_g_e_s. + The $INCLUDE command does not cause data to be + loaded into a different zone or tree. This is sim- + ply a way to allow data for a given primary zone to + be organized in separate files. Not even the + ``temporary $ORIGIN'' feature described above is + sufficient to cause your data to branch out into + some other zone -- zone boundaries can only be + introduced in the boot file. + + A $INCLUDE file must have a name on its first + RR. That is, the first character of the first non- + comment line must not be a space. The current + default name in the parent file _d_o_e_s _n_o_t carry into + the $INCLUDE file. + + 66..55..22.. $$OORRIIGGIINN + + The origin is a way of changing the origin in + a data file. The line starts in column 1, and is + followed by a domain origin. This seems like it + could be useful for putting more then one zone into + + + + + + + + + + +SSMMMM::1100--2222 NNaammee SSeerrvveerr OOppeerraattiioonnss GGuuiiddee ffoorr BBIINNDD + + + a data file, but that's not how it works. The name + server fundamentally requires a given zone to map + entirely to some specific file. You should there- + fore be very careful to use $ORIGIN only once at + the top of a file, or, within a file, to change to + a ``lower'' domain in the zone -- never to some + other zone altogether. + + 66..55..33.. SSOOAA -- SSttaarrtt OOff AAuutthhoorriittyy + + + _n_a_m_e _{_t_t_l_} _a_d_d_r_-_c_l_a_s_s _S_O_A _O_r_i_g_i_n _P_e_r_s_o_n _i_n _c_h_a_r_g_e + @ IN SOA ucbvax..Berkeley..Edu.. kjd..ucbvax..Berkeley..Edu.. ( + 1995122103 ; Serial + 10800 ; Refresh + 1800 ; Retry + 3600000 ; Expire + 259200 ) ; Minimum + + + The _S_t_a_r_t _o_f _A_u_t_h_o_r_i_t_y_, _S_O_A_, record designates the + start of a zone. The name is the name of the zone + and is often given as ``@'' since this is always + the current $ORIGIN and the SOA RR is usually the + first record of the primary zone file. Origin is + the name of the host on which this data file + resides (in other words, the _p_r_i_m_a_r_y _m_a_s_t_e_r server + for this zone.) Person in charge is the e-mail + address for the person responsible for the name + server, with ``@'' changed to a ``.''. The serial + number is the version number of this data file and + must be a positive integer. This number must be + incremented whenever a change is made to the data. + Older servers permitted the use of a phantom ``.'' + in this and other numbers in a zone file; the mean- + ing of n.m was ``n000m'' rather than the more intu- + itive ``n*1000+m'' (such that 1.234 translated to + 1000234 rather than to 1234). This feature has + been deprecated due to its obscurity, unpre- + dictability, and lack of necessity. Note that + using a ``YYYYMMDDNN'' notation you can still make + 100 changes per day until the year 4294. You + should choose a notation that works for you. If + you're a clever _p_e_r_l programmer you could even use + _R_C_S version numbers to help generate your zone + serial numbers. The refresh indicates how often, + in seconds, the secondary name servers are to check + with the primary name server to see if an update is + needed. The retry indicates how long, in seconds, + a secondary server should wait before retrying a + failed zone transfer. Expire is the upper limit, + in seconds, that a secondary name server is to use + + + + + + + + + + + +NNaammee SSeerrvveerr OOppeerraattiioonnss GGuuiiddee ffoorr BBIINNDD SSMMMM::1100--2233 + + + the data before it expires for lack of getting a + refresh. Minimum is the default number of seconds + to be used for the Time To Live field on resource + records which do not specify one in the zone file. + It is also an enforced minimum on Time To Live if + it is specified on some resource record (RR) in the + zone. There must be exactly one _S_O_A record per + zone. + + 66..55..44.. NNSS -- NNaammee SSeerrvveerr + + _{_n_a_m_e_} _{_t_t_l_} _a_d_d_r_-_c_l_a_s_s _N_S _N_a_m_e _s_e_r_v_e_r_s _n_a_m_e + IN NS ucbarpa..Berkeley..Edu.. + + The _N_a_m_e _S_e_r_v_e_r record, _N_S, lists a name server + responsible for a given domain, creating a _d_e_l_e_g_a_- + _t_i_o_n _p_o_i_n_t and a _s_u_b_z_o_n_e. The first name field + specifies the zone that is serviced by the name + server specified by the second name. Every zone + needs at least two name servers. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +SSMMMM::1100--2244 NNaammee SSeerrvveerr OOppeerraattiioonnss GGuuiiddee ffoorr BBIINNDD + + + 66..55..55.. AA -- AAddddrreessss + + _{_n_a_m_e_} _{_t_t_l_} _a_d_d_r_-_c_l_a_s_s _A _a_d_d_r_e_s_s + ucbarpa IN A 128..32..0..4 + IN A 10..0..0..78 + + The _A_d_d_r_e_s_s record, _A, lists the address for a + given machine. The name field is the machine name + and the address is the network address. There + should be one _A record for each address of the + machine. + + 66..55..66.. HHIINNFFOO -- HHoosstt IInnffoorrmmaattiioonn + + _{_n_a_m_e_} _{_t_t_l_} _a_d_d_r_-_c_l_a_s_s _H_I_N_F_O _H_a_r_d_w_a_r_e _O_S + IN HINFO VAX-11/780 UNIX + + _H_o_s_t _I_n_f_o_r_m_a_t_i_o_n resource record, _H_I_N_F_O, is for + host specific data. This lists the hardware and + operating system that are running at the listed + host. If you want to include a space in the + machine name you must quote the name (using ``"'' + characters.) There could be one _H_I_N_F_O record for + each host, though for security reasons most domains + don't have any _H_I_N_F_O records at all. No applica- + tion depends on them. + + + 66..55..77.. WWKKSS -- WWeellll KKnnoowwnn SSeerrvviicceess + + _{_n_a_m_e_} _{_t_t_l_} _a_d_d_r_-_c_l_a_s_s _W_K_S _a_d_d_r_e_s_s _p_r_o_t_o_c_o_l _l_i_s_t _o_f _s_e_r_v_i_c_e_s + IN WKS 128..32..0..10 UDP who route timed domain + IN WKS 128..32..0..10 TCP ( echo telnet + discard sunrpc sftp + uucp-path systat daytime + netstat qotd nntp + link chargen ftp + auth time whois mtp + pop rje finger smtp + supdup hostnames + domain + nameserver ) + + The _W_e_l_l _K_n_o_w_n _S_e_r_v_i_c_e_s record, _W_K_S, describes the + well known services supported by a particular pro- + tocol at a specified address. The list of services + and port numbers come from the list of services + specified in _/_e_t_c_/_s_e_r_v_i_c_e_s_. There should be only + one _W_K_S record per protocol per address. Note that + RFC1123 says of _W_K_S records: + + + + + + + + + + + + + +NNaammee SSeerrvveerr OOppeerraattiioonnss GGuuiiddee ffoorr BBIINNDD SSMMMM::1100--2255 + + + 2.2 Using Domain Name Service + ... + An application SHOULD NOT rely on the ability to locate a WKS + record containing an accurate listing of all services at a + particular host address, since the WKS RR type is not often used + by Internet sites. To confirm that a service is present, simply + attempt to use it. + ... + 5.2.12 WKS Use in MX Processing: RFC-974, p. 5 + + RFC-974 [SMTP:3] recommended that the domain system be queried + for WKS ("Well-Known Service") records, to verify that each + proposed mail target does support SMTP. Later experience has + shown that WKS is not widely supported, so the WKS step in MX + processing SHOULD NOT be used. + ... + 6.1.3.6 Status of RR Types + ... + The TXT and WKS RR types have not been widely used by + Internet sites; as a result, an application cannot rely + on the existence of a TXT or WKS RR in most + domains. + + + 66..55..88.. CCNNAAMMEE -- CCaannoonniiccaall NNaammee + + _a_l_i_a_s _{_t_t_l_} _a_d_d_r_-_c_l_a_s_s _C_N_A_M_E _C_a_n_o_n_i_c_a_l _n_a_m_e + ucbmonet IN CNAME monet + + The _C_a_n_o_n_i_c_a_l _N_a_m_e resource record, _C_N_A_M_E, speci- + fies an alias or nickname for the official, or + canonical, host name. This record must be the only + one associated with the alias name. All other + resource records must be associated with the canon- + ical name, not with the nickname. Any resource + records that include a domain name as their value + (e.g., NS or MX) _m_u_s_t list the canonical name, not + the nickname. Similarly, a CNAME will be followed + when searching for A RRs, but not for MX RRs or NS + RRs or most other types of RRs. CNAMEs are allowed + to point to other CNAMEs, but this is considered + sloppy. + + Nicknames are useful when a well known host + changes its name. In that case, it is usually a + good idea to have a _C_N_A_M_E record so that people + still using the old name will get to the right + place. + + + + + + + + + + + + + + + +SSMMMM::1100--2266 NNaammee SSeerrvveerr OOppeerraattiioonnss GGuuiiddee ffoorr BBIINNDD + + + 66..55..99.. PPTTRR -- DDoommaaiinn NNaammee PPooiinntteerr + + _n_a_m_e _{_t_t_l_} _a_d_d_r_-_c_l_a_s_s _P_T_R _r_e_a_l _n_a_m_e + 7.0 IN PTR monet..Berkeley..Edu.. + + A _D_o_m_a_i_n _N_a_m_e _P_o_i_n_t_e_r record, _P_T_R, allows special + names to point to some other location in the + domain. The above example of a _P_T_R record is used + in setting up reverse pointers for the special + _I_N_-_A_D_D_R.._A_R_P_A domain. This line is from the example + _h_o_s_t_s_._r_e_v file. _P_T_R records are needed by the + _g_e_t_h_o_s_t_b_y_a_d_d_r function. Note the trailing ``..'' + which prevents BIND from appending the current + $ORIGIN to that domain name. + + 66..55..1100.. MMXX -- MMaaiill EExxcchhaannggee + + _n_a_m_e _{_t_t_l_} _a_d_d_r_-_c_l_a_s_s _M_X _p_r_e_f_e_r_e_n_c_e _v_a_l_u_e _m_a_i_l _e_x_c_h_a_n_g_e + Munnari..OZ..AU.. IN MX 0 Seismo..CSS..GOV.. + *..IL.. IN MX 0 RELAY..CS..NET.. + + _M_a_i_l _e_X_c_h_a_n_g_e records, _M_X, are used to specify a + list of hosts which are configured to receive mail + sent to this domain name. Every name which + receives mail should have an _M_X since if one is not + found at the time mail is being delivered, an _M_X + will be ``imputed'' with a cost of 0 and a destina- + tion of the host itself. If you want a host to + receive its own mail, you should create an _M_X for + your host's name, pointing at your host's name. It + is better to have this be explicit than to let it + be imputed by remote mailers. In the first exam- + ple, above, Seismo..CSS..GOV.. is a mail gateway that + knows how to deliver mail to Munnari..OZ..AU... These + two machines may have a private connection or use a + different transport medium. The preference value + is the order that a mailer should follow when there + is more than one way to deliver mail to a single + machine. Note that lower numbers indicate higher + precedence, and that mailers are supposed to ran- + domize same-valued _M_X hosts so as to distribute the + load evenly if the costs are equal. See RFC974 for + more detailed information. + + Wildcard names containing the character ``*'' + may be used for mail routing with _M_X records. + There are likely to be servers on the network that + simply state that any mail to a domain is to be + routed through a relay. Second example, above, all + mail to hosts in the domain IL is routed through + RELAY.CS.NET. This is done by creating a wildcard + resource record, which states that *.IL has an _M_X + + + + + + + + + + + +NNaammee SSeerrvveerr OOppeerraattiioonnss GGuuiiddee ffoorr BBIINNDD SSMMMM::1100--2277 + + + of RELAY.CS.NET. Wildcard _M_X records are not very + useful in practice, though, since once a mail mes- + sage gets to the gateway for a given domain it + still has to be routed _w_i_t_h_i_n that domain and it is + not currently possible to have an apparently-dif- + ferent set of _M_X records inside and outside of a + domain. If you won't be needing any Mail Exchanges + inside your domain, go ahead and use a wildcard. + If you want to use both wildcard ``top-level'' and + specific ``interior'' _M_X records, note that each + specific record will have to ``end with'' a com- + plete recitation of the same data that is carried + in the top-level record. This is because the spe- + cific _M_X records will take precedence over the top- + level wildcard records, and must be able to perform + the top-level's if a given interior domain is to be + able to receive mail from outside the gateway. + Wildcard _M_X records are very subtle and you should + be careful with them. + + 66..55..1111.. TTXXTT -- TTeexxtt + + _n_a_m_e _{_t_t_l_} _a_d_d_r_-_c_l_a_s_s _T_X_T _s_t_r_i_n_g + Munnari..OZ..AU.. IN TXT "foo" + + A _T_X_T record contains free-form textual data. The + syntax of the text depends on the domain where it + is found; many systems use _T_X_T records to encode + local data in a stylized format. MIT Hesiod is one + such system. + + 66..55..1122.. RRPP -- RReessppoonnssiibbllee PPeerrssoonn + + _o_w_n_e_r _{_t_t_l_} _a_d_d_r_-_c_l_a_s_s _R_P _m_b_o_x_-_d_o_m_a_i_n_-_n_a_m_e _T_X_T_-_d_o_m_a_i_n_-_n_a_m_e + franklin IN RP ben.franklin.berkeley.edu. sysadmins.berkeley.edu. + + + The Responsible Person record, _R_P, identifies + the name or group name of the responsible person + for a host. Often it is desirable to be able to + identify the responsible entity for a particular + host. When that host is down or malfunctioning, + you would want to contact those parties who might + be able to repair the host. + + The first field, _m_b_o_x_-_d_o_m_a_i_n_-_n_a_m_e, is a domain + name that specifies the mailbox for the responsible + person. Its format in a zone file uses the DNS + convention for mailbox encoding, identical to that + used for the _P_e_r_s_o_n_-_i_n_-_c_h_a_r_g_e mailbox field in the + SOA record. In the example above, the _m_b_o_x_-_d_o_m_a_i_n_- + _n_a_m_e shows the encoding for + + + + + + + + + + + +SSMMMM::1100--2288 NNaammee SSeerrvveerr OOppeerraattiioonnss GGuuiiddee ffoorr BBIINNDD + + + ``<>''. The root domain + name (just ``..'') may be specified to indicate that + no mailbox is available. + + The second field, _T_X_T_-_d_o_m_a_i_n_-_n_a_m_e, is a domain + name for which _T_X_T records exist. A subsequent + query can be performed to retrieve the associated + _T_X_T resource records at _T_X_T_-_d_o_m_a_i_n_-_n_a_m_e. This pro- + vides a level of indirection so that the entity can + be referred to from multiple places in the DNS. + The root domain name (just ``..'') may be specified + for _T_X_T_-_d_o_m_a_i_n_-_n_a_m_e _t_o _i_n_d_i_c_a_t_e _t_h_a_t _n_o _a_s_s_o_c_i_a_t_e_d + _T_X_T _R_R _e_x_i_s_t_s_. _I_n _t_h_e _e_x_a_m_p_l_e _a_b_o_v_e_, _`_`ssyyssaadd-- + mmiinnss..bbeerrkkeelleeyy..eedduu.._'_' _i_s _t_h_e _n_a_m_e _o_f _a _T_X_T _r_e_c_o_r_d + _t_h_a_t _m_i_g_h_t _c_o_n_t_a_i_n _s_o_m_e _t_e_x_t _w_i_t_h _n_a_m_e_s _a_n_d _p_h_o_n_e + _n_u_m_b_e_r_s_. + + The format of the _R_P record is class-insensi- + tive. Multiple _R_P records at a single name may be + present in the database, though they should have + identical TTLs. + + The _R_P record is still experimental; not all + name servers implement or recognize it. + + 66..55..1133.. AAFFSSDDBB -- DDCCEE oorr AAFFSS SSeerrvveerr + + _n_a_m_e _{_t_t_l_} _a_d_d_r_-_c_l_a_s_s _A_F_S_D_B _s_u_b_t_y_p_e _s_e_r_v_e_r _h_o_s_t _n_a_m_e + toaster.com. IN AFSDB 1 jack.toaster.com. + toaster.com. IN AFSDB 1 jill.toaster.com. + toaster.com. IN AFSDB 2 tracker.toaster.com. + + _A_F_S_D_B records are used to specify the hosts that + provide a style of distributed service advertised + under this domain name. A subtype value (analogous + to the ``preference'' value in the _M_X record) indi- + cates which style of distributed service is pro- + vided with the given name. Subtype 1 indicates + that the named host is an AFS (R) database server + for the AFS cell of the given domain name. Subtype + 2 indicates that the named host provides intra-cell + name service for the DCE (R) cell named by the + given domain name. In the example above, + jack..toaster..com and jill..toaster..com are declared + to be AFS database servers for the toaster..com AFS + cell, so that AFS clients wishing service from + toaster..com are directed to those two hosts for + further information. The third record declares + that tracker..toaster..com houses a directory server + for the root of the DCE cell toaster..com, so that + DCE clients that wish to refer to DCE services + should consult with the host tracker..toaster..com + + + + + + + + + + + +NNaammee SSeerrvveerr OOppeerraattiioonnss GGuuiiddee ffoorr BBIINNDD SSMMMM::1100--2299 + + + for further information. The DCE sub-type of + record is usually accompanied by a _T_X_T record for + other information specifying other details to be + used in accessing the DCE cell. RFC1183 contains + more detailed information on the use of this record + type. + + The _A_F_S_D_B record is still experimental; not + all name servers implement or recognize it. + + + 66..55..1144.. PPXX -- PPooiinntteerr ttoo XX..440000//RRFFCC882222 mmaappppiinngg + iinnffoorrmmaattiioonn + + _n_a_m_e _{_t_t_l_} _a_d_d_r_-_c_l_a_s_s _P_X _p_r_e_f_e_r _8_2_2_-_d_o_m _X_._4_0_0_-_d_o_m + *.ADMD-garr.X42D.it. IN PX 50 it. ADMD-garr.C-it. + *.infn.it. IN PX 50 infn.it. O.PRMD-infn.ADMD-garr.C-it. + *.it. IN PX 50 it. O-gate.PRMD-garr.ADMD-garr.C-it. + + + The _P_X records (_P_o_i_n_t_e_r _t_o _X_._4_0_0_/_R_F_C_8_2_2 _m_a_p_- + _p_i_n_g _i_n_f_o_r_m_a_t_i_o_n) are used to specify address map- + ping rules between X.400 O/R addresses and RFC822 + style (domain-style) mail addresses. For a detailed + description of the mapping process please refer to + RFC1327. + + Mapping rules are of 3 different types: + + 1) mapping from X.400 to RFC822 (defined as + "table 1 rules" in RFC1327) + + 2) mapping from RFC822 to X.400 (defined as + "table 2 rules" in RFC1327) + + 3) encoding RFC822 into X.400 (defined as + "gate table" in RFC1327) + + All three types of mapping rules are specified + using _P_X Resource Records in DNS, although the _n_a_m_e + value is different: for case 1, the _n_a_m_e value is + an X.400 domain in DNS syntax, whereas for cases 2 + and 3 the _n_a_m_e value is an RFC822 domain. Refer to + RFC-1664 for details on specifying an X.400 domain + in DNS syntax and for the use of the _X_4_2_D keyword + in it. Tools are available to convert from RFC1327 + tables format into DNS files syntax. _P_r_e_f_e_r_e_n_c_e is + analogous to the _M_X RR Preference parameter: it is + currently advised to use a fixed value of 50 for + it. _8_2_2_-_d_o_m gives the RFC822 part of the mapping + rules, and _X_._4_0_0_-_d_o_m gives the X.400 part of the + mapping rule (in DNS syntax). It is currently + + + + + + + + + + + +SSMMMM::1100--3300 NNaammee SSeerrvveerr OOppeerraattiioonnss GGuuiiddee ffoorr BBIINNDD + + + advised always to use wildcarded _n_a_m_e values, as + the RFC1327 tables specifications permit wildcard + specifications only. This is to keep compatibility + with existing services using static RFC1327 tables + instead of DNS _P_X information. + + Specifications of mapping rules from X.400 to + RFC822 syntax requires the creation of an appropri- + ate X.400 domain tree into DNS, including thus spe- + cific _S_O_A and _N_S records for the domain itself. + Specification of mapping rules from RFC822 into + X.400 can be embedded directly into the normal + direct _n_a_m_e tree. Again, refer to RFC1664 for + details about organization of this structure. + + Tools and library routines, based on the stan- + dard resolver ones, are available to retrieve from + DNS the appropriate mapping rules in RFC1327 or DNS + syntax. + + Once again, refer to RFC1664 to use the _P_X + resource record, and be careful in coordinating the + mapping information you can specify in DNS with the + same information specified into the RFC1327 static + tables. + + The _P_X record is still experimental; not all + servers implement or recognize it. + + + 66..66.. DDiissccuussssiioonn aabboouutt tthhee TTTTLL + + The use of different Time To Live fields with in + a RRset have been deprecated and this is enforced by + the server when loading a primary zone. See the Secu- + rity section for more discussion of differing TTLs. + + The Time To Live assigned to the records and to + the zone via the Minimum field in the SOA record is + very important. High values will lead to lower BIND + network traffic and faster response time. Lower values + will tend to generate lots of requests but will allow + faster propagation of changes. + + Only changes and deletions from the zone are + affected by the TTLs. Additions propagate according + to the Refresh value in the SOA. + + Experience has shown that sites use default TTLs + for their zones varying from around 0.5 day to around + 7 days. You may wish to consider boosting the default + TTL shown in former versions of this guide from one + day (86400 seconds) to three days (259200 seconds). + + + + + + + + + + +NNaammee SSeerrvveerr OOppeerraattiioonnss GGuuiiddee ffoorr BBIINNDD SSMMMM::1100--3311 + + + This will drastically reduce the number of requests + made to your name servers. + + If you need fast propagation of changes and dele- + tions, it might be wise to reduce the Minimum field a + few days before the change, then do the modification + itself and augment the TTL to its former value. + + If you know that your zone is pretty stable (you + mainly add new records without deleting or changing + old ones) then you may even wish to consider a TTL + higher than three days. + + Note that in any case, it makes no sense to have + records with a TTL below the SOA Refresh delay, as + Delay is the time required for secondaries to get a + copy of the newly modified zone. + + + 66..77.. AAbboouutt ````sseeccuurree zzoonneess'''' + + Secure zones implement named security on a zone + by zone basis. It is designed to use a permission + list of networks or hosts which may obtain particular + information from the zone. + + In order to use zone security, _n_a_m_e_d must be com- + piled with SECURE_ZONES defined and you must have at + least one secure_zone TXT RR. Unless a _s_e_c_u_r_e___z_o_n_e + record exists for a given zone, no restrictions will + be applied to the data in that zone. The format of + the secure_zone TXT RR is: + + secure_zone addr-class TXT string + + The addr-class may be either _H_S or _I_N. The syn- + tax for the TXT string is either ``network + address:netmask'' or ``host IP address:H''. + + ``network address:netmask'' allows queries from + an entire network. If the netmask is omitted, named + will use the default netmask for the network address + specified. + + ``host IP address:H'' allows queries from a host. + The ``H'' after the ``:'' is required to differentiate + the host address from a network address. Multiple + secure_zone TXT RRs are allowed in the same zone file. + + For example, you can set up a zone to only answer + Hesiod requests from the masked class B network + 130.215.0.0 and from host 128.23.10.56 by adding the + following two TXT RR's: + + + + + + + + + + +SSMMMM::1100--3322 NNaammee SSeerrvveerr OOppeerraattiioonnss GGuuiiddee ffoorr BBIINNDD + + + secure_zone HS TXT ``130.215.0.0:255.255.0.0'' + secure_zone HS TXT ``128.23.10.56:H'' + + This feature can be used to restrict access to a + Hesiod password map or to separate internal and exter- + nal internet address resolution on a firewall machine + without needing to run a separate named for internal + and external address resolution. + + Note that you will need to include your loopback + interface (127.0.0.1) in your secure_zone record, or + your local clients won't be able to resolve names. + + + 66..88.. AAbboouutt HHeessiioodd,, aanndd HHSS--ccllaassss RReessoouurrccee RReeccoorrddss + + Hesiod, developed by MIT Project Athena, is an + information service built upon BIND. Its intent is + similar to that of Sun's NIS: to furnish information + about users, groups, network-accessible file systems, + printcaps, and mail service throughout an installa- + tion. Aside from its use of BIND rather than separate + server code another important difference between Hes- + iod and NIS is that Hesiod is not intended to deal + with passwords and authentication, but only with data + that are not security sensitive. Hesiod servers can + be implemented by adding resource records to BIND + servers; or they can be implemented as separate + servers separately administered. + + To learn about and obtain Hesiod make an anony- + mous FTP connection to host ATHENA-DIST.MIT.EDU and + retrieve the compressed tar file //ppuubb//AATTHHEENNAA//hheess-- + iioodd..ttaarr..ZZ. You will not need the named and resolver + library portions of the distribution because their + functionality has already been integrated into BIND as + of 4.9. To learn how Hesiod functions as part of the + Athena computing environment obtain the paper + //ppuubb//AATTHHEENNAA//uusseenniixx//aatthheennaa--cchhaannggeess..PPSS from the above + FTP server host. There is also a tar file of sample + Hesiod resource files. + + Whether one should use Hesiod class is open to + question, since the same services can probably be pro- + vided with class IN, type TXT and type CNAME records. + In either case, the code and documents for Hesiod will + suggest how to set up and use the service. + + Note that while BIND includes support for _H_S- + class queries, the zone transfer logic for non-_I_N- + class zones is still experimental. + + + + + + + + + + + + +NNaammee SSeerrvveerr OOppeerraattiioonnss GGuuiiddee ffoorr BBIINNDD SSMMMM::1100--3333 + + + 66..99.. SSaammppllee FFiilleess + + The following section contains sample files for + the name server. This covers example boot files for + the different types of servers and example domain data + base files. + + 66..99..11.. BBoooott FFiilleess + + 66..99..11..11.. PPrriimmaarryy SSeerrvveerr + + + ; + ; Boot file for Primary Name Server + ; + + + ; type domain source file or host + ; + directory /usr/local/adm/named + primary Berkeley..Edu ucbhosts + primary 32..128..in-addr..arpa ucbhosts..rev + primary 0..0..127..in-addr..arpa named..local + cache .. root..cache + + + + 66..99..11..22.. SSeeccoonnddaarryy SSeerrvveerr + + + ; + ; Boot file for Secondary Name Server + ; + + + ; type domain source file or host + ; + directory /usr/local/adm/named + secondary Berkeley..Edu 128..32..0..4 128..32..0..10 ucbhosts.bak + secondary 32..128..in-addr..arpa 128..32..0..4 128..32..0..10 ucbhosts.rev.bak + primary 0..0..127..in-addr..arpa named..local + cache .. root..cache + + + + + + + + + + + + + + + + + + + + + +SSMMMM::1100--3344 NNaammee SSeerrvveerr OOppeerraattiioonnss GGuuiiddee ffoorr BBIINNDD + + + 66..99..11..33.. CCaacchhiinngg OOnnllyy SSeerrvveerr + + + ; + ; Boot file for Caching Only Name Server + ; + + + ; type domain source file or host + ; + directory /usr/local/adm/named + cache .. root..cache + primary 0..0..127..in-addr..arpa named..local + + + + + + 66..99..22.. RReemmoottee SSeerrvveerr // DDNNSS CClliieenntt + + 66..99..22..11.. //eettcc//rreessoollvv..ccoonnff + + + domain Berkeley..Edu + nameserver 128..32..0..4 + nameserver 128..32..0..10 + sortlist 130.155.160.0/255.255.240.0 130.155.0.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +NNaammee SSeerrvveerr OOppeerraattiioonnss GGuuiiddee ffoorr BBIINNDD SSMMMM::1100--3355 + + + 66..99..33.. rroooott..ccaacchhee + + + ; + ; This file holds the information on root name servers needed to + ; initialize cache of Internet domain name servers + ; (e.g. reference this file in the "cache . " + ; configuration file of BIND domain name servers). + ; + ; This file is made available by InterNIC registration services + ; under anonymous FTP as + ; file /domain/named.root + ; on server FTP.RS.INTERNIC.NET + ; -OR- under Gopher at RS.INTERNIC.NET + ; under menu InterNIC Registration Services (NSI) + ; submenu InterNIC Registration Archives + ; file named.root + ; + ; last update: Oct 5, 1994 + ; related version of root zone: 1994100500 + ; + + .. 604800 IN NS NS..INTERNIC..NET.. + NS..INTERNIC..NET.. 604800 IN A 198..41..0..4 + .. 604800 IN NS NS1..ISI..EDU.. + NS1..ISI..EDU.. 604800 IN A 128..9..0..107 + .. 604800 IN NS C..PSI..NET.. + C..PSI..NET.. 604800 IN A 192..33..4..12 + .. 604800 IN NS TERP..UMD..EDU.. + TERP..UMD..EDU.. 604800 IN A 128..8..10..90 + .. 604800 IN NS NS..NASA..GOV.. + NS..NASA..GOV.. 604800 IN A 128..102..16..10 + 604800 IN A 192..52..195..10 + .. 604800 IN NS NS..ISC..ORG.. + NS..ISC..ORG.. 604800 IN A 192..5..5..241 + .. 604800 IN NS NS..NIC..DDN..MIL.. + NS..NIC..DDN..MIL.. 604800 IN A 192..112..36..4 + .. 604800 IN NS AOS..ARL..ARMY..MIL.. + AOS..ARL..ARMY..MIL.. 604800 IN A 128..63..4..82 + 604800 IN A 192..5..25..82 + .. 604800 IN NS NIC..NORDU..NET.. + NIC..NORDU..NET.. 604800 IN A 192..36..148..17 + + ; End of File + + + + + + + + + + + + + + + + + + + +SSMMMM::1100--3366 NNaammee SSeerrvveerr OOppeerraattiioonnss GGuuiiddee ffoorr BBIINNDD + + + 66..99..44.. nnaammeedd..llooccaall + + + + @ IN SOA ucbvax..Berkeley..Edu. kjd..ucbvax..Berkeley..Edu.. ( + 1994072100 ; Serial + 10800 ; Refresh + 1800 ; Retry + 3600000 ; Expire + 259200 ) ; Minimum + IN NS ucbvax..Berkeley..Edu.. ; pedantic + 1 IN PTR localhost.. + + + + 66..99..55.. hhoosstt..rreevv + + + ; + ; @(#)ucb-hosts.rev 1.1 (Berkeley) 86/02/05 + ; + + @ IN SOA ucbvax..Berkeley..Edu.. kjd..monet..Berkeley..Edu.. ( + 1986020501 ; Serial + 10800 ; Refresh + 1800 ; Retry + 3600000 ; Expire + 259200 ) ; Minimum + IN NS ucbarpa..Berkeley..Edu.. + IN NS ucbvax..Berkeley..Edu.. + 0..0 IN PTR Berkeley-net..Berkeley..EDU.. + IN A 255..255..255..0 + 0..130 IN PTR csdiv-net..Berkeley..EDU.. + 4..0 IN PTR ucbarpa..Berkeley..Edu.. + 6..0 IN PTR ernie..Berkeley..Edu.. + 7..0 IN PTR monet..Berkeley..Edu.. + 10..0 IN PTR ucbvax..Berkeley..Edu.. + 6..130 IN PTR monet..Berkeley..Edu.. + + + + 66..99..66.. HHoossttss + + + + + + + + + + + + + + + + + + + + + +NNaammee SSeerrvveerr OOppeerraattiioonnss GGuuiiddee ffoorr BBIINNDD SSMMMM::1100--3377 + + + ; + ; @(#)ucb-hosts 1.2 (berkeley) 88/02/05 + ; + + @ IN SOA ucbvax..Berkeley..Edu.. kjd..monet..Berkeley..Edu.. ( + 1988020501 ; Serial + 10800 ; Refresh + 1800 ; Retry + 3600000 ; Expire + 259200 ) ; Minimum + IN NS ucbarpa..Berkeley..Edu.. + IN NS ucbvax..Berkeley..Edu.. + localhost IN A 127..1 + ; note that 127.1 is the same as 127.0.0.1; see inet(3n) + ucbarpa IN A 128..32..4 + IN A 10..0..0..78 + IN HINFO VAX-11/780 UNIX + arpa IN CNAME ucbarpa + ernie IN A 128..32..6 + IN HINFO VAX-11/780 UNIX + ucbernie IN CNAME ernie + monet IN A 128..32..7 + IN A 128..32..130..6 + IN HINFO VAX-11/750 UNIX + ucbmonet IN CNAME monet + ucbvax IN A 10..2..0..78 + ; 128.32.10 means 128.32.0.10; see inet(3n) + IN A 128..32..10 + ; HINFO and WKS are widely unused, + ; but we'll show them as examples. + IN HINFO VAX-11/750 UNIX + IN WKS 128.32.0.10 TCP ( echo telnet + discard sunrpc sftp + uucp-path systat daytime + netstat qotd nntp + link chargen ftp + auth time whhois mtp + pop rje finger smtp + supdup hostnames + domain + nameserver ) + vax IN CNAME ucbvax + toybox IN A 128..32..131..119 + IN HINFO Pro350 RT11 + toybox IN MX 0 monet.Berkeley.Edu. + csrg IN MX 0 Ralph.CS + IN MX 0 Zhou.CS + IN MX 0 Painter.CS + IN MX 0 Riggle.CS + IN MX 0 Terry.CS + IN MX 0 Kevin.CS + + + + + + + + + + + + +SSMMMM::1100--3388 NNaammee SSeerrvveerr OOppeerraattiioonnss GGuuiiddee ffoorr BBIINNDD + + +77.. SSeettttiinngg uupp YYoouurr OOwwnn DDoommaaiinn + + When setting up a domain that is going to be on a + public network the site administrator should contact the + organization in charge of the network and request the + appropriate domain registration form. An organization + that belongs to multiple networks (such as the _I_n_t_e_r_n_e_t + and _B_I_T_N_E_T) should register with only one network. + + 77..11.. IInntteerrnneett + + Sites on the Internet who need information on + setting up a domain should contact the registrar for + their network, which is one of the following: + + MILnet HOSTMASTER@NIC..DDN..MIL + other HOSTMASTER@INTERNIC..NET + + You may also want to be placed on the BIND mailing + list, which is a mail group for people on the Internet + who run BIND. The group discusses future design deci- + sions, operational problems, and other related topic. + The address to request being placed on this mailing + list is: + + _b_i_n_d_-_r_e_q_u_e_s_t_@_u_u_n_e_t.._u_u.._n_e_t + + + 77..22.. SSuubbddoommaaiinnss ooff EExxiissttiinngg DDoommaaiinnss + + If you want a subdomain of some existing domain, + you should find the contact point for the parent + domain rather than asking one of the above top-level + registrars. There should be a convention that rreeggiiss-- + ttrraarr@_d_o_m_a_i_n or hhoossttmmaasstteerr@_d_o_m_a_i_n for any given domain + will always be an alias for that domain's registrar + (somewhat analogous to ppoossttmmaasstteerr), but there is no + such convention. Try it as a last resort, but first + you should examine the _S_O_A record for the domain and + send mail to the ``responsible person'' shown therein. + You can also try _w_h_o_i_s. + + +88.. DDoommaaiinn MMaannaaggeemmeenntt + + This section contains information for starting, con- + trolling and debugging _n_a_m_e_d. + + 88..11.. //eettcc//rrcc..llooccaall + + The hostname should be set to the full domain + style name in _/_e_t_c_/_r_c_._l_o_c_a_l using _h_o_s_t_n_a_m_e_(_1_). The + + + + + + + + + + + +NNaammee SSeerrvveerr OOppeerraattiioonnss GGuuiiddee ffoorr BBIINNDD SSMMMM::1100--3399 + + + following entry should be added to _/_e_t_c_/_r_c_._l_o_c_a_l to + start up _n_a_m_e_d at system boot time: + + _i_f _[ _-_f _/_u_s_r_/_s_b_i_n_/_n_a_m_e_d _]_; _t_h_e_n + _/_u_s_r_/_s_b_i_n_/_n_a_m_e_d [options] _& _e_c_h_o _-_n _' _n_a_m_e_d_' _>_/_d_e_v_/_c_o_n_s_o_l_e + _f_i + + This usually directly follows the lines that start + _s_y_s_l_o_g_d. DDoo NNoott attempt to run _n_a_m_e_d from _i_n_e_t_d. + This will continuously restart the name server and + defeat the purpose of the cache. + + 88..22.. //vvaarr//rruunn//nnaammeedd..ppiidd + + When _n_a_m_e_d is successfully started up it writes + its process id into the file _/_v_a_r_/_r_u_n_/_n_a_m_e_d_._p_i_d. This + is useful to programs that want to send signals to + _n_a_m_e_d. The name of this file may be changed by defin- + ing _P_I_D_F_I_L_E to the new name when compiling _n_a_m_e_d. + + 88..33.. //eettcc//hhoossttss + + The _g_e_t_h_o_s_t_b_y_n_a_m_e_(_) library call can detect if + _n_a_m_e_d is running. If it is determined that _n_a_m_e_d is + not running it will look in _/_e_t_c_/_h_o_s_t_s to resolve an + address. This option was added to allow _i_f_c_o_n_f_i_g_(_8_C_) + to configure the machines local interfaces and to + enable a system manager to access the network while + the system is in single user mode. It is advisable to + put the local machines interface addresses and a cou- + ple of machine names and address in _/_e_t_c_/_h_o_s_t_s so the + system manager can rcp files from another machine when + the system is in single user mode. The format of + _/_e_t_c_/_h_o_s_t_s has not changed. See _h_o_s_t_s_(_5_) for more + information. Since the process of reading _/_e_t_c_/_h_o_s_t_s + is slow, it is not advisable to use this option when + the system is in multi user mode. + + + 88..44.. SSiiggnnaallss + + There are several signals that can be sent to the + _n_a_m_e_d process to have it do tasks without restarting + the process. + + 88..44..11.. RReellooaadd + + SIGHUP - Causes _n_a_m_e_d to read _n_a_m_e_d_._b_o_o_t and + reload the database. This is useful when you have + made a change to a ``primary'' data file and you + want _n_a_m_e_d's internal database to reflect the + change. If you build BIND with the FORCED_RELOAD + option, then SIGHUP also has the effect of + + + + + + + + + + +SSMMMM::1100--4400 NNaammee SSeerrvveerr OOppeerraattiioonnss GGuuiiddee ffoorr BBIINNDD + + + scheduling all ``secondary'' zones for serial-num- + ber checks, which could lead to zone transfers + ahead of the usual schedule. Normally serial-num- + ber compares are done only at the intervals speci- + fied in the zone's SOA record. + + 88..44..22.. DDeebbuuggggiinngg + + When _n_a_m_e_d is running incorrectly, look first + in _/_v_a_r_/_l_o_g_/_m_e_s_s_a_g_e_s and check for any messages + logged by _s_y_s_l_o_g. Next send it a signal to see + what is happening. Unless you run it with the + ``-d'' option, _n_a_m_e_d has very little to say on its + standard output or standard error. Everything + _n_a_m_e_d has to say, it says to _s_y_s_l_o_g. + + SIGINT - Dumps the current data base and cache + to _/_v_a_r_/_t_m_p_/_n_a_m_e_d___d_u_m_p_._d_b This should give you an + indication to whether the data base was loaded cor- + rectly. The name of the dump file may be changed + by defining _D_U_M_P_F_I_L_E to the new name when compiling + _n_a_m_e_d. + + _N_o_t_e_: the following two signals only work when + _n_a_m_e_d is built with _D_E_B_U_G defined. + + SIGUSR1 - Turns on debugging. Each following + SIGUSR1 increments the debug level. The output + goes to _/_v_a_r_/_t_m_p_/_n_a_m_e_d_._r_u_n The name of this debug + file may be changed by defining _D_E_B_U_G_F_I_L_E to the + new name before compiling _n_a_m_e_d. + + SIGUSR2 - Turns off debugging completely. + + For more detailed debugging, define DEBUG when com- + piling the resolver routines into _/_l_i_b_/_l_i_b_c_._a. + + SIGWINCH - Toggles tracing of all incoming + queries if _n_a_m_e_d has been compiled with _Q_R_Y_L_O_G + defined. The trace is sent to syslog, and is huge, + but it is very useful for tracking down problems. + + To run with tracing of all queries specify the _-_q + flag on the command line. If you routinely log + queries you will probably want to analyze the + results using the dnsstats stats script in the con- + trib directory. + + SIGIOT - Dumps statistics data into + _/_v_a_r_/_t_m_p_/_n_a_m_e_d_._s_t_a_t_s if the server is built with + _S_T_A_T_S defined. Statistics are appended to the + file. + + + + + + + + + + + +NNaammee SSeerrvveerr OOppeerraattiioonnss GGuuiiddee ffoorr BBIINNDD SSMMMM::1100--4411 + + +99.. BBuuiillddiinngg aa SSyysstteemm wwiitthh aa NNaammee SSeerrvveerr + + BIND is composed of two parts. One is the user + interface called the _r_e_s_o_l_v_e_r which consists of a group + of routines that reside in the C library _/_l_i_b_/_l_i_b_c_._a. + Second is the actual server called _n_a_m_e_d. This is a dae- + mon that runs in the background and services queries on a + given network port. The standard port for UDP and TCP is + specified in _/_e_t_c_/_s_e_r_v_i_c_e_s. + + 99..11.. RReessoollvveerr RRoouuttiinneess iinn lliibbcc + + When building your 4.3BSD system you may either + build the C library to use the name server resolver + routines or use the host table lookup routines to do + host name and address resolution. The default + resolver for 4.3BSD uses the name server. Newer BSD + systems include both name server and host table func- + tionality with preference given to the name server if + there is one or if there is a _/_e_t_c_/_r_e_s_o_l_v_._c_o_n_f file. + + Building the C library to use the name server + changes the way _g_e_t_h_o_s_t_b_y_n_a_m_e(3N), _g_e_t_h_o_s_t_b_y_a_d_d_r(3N), + and _s_e_t_h_o_s_t_e_n_t(3N) do their functions. The name + server renders _g_e_t_h_o_s_t_e_n_t(3N) obsolete, since it has + no concept of a next line in the database. These + library calls are built with the resolver routines + needed to query the name server. + + The _r_e_s_o_l_v_e_r contains functions that build query + packets and exchange them with name servers. + + Before building the 4.3BSD C library, set the + variable _H_O_S_T_L_O_O_K_U_P equal to _n_a_m_e_d in + _/_u_s_r_/_s_r_c_/_l_i_b_/_l_i_b_c_/_M_a_k_e_f_i_l_e. You then make and install + the C library and compiler and then compile the rest + of the 4.3BSD system. For more information see sec- + tion 6.6 of ``Installing and Operating 4.3BSD on the + VAX|=''. + + If your operating system isn't VAX|= 4.3BSD, it is + probably the case that your vendor has included + _r_e_s_o_l_v_e_r support in the supplied C Library. You + should consult your vendor's documentation to find out + what has to be done to enable _r_e_s_o_l_v_e_r support. Note + that your vendor's _r_e_s_o_l_v_e_r may be out of date with + respect to the one shipped with BIND, and that you + might want to build BIND's resolver library and + install it, and its include files, into your system's +____________________ + |=VAX is a Trademark of Digital Equipment Corporation + + + + + + + + + + + + +SSMMMM::1100--4422 NNaammee SSeerrvveerr OOppeerraattiioonnss GGuuiiddee ffoorr BBIINNDD + + + compile/link path so that your own network applica- + tions will be able to use the newer features. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +NNaammee SSeerrvveerr OOppeerraattiioonnss GGuuiiddee ffoorr BBIINNDD SSMMMM::1100--4433 + + + AACCKKNNOOWWLLEEDDGGEEMMEENNTTSS ---- 44..99..33 + + The _<_b_i_n_d_-_w_o_r_k_e_r_s_@_v_i_x_._c_o_m_> mailing list was once again +of great help; this release would not be nearly as ready for +prime time if not for their efforts. Special commendations +are owed to Robert Elz, Don "Truck" Lewis, Bob Halley, Mark +Andrews, Berthold Paffrath, Ruediger Volk, and Peter Koch. + + Digital Equipment Corporation, Hewlett Packard, Silicon +Graphics, and SunSoft all made hardware available for inte- +gration testing; this made the release far more solid than +it would otherwise have been. More hardware loans are wel- +come -- if you are a system vendor and you would like BIND +to run ``out of the box'' on your platform and are willing +to lend some rusty old hardware for the purpose, please con- +tact me (_<_p_a_u_l_@_v_i_x_._o_r_g_>) to make the arrangements. + + Special thanks to the Internet Software Consortium for +funding this work. Contact _<_i_s_c_-_i_n_f_o_@_i_s_c_._o_r_g_> if your orga- +nization would like to participate in funding future +releases of BIND and other freely redistributable software +packages that are in wide use on the Internet. + + + AACCKKNNOOWWLLEEDDGGEEMMEENNTTSS ---- tthhrroouugghh 44..99 + + The alpha-test group was extremely helpful in furnish- +ing improvements, finding and repairing bugs, and being +patient. I would like to express special thanks to Brian +Reid of Digital Equipment corporation for funding this work. +Robert Elz, Alan Barrett, Paul Albitz, Bryan Beecher, Andrew +Partan, Andy Cherenson, Tom Limoncelli, Berthold Paffrath, +Fuat Baran, Anant Kumar, Art Harkin, Win Treese, Don Lewis, +Christophe Wolfhugel, and a cast of dozens all helped out +above and beyond the call of duty. Special thanks to Phil +Almquist, who got the project started and contributed a lot +of the code and fixed several of the worst bugs. + + + AACCKKNNOOWWLLEEDDGGEEMMEENNTTSS ---- tthhrroouugghh 44..88..33 + + Many thanks to the users at U. C. Berkeley for falling +into many of the holes involved with integrating BIND into +the system so that others would be spared the trauma. I +would also like to extend gratitude to Jim McGinness and +Digital Equipment Corporation for permitting me to spend +most of my time on this project. + + Ralph Campbell, Doug Kingston, Craig Partridge, Smoot +Carl-Mitchell, Mike Muuss and everyone else on the DARPA +Internet who has contributed to the development of BIND. To +the members of the original BIND project, Douglas Terry, +Mark Painter, David Riggle and Songnian Zhou. + + + + + + + + + + +SSMMMM::1100--4444 NNaammee SSeerrvveerr OOppeerraattiioonnss GGuuiiddee ffoorr BBIINNDD + + + Anne Hughes, Jim Bloom and Kirk McKusick and the many +others who have reviewed this paper giving considerable +advice. + + This work was sponsored by the Defense Advanced +Research Projects Agency (DoD), Arpa Order No. 4871 moni- +tored by the Naval Electronics Systems Command under con- +tract No. N00039-84-C-0089. The views and conclusions con- +tained in this document are those of the authors and should +not be interpreted as representing official policies, either +expressed or implied, of the Defense Research Projects +Agency, of the US Government, or of Digital Equipment Corpo- +ration. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +NNaammee SSeerrvveerr OOppeerraattiioonnss GGuuiiddee ffoorr BBIINNDD SSMMMM::1100--4455 + + + RREEFFEERREENNCCEESS + + +[Birrell] Birrell, A. D., Levin, R., Needham, R. M., and + Schroeder, M.D., "Grapevine: An Exercise in Dis- + tributed Computing." In _C_o_m_m_. _A_._C_._M_. _2_5_, + 4:260-274 April 1982. + +[RFC819] Su, Z. Postel, J., "The Domain Naming Convention + for Internet User Applications." _I_n_t_e_r_n_e_t _R_e_q_u_e_s_t + _F_o_r _C_o_m_m_e_n_t _8_1_9 Network Information Center, SRI + International, Menlo Park, California. August + 1982. + +[RFC974] Partridge, C., "Mail Routing and The Domain Sys- + tem." _I_n_t_e_r_n_e_t _R_e_q_u_e_s_t _F_o_r _C_o_m_m_e_n_t _9_7_4 Network + Information Center, SRI International, Menlo Park, + California. February 1986. + +[RFC1032] Stahl, M., "Domain Administrators Guide" _I_n_t_e_r_n_e_t + _R_e_q_u_e_s_t _F_o_r _C_o_m_m_e_n_t _1_0_3_2 Network Information Cen- + ter, SRI International, Menlo Park, California. + November 1987. + +[RFC1033] Lottor, M., "Domain Administrators Guide" _I_n_t_e_r_n_e_t + _R_e_q_u_e_s_t _F_o_r _C_o_m_m_e_n_t _1_0_3_3 Network Information Cen- + ter, SRI International, Menlo Park, California. + November 1987. + +[RFC1034] Mockapetris, P., "Domain Names - Concept and + Facilities." _I_n_t_e_r_n_e_t _R_e_q_u_e_s_t _F_o_r _C_o_m_m_e_n_t _1_0_3_4 + Network Information Center, SRI International, + Menlo Park, California. November 1987. + +[RFC1035] Mockapetris, P., "Domain Names - Implementation + and Specification." _I_n_t_e_r_n_e_t _R_e_q_u_e_s_t _F_o_r _C_o_m_m_e_n_t + _1_0_3_5 Network Information Center, SRI Interna- + tional, Menlo Park, California. November 1987. + +[RFC1101] Mockapetris, P., "DNS Encoding of Network Names + and Other Types." _I_n_t_e_r_n_e_t _R_e_q_u_e_s_t _F_o_r _C_o_m_m_e_n_t + _1_1_0_1 Network Information Center, SRI Interna- + tional, Menlo Park, California. April 1989. + +[RFC1123] R. Braden, Editor, "Requirements for Internet + Hosts -- Application and Support" _I_n_t_e_r_n_e_t _R_e_q_u_e_s_t + _F_o_r _C_o_m_m_e_n_t _1_1_2_3 Network Information Center, SRI + International, Menlo Park, California. October + 1989. + +[RFC1183] Everhart, C., Mamakos, L., Ullmann, R., and Mock- + apetris, P., "New DNS RR Definitions" _I_n_t_e_r_n_e_t + _R_e_q_u_e_s_t _F_o_r _C_o_m_m_e_n_t _1_1_8_3 Network Information + + + + + + + + + + +SSMMMM::1100--4466 NNaammee SSeerrvveerr OOppeerraattiioonnss GGuuiiddee ffoorr BBIINNDD + + + Center, SRI International, Menlo Park, California. + October 1990. + +[RFC1327] Hardcastle-Kille, S., "Mapping between X.400(1988) + / ISO 10021 and RFC 822" _I_n_t_e_r_n_e_t _R_e_q_u_e_s_t _F_o_r _C_o_m_- + _m_e_n_t _1_3_2_7 Network Information Center, SRI Interna- + tional, Menlo Park, California. May 1992. + +[RFC1664] Allocchio, C., Bonito, A., Cole, B., Giordano, S., + Hagens, R., "Using the Internet DNS to Distribute + RFC1327 Mail Address Mapping Tables" _I_n_t_e_r_n_e_t + _R_e_q_u_e_s_t _F_o_r _C_o_m_m_e_n_t _1_6_6_4 Network Information Cen- + ter, SRI International, Menlo Park, California. + August 1994. + +[RFC1713] Romao, A., "Tools for DNS debugging" _I_n_t_e_r_n_e_t + _R_e_q_u_e_s_t _F_o_r _C_o_m_m_e_n_t _1_7_1_3_, _a_l_s_o _F_Y_I_2_7 Network + Information Center, SRI International, Menlo Park, + California. November 1994. + +[Terry] Terry, D. B., Painter, M., Riggle, D. W., and + Zhou, S., _T_h_e _B_e_r_k_e_l_e_y _I_n_t_e_r_n_e_t _N_a_m_e _D_o_m_a_i_n + _S_e_r_v_e_r_. Proceedings USENIX Summer Conference, + Salt Lake City, Utah. June 1984, pages 23-31. + +[Zhou] Zhou, S., _T_h_e _D_e_s_i_g_n _a_n_d _I_m_p_l_e_m_e_n_t_a_t_i_o_n _o_f _t_h_e + _B_e_r_k_e_l_e_y _I_n_t_e_r_n_e_t _N_a_m_e _D_o_m_a_i_n _(_B_I_N_D_) _S_e_r_v_e_r_s_. + UCB/CSD 84/177. University of California, Berke- + ley, Computer Science Division. May 1984. + +[Mockapetris] + Mockapetris, P., Dunlap, K, _D_e_v_e_l_o_p_m_e_n_t _o_f _t_h_e + _D_o_m_a_i_n _N_a_m_e _S_y_s_t_e_m ACM Computer Communications + Review 18, 4:123-133. Proceedings ACM SIGCOMM '88 + Symposium, August 1988. + +[Liu] Liu, C., Albitz, P., _D_N_S _a_n_d _B_I_N_D O'Reilly & Asso- + ciates, Sebastopol, CA, 502 pages, ISBN + 0-937175-82-X 1992 + + + + + + + + + + + + + + + + + + + + diff --git a/usr.sbin/named/doc/bog/file.psf b/usr.sbin/named/doc/bog/file.psf new file mode 100644 index 000000000000..18f2f56afd4f --- /dev/null +++ b/usr.sbin/named/doc/bog/file.psf @@ -0,0 +1,2836 @@ +%!PS-Adobe-3.0 +%%Creator: groff version 1.10 +%%CreationDate: Tue Dec 17 20:12:52 1996 +%%DocumentNeededResources: font Times-Bold +%%+ font Times-Italic +%%+ font Times-Roman +%%DocumentSuppliedResources: procset grops 1.10 0 +%%Pages: 30 +%%PageOrder: Ascend +%%Orientation: Portrait +%%EndComments +%%BeginProlog +%%BeginResource: procset grops 1.10 0 +/setpacking where{ +pop +currentpacking +true setpacking +}if +/grops 120 dict dup begin +/SC 32 def +/A/show load def +/B{0 SC 3 -1 roll widthshow}bind def +/C{0 exch ashow}bind def +/D{0 exch 0 SC 5 2 roll awidthshow}bind def +/E{0 rmoveto show}bind def +/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def +/G{0 rmoveto 0 exch ashow}bind def +/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def +/I{0 exch rmoveto show}bind def +/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def +/K{0 exch rmoveto 0 exch ashow}bind def +/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def +/M{rmoveto show}bind def +/N{rmoveto 0 SC 3 -1 roll widthshow}bind def +/O{rmoveto 0 exch ashow}bind def +/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def +/Q{moveto show}bind def +/R{moveto 0 SC 3 -1 roll widthshow}bind def +/S{moveto 0 exch ashow}bind def +/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def +/SF{ +findfont exch +[exch dup 0 exch 0 exch neg 0 0]makefont +dup setfont +[exch/setfont cvx]cvx bind def +}bind def +/MF{ +findfont +[5 2 roll +0 3 1 roll +neg 0 0]makefont +dup setfont +[exch/setfont cvx]cvx bind def +}bind def +/level0 0 def +/RES 0 def +/PL 0 def +/LS 0 def +/MANUAL{ +statusdict begin/manualfeed true store end +}bind def +/PLG{ +gsave newpath clippath pathbbox grestore +exch pop add exch pop +}bind def +/BP{ +/level0 save def +1 setlinecap +1 setlinejoin +72 RES div dup scale +LS{ +90 rotate +}{ +0 PL translate +}ifelse +1 -1 scale +}bind def +/EP{ +level0 restore +showpage +}bind def +/DA{ +newpath arcn stroke +}bind def +/SN{ +transform +.25 sub exch .25 sub exch +round .25 add exch round .25 add exch +itransform +}bind def +/DL{ +SN +moveto +SN +lineto stroke +}bind def +/DC{ +newpath 0 360 arc closepath +}bind def +/TM matrix def +/DE{ +TM currentmatrix pop +translate scale newpath 0 0 .5 0 360 arc closepath +TM setmatrix +}bind def +/RC/rcurveto load def +/RL/rlineto load def +/ST/stroke load def +/MT/moveto load def +/CL/closepath load def +/FL{ +currentgray exch setgray fill setgray +}bind def +/BL/fill load def +/LW/setlinewidth load def +/RE{ +findfont +dup maxlength 1 index/FontName known not{1 add}if dict begin +{ +1 index/FID ne{def}{pop pop}ifelse +}forall +/Encoding exch def +dup/FontName exch def +currentdict end definefont pop +}bind def +/DEFS 0 def +/EBEGIN{ +moveto +DEFS begin +}bind def +/EEND/end load def +/CNT 0 def +/level1 0 def +/PBEGIN{ +/level1 save def +translate +div 3 1 roll div exch scale +neg exch neg exch translate +0 setgray +0 setlinecap +1 setlinewidth +0 setlinejoin +10 setmiterlimit +[]0 setdash +/setstrokeadjust where{ +pop +false setstrokeadjust +}if +/setoverprint where{ +pop +false setoverprint +}if +newpath +/CNT countdictstack def +userdict begin +/showpage{}def +}bind def +/PEND{ +clear +countdictstack CNT sub{end}repeat +level1 restore +}bind def +end def +/setpacking where{ +pop +setpacking +}if +%%EndResource +%%IncludeResource: font Times-Bold +%%IncludeResource: font Times-Italic +%%IncludeResource: font Times-Roman +grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72 +def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron +/scaron/zcaron/Ydieresis/trademark/quotesingle/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent +/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen +/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon +/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O +/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex +/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y +/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft +/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl +/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut +/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash +/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen +/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft +/logicalnot/minus/registered/macron/degree/plusminus/twosuperior +/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior +/ordmasculine/guilsinglright/onequarter/onehalf/threequarters +/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE +/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex +/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis +/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn +/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla +/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis +/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash +/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def +/Times-Roman@0 ENC0/Times-Roman RE/Times-Italic@0 ENC0/Times-Italic RE +/Times-Bold@0 ENC0/Times-Bold RE +%%EndProlog +%%Page: 1 1 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 14/Times-Bold@0 SF(Name Ser)193.843 141 Q -.14(ve)-.14 G 3.5(rO).14 +G(perations Guide)-3.5 E -.35(fo)261.236 157.8 S(r).35 E/F1 13 +/Times-Bold@0 SF(BIND)3.5 E/F2 13/Times-Italic@0 SF(Release 4.9.5)253.16 +173.4 Q(Releases fr)241.895 204.6 Q(om 4.9)-.585 E/F3 13/Times-Roman@0 +SF -.195(Pa)258.362 222.8 S(ul V).195 E(ixie)-.78 E/F4 10/Times-Roman@0 +SF(1)-5.2 I F3()242.363 238.4 Q(Internet Softw)210.435 +258.2 Q(are Consortium)-.13 E(La Honda, CA)249.91 273.8 Q F2 +(Releases thr)228.713 320.6 Q(ough 4.8.3)-.585 E F3 -.325(Kev)243.399 +338.8 S(in J. Dunlap).325 E F4(2)-5.2 I F3(Michael J. Karels)242.331 +354.4 Q(Computer Systems Research Group)195.024 374.2 Q +(Computer Science Di)216.305 389.8 Q(vision)-.325 E +(Department of Electrical Engineering and Computer Sciences)127.339 +405.4 Q(Uni)225.795 421 Q -.195(ve)-.325 G(rsity of California).195 E +(Berk)233.341 436.6 Q(ele)-.13 E 1.69 -.845(y, C)-.195 H 6.5(A9).845 G +(4720)-6.5 E/F5 10/Times-Bold@0 SF 2.5(1. Intr)72 500.8 R(oduction)-.18 +E F4 .121(The Berk)112 517 R(ele)-.1 E 2.621(yI)-.15 G .121 +(nternet Name Domain \()-2.621 F/F6 9/Times-Roman@0 SF(BIND)A F4 2.621 +(\)i)C .121(mplements an Internet name serv)-2.621 F .122(er for)-.15 F +/F7 8/Times-Roman@0 SF(BSD)2.622 E F4(-deri)A -.15(ve)-.25 G(d).15 E +.665(operating systems.)87 529 R(The)5.665 E F6(BIND)3.165 E F4 .665 +(consists of a serv)3.165 F .665(er \(or `)-.15 F(`daemon')-.74 E .665 +('\) called)-.74 F/F8 10/Times-Italic@0 SF(named)3.165 E F4 .665(and a) +3.165 F F8 -.37(re)3.165 G(solver).37 E F4(library)3.164 E(.)-.65 E +3.928(An)87 541 S 1.428(ame serv)-3.928 F 1.429(er is a netw)-.15 F +1.429(ork service that enables clients to name resources or objects and share this) +-.1 F 1.864(information with other objects in the netw)87 553 R 4.364 +(ork. This)-.1 F 1.864(in ef)4.364 F 1.864(fect is a distrib)-.25 F +1.863(uted data base system for)-.2 F .94(objects in a computer netw)87 +565 R 3.441(ork. The)-.1 F F6(BIND)3.441 E F4(serv)3.441 E .941 +(er runs in the background, servicing queries on a well)-.15 F(kno)87 +577 Q .017(wn netw)-.25 F .017(ork port.)-.1 F .017 +(The standard port for UDP and TCP is speci\214ed in)5.017 F F8 +(/etc/services)2.516 E F4 5.016(.T)C(he)-5.016 E F8 -.37(re)2.516 G +(solver).37 E F4 .016(is a)2.516 F .839 +(set of routines residing in a system library that pro)87 589 R .839 +(vides the interf)-.15 F .84(ace that programs can use to access)-.1 F +(the domain name services.)87 601 Q 1.043(BIND is fully inte)112 617.2 R +1.043(grated into BSD \(4.3 and later releases\) netw)-.15 F 1.042 +(ork programs for use in storing)-.1 F .061(and retrie)87 629.2 R .061 +(ving host names and address.)-.25 F .062 +(The system administrator can con\214gure the system to use BIND)5.061 F +.32 LW 76 638.8 72 638.8 DL 80 638.8 76 638.8 DL 84 638.8 80 638.8 DL 88 +638.8 84 638.8 DL 92 638.8 88 638.8 DL 96 638.8 92 638.8 DL 100 638.8 96 +638.8 DL 104 638.8 100 638.8 DL 108 638.8 104 638.8 DL 112 638.8 108 +638.8 DL 116 638.8 112 638.8 DL 120 638.8 116 638.8 DL 124 638.8 120 +638.8 DL 128 638.8 124 638.8 DL 132 638.8 128 638.8 DL 136 638.8 132 +638.8 DL 140 638.8 136 638.8 DL 144 638.8 140 638.8 DL 148 638.8 144 +638.8 DL 152 638.8 148 638.8 DL 156 638.8 152 638.8 DL 160 638.8 156 +638.8 DL 164 638.8 160 638.8 DL 168 638.8 164 638.8 DL 172 638.8 168 +638.8 DL 176 638.8 172 638.8 DL 180 638.8 176 638.8 DL 184 638.8 180 +638.8 DL 188 638.8 184 638.8 DL 192 638.8 188 638.8 DL 196 638.8 192 +638.8 DL 200 638.8 196 638.8 DL 204 638.8 200 638.8 DL 208 638.8 204 +638.8 DL 212 638.8 208 638.8 DL 216 638.8 212 638.8 DL/F9 5 +/Times-Roman@0 SF(1)93.6 649.2 Q F7 .365(This author w)2.365 3.2 N .365 +(as emplo)-.08 F .365(yed by Digital Equipment Corporation')-.08 F 2.365 +(sN)-.44 G(etw)-2.365 E .365(ork Systems Laboratory during the de)-.08 F +-.12(ve)-.2 G .364(lopment and re-).12 F .541(lease of)72 662 R/F10 7 +/Times-Roman@0 SF(BIND)2.541 E F7 2.541(4.9. Release)2.541 F .541 +(4.9.2 w)2.541 F .541(as sponsored by V)-.08 F .541(ixie Enterprises.) +-.48 F .542(Releases from 4.9.3 were sponsored by the Internet Softw) +4.541 F(are)-.08 E(Consortium.)72 671.6 Q F9(2)93.6 682 Q F7 .878 +(This author w)2.878 3.2 N .878(as an emplo)-.08 F .878 +(yee of Digital Equipment Corporation')-.08 F(s)-.44 E F10(UL)2.878 E +(TRIX)-.644 E F7 .878(Engineering Adv)2.878 F .878(anced De)-.2 F -.12 +(ve)-.2 G .878(lopment Group and).12 F -.08(wa)72 694.8 S 2(so).08 G 2 +(nl)-2 G(oan to CSRG when this w)-2 E(ork w)-.08 E(as done.)-.08 E F10 +(UL)4 E(TRIX)-.644 E F7 +(is a trademark of Digital Equipment Corporation.)2 E EP +%%Page: 2 2 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF 208.87(SMM:10-2 Name)72 60 R(Ser)2.5 E -.1(ve)-.1 +G 2.5(rO).1 G(perations Guide f)-2.5 E(or)-.25 E/F1 9/Times-Bold@0 SF +(BIND)2.5 E/F2 10/Times-Roman@0 SF .502(as a replacement to the older host table lookup of information in the netw) +87 96 R .501(ork hosts \214le)-.1 F/F3 10/Times-Italic@0 SF(/etc/hosts) +3.001 E F2 5.501(.T)C(he)-5.501 E(def)87 108 Q +(ault con\214guration for BSD uses BIND.)-.1 E F0 2.5(2. The)72 144 R +(Name Ser)2.5 E(vice)-.1 E F2 .122(The basic function of the name serv) +112 160.2 R .123(er is to pro)-.15 F .123(vide information about netw) +-.15 F .123(ork objects by answer)-.1 F(-)-.2 E .91(ing queries.)87 +172.2 R .909(The speci\214cations for this name serv)5.91 F .909 +(er are de\214ned in RFC1034, RFC1035 and RFC974.)-.15 F .792 +(These documents can be found in)87 184.2 R F3(/usr/sr)3.292 E +(c/etc/named/doc)-.37 E F2 .793(in 4.3BSD or)3.293 F F3(ftp)3.293 E F2 +.793(ed from)B F0(ftp.rs.inter)3.293 E(nic.net)-.15 E F2(.)A .124 +(It is also recommended that you read the related manual pages,)87 196.2 +R F3(named)2.623 E F2(\(8\),)1.666 E F3 -.37(re)2.623 G(solver).37 E F2 +.123(\(3\), and)1.666 F F3 -.37(re)2.623 G(solver).37 E F2(\(5\).)1.666 +E .897(The adv)112 212.4 R .897(antage of using a name serv)-.25 F .898 +(er o)-.15 F -.15(ve)-.15 G 3.398(rt).15 G .898 +(he host table lookup for host name resolution is to)-3.398 F -.2(avo)87 +224.4 S .666 +(id the need for a single centralized clearinghouse for all names.).2 F +.665(The authority for this information)5.665 F(can be dele)87 236.4 Q +-.05(ga)-.15 G(ted to the dif).05 E(ferent or)-.25 E -.05(ga)-.18 G +(nizations on the netw).05 E(ork responsible for it.)-.1 E .309(The host table lookup routines require that the master \214le for the entire netw) +112 252.6 R .309(ork be maintained at)-.1 F 3.983(ac)87 264.6 S 1.483 +(entral location by a fe)-3.983 F 3.983(wp)-.25 G 3.983(eople. This) +-3.983 F -.1(wo)3.983 G 1.483(rks \214ne for small netw).1 F 1.482 +(orks where there are only a fe)-.1 F(w)-.25 E .784 +(machines and the dif)87 276.6 R .784(ferent or)-.25 F -.05(ga)-.18 G +.784(nizations responsible for them cooperate.).05 F .785 +(But this does not w)5.784 F .785(ork well)-.1 F(for lar)87 288.6 Q +(ge netw)-.18 E(orks where machines cross or)-.1 E -.05(ga)-.18 G +(nizational boundaries.).05 E -.4(Wi)112 304.8 S .162(th the name serv) +.4 F(er)-.15 E 2.661(,t)-.4 G .161(he netw)-2.661 F .161 +(ork can be brok)-.1 F .161(en into a hierarch)-.1 F 2.661(yo)-.05 G +2.661(fd)-2.661 G 2.661(omains. The)-2.661 F .161(name space is)2.661 F +(or)87 316.8 Q -.05(ga)-.18 G 2.236(nized as a tree according to or).05 +F -.05(ga)-.18 G 2.236(nizational or administrati).05 F 2.536 -.15(ve b) +-.25 H 4.736(oundaries. Each).15 F 2.237(node, called a)4.736 F F3 +(domain)87 328.8 Q F2 4.311(,i)C 4.311(sg)-4.311 G -2.15 -.25(iv e) +-4.311 H 4.311(nal).25 G 1.81(abel, and the name of the domain is the concatenation of all the labels of the) +-4.311 F .747(domains from the root to the current domain, listed from right to left separated by dots.) +87 340.8 R 3.247(Al)5.747 G .747(abel need)-3.247 F .588 +(only be unique within its domain.)87 352.8 R .588 +(The whole space is partitioned into se)5.588 F -.15(ve)-.25 G .588 +(ral areas called).15 F F3(zones)3.088 E F2 3.088(,e)C(ach)-3.088 E +1.223(starting at a domain and e)87 364.8 R 1.223(xtending do)-.15 F +1.223(wn to the leaf domains or to domains where other zones start.)-.25 +F .338(Zones usually represent administrati)87 376.8 R .638 -.15(ve b) +-.25 H 2.838(oundaries. An).15 F -.15(ex)2.838 G .337 +(ample of a host address for a host at the Uni-).15 F -.15(ve)87 388.8 S +(rsity of California, Berk).15 E(ele)-.1 E 2.5(yw)-.15 G +(ould look as follo)-2.6 E(ws:)-.25 E F3(monet)137 405 Q F0(.)1.666 E F3 +(Berk)1.666 E(ele)-.1 E(y)-.3 E F0(.)1.666 E F3(EDU)1.666 E F2 1.77 +(The top le)87 421.2 R -.15(ve)-.25 G 4.27(ld).15 G 1.77 +(omain for educational or)-4.27 F -.05(ga)-.18 G 1.77 +(nizations is EDU; Berk).05 F(ele)-.1 E 4.27(yi)-.15 G 4.27(sas)-4.27 G +1.77(ubdomain of EDU and)-4.27 F(monet is the name of the host.)87 433.2 +Q F0 2.5(3. Security)72 469.2 R F2 1.928(This section e)112 485.4 R +1.928(xamines some of the kno)-.15 F 4.428(ws)-.25 G 1.928 +(ecurity implications of v)-4.428 F 1.927(arious v)-.25 F 1.927 +(ersions of BIND.)-.15 F(Some of these ha)87 497.4 Q .3 -.15(ve b)-.2 H +(een used to attack the nameserv).15 E(ers in the past.)-.15 E F0 2.5 +(3.1. Unnecessary)87 521.4 R(Glue)2.5 E F2 .223(Unnecessary glue can lead to incorrect records being loaded into the serv) +127 537.6 R(er)-.15 E 2.724(.T)-.55 G .224(his can result in)-2.724 F +(connections going to the wrong machines.)102 549.6 Q 1.999 -.8(To p)127 +565.8 T(re).8 E -.15(ve)-.25 G .399 +(nt unnecessary glue being loaded, all the serv).15 F .399 +(ers of zones being serv)-.15 F .398(ered by a serv)-.15 F(er)-.15 E +(and the serv)102 577.8 Q +(ers of the parent zones need to be upgraded to BIND 4.9.3 or later)-.15 +E(.)-.55 E F0 2.5(3.2. Insertion)87 601.8 R +(of data into a zone that is being ser)2.5 E -.1(ve)-.1 G -.18(re).1 G +(d).18 E F2 .574(BIND v)127 618 R .574(ersions prior to BIND 4.9.2 are subject to the insertion of resource records into zone) +-.15 F(that the)102 630 Q 2.5(ya)-.15 G(re serving.)-2.5 E F0 2.5 +(3.3. Denial)87 654 R(of Ser)2.5 E(vice: Hash Bug Exploit)-.1 E F2 .381 +(September 1996 sa)127 670.2 R 2.881(wt)-.15 G .381 +(he COM TLD subject to a denial of service attack by injecting into the) +-2.881 F .342(DNS a record with a \214nal label of COM, eight spaces and COM. This ef) +102 682.2 R .342(fected BIND 4.9.4 serv)-.25 F(ers.)-.15 E +(Similar attacks are possible on BIND 4.9.3 and BIND 4.9.3-P1.)102 694.2 +Q(It is recommend that you run a BIND 4.9.4-P1 or later serv)127 710.4 Q +(er to a)-.15 E -.2(vo)-.2 G(id this e).2 E(xploit.)-.15 E EP +%%Page: 3 3 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF(Name Ser)72 60 Q -.1(ve)-.1 G 2.5(rO).1 G +(perations Guide f)-2.5 E(or)-.25 E/F1 9/Times-Bold@0 SF 211.564 +(BIND SMM)2.5 F F0(:10-3)A 2.5(3.4. Denial)87 96 R(of Ser)2.5 E +(vice: TTL Inconsistency Attacks)-.1 E/F2 10/Times-Roman@0 SF .058 +(If you are still using multiple TTL v)127 112.2 R .058 +(alues within a RRset you can be subject to a denial of ser)-.25 F(-)-.2 +E 1.39(vice attack. BIND 4.9.5 onw)102 124.2 R 1.391 +(ards uses multiple ttl v)-.1 F 1.391(alues within a RRset to reject ob) +-.25 F 1.391(viously bad)-.15 F(RRset.)102 136.2 Q .546 +(It is recommend that you upgrade to BIND 4.9.5 or later as these serv) +127 152.4 R .545(er pre)-.15 F -.15(ve)-.25 G .545(nt you loading).15 F +(multiple TTL v)102 164.4 Q(alues and doesn')-.25 E 2.5(tm)-.18 G(er) +-2.5 E(ge answers recei)-.18 E -.15(ve)-.25 G 2.5(da).15 G +(cross the netw)-2.5 E(ork.)-.1 E F0 2.5(4. T)72 200.4 R(ypes of Zones) +-.74 E F2 3.665(A`)112 216.6 S(`zone')-4.405 E 3.665('i)-.74 G 3.665 +(sap)-3.665 G 1.165(oint of dele)-3.665 F -.05(ga)-.15 G 1.165 +(tion in the DNS tree.).05 F 1.165 +(It contains all names from a certain point)6.165 F -.74(``)87 228.6 S +(do).74 E(wnw)-.25 E(ard')-.1 E 3.176('e)-.74 G .676 +(xcept those which are dele)-3.326 F -.05(ga)-.15 G .676 +(ted to other zones.).05 F 3.176(A`)5.676 G(`dele)-3.916 E -.05(ga)-.15 +G .676(tion point').05 F 3.176('h)-.74 G .676(as one or more)-3.176 F/F3 +10/Times-Italic@0 SF(NS)87 240.6 Q F2 .55(records in the `)3.05 F .55 +(`parent zone')-.74 F .55(', which should be matched by equi)-.74 F -.25 +(va)-.25 G(lent).25 E F3(NS)3.05 E F2 .55(records at the root of the) +3.05 F -.74(``)87 252.6 S(dele).74 E -.05(ga)-.15 G(ted zone').05 E 2.5 +('\()-.74 G(i.e., the `)-2.5 E(`@')-.74 E 2.5('n)-.74 G +(ame in the zone \214le\).)-2.5 E .779(Understanding the dif)112 268.8 R +.779(ference between a `)-.25 F(`zone')-.74 E 3.279('a)-.74 G .779 +(nd a `)-3.279 F(`domain')-.74 E 3.278('i)-.74 G 3.278(sc)-3.278 G .778 +(rucial to the proper opera-)-3.278 F .76(tion of a name serv)87 280.8 R +(er)-.15 E 5.76(.A)-.55 G 3.26(sa)-5.76 G 3.26(ne)-3.26 G .76 +(xample, consider the)-3.41 F/F4 9/Times-Roman@0 SF(DEC.COM)3.261 E F3 +(domain)3.261 E F2 3.261(,w)C .761(hich includes names such as)-3.261 F +F4(POBO)87 292.8 Q(X1.P)-.36 E(A.DEC.COM)-.828 E F2(and)4.447 E F4 -.09 +(QU)4.447 G(ABBIN.CRL.DEC.COM)-.27 E F2 -2.15 -.25(ev e)4.447 H 4.447 +(nt).25 G 1.947(hough the)-4.447 F F4(DEC.COM)4.446 E F3(zone)4.446 E F2 +1.946(includes only)4.446 F F3(dele)87 304.8 Q(gations)-.4 E F2 2.427 +(for the)4.926 F F4 -.828(PA)4.927 G(.DEC.COM).828 E F2(and)4.927 E F4 +(CRL.DEC.COM)4.927 E F2 4.927(zones. A)4.927 F 2.427(zone can map e) +4.927 F 2.427(xactly to a single)-.15 F 1.233(domain, b)87 316.8 R 1.232 +(ut could also include only part of a domain \(the rest of which could be dele) +-.2 F -.05(ga)-.15 G 1.232(ted to other).05 F .628(name serv)87 328.8 R +3.128(ers\). T)-.15 F .628(echnically speaking, e)-.7 F -.15(ve)-.25 G +.629(ry name in the DNS tree is a `).15 F(`domain')-.74 E .629(', e)-.74 +F -.15(ve)-.25 G 3.129(ni).15 G 3.129(fi)-3.129 G 3.129(ti)-3.129 G +3.129(s`)-3.129 G(`termi-)-3.869 E(nal')87 340.8 Q 1.545 +(', that is, has no `)-.74 F(`subdomains')-.74 E 4.044('. T)-.74 F 1.544 +(echnically speaking, e)-.7 F -.15(ve)-.25 G 1.544 +(ry subdomain is a domain and e).15 F -.15(ve)-.25 G(ry).15 E .302 +(domain e)87 352.8 R .302(xcept the root is also a subdomain.)-.15 F +.302(The terminology is not intuiti)5.302 F .602 -.15(ve a)-.25 H .302 +(nd you w).15 F .303(ould do well to)-.1 F(read RFC')87 364.8 Q 2.5(s1) +-.55 G(033, 1034, and 1035 to g)-2.5 E +(ain a complete understanding of this dif)-.05 E +(\214cult and subtle topic.)-.25 E(Though)112 381 Q F4(BIND)3.284 E F2 +.784(is a)3.284 F F3(Domain)3.284 E F2 .784(Name Serv)3.284 F(er)-.15 E +3.284(,i)-.4 G 3.284(td)-3.284 G .784(eals primarily in terms of)-3.284 +F F3(zones)3.284 E F2 5.784(.T)C(he)-5.784 E F3(primary)3.284 E F2(and) +3.284 E F3(secondary)87 393 Q F2 .98(declarations in the)3.48 F F3 +(named.boot)3.48 E F2 .98(\214le specify)3.48 F F3(zones)3.48 E F2 3.48 +(,n)C(ot)-3.48 E F3(domains)3.48 E F2 5.98(.W)C .98 +(hen you ask someone if)-5.98 F(the)87 405 Q 2.742(ya)-.15 G .241 +(re willing to be a secondary serv)-2.742 F .241(er for your `)-.15 F +(`domain')-.74 E .241(', you are actually asking for secondary ser)-.74 +F(-)-.2 E(vice for some collection of)87 417 Q F3(zones)2.5 E F2(.)A +.964(Each zone will ha)112 433.2 R 1.264 -.15(ve o)-.2 H .964(ne `).15 F +(`primary')-.74 E 3.465('s)-.74 G(erv)-3.465 E(er)-.15 E 3.465(,w)-.4 G +.965(hich loads the zone contents from some local \214le)-3.465 F 1.786 +(which is edited by humans or perhaps generated mechanically from some other local \214le which is) +87 445.2 R .458(edited by humans.)87 457.2 R .459 +(Then there will be some number of `)5.458 F(`secondary')-.74 E 2.959 +('s)-.74 G(erv)-2.959 E .459(ers, which load the zone con-)-.15 F 1.187 +(tents using the)87 469.2 R F4(IP/DNS)3.687 E F2 1.187 +(protocol \(that is, the secondary serv)3.687 F 1.186 +(ers will contact the primary and fetch the)-.15 F .597(zone using)87 +481.2 R F4(IP/TCP)3.097 E F2 3.097(\). This)B .598(set of serv)3.098 F +.598 +(ers \(the primary and all of the secondaries\) should be listed in the) +-.15 F F3(NS)87 493.2 Q F2 .883 +(records in the parent zone, which will constitute a `)3.383 F(`dele) +-.74 E -.05(ga)-.15 G(tion').05 E 3.383('. This)-.74 F .883(set of serv) +3.383 F .883(ers must also be)-.15 F .471 +(listed in the zone \214le itself, usually under the `)87 505.2 R(`@') +-.74 E 2.972('n)-.74 G .472 +(ame which is a magic cookie that means the `)-2.972 F(`top)-.74 E(le)87 +517.2 Q -.15(ve)-.25 G(l').15 E 3.043('o)-.74 G 3.043(r`)-3.043 G +(`root')-3.783 E 3.043('o)-.74 G 3.043(fc)-3.043 G .543(urrent zone.) +-3.043 F -1.1(Yo)5.543 G 3.043(uc)1.1 G .543(an list serv)-3.043 F .543 +(ers in the zone')-.15 F 3.043(st)-.55 G(op-le)-3.043 E -.15(ve)-.25 G +3.043(l`).15 G(`@')-3.783 E(')-.74 E F3(NS)3.042 E F2 .542 +(records that are)3.042 F .448(not in the parent')87 529.2 R(s)-.55 E F3 +(NS)2.949 E F2(dele)2.949 E -.05(ga)-.15 G .449(tion, b).05 F .449 +(ut you cannot list serv)-.2 F .449(ers in the parent')-.15 F 2.949(sd) +-.55 G(ele)-2.949 E -.05(ga)-.15 G .449(tion that are not pre-).05 F .15 +(sent in the zone')87 541.2 R 2.65(s`)-.55 G(`@')-3.39 E 2.65('. An)-.74 +F 2.65(ys)-.15 G(erv)-2.65 E .149(ers listed in the)-.15 F F3(NS)2.649 E +F2 .149(records must be con\214gured as authoritati)2.649 F .449 -.15 +(ve \()-.25 H(either).15 E .343(primary or secondary\) for the zone.)87 +553.2 R .343(If a serv)5.343 F .343(er listed in a)-.15 F F3(NS)2.843 E +F2 .343(record is not authoritati)2.843 F -.15(ve)-.25 G 2.844(,i).15 G +2.844(tw)-2.844 G .344(ill respond)-2.844 F(with a `)87 565.2 Q +(`lame dele)-.74 E -.05(ga)-.15 G(tion').05 E 2.5('w)-.74 G +(hen queried.)-2.5 E F0 2.5(5. T)72 601.2 R(ypes of Ser)-.74 E -.1(ve) +-.1 G(rs).1 E F2(Serv)112 617.4 Q .692(ers do not really ha)-.15 F .991 +-.15(ve `)-.2 H(`types')-.59 E 3.191('. A)-.74 F(serv)3.191 E .691 +(er can be a primary for some zones and a secondary)-.15 F 1.015 +(for others, or it can be only a primary)87 629.4 R 3.515(,o)-.65 G +3.515(ro)-3.515 G 1.015(nly a secondary)-3.515 F 3.515(,o)-.65 G 3.515 +(ri)-3.515 G 3.515(tc)-3.515 G 1.015(an serv)-3.515 F 3.516(en)-.15 G +3.516(oz)-3.516 G 1.016(ones and just answer)-3.516 F 2.346 +(queries via its `)87 641.4 R(`cache')-.74 E 4.846('. Pre)-.74 F 2.346 +(vious v)-.25 F 2.346(ersions of this document referred to serv)-.15 F +2.345(ers as `)-.15 F(`master')-.74 E 4.845('a)-.74 G(nd)-4.845 E -.74 +(``)87 653.4 S(sla).74 E -.15(ve)-.2 G 1.868 -.74('' b).15 H .388 +(ut we no).54 F 2.888(wf)-.25 G .388 +(eel that those distinctions \212 and the assignment of a `)-2.888 F +(`type')-.74 E 2.889('t)-.74 G 2.889(oan)-2.889 G .389(ame serv)-2.889 F +.389(er \212)-.15 F(are not useful.)87 665.4 Q F0 2.5(5.1. Caching)87 +689.4 R(Only Ser)2.5 E -.1(ve)-.1 G(r).1 E F2 1.65(All serv)127 705.6 R +1.65(ers are caching serv)-.15 F 4.149(ers. This)-.15 F 1.649 +(means that the serv)4.149 F 1.649(er caches the information that it) +-.15 F(recei)102 717.6 Q -.15(ve)-.25 G 2.53(sf).15 G .03 +(or use until the data e)-2.53 F 2.53(xpires. A)-.15 F F3(Cac)2.53 E +.031(hing Only Server)-.15 F F2 .031(is a serv)2.531 F .031 +(er that is not authoritati)-.15 F .331 -.15(ve f)-.25 H(or).15 E EP +%%Page: 4 4 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF 208.87(SMM:10-4 Name)72 60 R(Ser)2.5 E -.1(ve)-.1 +G 2.5(rO).1 G(perations Guide f)-2.5 E(or)-.25 E/F1 9/Times-Bold@0 SF +(BIND)2.5 E/F2 10/Times-Roman@0 SF(an)102 96 Q 2.839(yz)-.15 G 2.839 +(one. This)-2.839 F(serv)2.839 E .339 +(er services queries and asks other serv)-.15 F .339(ers, who ha)-.15 F +.639 -.15(ve t)-.2 H .338(he authority).15 F 2.838(,f)-.65 G .338 +(or the infor)-2.838 F(-)-.2 E .634(mation needed.)102 108 R .634 +(All serv)5.634 F .634(ers k)-.15 F .635 +(eep data in their cache until the data e)-.1 F .635(xpires, based on a) +-.15 F/F3 10/Times-Italic@0 SF(TTL)3.135 E F2(\(`)3.135 E(`T)-.74 E(ime) +-.35 E 1.6 -.8(To L)102 120 T -2.15 -.25(iv e).8 H -.74('').25 G 2.5 +<298c>.74 G(eld which is maintained for all resource records.)-2.5 E F0 +2.5(5.2. Remote)87 144 R(Ser)2.5 E -.1(ve)-.1 G(r).1 E F2 2.695(AR)127 +160.2 S .195(emote Serv)-2.695 F .195(er is an option gi)-.15 F -.15(ve) +-.25 G 2.695(nt).15 G 2.695(op)-2.695 G .195(eople who w)-2.695 F .195 +(ould lik)-.1 F 2.695(et)-.1 G 2.695(ou)-2.695 G .195(se a name serv) +-2.695 F .195(er from their)-.15 F -.1(wo)102 172.2 S 1.73(rkstation or on a machine that has a limited amount of memory and CPU c) +.1 F 4.23(ycles. W)-.15 F 1.73(ith this)-.4 F .162 +(option you can run all of the netw)102 184.2 R .162 +(orking programs that use the name serv)-.1 F .161 +(er without the name serv)-.15 F(er)-.15 E .802 +(running on the local machine.)102 196.2 R .803 +(All of the queries are serviced by a name serv)5.803 F .803 +(er that is running on)-.15 F .198(another machine on the netw)102 208.2 +R 2.698(ork. A)-.1 F .198(host which has an)2.698 F F3(/etc/r)2.698 E +(esolv)-.37 E(.conf)-.74 E F2 .198(\214le listing only remote hosts,) +2.698 F .223(and which does not run a name serv)102 220.2 R .223 +(er of its o)-.15 F .224(wn, is sometimes called a Remote Serv)-.25 F +.224(er \(because the)-.15 F .316(actual serv)102 232.2 R .316 +(er is remote?\) b)-.15 F .316 +(ut more often it is called simply a DNS Client.)-.2 F .315 +(This kind of host is tech-)5.316 F(nically not a `)102 244.2 Q(`serv) +-.74 E(er')-.15 E(', since it has no cache and does not answer queries.) +-.74 E F0 2.5(5.3. Sla)87 268.2 R .2 -.1(ve S)-.25 H(er).1 E -.1(ve)-.1 +G(r).1 E F2 3.234(AS)127 284.4 S(la)-3.234 E 1.034 -.15(ve S)-.2 H(erv) +.15 E .734(er is a serv)-.15 F .734(er that al)-.15 F -.1(wa)-.1 G .734 +(ys forw).1 F .734(ards queries it cannot satisfy from its cache, to a) +-.1 F<8c78>102 296.4 Q .909(ed list of)-.15 F F3(forwar)3.409 E(ding) +-.37 E F2(serv)3.409 E .909 +(ers instead of interacting with the name serv)-.15 F .908 +(ers for the root and other)-.15 F 3.308(domains. The)102 308.4 R .808 +(queries to the)3.308 F F3(forwar)3.308 E .808(ding server)-.37 F(s)-.1 +E F2 .808(are recursi)3.308 F 1.108 -.15(ve q)-.25 H 3.308 +(ueries. There).15 F .808(may be one or more)3.308 F(forw)102 320.4 Q +.215(arding serv)-.1 F .215(ers, and the)-.15 F 2.714(ya)-.15 G .214 +(re tried in turn until the list is e)-2.714 F 2.714(xhausted. A)-.15 F +(Sla)2.714 E .514 -.15(ve a)-.2 H .214(nd forw).15 F .214(arder con-)-.1 +F .618(\214guration is typically used when you do not wish all the serv) +102 332.4 R .619(ers at a gi)-.15 F -.15(ve)-.25 G 3.119(ns).15 G .619 +(ite to interact with the)-3.119 F 2.008(rest of the Internet serv)102 +344.4 R 4.508(ers. A)-.15 F 2.008(typical scenario w)4.508 F 2.008 +(ould in)-.1 F -.2(vo)-.4 G(lv).2 E 4.508(ean)-.15 G 2.008(umber of w) +-4.508 F 2.008(orkstations and a)-.1 F .033 +(departmental timesharing machine with Internet access.)102 356.4 R .033 +(The w)5.033 F .033(orkstations might be administrati)-.1 F -.15(ve)-.25 +G(ly).15 E 1.17(prohibited from ha)102 368.4 R 1.17 +(ving Internet access.)-.2 F 2.769 -.8(To g)6.169 H -2.15 -.25(iv e).8 H +1.169(the w)3.919 F 1.169(orkstations the appearance of access to the) +-.1 F .588(Internet domain system, the w)102 380.4 R .588 +(orkstations could be Sla)-.1 F .889 -.15(ve s)-.2 H(erv).15 E .589 +(ers to the timesharing machine which)-.15 F -.1(wo)102 392.4 S .044 +(uld forw).1 F .044(ard the queries and interact with other name serv) +-.1 F .044(ers to resolv)-.15 F 2.544(et)-.15 G .044 +(he query before returning)-2.544 F .3(the answer)102 404.4 R 5.3(.A) +-.55 G 2.8(na)-5.3 G .3(dded bene\214t of using the forw)-2.8 F .301 +(arding feature is that the central machine de)-.1 F -.15(ve)-.25 G .301 +(lops a).15 F .373 +(much more complete cache of information that all the w)102 416.4 R .373 +(orkstations can tak)-.1 F 2.872(ea)-.1 G(dv)-2.872 E .372(antage of.) +-.25 F .372(The use)5.372 F .223(of Sla)102 428.4 R .523 -.15(ve m)-.2 H +.223(ode and forw).15 F .223 +(arding is discussed further under the description of the)-.1 F F3 +(named)2.724 E F2 .224(boot\214le com-)2.724 F(mands.)102 440.4 Q 1.174 +(There is no prohibition ag)127 456.6 R 1.173(ainst declaring a serv) +-.05 F 1.173(er to be a)-.15 F F3(slave)3.673 E F2 -2.15 -.25(ev e)3.673 +H 3.673(nt).25 G 1.173(hough it has)-3.673 F F3(primary)3.673 E F2 +(and/or)102 468.6 Q F3(secondary)3.422 E F2 .922(zones as well; the ef) +3.422 F .922(fect will still be that an)-.25 F .923 +(ything in the local serv)-.15 F(er')-.15 E 3.423(sc)-.55 G .923 +(ache or)-3.423 F(zones will be answered, and an)102 480.6 Q +(ything else will be forw)-.15 E(arded using the)-.1 E F3(forwar)2.5 E +(der)-.37 E(s)-.1 E F2(list.)2.5 E F0 2.5(6. Files)72 516.6 R F2 .082 +(The name serv)112 532.8 R .081(er uses se)-.15 F -.15(ve)-.25 G .081 +(ral \214les to load its data base.).15 F .081(This section co)5.081 F +-.15(ve)-.15 G .081(rs the \214les and their for).15 F(-)-.2 E +(mats needed for)87 544.8 Q F3(named)2.5 E F2(.)A F0 2.5(6.1. Boot)87 +568.8 R(File)2.5 E F2 .05(This is the \214le that is \214rst read when) +127 585 R F3(named)2.55 E F2 .051(starts up.)2.551 F .051 +(This tells the serv)5.051 F .051(er what type of serv)-.15 F(er)-.15 E +.275(it is, which zones it has authority o)102 597 R -.15(ve)-.15 G +2.775(ra).15 G .275(nd where to get its initial data.)-2.775 F .274 +(The def)5.274 F .274(ault location for this)-.1 F .259(\214le is)102 +609 R F3 -.834(/etc /named.boot)2.759 F F2 5.26(.H)1.666 G -.25(ow)-5.26 +G -2.15 -.25(ev e).25 H 2.76(rt).25 G .26 +(his can be changed by setting the)-2.76 F F3(BOO)2.76 E(TFILE)-.4 E F2 +-.25(va)2.76 G .26(riable when you).25 F(compile)102 621 Q F3(named)2.5 +E F2(or by specifying the location on the command line when)2.5 E F3 +(named)2.5 E F2(is started up.)2.5 E F0 2.5(6.1.1. Domain)102 645 R F2 +2.5(Ad)142 661.2 S(ef)-2.5 E +(ault domain may be speci\214ed for the name serv)-.1 E +(er using a line such as)-.15 E F3 3.5(domain Berk)167 677.4 R(ele)-.1 E +(y)-.3 E F0(.)1.666 E F3(Edu)1.666 E F2 .023(Older name serv)117 693.6 R +.023(ers use this information when the)-.15 F 2.523(yr)-.15 G(ecei) +-2.523 E .323 -.15(ve a q)-.25 H .023(uery for a name without a `).15 F +(`)-.74 E F0(.)A F2 1.502 -.74('' t)D(hat).74 E 1.469(is not kno)117 +705.6 R 3.969(wn. Ne)-.25 F 1.469(wer designs assume that the resolv) +-.25 F 1.47(er library will append its o)-.15 F 1.47(wn idea of a)-.25 F +-.74(``)117 717.6 S(def).74 E .163(ault domain')-.1 F 2.663('t)-.74 G +2.662(oa)-2.663 G .462 -.15(ny u)-2.662 H .162(nquali\214ed names.).15 F +.162(Though the name serv)5.162 F .162(er can still be compiled with) +-.15 F EP +%%Page: 5 5 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF(Name Ser)72 60 Q -.1(ve)-.1 G 2.5(rO).1 G +(perations Guide f)-2.5 E(or)-.25 E/F1 9/Times-Bold@0 SF 211.564 +(BIND SMM)2.5 F F0(:10-5)A/F2 10/Times-Roman@0 SF .268(support for the) +117 96 R/F3 10/Times-Italic@0 SF(domain)2.768 E F2(directi)2.768 E .568 +-.15(ve i)-.25 H 2.768(nt).15 G .268(he boot \214le, the def)-2.768 F +.268(ault is to lea)-.1 F .569 -.15(ve i)-.2 H 2.769(to).15 G .269 +(ut and we strenuously)-2.769 F .066(recommend ag)117 108 R .066 +(ainst its use.)-.05 F .066 +(If you use this feature, clients outside your local domain which send) +5.066 F .504(you requests about unquali\214ed names will ha)117 120 R +.804 -.15(ve t)-.2 H .504 +(he implicit quali\214cation of your domain rather).15 F .027 +(than theirs.)117 132 R .026 +(The proper place for this function is on the client, in their)5.027 F +F0(/etc/r)2.526 E(esolv)-.18 E(.conf)-.7 E F2 .026(\(or equi)2.526 F(v-) +-.25 E(alent\) \214le.)117 144 Q(Use of the)5 E F3(domain)2.5 E F2 +(directi)2.5 E .3 -.15(ve i)-.25 H 2.5(ny).15 G +(our boot \214le is strongly discouraged.)-2.5 E F0 2.5(6.1.2. Dir)102 +168 R(ectory)-.18 E F2(The)142 184.2 Q F3(dir)2.663 E(ectory)-.37 E F2 +(directi)2.663 E .464 -.15(ve s)-.25 H .164 +(peci\214es the directory in which the name serv).15 F .164 +(er should run, allo)-.15 F(w-)-.25 E .222 +(ing the other \214le names in the boot \214le to use relati)117 196.2 R +.522 -.15(ve p)-.25 H .222(ath names.).15 F .222(There can be only one) +5.222 F F3(dir)2.722 E(ec-)-.37 E(tory)117 208.2 Q F2(directi)2.5 E .3 +-.15(ve a)-.25 H(nd it should be gi).15 E -.15(ve)-.25 G 2.5(nb).15 G +(efore an)-2.5 E 2.5(yo)-.15 G(ther directi)-2.5 E -.15(ve)-.25 G 2.5 +(st).15 G(hat specify \214le names.)-2.5 E F3(dir)167 224.4 Q 45.25 +(ectory /var/named)-.37 F F2 1.383(If you ha)117 240.6 R 1.684 -.15 +(ve m)-.2 H 1.384(ore than a couple of named \214les to be maintained, you may wish to place the) +.15 F .649(named \214les in a directory such as /v)117 252.6 R .648 +(ar/named and adjust the directory command properly)-.25 F 5.648(.T)-.65 +G(he)-5.648 E .621(main purposes of this command are to mak)117 264.6 R +3.121(es)-.1 G .621(ure named is in the proper directory when trying) +-3.121 F .306(to include \214les by relati)117 276.6 R .606 -.15(ve p) +-.25 H .305(ath names with $INCLUDE and to allo).15 F 2.805(wn)-.25 G +.305(amed to run in a location)-2.805 F +(that is reasonable to dump core if it feels the ur)117 288.6 Q(ge.)-.18 +E F0 2.5(6.1.3. Primary)102 312.6 R(Ser)2.5 E(vice)-.1 E F2 .875 +(The line in the boot \214le that designates the serv)142 328.8 R .875 +(er as a primary master serv)-.15 F .876(er for a zone)-.15 F +(looks as follo)117 340.8 Q(ws:)-.25 E F3 49.32(primary Berk)167 357 R +(ele)-.1 E(y)-.3 E F0(.)1.666 E F3 -1.052(Edu ucbhosts)1.666 F F2 .879 +(The \214rst \214eld speci\214es that the serv)117 373.2 R .879 +(er is a primary one for the zone stated in the second \214eld.)-.15 F(The third \214eld is the name of the \214le from which the data is read.) +117 385.2 Q .008(The abo)142 401.4 R .308 -.15(ve a)-.15 H .008 +(ssumes that the zone you are specifying is a class).15 F F3(IN)2.508 E +F2 2.509(zone. If)2.509 F .009(you wish to des-)2.509 F .701 +(ignate a dif)117 413.4 R .701(ferent class you can append)-.25 F F3 +(/class)3.201 E F2 .701(to the \214rst \214eld, where)3.201 F F3(class) +3.2 E F2 .7(is either the inte)3.2 F(ger)-.15 E -.25(va)117 425.4 S .899 +(lue or the standard mnemonic for the class.).25 F -.15(Fo)5.899 G 3.399 +(re).15 G .9(xample the line for a primary serv)-3.549 F .9(er for a) +-.15 F(hesiod class zone looks as follo)117 437.4 Q(ws:)-.25 E F3 20 +(primary/HS Berk)167 453.6 R(ele)-.1 E(y)-.3 E F0(.)1.666 E F3 7.5 +(Edu hesiod.data)1.666 F F2 .858 +(Note that this support for specifying other than class)117 469.8 R F3 +(IN)3.358 E F2 .858(zones is a compile-time option which)3.358 F(your v) +117 481.8 Q(endor may not ha)-.15 E .3 -.15(ve e)-.2 H(nabled when the) +.15 E 2.5(yb)-.15 G(uilt your operating system.)-2.7 E F0 2.5 +(6.1.4. Secondary)102 505.8 R(Ser)2.5 E(vice)-.1 E F2 .946 +(The line for a secondary serv)142 522 R .946 +(er is similar to the primary e)-.15 F .947 +(xcept that it lists addresses of)-.15 F(other serv)117 534 Q +(ers \(usually primary serv)-.15 E +(ers\) from which the zone data will be obtained.)-.15 E F3 40.44 +(secondary Berk)167 550.2 R(ele)-.1 E(y)-.3 E F0(.)1.666 E F3 -1.052 +(Edu 128)1.666 F F0(.)A F3(32)A F0(.)A F3(0)A F0(.)A F3 2.5(10 128)B F0 +(.)A F3(32)A F0(.)A F3(0)A F0(.)A F3 2.5(4u)C(cbhosts.bak)-2.5 E F2 1.17 +(The \214rst \214eld speci\214es that the serv)117 566.4 R 1.169 +(er is a secondary serv)-.15 F 1.169 +(er for the zone stated in the second)-.15 F 3.001(\214eld. The)117 +578.4 R(tw)3.001 E 3.001(on)-.1 G(etw)-3.001 E .501 +(ork addresses specify the name serv)-.1 F .501(ers which ha)-.15 F .802 +-.15(ve d)-.2 H .502(ata for the zone.).15 F(Note)5.502 E .608 +(that at least one of these will be a)117 590.4 R F3(primary)3.108 E F2 +3.108(,a)C .608(nd, unless you are using some protocol other than)-3.108 +F/F4 9/Times-Roman@0 SF(IP/DNS)117 602.4 Q F2 .023 +(for your zone transfer mechanism, the others will all be other)2.522 F +F3(secondary)2.523 E F2(serv)2.523 E 2.523(ers. Ha)-.15 F(ving)-.2 E +.865(your secondary serv)117 614.4 R .865 +(er pull data from other secondary serv)-.15 F .865 +(ers is usually unwise, since you can)-.15 F .352 +(add delay to the propag)117 626.4 R .352 +(ation of zone updates if your netw)-.05 F(ork')-.1 E 2.852(sc)-.55 G +(onnecti)-2.852 E .352(vity v)-.25 F .353(aries in pathologi-)-.25 F +1.003(cal b)117 638.4 R 1.003(ut common w)-.2 F 3.502(ays. The)-.1 F +1.002(intended use for multiple addresses on a)3.502 F F3(secondary) +3.502 E F2 1.002(declaration is)3.502 F .595(when the)117 650.4 R F3 +(primary)3.095 E F2(serv)3.096 E .596(er has multiple netw)-.15 F .596 +(ork interf)-.1 F .596(aces and therefore multiple host addresses.)-.1 F +.34(The secondary serv)117 662.4 R .34(er gets its data across the netw) +-.15 F .339(ork from one of the listed serv)-.1 F 2.839(ers. The)-.15 F +(serv)2.839 E(er)-.15 E .785(addresses are tried in the order listed.) +117 674.4 R .785 +(If a \214lename is present after the list of primary serv)5.785 F(ers,) +-.15 E .468 +(data for the zone will be dumped into that \214le as a backup.)117 +686.4 R .467(When the serv)5.467 F .467(er is \214rst started, the)-.15 +F .686 +(data is loaded from the backup \214le if possible, and a primary serv) +117 698.4 R .686(er is then consulted to check)-.15 F .123 +(that the zone is still up-to-date.)117 710.4 R .123 +(Note that listing your serv)5.123 F .123(er as a)-.15 F F3(secondary) +2.623 E F2(serv)2.623 E .123(er does not nec-)-.15 F 1.221(essarily mak) +117 722.4 R 3.721(ei)-.1 G 3.721(to)-3.721 G 1.222 +(ne \212 the parent zone must)-3.721 F F3(dele)3.722 E(gate)-.4 E F2 +1.222(authority to your serv)3.722 F 1.222(er as well as the)-.15 F EP +%%Page: 6 6 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF 208.87(SMM:10-6 Name)72 60 R(Ser)2.5 E -.1(ve)-.1 +G 2.5(rO).1 G(perations Guide f)-2.5 E(or)-.25 E/F1 9/Times-Bold@0 SF +(BIND)2.5 E/F2 10/Times-Roman@0 SF 1.417(primary and the other secondaries, or you will be transferring a zone o) +117 96 R -.15(ve)-.15 G 3.917(rf).15 G 1.416(or no reason; no)-3.917 F +.735(other serv)117 108 R .735(er will ha)-.15 F 1.035 -.15(ve a r)-.2 H +.735 +(eason to query you for that zone unless the parent zone lists you as a) +.15 F(serv)117 120 Q(er for the zone.)-.15 E .348 +(As with primary you may specify a secondary serv)142 136.2 R .348 +(er for a class other than)-.15 F/F3 10/Times-Italic@0 SF(IN)2.848 E F2 +.348(by append-)2.848 F(ing)117 148.2 Q F3(/class)2.5 E F2(to the)2.5 E +F3(secondary)2.5 E F2 -.1(ke)2.5 G(yw)-.05 E(ord, e.g.,)-.1 E F3 +(secondary/HS)2.5 E F2(.)A F0 2.5(6.1.5. Stub)102 172.2 R(Ser)2.5 E +(vice)-.1 E F2 1.161(The line for a stub serv)142 188.4 R 1.161 +(er is similar to a secondary)-.15 F 6.161(.\()-.65 G 1.162 +(This feature is e)-6.161 F 1.162(xperimental as of)-.15 F(4.9.3.\))117 +200.4 Q F3 16.83(stub Berk)167 216.6 R(ele)-.1 E(y)-.3 E F0(.)1.666 E F3 +23.118(Edu 128)1.666 F F0(.)A F3(32)A F0(.)A F3(0)A F0(.)A F3 2.5 +(10 128)B F0(.)A F3(32)A F0(.)A F3(0)A F0(.)A F3 2.5(4u)C(cbhosts.bak) +-2.5 E F2(The \214rst \214eld speci\214es that the serv)117 232.8 Q +(er is a stub serv)-.15 E(er for the zone stated in the second \214eld.) +-.15 E 1.358 +(Stub zones are intended to ensure that a primary for a zone al)142 249 +R -.1(wa)-.1 G 1.358(ys has the correct).1 F F3(NS)3.858 E F2 .49(records for children of that zone. If the primary is not a secondary for a child zone it should be) +117 261 R 1.348 +(con\214gured with stub zones for all its children. Stub zones pro)117 +273 R 1.347(vide a mechanism to allo)-.15 F(w)-.25 E F3(NS)3.847 E F2 +(records for a zone to be speci\214ed in only one place.)117 285 Q F3 +1.28(primary CSIR)167 301.2 R(O)-.4 E F0(.)1.666 E F3 49.118 -.5(AU c) +1.666 H(sir).5 E(o.dat)-.45 E 16.83(stub dms.CSIR)167 313.2 R(O)-.4 E F0 +(.)1.666 E F3 30.508 -.5(AU 1)1.666 H(30).5 E F0(.)A F3(155)A F0(.)A F3 +(16)A F0(.)A F3 5(1d)C(ms.stub)-5 E 16.83(stub dap.CSIR)167 325.2 R(O) +-.4 E F0(.)1.666 E F3 31.618 -.5(AU 1)1.666 H(30).5 E F0(.)A F3(155)A F0 +(.)A F3(98)A F0(.)A F3 5(1d)C(ap.stub)-5 E F0 2.5(6.1.6. Cache)102 353.4 +R(Initialization)2.5 E F2 .991(All serv)142 369.6 R .991 +(ers, including `)-.15 F .991(`caching only')-.74 F 3.491('s)-.74 G(erv) +-3.491 E .991(ers, should ha)-.15 F 1.291 -.15(ve a l)-.2 H .992 +(ine as follo).15 F .992(ws in the boot)-.25 F +(\214le to prime the name serv)117 381.6 Q(ers cache:)-.15 E F3(cac)167 +397.8 Q(he)-.15 E F0(.)51.99 E F3 -.45(ro)55.55 G(ot).45 E F0(.)A F3 +(cac)A(he)-.15 E F2(Do not put an)117 414 Q(ything into your)-.15 E F3 +(cac)2.5 E(he)-.15 E F2(\214les other than root serv)2.5 E +(er information.)-.15 E .55 +(All cache \214les listed will be read in at named boot time and an)142 +430.2 R 3.05(yv)-.15 G .55(alues still v)-3.3 F .55(alid will be)-.25 F +.441(reinstated in the cache.)117 442.2 R .441(The root name serv)5.441 +F .441(er information in the cache \214les will be used until a)-.15 F +1.113(root query is actually answered by one of the name serv)117 454.2 +R 1.112(ers in the cache \214le, after which that)-.15 F(answer will be used instead of the cache \214le until the answer times out.) +117 466.2 Q .112(As with)142 482.4 R F3(primary)2.612 E F2(and)2.612 E +F3(secondary)2.612 E F2 2.612(,y)C .112(ou may specify a secondary serv) +-2.612 F .112(er for a class other than)-.15 F F3(IN)117 494.4 Q F2 +(by appending)2.5 E F3(/class)2.5 E F2(to the)2.5 E F3(cac)2.5 E(he)-.15 +E F2 -.1(ke)2.5 G(yw)-.05 E(ord, e.g.,)-.1 E F3(class/HS)2.5 E F2(.)A F0 +2.5(6.1.7. F)102 518.4 R(orwarders)-.25 E F2(An)142 534.6 Q 3.621(ys) +-.15 G(erv)-3.621 E 1.121(er can mak)-.15 F 3.621(eu)-.1 G 1.121(se of) +-3.621 F F3(forwar)3.621 E(der)-.37 E(s)-.1 E F2 6.121(.A)C F3(forwar) +-2.5 E(der)-.37 E F2 1.121(is another serv)3.621 F 1.12 +(er capable of pro-)-.15 F .256(cessing recursi)117 546.6 R .556 -.15 +(ve q)-.25 H .256(ueries that is willing to try resolving queries on behalf of other systems.) +.15 F(The)5.256 E F3(forwar)117 558.6 Q(der)-.37 E(s)-.1 E F2 +(command speci\214es forw)2.5 E(arders by internet address as follo)-.1 +E(ws:)-.25 E F3(forwar)167 574.8 Q(der)-.37 E 89.23(s1)-.1 G(28)-89.23 E +F0(.)A F3(32)A F0(.)A F3(0)A F0(.)A F3 7.5(10 128)B F0(.)A F3(32)A F0(.) +A F3(0)A F0(.)A F3(4)A F2 1.003(There are tw)117 591 R 3.503(om)-.1 G +1.003(ain reasons for w)-3.503 F 1.002(anting to do so.)-.1 F 1.002 +(First, some systems may not ha)6.002 F 1.302 -.15(ve f)-.2 H 1.002 +(ull net-).15 F -.1(wo)117 603 S .379(rk access and may be pre).1 F -.15 +(ve)-.25 G .379(nted from sending an).15 F 2.879(yI)-.15 G 2.879(Pp) +-2.879 G(ack)-2.879 E .38(ets into the rest of the Internet and)-.1 F +.33(therefore must rely on a forw)117 615 R .33(arder which does ha)-.1 +F .63 -.15(ve a)-.2 H .33(ccess to the full net.).15 F .33 +(The second reason is)5.33 F 1.371(that the forw)117 627 R 1.372 +(arder sees a union of all queries as the)-.1 F 3.872(yp)-.15 G 1.372 +(ass through its serv)-3.872 F 1.372(er and therefore it)-.15 F -.2(bu) +117 639 S .486(ilds up a v).2 F .485 +(ery rich cache of data compared to the cache in a typical w)-.15 F .485 +(orkstation name serv)-.1 F(er)-.15 E(.)-.55 E .55(In ef)117 651 R .55 +(fect, the)-.25 F F3(forwar)3.05 E(der)-.37 E F2 .551(becomes a meta-cache that all hosts can bene\214t from, thereby reducing) +3.05 F +(the total number of queries from that site to the rest of the net.)117 +663 Q .449(The ef)142 679.2 R .449(fect of `)-.25 F(`forw)-.74 E +(arders')-.1 E 2.949('i)-.74 G 2.949(st)-2.949 G 2.949(op)-2.949 G .449 +(repend some \214x)-2.949 F .448(ed addresses to the list of name serv) +-.15 F(ers)-.15 E .806(to be tried for e)117 691.2 R -.15(ve)-.25 G .806 +(ry query).15 F 5.806(.N)-.65 G .806 +(ormally that list is made up only of higher)-5.806 F .807 +(-authority serv)-.2 F .807(ers dis-)-.15 F(co)117 703.2 Q -.15(ve)-.15 +G .93(red via).15 F F3(NS)3.43 E F2 .93(record lookups for the rele)3.43 +F -.25(va)-.25 G .93(nt domain.).25 F .93(If the forw)5.93 F .93 +(arders do not answer)-.1 F 3.43(,t)-.4 G(hen)-3.43 E 1.512(unless the) +117 715.2 R F3(slave)4.012 E F2(directi)4.013 E 1.813 -.15(ve w)-.25 H +1.513(as gi).05 F -.15(ve)-.25 G 1.513(n, the appropriate serv).15 F +1.513(ers for the domains will be queried)-.15 F EP +%%Page: 7 7 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF(Name Ser)72 60 Q -.1(ve)-.1 G 2.5(rO).1 G +(perations Guide f)-2.5 E(or)-.25 E/F1 9/Times-Bold@0 SF 211.564 +(BIND SMM)2.5 F F0(:10-7)A/F2 10/Times-Roman@0 SF(directly)117 96 Q(.) +-.65 E F0 2.5(6.1.8. Sla)102 132 R .2 -.1(ve S)-.25 H(er).1 E -.1(ve)-.1 +G(rs).1 E F2(Sla)142 148.2 Q .381 -.15(ve m)-.2 H .081 +(ode is used if the use of forw).15 F .08(arders is the only possible w) +-.1 F .08(ay to resolv)-.1 F 2.58(eq)-.15 G .08(ueries due)-2.58 F 1.059 +(to lack of full net access or if you wish to pre)117 160.2 R -.15(ve) +-.25 G 1.059(nt the name serv).15 F 1.059(er from using other than the) +-.15 F(listed forw)117 172.2 Q 2.5(arders. Sla)-.1 F .3 -.15(ve m)-.2 H +(ode is acti).15 E -.25(va)-.25 G(ted by placing the simple command).25 +E/F3 10/Times-Italic@0 SF(options forwar)167 188.4 Q(d-only)-.37 E F2 +.746(in the boot\214le.)117 204.6 R .746 +(If this option is used, then you must specify forw)5.746 F 3.245 +(arders. When)-.1 F .745(in sla)3.245 F 1.045 -.15(ve m)-.2 H(ode,).15 E +.475(the serv)117 216.6 R .475(er will forw)-.15 F .475 +(ard each query to each of the forw)-.1 F .476 +(arders until an answer is found or the list)-.1 F .14(of forw)117 228.6 +R .14(arders is e)-.1 F 2.64(xhausted. The)-.15 F(serv)2.64 E .14 +(er will not try to contact an)-.15 F 2.64(yr)-.15 G .14 +(emote name serv)-2.64 F .14(er other than)-.15 F(those named in the)117 +240.6 Q F3(forwar)2.5 E(der)-.37 E(s)-.1 E F2(list.)2.5 E .855(So while) +142 256.8 R F3(forwar)3.355 E(der)-.37 E(s)-.1 E F2 .855 +(prepends addresses to the `)3.355 F(`serv)-.74 E .855(er list')-.15 F +3.356('f)-.74 G .856(or each query)-3.356 F(,)-.65 E F3 .856 +(options for)3.356 F(-)-.2 E(war)117 268.8 Q(d-only)-.37 E F2 .046 +(causes the `)2.546 F(`serv)-.74 E .046(er list')-.15 F 2.546('t)-.74 G +2.546(oc)-2.546 G(ontain)-2.546 E F3(only)2.546 E F2 .046 +(those addresses listed in the)2.546 F F3(forwar)2.545 E(der)-.37 E(s) +-.1 E F2(decla-)2.545 E 2.976(rations. Careless)117 280.8 R .476 +(use of the)2.976 F F3 .477(options forwar)2.977 F(d-only)-.37 E F2 +(directi)2.977 E .777 -.15(ve c)-.25 H .477 +(an cause really horrible forw).15 F(arding)-.1 E 1.749 +(loops, since you could end up forw)117 292.8 R 1.749 +(arding queries only to some set of hosts which are also)-.1 F(sla)117 +304.8 Q -.15(ve)-.2 G(s, and one or se).15 E -.15(ve)-.25 G +(ral of them could be forw).15 E(arding queries back to you.)-.1 E .672 +(Use of the)142 321 R F3 .672(options forwar)3.172 F(d-only)-.37 E F2 +(directi)3.172 E .972 -.15(ve s)-.25 H .673(hould be considered v).15 F +.673(ery carefully)-.15 F 5.673(.N)-.65 G .673(ote that)-5.673 F +(this same beha)117 333 Q(viour can be achie)-.2 E -.15(ve)-.25 G 2.5 +(du).15 G(sing the deprecated directi)-2.5 E -.15(ve)-.25 G(,).15 E F3 +(slave)2.5 E F2(.)A F0 2.5(6.1.9. Nonr)102 369 R(ecursi)-.18 E .2 -.1 +(ve S)-.1 H(er).1 E -.1(ve)-.1 G(rs).1 E/F4 9/Times-Roman@0 SF(BIND)142 +385.2 Q F2 2.487 -.55('s s)D 1.387(eparation of authoritati).55 F 1.687 +-.15(ve \()-.25 H 1.386(zone\) and nonauthoritiati).15 F 1.686 -.15 +(ve \()-.25 H 1.386(cache\) data has al).15 F -.1(wa)-.1 G(ys).1 E .664 +(been some)117 397.2 R .664 +(what weak, and pollution of the former via the latter has been kno)-.25 +F .665(wn to occur)-.25 F 5.665(.O)-.55 G(ne)-5.665 E -.1(wa)117 409.2 S +3.652(yt).1 G 3.652(op)-3.652 G(re)-3.652 E -.15(ve)-.25 G 1.152 +(nt this, as well as to sa).15 F 1.452 -.15(ve m)-.2 H 1.152 +(emory on serv).15 F 1.151(ers carrying a lot of authoritati)-.15 F +1.451 -.15(ve d)-.25 H(ata).15 E .514(\(e.g., root serv)117 421.2 R .514 +(ers\) is to mak)-.15 F 3.015(es)-.1 G .515(uch serv)-3.015 F .515 +(ers `)-.15 F(`nonrecursi)-.74 E -.15(ve)-.25 G -.7(.').15 G 5.515('T) +-.04 G .515(his can be achie)-5.515 F -.15(ve)-.25 G 3.015(dv).15 G .515 +(ia the direc-)-3.015 F(ti)117 433.2 Q -.15(ve)-.25 G F3(options no-r) +167 449.4 Q(ecur)-.37 E(sion)-.1 E F2 .733(in the boot\214le.)117 465.6 +R 3.233(As)5.733 G(erv)-3.233 E .733(er with this option enabled will not attempt to fetch data to help answer) +-.15 F .459(queries \212 if you ask it for data it does not ha)117 477.6 +R -.15(ve)-.2 G 2.959(,i).15 G 2.959(tw)-2.959 G .459 +(ill send you a referral to a more authorita-)-2.959 F(ti)117 489.6 Q +1.174 -.15(ve s)-.25 H(erv).15 E .874(er or)-.15 F 3.374(,i)-.4 G 3.374 +(fi)-3.374 G 3.374(ti)-3.374 G 3.374(si)-3.374 G .874(tself authoritati) +-3.374 F 1.174 -.15(ve f)-.25 H .874(or the zone of the query).15 F +3.373(,i)-.65 G 3.373(tw)-3.373 G .873(ill send you an ne)-3.373 F -.05 +(ga)-.15 G(ti).05 E -.15(ve)-.25 G(answer)117 501.6 Q(.)-.55 E 2.958(An) +142 517.8 S(onrecursi)-2.958 E .758 -.15(ve s)-.25 H(erv).15 E .458 +(er can be named in an)-.15 F F4(NS RR)2.958 E F2 -.2(bu)2.958 G 2.958 +(ti).2 G 2.958(tc)-2.958 G .459(annot be listed in the)-2.958 F F3 -.37 +(re)2.959 G(solv).37 E(.conf)-.74 E F2(\214le.)117 529.8 Q F0 2.5 +(6.1.10. Query)102 565.8 R(Logging)2.5 E F2 1.263 +(If the \214le system containing your)142 582 R F3(syslo)3.763 E(g)-.1 E +F2 1.262(\214le has quite a bit of space, you can consider)3.763 F +(using the)117 594 Q F3(options query-lo)167 610.2 Q(g)-.1 E F2(directi) +117 626.4 Q .357 -.15(ve i)-.25 H 2.557(ny).15 G .057(our boot\214le.) +-2.557 F .057(This will cause your name serv)5.057 F .058(er to log e) +-.15 F -.15(ve)-.25 G .058(ry query it recei).15 F -.15(ve)-.25 G .058 +(s, which).15 F .451(when combined with a Perl or)117 638.4 R F4 -.81 +(AW)2.951 G(K).81 E F2 .45 +(script to postprocess the logs, can be a useful management)2.951 F +(tool.)117 650.4 Q F0 2.5(6.1.11. In)102 686.4 R -.1(ve)-.4 G +(rse Query Pseudosupport).1 E F4(BIND)142 702.6 Q F2 .286(by def)2.786 F +.286(ault does not support in)-.1 F -.15(ve)-.4 G .286 +(rse queries, and this has been kno).15 F .287(wn to cause prob-)-.25 F +1.314(lems for certain microcomputer operating systems and for older v) +117 714.6 R 1.313(ersions of)-.15 F F4(BIND)3.813 E F2 -.55('s)C F3 +(nslookup)4.363 E EP +%%Page: 8 8 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF 208.87(SMM:10-8 Name)72 60 R(Ser)2.5 E -.1(ve)-.1 +G 2.5(rO).1 G(perations Guide f)-2.5 E(or)-.25 E/F1 9/Times-Bold@0 SF +(BIND)2.5 E/F2 10/Times-Roman@0 SF 4.125(tool. Y)117 96 R 1.626 +(ou may decide that rather than answering with `)-1.1 F 1.626 +(`operation not implemented,)-.74 F -.74('')-.7 G/F3 10/Times-Italic@0 +SF(named)4.866 E F2 .582(should detect the most common in)117 108 R -.15 +(ve)-.4 G .581(rse queries and answer them with bogus information.).15 F +.581(It is)5.581 F .972 +(better to upgrade your clients to stop depending on in)117 120 R -.15 +(ve)-.4 G .973(rse queries, b).15 F .973(ut if that is not possible,)-.2 +F(you should use the)117 132 Q F3(options fak)167 148.2 Q(e-iquery)-.1 E +F2(directi)117 164.4 Q .873 -.15(ve i)-.25 H 3.073(ny).15 G .573 +(our boot\214le.)-3.073 F F3(NO)5.573 E(TE:)-.4 E F2 .573 +(the responses are in f)3.073 F .573(act bogus, in that the)-.1 F 3.072 +(yc)-.15 G(ontain)-3.072 E/F4 9/Times-Roman@0 SF(ISO)3.072 E F2(8859)A +1.867(square brack)117 176.4 R 1.867(ets \()-.1 F F0([)A F2(and)4.367 E +F0(])4.367 E F2 1.868(\), so your clients will not be able to do an)B +1.868(ything useful with these)-.15 F 3.259(responses. It)117 188.4 R +.759(has been observ)3.259 F .759(ed that no client e)-.15 F -.15(ve) +-.25 G 3.259(rd).15 G .759(id an)-3.259 F .758 +(ything useful with real in)-.15 F -.15(ve)-.4 G .758(rse query).15 F +(responses, either)117 200.4 Q(.)-.55 E F0 2.5(6.1.12. Setting)102 236.4 +R(Name Ser)2.5 E -.1(ve)-.1 G 2.5(rL).1 G(imits)-2.5 E F2 1.04 +(Some name serv)142 252.6 R 1.041 +(er operations can be quite resource intensi)-.15 F -.15(ve)-.25 G 3.541 +(,a).15 G 1.041(nd in order to tune your)-3.541 F 1.435 +(system properly it is sometimes necessary to change)117 264.6 R F4 +(BIND)3.935 E F2 2.535 -.55('s i)D 1.435(nternal quotas.).55 F 1.435 +(This is accom-)6.435 F(plished via)117 276.6 Q F3(limit ) +167 292.8 Q F2(directi)117 309 Q -.15(ve)-.25 G 2.5(si).15 G 2.5(nt)-2.5 +G(he boot\214le.)-2.5 E(Limits, and their def)5 E(ault v)-.1 E +(alues, are as follo)-.25 E(ws:)-.25 E F3(limit tr)167 325.2 Q(ansfer) +-.15 E(s-in 10)-.1 E F2 .28(This is the number of simultaneous)117 341.4 +R F3(named-xfer)2.78 E F2(processes)2.78 E F4(BIND)2.78 E F2 .281 +(is willing to start.)2.78 F .281(Higher num-)5.281 F .51(bers yield f) +117 353.4 R .51(aster con)-.1 F -.15(ve)-.4 G -.18(rg).15 G .509 +(ence to primary serv).18 F .509(ers if your secondary serv)-.15 F .509 +(er has hundreds or thou-)-.15 F .693(sands of zones to maintain, b)117 +365.4 R .694 +(ut setting this number too high can cause thrashing due to starv)-.2 F +(a-)-.25 E 1.936(tion of resources such as netw)117 377.4 R 1.936 +(ork bandwidth or sw)-.1 F 1.936(ap space.)-.1 F F3(NO)6.936 E(TE:)-.4 E +F2 1.936(this limit can also be)4.436 F -.15(ex)117 389.4 S +(pressed via the deprecated directi).15 E -.15(ve)-.25 G F3(max-fetc) +2.65 E 2.5(hN)-.15 G(N)-2.5 E F2(.)A F3(limit tr)167 405.6 Q(ansfer)-.15 +E(s-per)-.1 E(-ns 2)-.2 E F2 .057(This is the number of simultaneous)117 +421.8 R F3(named-xfer)2.557 E F2(processes)2.558 E F4(BIND)2.558 E F2 +.058(is willing to initiate)2.558 F F3 .058(to any given)2.558 F 1.719 +(name server)117 433.8 R F2 6.719(.I)C 4.219(nm)-6.719 G 1.719 +(ost cases, you should not need to change it.)-4.219 F 1.718 +(If your secondary serv)6.719 F 1.718(er is)-.15 F .139 +(pulling hundreds or thousands of zones from a single primary serv)117 +445.8 R(er)-.15 E 2.64(,i)-.4 G(ncreasing)-2.64 E F3(tr)2.64 E(ansfer) +-.15 E(s-per)-.1 E(-ns)-.2 E F2 .664(may speed con)117 457.8 R -.15(ve) +-.4 G -.18(rg).15 G 3.164(ence. It).18 F .664(should be k)3.164 F .663 +(ept as small as possible, to a)-.1 F -.2(vo)-.2 G .663 +(id causing thrashing and).2 F(resource starv)117 469.8 Q +(ation on the primary serv)-.25 E(er)-.15 E(.)-.55 E F3 +(limit datasize )167 486 Q F2 .521(Most systems ha)117 +502.2 R .822 -.15(ve a q)-.2 H .522 +(uota that limits the size of the so-called `).15 F .522(`data se)-.74 F +(gment,)-.15 E 2.002 -.74('' w)-.7 H .522(hich is where).74 F F4(BIND) +117 514.2 Q F2 -.1(ke)3.495 G .994 +(eps all of its authority and cache data.).1 F F4(BIND)5.994 E F2 .994 +(will beha)3.494 F 1.294 -.15(ve s)-.2 H .994(uboptimally \(perhaps e) +.15 F -.15(ve)-.25 G(n).15 E -.15(ex)117 526.2 S 1.225 +(iting\) if it runs up ag).15 F 1.225(ainst this quota.)-.05 F 1.226 +(If your system supports a system call to change this)6.225 F .997 +(quota for a gi)117 538.2 R -.15(ve)-.25 G 3.497(np).15 G .997 +(rocess, you can ask)-3.497 F F4(BIND)3.496 E F2 .996 +(to use that system call via the)3.496 F F3 .996(limit datasize NN)3.496 +F F2(directi)117 550.2 Q -.15(ve)-.25 G 5.369(.T).15 G .369(he v)-5.369 +F .369(alue gi)-.25 F -.15(ve)-.25 G 2.869(nh).15 G .369 +(ere may be scaled by post\214xing)-2.869 F F3(k)2.869 E F2 .37 +(for 1024X,)2.87 F F3(m)2.87 E F2 .37(for \(1024^2\)X, and)2.87 F F3(g) +117 562.2 Q F2(for \(1024^3\)X.)2.5 E(In 1995, the root serv)5 E +(ers all use)-.15 E F3(limit datasize 64m)2.5 E F2(.)A F0 2.5 +(6.1.13. Zone)102 598.2 R -.74(Tr)2.5 G(ansfer Restrictions).74 E F2 +1.417(It may be the case that your or)142 614.4 R -.05(ga)-.18 G 1.417 +(nization does not wish to gi).05 F 1.717 -.15(ve c)-.25 H 1.416 +(omplete lists of your).15 F .71(hosts to an)117 626.4 R .71 +(yone on the Internet who can reach your name serv)-.15 F 3.211 +(ers. While)-.15 F .711(it is still possible for)3.211 F .096 +(people to `)117 638.4 R(`iterate')-.74 E 2.596('t)-.74 G .096 +(hrough your address range, looking for)-2.596 F F3(PTR)2.596 E F2 .095 +(records, and b)2.596 F .095(uild a list of your)-.2 F 1.074 +(hosts the `)117 650.4 R(`slo)-.74 E(w')-.25 E 3.574('w)-.74 G(ay)-3.674 +E 3.574(,i)-.65 G 3.574(ti)-3.574 G 3.574(ss)-3.574 G 1.074 +(till considered reasonable to restrict your e)-3.574 F 1.075 +(xport of zones via the)-.15 F .784(zone transfer protocol.)117 662.4 R +2.384 -.8(To l)5.784 H .784 +(imit the list of neighbors who can transfer zones from your serv).8 F +(er)-.15 E(,)-.4 E(use the)117 674.4 Q F3(xfrnets)2.5 E F2(directi)2.5 E +-.15(ve)-.25 G(.).15 E .067(This directi)142 690.6 R .367 -.15(ve h)-.25 +H .067(as the same syntax as).15 F F3(forwar)2.567 E(der)-.37 E(s)-.1 E +F2 -.15(ex)2.567 G .067(cept that you can list netw).15 F .068 +(ork numbers)-.1 F(in addition to host addresses.)117 702.6 Q -.15(Fo)5 +G 2.5(re).15 G(xample, you could add the directi)-2.65 E -.15(ve)-.25 G +EP +%%Page: 9 9 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF(Name Ser)72 60 Q -.1(ve)-.1 G 2.5(rO).1 G +(perations Guide f)-2.5 E(or)-.25 E/F1 9/Times-Bold@0 SF 211.564 +(BIND SMM)2.5 F F0(:10-9)A/F2 10/Times-Italic@0 SF(xfrnets 16.0.0.0)167 +96 Q/F3 10/Times-Roman@0 SF .672(if you w)117 112.2 R .671 +(anted to permit only hosts on Class A netw)-.1 F .671 +(ork number 16 to transfer zones from your)-.1 F(serv)117 124.2 Q(er) +-.15 E 7.06(.T)-.55 G 2.061 +(his is not nearly granular enough, and a future v)-7.06 F 2.061 +(ersion of)-.15 F/F4 9/Times-Roman@0 SF(BIND)4.561 E F3 2.061 +(will permit such)4.561 F .259 +(access-control to be speci\214ed on a per)117 136.2 R .259 +(-host basis rather than the current per)-.2 F .258(-net basis.)-.2 F +.258(Note that)5.258 F 1.085(while addresses without e)117 148.2 R 1.086 +(xplicit masks are assumed by this directi)-.15 F 1.386 -.15(ve t)-.25 H +3.586(ob).15 G 3.586(en)-3.586 G(etw)-3.586 E 1.086(orks, you can)-.1 F +.611(specify a mask which is as granular as you wish, perhaps including all bits of the address such) +117 160.2 R(that only a single host is gi)117 172.2 Q -.15(ve)-.25 G 2.5 +(nt).15 G(ransfer permission.)-2.5 E -.15(Fo)5 G 2.5(re).15 G +(xample, consider)-2.65 E F2(xfrnets 16.1.0.2&255.255.255.255)167 188.4 +Q F3 1.588(which w)117 204.6 R 1.588(ould permit only host)-.1 F F2 +(16.1.0.2)4.088 E F3 1.588(to transfer zones from you.)4.088 F 1.588 +(Note that no spaces are)6.588 F(allo)117 216.6 Q(wed surrounding the `) +-.25 E(`)-.74 E F2(&)A F3 1.48 -.74('' c)D +(haracter that introduces a netmask.).74 E(The)142 232.8 Q F2(xfrnets) +2.545 E F3(directi)2.545 E .345 -.15(ve m)-.25 H .044(ay also be gi).15 +F -.15(ve)-.25 G 2.544(na).15 G(s)-2.544 E F2(tcplist)2.544 E F3 .044 +(for compatibility with interim releases of)2.544 F F4(BIND)117 244.8 Q +F3(4.9.)2.5 E F0 2.5(6.1.14. Sorting)102 280.8 R(Addr)2.5 E(esses)-.18 E +F3 .711(If there are multiple addresses a)142 297 R -.25(va)-.2 G .712 +(ilable for a name serv).25 F .712(er which)-.15 F F4(BIND)3.212 E F3 +-.1(wa)3.212 G .712(nts to contact,).1 F F4(BIND)117 309 Q F3 .052 +(will try the ones it belie)2.553 F -.15(ve)-.25 G 2.552(sa).15 G .052 +(re `)-2.552 F(`closest')-.74 E 2.552<278c>-.74 G 2.552(rst. `)-2.552 F +(`Closeness')-.74 E 2.552('i)-.74 G 2.552(sd)-2.552 G .052 +(e\214ned in terms of similar)-2.552 F(-)-.2 E .732 +(ity-of-address; that is, if one address is on the same)117 321 R F2 +(subnet)3.232 E F3 .732(as some interf)3.232 F .732 +(ace of the local host,)-.1 F .684 +(then that address will be tried \214rst.)117 333 R -.15(Fa)5.684 G .683 +(iling that, an address which is on the same).15 F F2(network)3.183 E F3 +(will)3.183 E .835(be tried \214rst.)117 345 R -.15(Fa)5.835 G .835 +(iling that, the).15 F 3.335(yw)-.15 G .835(ill be tried in a more-or) +-3.335 F .835(-less random order unless the)-.2 F F2(sortlist)3.335 E F3 +(directi)117 357 Q 1.157 -.15(ve w)-.25 H .857(as gi).05 F -.15(ve)-.25 +G 3.357(ni).15 G 3.357(nt)-3.357 G(he)-3.357 E F2(named.boot)3.357 E F3 +(\214le.)3.357 E F2(sortlist)5.856 E F3 .856(has a syntax similar to) +3.356 F F2(forwar)3.356 E(der)-.37 E(s)-.1 E F3(,)A F2(xfrnets)3.356 E +F3(,)A(and)117 369 Q F2(bo)3.576 E(gusns)-.1 E F3 3.576<8a79>3.576 G +1.076(ou gi)-3.576 F 1.376 -.15(ve i)-.25 H 3.576(tal).15 G 1.076 +(ist of dotted-quad netw)-3.576 F 1.077(orks and it uses these to `)-.1 +F(`prefer')-.74 E 3.577('s)-.74 G(ome)-3.577 E .319(remote name serv)117 +381 R .319(er addresses o)-.15 F -.15(ve)-.15 G 2.819(ro).15 G 2.819 +(thers. If)-2.819 F .319(no e)2.819 F .319(xplicit mask is pro)-.15 F +.318(vided with each element of)-.15 F(a)117 393 Q F2(sortlist)2.5 E F3 +2.5(,o)C(ne will be inferred based on the high order address bits.)-2.5 +E .28(If you are on a Class C net which has a Class B net between you and the rest of the Inter) +142 409.2 R(-)-.2 E .897(net, you could try to impro)117 421.2 R 1.197 +-.15(ve t)-.15 H .897(he name serv).15 F(er')-.15 E 3.397(sl)-.55 G .897 +(uck in getting answers by listing the Class B)-3.397 F(netw)117 433.2 Q +(ork')-.1 E 3.12(sn)-.55 G .62(umber in a)-3.12 F F2(sortlist)3.12 E F3 +(directi)3.121 E -.15(ve)-.25 G 5.621(.T).15 G .621(his should ha)-5.621 +F .921 -.15(ve t)-.2 H .621(he ef).15 F .621(fect of trying `)-.25 F +(`closer')-.74 E 3.121('s)-.74 G(erv)-3.121 E(ers)-.15 E +(before the more `)117 445.2 Q(`distant')-.74 E 2.5('o)-.74 G 2.5 +(nes. Note)-2.5 F(that this beha)2.5 E(viour is ne)-.2 E 2.5(wa)-.25 G +2.5(so)-2.5 G(f)-2.5 E F4(BIND 4.9)2.5 E F3(.)A .195 +(The other and older ef)142 461.4 R .194(fect of the)-.25 F F2(sortlist) +2.694 E F3(directi)2.694 E .494 -.15(ve i)-.25 H 2.694(st).15 G 2.694 +(oc)-2.694 G(ause)-2.694 E F4(BIND)2.694 E F3 .194(to sort the)2.694 F +F2(A)2.694 E F3 .194(records in)2.694 F(an)117 473.4 Q 2.564(yr)-.15 G +.065(esponse it generates, so as to put those which appear on the)-2.564 +F F2(sortlist)2.565 E F3 .065(earlier than those which)2.565 F .538 +(do not.)117 485.4 R .538 +(This is not as helpful as you might think, since man)5.538 F 3.038(yc) +-.15 G .537(lients will reorder the)-3.038 F F2(A)3.037 E F3(records) +3.037 E .345(either at random or using)117 497.4 R F4(LIFO)2.845 E F3 +2.845(;a)C .345(lso, consider the f)-2.845 F .345(act that the serv)-.1 +F .345(er w)-.15 F(on')-.1 E 2.845(tb)-.18 G 2.845(ea)-2.845 G .346 +(ble to guess the)-2.845 F(client')117 509.4 Q 2.752(sn)-.55 G(etw) +-2.752 E .252(ork topology)-.1 F 2.752(,a)-.65 G .251 +(nd so will not be able to accurately order for `)-2.752 F(`closeness') +-.74 E 2.751('t)-.74 G 2.751(oa)-2.751 G .251(ll pos-)-2.751 F +(sible clients.)117 521.4 Q(Doing the ordering in the resolv)5 E +(er is clearly superior)-.15 E(.)-.55 E .83 +(In actual practice, this directi)142 537.6 R 1.131 -.15(ve i)-.25 H +3.331(su).15 G .831 +(sed only rarely since it hardwires information which)-3.331 F .631 +(changes rapidly; a netw)117 549.6 R .631(ork which is `)-.1 F(`close') +-.74 E 3.131('t)-.74 G .631(oday may be `)-3.131 F(`distant')-.74 E +3.131('n)-.74 G -.15(ex)-3.131 G 3.131(tm).15 G 3.131(onth. Since)-3.131 +F F4(BIND)3.131 E F3 -.2(bu)117 561.6 S .4 +(ilds up a cache of the remote name serv).2 F .401 +(ers' response times, it will quickly con)-.15 F -.15(ve)-.4 G -.18(rg) +.15 G 2.901(eo).18 G 2.901(n`)-2.901 G(`rea-)-3.641 E(sonable')117 573.6 +Q 2.904('b)-.74 G(eha)-2.904 E(viour)-.2 E 2.904(,w)-.4 G .404 +(hich isn')-2.904 F 2.904(tt)-.18 G .404(he same as `)-2.904 F +(`optimal')-.74 E 2.904('b)-.74 G .404(ut it')-3.104 F 2.904(sc)-.55 G +.404(lose enough.)-2.904 F .403(Future directions)5.403 F(for)117 585.6 +Q F4(BIND)3.212 E F3 .712 +(include choosing addresses based on local interf)3.212 F .713 +(ace metrics \(on hosts that ha)-.1 F 1.013 -.15(ve m)-.2 H(ore).15 E +.701(than one\) and perhaps on routing table information.)117 597.6 R +2.301 -.8(We d)5.701 H 3.201(on).8 G .7(ot intend to solv)-3.201 F 3.2 +(et)-.15 G .7(he generalized)-3.2 F -.74(``)117 609.6 S .806 +(multihomed host').74 F 3.306('p)-.74 G .806(roblem, b)-3.306 F .806 +(ut we should be able to do a little better than we')-.2 F .807 +(re doing no)-.5 F -.65(w.)-.25 G(Lik)117 621.6 Q -.25(ew)-.1 G 1.7 +(ise, we hope to see a higher le).25 F -.15(ve)-.25 G 4.199(lr).15 G +(esolv)-4.199 E 1.699(er library that sorts responses using topology) +-.15 F(information that only e)117 633.6 Q(xists on the client')-.15 E +2.5(sh)-.55 G(ost.)-2.5 E F0 2.5(6.1.15. Bogus)102 669.6 R(Name Ser)2.5 +E -.1(ve)-.1 G(rs).1 E F3 1.545 +(It happens occasionally that some remote name serv)142 685.8 R 1.545 +(er goes `)-.15 F(`bad')-.74 E 4.046('. Y)-.74 F 1.546(ou can tell your) +-1.1 F .515(name serv)117 697.8 R .515 +(er to refuse to listen to or ask questions of certain other name serv) +-.15 F .514(ers by listing them)-.15 F .135(in a)117 709.8 R F2(bo)2.635 +E(gusns)-.1 E F3(directi)2.635 E .435 -.15(ve i)-.25 H 2.635(ny).15 G +(our)-2.635 E F2(named.boot)2.635 E F3 2.635(\214le. Its)2.635 F .135 +(syntax is the same as)2.635 F F2(forwar)2.635 E(der)-.37 E(s)-.1 E F3 +(,)A F2(xfrnets)2.635 E F3 2.635(,a)C(nd)-2.635 E F2(sortlist)117 721.8 +Q F3 2.943<8a79>2.943 G .443(ou just gi)-2.943 F .743 -.15(ve i)-.25 H +2.943(tal).15 G .442(ist of dotted-quad Internet addresses.)-2.943 F +.442(Note that zones dele)5.442 F -.05(ga)-.15 G .442(ted to).05 F EP +%%Page: 10 10 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF 203.87(SMM:10-10 Name)72 60 R(Ser)2.5 E -.1(ve) +-.1 G 2.5(rO).1 G(perations Guide f)-2.5 E(or)-.25 E/F1 9/Times-Bold@0 +SF(BIND)2.5 E/F2 10/Times-Roman@0 SF .033(such serv)117 96 R .034 +(ers will not be reachable from clients of your serv)-.15 F .034 +(ers; thus you should use this directi)-.15 F -.15(ve)-.25 G +(sparingly or not at all.)117 108 Q F0 2.5(6.1.16. Segmented)102 144 R +(Boot Files)2.5 E F2 2.958 +(If you are secondary for a lot of zones, you may \214nd it con)142 +160.2 R -.15(ve)-.4 G 2.957(nient to split your).15 F/F3 10 +/Times-Italic@0 SF(named.boot)117 172.2 Q F2 1.424 +(\214le into a static portion which hardly e)3.923 F -.15(ve)-.25 G +3.924(rc).15 G 1.424(hanges \(directi)-3.924 F -.15(ve)-.25 G 3.924(ss) +.15 G 1.424(uch as)-3.924 F F3(dir)3.924 E(ectory)-.37 E F2(,)A F3 +(sortlist)117 184.2 Q F2(,)A F3(xfrnets)3.492 E F2(and)3.492 E F3(cac) +3.492 E(he)-.15 E F2 .991 +(could go here\), and dynamic portions that change frequently \(all of) +3.492 F(your)117 196.2 Q F3(primary)3.458 E F2(directi)3.458 E -.15(ve) +-.25 G 3.458(sm).15 G .958(ight go in one \214le, and all of your)-3.458 +F F3(secondary)3.458 E F2(directi)3.458 E -.15(ve)-.25 G 3.458(sm).15 G +.959(ight go in)-3.458 F .024(another \214le \212 and either or both of these might be fetched automatically from some neighbor so) +117 208.2 R 1.153(that the)117 220.2 R 3.653(yc)-.15 G 1.153 +(an change your list of secondary zones without requiring your acti) +-3.653 F 1.454 -.15(ve i)-.25 H(nterv).15 E(ention\).)-.15 E -1.1(Yo)117 +232.2 S 2.66(uc)1.1 G .16(an accomplish this via the)-2.66 F F3(include) +2.66 E F2(directi)2.66 E -.15(ve)-.25 G 2.66(,w).15 G .16(hich tak)-2.66 +F .16(es just a single \214le name as its ar)-.1 F(gu-)-.18 E 3.772 +(ment. No)117 244.2 R 1.272(quotes are needed around the \214le name.) +3.772 F 1.273(The \214le name will be e)6.273 F -.25(va)-.25 G 1.273 +(luated after the).25 F .169(name serv)117 256.2 R .169 +(er has changed its w)-.15 F .169 +(orking directory to that speci\214ed in the)-.1 F F3(dir)2.668 E +(ectory)-.37 E F2(directi)2.668 E -.15(ve)-.25 G 2.668(,s).15 G 2.668 +(oy)-2.668 G(ou)-2.668 E(can use relati)117 268.2 Q .3 -.15(ve p)-.25 H +(athnames if your system supports them.).15 E F0 2.5(6.2. Resolv)87 +304.2 R(er Con\214guration)-.1 E F2 .467(The con\214guration \214le')127 +320.4 R 2.967(sn)-.55 G .467(ame is)-2.967 F F3(/etc/r)2.968 E(esolv) +-.37 E(.conf)-.74 E F2 5.468(.T)C .468 +(his \214le designates the name serv)-5.468 F .468(ers on the)-.15 F +(netw)102 332.4 Q .358(ork that should be sent queries.)-.1 F .358 +(The resolv)5.358 F .358(er will try to contact a name serv)-.15 F .357 +(er on the localhost)-.15 F .05 +(if it cannot \214nd its con\214guration \214le.)102 344.4 R -1.1(Yo) +5.05 G 2.55(us)1.1 G .05(hould install the con\214guration \214le on e) +-2.55 F -.15(ve)-.25 G .05(ry host an).15 F(yw)-.15 E(ay)-.1 E(,)-.65 E +.461(since this is the only recommended w)102 356.4 R .461 +(ay to specify a system-le)-.1 F -.15(ve)-.25 G 2.96(ld).15 G(ef)-2.96 E +.46(ault domain, and you can still)-.1 F 1.017(list the local host')102 +368.4 R 3.517(sa)-.55 G 1.018(ddress if it runs a name serv)-3.517 F(er) +-.15 E 6.018(.I)-.55 G 3.518(ti)-6.018 G 3.518(sc)-3.518 G 1.018 +(onsidered reasonable to create this \214le)-3.518 F -2.15 -.25(ev e)102 +380.4 T 2.786(ni).25 G 2.786(fy)-2.786 G .286(ou run a local serv)-2.786 +F(er)-.15 E 2.785(,s)-.4 G .285 +(ince its contents will be cached by each client of the resolv)-2.785 F +.285(er library)-.15 F(when the client mak)102 392.4 Q +(es its \214rst call to a resolv)-.1 E(er routine.)-.15 E(The)127 408.6 +Q F3 -.37(re)2.5 G(solv).37 E(.conf)-.74 E F2(\214le contains directi) +2.5 E -.15(ve)-.25 G(s, one per line, of the follo).15 E(wing forms:) +-.25 E 2.5(;c)152 424.8 S(omment)-2.5 E 2.5(#a)152 436.8 S +(nother comment)-2.5 E(domain)152 448.8 Q F3(local-domain)2.5 E F2 +(search)152 460.8 Q F3(sear)2.5 E -.15(ch)-.37 G(-list).15 E F2 +(nameserv)152 472.8 Q(er)-.15 E F3(server)2.5 E(-addr)-.2 E(ess)-.37 E +F2(sortlist)152 484.8 Q F3(sort-list)2.5 E F2(options)152 496.8 Q F3 +(option-list)2.5 E F2 .053(Exactly one of the)102 513 R F3(domain)2.553 +E F2(or)2.554 E F3(sear)2.554 E -.15(ch)-.37 G F2(directi)2.704 E -.15 +(ve)-.25 G 2.554(ss).15 G .054(hould be gi)-2.554 F -.15(ve)-.25 G .054 +(n, e).15 F .054(xactly once.)-.15 F .054(If the)5.054 F F3(sear)2.554 E +-.15(ch)-.37 G F2(directi)2.704 E -.15(ve)-.25 G .76(is gi)102 525 R +-.15(ve)-.25 G .76(n, the \214rst item in the gi).15 F -.15(ve)-.25 G(n) +.15 E F3(sear)3.26 E -.15(ch)-.37 G(-list).15 E F2 .76(will o)3.26 F +-.15(ve)-.15 G .76(rride an).15 F 3.26(yp)-.15 G(re)-3.26 E +(viously-speci\214ed)-.25 E F3(local-domain)3.26 E F2(.)A(The)102 537 Q +F3(nameserver)3.17 E F2(directi)3.17 E .97 -.15(ve m)-.25 H .67 +(ay be gi).15 F -.15(ve)-.25 G 3.17(nu).15 G 3.17(pt)-3.17 G 3.17(ot) +-3.17 G .67(hree times; additional)-3.17 F F3(nameserver)3.17 E F2 +(directi)3.17 E -.15(ve)-.25 G 3.17(sw).15 G .67(ill be)-3.17 F 2.967 +(ignored. Comments)102 549 R .467(may be gi)2.967 F -.15(ve)-.25 G 2.966 +(nb).15 G 2.966(ys)-2.966 G .466(tarting a line with a `)-2.966 F(`)-.74 +E F0(;)1.666 E F2 1.946 -.74('' o)1.666 H 2.966(r`).74 G(`)-3.706 E F0 +(#)1.666 E F2 -.74('')1.666 G 2.966(;n).74 G .466 +(ote that comments were)-2.966 F .797(not permitted in v)102 561 R .797 +(ersions of the resolv)-.15 F .797 +(er earlier than the one included with)-.15 F/F4 9/Times-Roman@0 SF .798 +(BIND 4.9)3.298 F F2 3.298<8a73>3.298 G 3.298(oi)-3.298 G 3.298(fy) +-3.298 G(our)-3.298 E -.15(ve)102 573 S(ndor').15 E 2.5(sr)-.55 G(esolv) +-2.5 E(er supports comments, you kno)-.15 E 2.5(wt)-.25 G(he)-2.5 E 2.5 +(ya)-.15 G(re really on the ball.)-2.5 E(The)127 589.2 Q F3 +(local-domain)3.499 E F2 .999(will be appended to an)3.499 F 3.498(yq) +-.15 G .998(uery-name that does not contain a `)-3.498 F(`)-.74 E F0(.) +1.666 E F2 -.74('')1.666 G(.).74 E F3(local-)5.998 E(domain)102 601.2 Q +F2 .628(can be o)3.128 F -.15(ve)-.15 G .629(rridden on a per).15 F .629 +(-process basis by setting the)-.2 F F4(LOCALDOMAIN)3.129 E F2(en)3.129 +E .629(vironment v)-.4 F(ari-)-.25 E 2.5(able. Note)102 613.2 R(that)2.5 +E F3(local-domain)2.5 E F2 +(processing can be disabled by setting an option in the resolv)2.5 E(er) +-.15 E(.)-.55 E(The)127 629.4 Q F3(sear)2.79 E -.15(ch)-.37 G(-list).15 +E F2 .29(is a list of domains which are tried, in order)2.79 F 2.79(,a) +-.4 G 2.79(sq)-2.79 G .29(ualifying domains for query-)-2.79 F .688 +(names which do not contain a `)102 641.4 R(`)-.74 E F0(.)1.666 E F2 +-.74('')1.666 G 5.688(.N).74 G .688(ote that)-5.688 F F3(sear)3.188 E +-.15(ch)-.37 G(-list).15 E F2 .688 +(processing can be disabled by setting an)3.188 F .14 +(option in the resolv)102 653.4 R(er)-.15 E 5.14(.A)-.55 G .14 +(lso note that the en)-5.14 F .139(vironment v)-.4 F .139(ariable `)-.25 +F(`)-.74 E F4(LOCALDOMAIN)A F2 1.619 -.74('' c)D .139(an o).74 F -.15 +(ve)-.15 G .139(rride this).15 F F3(sear)102 665.4 Q -.15(ch)-.37 G +(-list).15 E F2(on a per)2.5 E(-process basis.)-.2 E(The)127 681.6 Q F3 +(server)2.594 E(-addr)-.2 E(ess)-.37 E F2 1.194 -.55('s a)1.666 H .094 +(re aggre).55 F -.05(ga)-.15 G .094(ted and then used as the def).05 F +.094(ault destination of queries gener)-.1 F(-)-.2 E .167 +(ated through the resolv)102 693.6 R(er)-.15 E 5.166(.I)-.55 G 2.666(no) +-5.166 G .166(ther w)-2.666 F .166(ords, this is the w)-.1 F .166 +(ay you tell the resolv)-.1 F .166(er which name serv)-.15 F .166 +(ers it)-.15 F .907(should use.)102 705.6 R .907 +(It is possible for a gi)5.907 F -.15(ve)-.25 G 3.407(nc).15 G .907 +(lient application to o)-3.407 F -.15(ve)-.15 G .908 +(rride this list, and this is often done).15 F 1.499 +(inside the name serv)102 717.6 R 1.498(er \(which is itself a)-.15 F F3 +-.37(re)3.998 G(solver).37 E F2 1.498 +(client\) and in test programs such as)3.998 F F3(nslookup)3.998 E F2(.) +A EP +%%Page: 11 11 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF(Name Ser)72 60 Q -.1(ve)-.1 G 2.5(rO).1 G +(perations Guide f)-2.5 E(or)-.25 E/F1 9/Times-Bold@0 SF 206.564 +(BIND SMM)2.5 F F0(:10-11)A/F2 10/Times-Roman@0 SF .748 +(Note that if you wish to list the local host in your resolv)102 96 R +.749(er con\214guration \214le, you should probably)-.15 F .893(use its primary Internet address rather than a local-host alias such as 127.0.0.1 or 0.0.0.0.) +102 108 R .892(This is)5.892 F .192(due to a b)102 120 R .192 +(ug in the handling of connected)-.2 F/F3 9/Times-Roman@0 SF(SOCK_DGRAM) +2.692 E F2(sock)2.692 E .192(ets in some v)-.1 F .192(ersions of the) +-.15 F/F4 11/Times-Roman@0 SF(BSD)2.692 E F2(net-)2.692 E -.1(wo)102 132 +S 1.32(rking code.).1 F 1.319(If you must use an address-alias, you should prefer 0.0.0.0 \(or simply `) +6.32 F(`0')-.74 E 1.319('\) o)-.74 F -.15(ve)-.15 G(r).15 E .824 +(127.0.0.1, though be w)102 144 R .824 +(arned that depending on the vintage of your)-.1 F F3(BSD)3.325 E F2 +(-deri)A -.15(ve)-.25 G 3.325(dn).15 G(etw)-3.325 E .825(orking code,) +-.1 F .98(both of them are capable of f)102 156 R .98(ailing in their o) +-.1 F .98(wn w)-.25 F 3.48(ays. If)-.1 F .98(your host')3.48 F 3.48(sI) +-.55 G 3.48(Pi)-3.48 G .98(mplementation does not)-3.48 F .35 +(create a short-circuit route between the def)102 168 R .351 +(ault interf)-.1 F .351(ace and the loopback interf)-.1 F .351 +(ace, then you might)-.1 F(also w)102 180 Q +(ant to add a static route \(e)-.1 E(g. in)-.15 E F0(/etc/r)2.5 E +(c.local)-.18 E F2 2.5(\)t)C 2.5(od)-2.5 G 2.5(os)-2.5 G(o:)-2.5 E/F5 10 +/Times-Italic@0 SF -.45(ro)152 196.2 S +(ute add myhost.domain.name localhost 1).45 E F2(The)127 216.6 Q F5 +(sort-list)3.203 E F2 .702(is a list of IP address, netmask pairs. Addresses returned by gethostbyname are) +3.203 F .472(sorted to the order speci\214ed by this list.)102 228.6 R +(An)5.472 E 2.972(ya)-.15 G .473 +(ddresses that do not match the address netmask pair)-2.972 F .346(will be returned after those that do. The netmask is optional and the natural netmask will be used if) +102 240.6 R(not speci\214ed.)102 252.6 Q(The)127 268.8 Q F5(option-list) +3.132 E F2 .633(is a list of options which each o)3.132 F -.15(ve)-.15 G +.633(rride some internal resolv).15 F .633(er v)-.15 F 3.133 +(ariable. Sup-)-.25 F(ported options at this time are:)102 280.8 Q F0 +(deb)102 297 Q(ug)-.2 E F2(sets the)127 309 Q F3(RES_DEB)2.5 E(UG)-.09 E +F2(bit in)2.5 E F0(_r)2.5 E(es.options)-.18 E F2(.)A F0(ndots:)102 325.2 +Q F5(n)A F2 .367(sets the lo)127 337.2 R .367 +(wer threshold \(measured in `)-.25 F .366(`number of dots')-.74 F .366 +('\) on names gi)-.74 F -.15(ve)-.25 G 2.866(nt).15 G(o)-2.866 E F5 -.37 +(re)2.866 G(s_query).37 E F2 .366(\(\) such)B 1.283(that names with more than this number of dots will be tried as absolute names before an) +127 349.2 R(y)-.15 E F5(local-domain)127 361.2 Q F2(or)2.5 E F5(sear)2.5 +E -.15(ch)-.37 G(-list).15 E F2(processing is done.)2.5 E(The def)5 E +(ault for this internal v)-.1 E(ariable is `)-.25 E(`1')-.74 E('.)-.74 E +F0 2.5(6.3. Cache)87 397.2 R(Initialization File)2.5 E 2.5(6.3.1. r)102 +421.2 R(oot.cache)-.18 E F2 .454(The name serv)142 437.4 R .454 +(er needs to kno)-.15 F 2.954(wt)-.25 G .454(he serv)-2.954 F .454 +(ers that are the authoritati)-.15 F .754 -.15(ve n)-.25 H .454 +(ame serv).15 F .454(ers for the)-.15 F 1.56(root domain of the netw)117 +449.4 R 4.06(ork. T)-.1 F 4.06(od)-.8 G 4.06(ot)-4.06 G 1.56(his we ha) +-4.06 F 1.86 -.15(ve t)-.2 H 4.06(op).15 G 1.56(rime the name serv)-4.06 +F(er')-.15 E 4.06(sc)-.55 G 1.56(ache with the)-4.06 F .509 +(addresses of these higher authorities.)117 461.4 R .509 +(The location of this \214le is speci\214ed in the boot \214le.)5.509 F +(This)5.508 E 1.017(\214le uses the Standard Resource Record F)117 473.4 +R 1.018(ormat \(aka. Master\214le F)-.15 F 1.018(ormat\) co)-.15 F -.15 +(ve)-.15 G 1.018(red further on in).15 F(this paper)117 485.4 Q(.)-.55 E +F0 2.5(6.4. Domain)87 521.4 R(Data Files)2.5 E F2 2.276(There are tw)127 +537.6 R 4.776(os)-.1 G 2.275 +(tandard \214les for specifying the data for a domain.)-4.776 F 2.275 +(These are)7.275 F F5(hosts)4.775 E F2(and)4.775 E F5(host.r)102 549.6 Q +-.15(ev)-.37 G F2 6.189(.T).15 G 1.189 +(hese \214les use the Standard Resource Record F)-6.189 F 1.189 +(ormat co)-.15 F -.15(ve)-.15 G 1.19(red later in this paper).15 F 6.19 +(.N)-.55 G(ote)-6.19 E .804(that the \214le names are arbitrary; man)102 +561.6 R 3.304(yn)-.15 G(etw)-3.304 E .804 +(ork administrators prefer to name their zone \214les after)-.1 F .908 +(the domains the)102 573.6 R 3.408(yc)-.15 G .908 +(ontain, especially in the a)-3.408 F -.15(ve)-.2 G .908 +(rage case which is where a gi).15 F -.15(ve)-.25 G 3.408(ns).15 G(erv) +-3.408 E .909(er is primary)-.15 F(and/or secondary for man)102 585.6 Q +2.5(yd)-.15 G(if)-2.5 E(ferent zones.)-.25 E F0 2.5(6.4.1. hosts)102 +609.6 R F2 .495 +(This \214le contains all the data about the machines in this zone.)142 +625.8 R .494(The location of this \214le is)5.495 F +(speci\214ed in the boot \214le.)117 637.8 Q F0 2.5(6.4.2. hosts.r)102 +661.8 R -.15(ev)-.18 G F2 1.076(This \214le speci\214es the IN-ADDR)142 +678 R 1.666(.A)1.666 G(RP)-1.666 E 3.576(Ad)-.92 G 3.576(omain. This) +-3.576 F 1.077(is a special domain for allo)3.577 F(wing)-.25 E .252 +(address to name mapping.)117 690 R .251 +(As internet host addresses do not f)5.252 F .251 +(all within domain boundaries, this)-.1 F .624(special domain w)117 702 +R .624(as formed to allo)-.1 F 3.124(wi)-.25 G -1.85 -.4(nv e)-3.124 H +.624(rse mapping.).4 F .624(The IN-ADDR)5.624 F 1.666(.A)1.666 G(RP) +-1.666 E 3.124(Ad)-.92 G .624(omain has four)-3.124 F 1.694(labels preceding it. These labels correspond to the 4 octets of an Internet address.) +117 714 R 1.694(All four)6.694 F EP +%%Page: 12 12 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF 203.87(SMM:10-12 Name)72 60 R(Ser)2.5 E -.1(ve) +-.1 G 2.5(rO).1 G(perations Guide f)-2.5 E(or)-.25 E/F1 9/Times-Bold@0 +SF(BIND)2.5 E/F2 10/Times-Roman@0 SF 2.1(octets must be speci\214ed e) +117 96 R -.15(ve)-.25 G 4.601(ni).15 G 4.601(fa)-4.601 G 4.601(no)-4.601 +G 2.101(ctet contains zero.)-4.601 F 2.101 +(The Internet address 128.32.0.4 is)7.101 F .079 +(located in the domain 4)117 108 R 1.666(.0.3)1.666 G 1.666(2.1)-1.666 G +-.834(28 . IN-ADDR . ARP)-1.666 F 2.578(A. This)-.92 F(re)2.578 E -.15 +(ve)-.25 G .078(rsal of the address is a).15 F(wkw)-.15 E(ard)-.1 E +(to read b)117 120 Q(ut allo)-.2 E +(ws for the natural grouping of hosts in a netw)-.25 E(ork.)-.1 E F0 2.5 +(6.4.3. named.local)102 144 R F2 .55(This \214le speci\214es the)142 +160.2 R/F3 10/Times-Italic@0 SF(PTR)3.05 E F2 .55 +(record for the local loopback interf)3.05 F .55(ace, better kno)-.1 F +.55(wn as)-.25 F F3(local-)3.05 E(host)117 172.2 Q F2 2.543(,w)C .043 +(hose netw)-2.543 F .043(ork address is 127.0.0.1.)-.1 F .043 +(The location of this \214le is speci\214ed in the boot \214le.)5.043 F +(It)5.042 E .346(is vitally important to the proper operation of e)117 +184.2 R -.15(ve)-.25 G .346(ry name serv).15 F .346 +(er that the 127.0.0.1 address ha)-.15 F -.15(ve)-.2 G(a)117 196.2 Q F3 +(PTR)3.169 E F2 .668(record pointing back to the name `)3.169 F(`)-.74 E +F0(localhost.)A F2 -.74('')C 5.668(.T).74 G .668(he name of this)-5.668 +F F3(PTR)3.168 E F2 .668(record is al)3.168 F -.1(wa)-.1 G(ys).1 E -.74 +(``)117 208.2 S F0(1.0.0.127.).74 E F1(IN-ADDR.ARP)A(A)-.666 E F2 -.74 +('')C 5.853(.T).74 G .854(his is necessary if you w)-5.853 F .854 +(ant your users to be able to use host-)-.1 F .015 +(name-authentication \()117 220.2 R F3(hosts.equiv)A F2(or)2.515 E F3 +(~/.rhosts)2.515 E F2 2.515(\)o)C 2.515(nt)-2.515 G .015(he name `) +-2.515 F(`)-.74 E F0(localhost)A F2 -.74('')C 5.015(.A).74 G 2.515(si) +-5.015 G .015(mplied by this)-2.515 F F3(PTR)2.515 E F2 1.418 +(record, there should be a `)117 232.2 R(`)-.74 E F0(localhost.)A F3(my) +A(.dom.ain)-.55 E F2 -.74('')C F3(A)4.658 E F2 1.419 +(record \(with address 127.0.0.1\) in e)3.918 F -.15(ve)-.25 G(ry).15 E +.492(domain that contains hosts.)117 244.2 R -.74(``)5.492 G F0 +(localhost.).74 E F2 1.972 -.74('' w)D .492 +(ill lose its trailing dot when).74 F F0(1.0.0.127.in-addr)2.991 E(.ar) +-1 E(pa)-.1 E F2 .451(is queried for; then, the DEFN)117 256.2 R .451 +(AMES and/or DNSRCH resolv)-.35 F .451(er options will cause `)-.15 F(`) +-.74 E F0(localhost)A F2 -.74('')C .518(to be e)117 268.2 R -.25(va)-.25 +G .517(luated as a host name in the local domain, and that means the top domains \(or ideally) +.25 F(,)-.65 E -2.15 -.25(ev e)117 280.2 T(ry domain\) in your resolv) +.25 E(er')-.15 E 2.5(ss)-.55 G(earch path had better ha)-2.5 E .3 -.15 +(ve s)-.2 H(omething by that name.).15 E F0 2.5(6.5. Standard)87 304.2 R +(Resour)2.5 E(ce Record F)-.18 E(ormat)-.25 E F2 .36 +(The records in the name serv)127 320.4 R .361 +(er data \214les are called resource records.)-.15 F .361 +(The Standard Resource)5.361 F 1.96(Record F)102 332.4 R 1.96 +(ormat \(RR\) is speci\214ed in RFC1035.)-.15 F 1.959(The follo)6.959 F +1.959(wing is a general description of these)-.25 F(records:)102 344.4 Q +F3 12.5({name} {ttl})102 360.6 R(addr)16.6 E 10.82(-class Recor)-.2 F +2.5(dT)-.37 G 13.92(ype Recor)-3.24 F 2.5(dS)-.37 G(peci\214c data)-2.5 +E F2 1.24(Resource records ha)102 376.8 R 1.54 -.15(ve a s)-.2 H 1.24 +(tandard format sho).15 F 1.241(wn abo)-.25 F -.15(ve)-.15 G 6.241(.T) +.15 G 1.241(he \214rst \214eld is al)-6.241 F -.1(wa)-.1 G 1.241 +(ys the name of the).1 F .771(domain record and it must al)102 388.8 R +-.1(wa)-.1 G .771(ys start in column 1.).1 F -.15(Fo)5.771 G 3.271(ra) +.15 G .771(ll RR')-3.271 F 3.271(so)-.55 G .771 +(ther than the \214rst in a \214le, the)-3.271 F .127 +(name may be left blank; in that case it tak)102 400.8 R .128 +(es on the name of the pre)-.1 F .128(vious RR.)-.25 F .128 +(The second \214eld is an)5.128 F .02(optional time to li)102 412.8 R +.32 -.15(ve \214)-.25 H 2.52(eld. This).15 F .02(speci\214es ho)2.52 F +2.52(wl)-.25 G .019(ong this data will be stored in the data base.)-2.52 +F .019(By lea)5.019 F(v-)-.2 E .275(ing this \214eld blank the def)102 +424.8 R .275(ault time to li)-.1 F .576 -.15(ve i)-.25 H 2.776(ss).15 G +.276(peci\214ed in the)-2.776 F F3 .276(Start Of A)2.776 F(uthority)-.2 +E F2 .276(resource record \(see)2.776 F(belo)102 436.8 Q 3.466(w\). The) +-.25 F .966(third \214eld is the address class; currently)3.466 F 3.466 +(,o)-.65 G .965(nly one class is supported:)-3.466 F F3(IN)3.465 E F2 +.965(for internet)3.465 F .322 +(addresses and other internet information.)102 448.8 R .322 +(Limited support is included for the)5.322 F F3(HS)2.822 E F2 .322 +(class, which is for)2.822 F 1.322(MIT/Athena `)102 460.8 R(`Hesiod') +-.74 E 3.822('i)-.74 G 3.822(nformation. The)-3.822 F 1.321 +(fourth \214eld states the type of the resource record.)3.822 F(The) +6.321 E 1.08(\214elds after that are dependent on the type of the RR.) +102 472.8 R 1.08(Case is preserv)6.08 F 1.08 +(ed in names and data \214elds)-.15 F .843 +(when loaded into the name serv)102 484.8 R(er)-.15 E 5.843(.A)-.55 G +.843(ll comparisons and lookups in the name serv)-5.843 F .843 +(er data base are)-.15 F(case insensiti)102 496.8 Q -.15(ve)-.25 G(.).15 +E F0(The f)102 520.8 Q(ollo)-.25 E(wing characters ha)-.1 E .2 -.1(ve s) +-.25 H(pecial meanings:).1 E F2 -.74(``)102 537 S F0(.).74 E F2 9.64 +-.74('' A)D +(free standing dot in the name \214eld refers to the root domain.)3.24 E +-.74(``)102 553.2 S(@').74 E 3.95('A)-.74 G +(free standing @ in the name \214eld denotes the current origin.)-1.45 E +-.74(``)102 569.4 S(\\X').74 E 3.16('W)-.74 G 1.476(here X is an)-3.16 F +3.977(yc)-.15 G 1.477(haracter other than a digit \(0-9\), quotes that character so that its special) +-3.977 F(meaning does not apply)127 581.4 Q 5(.F)-.65 G(or e)-5.15 E +(xample, `)-.15 E(`\\.)-.74 E 1.48 -.74('' c)-.7 H +(an be used to place a dot character in a label.).74 E -.74(``)102 597.6 +S(\\DDD').74 E(')-.74 E .164(Where each D is a digit, is the octet corresponding to the decimal number described by DDD.) +127 609.6 R(The resulting octet is assumed to be te)127 621.6 Q +(xt and is not check)-.15 E(ed for special meaning.)-.1 E -.74(``)102 +637.8 S 2.5(\(\)).74 G 2.98 -.74('' P)-2.5 H .277 +(arentheses are used to group data that crosses a line.).59 F .278 +(In ef)5.278 F .278(fect, line terminations are not rec-)-.25 F .99 +(ognized within parentheses.)127 649.8 R .99 +(\(At present, this notation only w)5.99 F .99(orks for SO)-.1 F 3.49 +(AR)-.35 G(R')-3.49 E 3.49(sa)-.55 G .99(nd is not)-3.49 F(optional.\)) +127 661.8 Q -.74(``)102 678 S(;').74 E 10.38('S)-.74 G 1.416 +(emicolon starts a comment; the remainder of the line is ignored.)-10.38 +F 1.416(Note that a completely)6.416 F +(blank line is also considered a comment, and ignored.)127 690 Q EP +%%Page: 13 13 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF(Name Ser)72 60 Q -.1(ve)-.1 G 2.5(rO).1 G +(perations Guide f)-2.5 E(or)-.25 E/F1 9/Times-Bold@0 SF 206.564 +(BIND SMM)2.5 F F0(:10-13)A/F2 10/Times-Roman@0 SF -.74(``)102 96 S(*') +.74 E 8.16('A)-.74 G 3.193(na)-8.16 G .693 +(sterisk signi\214es wildcarding.)-3.193 F .692 +(Note that this is just another data character whose special)5.693 F +1.677(meaning comes about only during internal name serv)127 108 R 1.677 +(er search operations.)-.15 F -.4(Wi)6.678 G 1.678(ldcarding is).4 F +.642(only meaningful for some RR types \(notably)127 120 R/F3 10 +/Times-Italic@0 SF(MX)3.142 E F2 .642 +(\), and then only in the name \214eld \212 not in)B(the data \214elds.) +127 132 Q(An)127 148.2 Q .343(ywhere a name appears \212 either in the name \214eld or in some data \214eld de\214ned to contain) +-.15 F .386(names \212 the current origin will be appended if the name does not end in a `) +102 160.2 R(`)-.74 E F0(.)1.666 E F2 -.74('')1.666 G 5.386(.T).74 G .385 +(his is useful for)-5.386 F .911(appending the current domain name to the data, such as machine names, b) +102 172.2 R .911(ut may cause problems)-.2 F 1.504(where you do not w) +102 184.2 R 1.504(ant this to happen.)-.1 F 4.003(Ag)6.503 G 1.503 +(ood rule of thumb is that, if the name is not in the)-4.003 F(domain for which you are creating the data \214le, end the name with a `) +102 196.2 Q(`)-.74 E F0(.)A F2 -.74('')C(.).74 E F0 2.5(6.5.1. $INCLUDE) +102 220.2 R F2 .92(An include line be)142 236.4 R .921 +(gins with $INCLUDE, starting in column 1, and is follo)-.15 F .921 +(wed by a \214le)-.25 F 1.086(name, and, optionally)117 248.4 R 3.586 +(,b)-.65 G 3.586(yan)-3.586 G 1.585 -.25(ew t)-3.586 H 1.085 +(emporary $ORIGIN to be used while reading this \214le.).25 F(This)6.085 +E .454(feature is particularly useful for separating dif)117 260.4 R +.454(ferent types of data into multiple \214les.)-.25 F .455(An e)5.455 +F(xam-)-.15 E(ple w)117 272.4 Q(ould be:)-.1 E +($INCLUDE /usr/local/adm/named/data/mail-e)167 288.6 Q(xchanges)-.15 E +2.076(The line w)117 304.8 R 2.076 +(ould be interpreted as a request to load the \214le)-.1 F F3 +(/usr/local/adm/named/data/mail-)4.575 E -.2(ex)117 316.8 S -.15(ch).2 G +(ang).15 E(es)-.1 E F2 5.278(.T)C .279 +(he $INCLUDE command does not cause data to be loaded into a dif)-5.278 +F .279(ferent zone or)-.25 F 1.111(tree. This is simply a w)117 328.8 R +1.111(ay to allo)-.1 F 3.611(wd)-.25 G 1.111(ata for a gi)-3.611 F -.15 +(ve)-.25 G 3.611(np).15 G 1.111(rimary zone to be or)-3.611 F -.05(ga) +-.18 G 1.111(nized in separate).05 F 3.467(\214les. Not)117 340.8 R +-2.15 -.25(ev e)3.467 H 3.467(nt).25 G .967(he `)-3.467 F .968 +(`temporary $ORIGIN')-.74 F 3.468('f)-.74 G .968(eature described abo) +-3.468 F 1.268 -.15(ve i)-.15 H 3.468(ss).15 G(uf)-3.468 E .968 +(\214cient to cause your)-.25 F .562(data to branch out into some other zone \212 zone boundaries can only be introduced in the boot) +117 352.8 R(\214le.)117 364.8 Q 2.647(A$)142 381 S .147 +(INCLUDE \214le must ha)-2.647 F .448 -.15(ve a n)-.2 H .148 +(ame on its \214rst RR.).15 F .148 +(That is, the \214rst character of the \214rst)5.148 F 1.316 +(non-comment line must not be a space.)117 393 R 1.316(The current def) +6.316 F 1.315(ault name in the parent \214le)-.1 F F3 1.315(does not) +3.815 F F2(carry into the $INCLUDE \214le.)117 405 Q F0 2.5 +(6.5.2. $ORIGIN)102 429 R F2 .434(The origin is a w)142 445.2 R .434 +(ay of changing the origin in a data \214le.)-.1 F .435 +(The line starts in column 1, and)5.434 F 1.072(is follo)117 457.2 R +1.072(wed by a domain origin.)-.25 F 1.071(This seems lik)6.071 F 3.571 +(ei)-.1 G 3.571(tc)-3.571 G 1.071 +(ould be useful for putting more then one)-3.571 F 1.335 +(zone into a data \214le, b)117 469.2 R 1.335(ut that')-.2 F 3.836(sn) +-.55 G 1.336(ot ho)-3.836 F 3.836(wi)-.25 G 3.836(tw)-3.836 G 3.836 +(orks. The)-3.936 F 1.336(name serv)3.836 F 1.336 +(er fundamentally requires a)-.15 F(gi)117 481.2 Q -.15(ve)-.25 G 3.67 +(nz).15 G 1.17(one to map entirely to some speci\214c \214le.)-3.67 F +-1.1(Yo)6.17 G 3.67(us)1.1 G 1.17(hould therefore be v)-3.67 F 1.17 +(ery careful to use)-.15 F .584 +($ORIGIN only once at the top of a \214le, or)117 493.2 R 3.084(,w)-.4 G +.585(ithin a \214le, to change to a `)-3.084 F(`lo)-.74 E(wer')-.25 E +3.085('d)-.74 G .585(omain in the)-3.085 F 2.5(zone \212)117 505.2 R(ne) +2.5 E -.15(ve)-.25 G 2.5(rt).15 G 2.5(os)-2.5 G +(ome other zone altogether)-2.5 E(.)-.55 E F0 2.5(6.5.3. SO)102 529.2 R +2.5(A-S)-.4 G(tart Of A)-2.5 E(uthority)-.5 E F3 12.5(name {ttl})117 +549.6 R(addr)16.6 E 10.82(-class SO)-.2 F 47.22(AO)-.55 G 73.77(rigin P) +-47.22 F(er)-.8 E(son in c)-.1 E(har)-.15 E -.1(ge)-.37 G F2 60.39(@I) +117 561.6 S 44.79(NS)-60.39 G 43.55 -.35(OA u)-44.79 H(cb).35 E -.25(va) +-.15 G(x).25 E F0(.)A F2(Berk)A(ele)-.1 E(y)-.15 E F0(.)A F2(Edu)A F0(.) +A F2(kjd)15 E F0(.)A F2(ucb)A -.25(va)-.15 G(x).25 E F0(.)A F2(Berk)A +(ele)-.1 E(y)-.15 E F0(.)A F2(Edu)A F0(.)A F2(\()2.5 E 12.5 +(1995122103 ;)241.94 573.6 R(Serial)2.5 E 37.5(10800 ;)241.94 585.6 R +(Refresh)2.5 E 42.5(1800 ;)241.94 597.6 R(Retry)2.5 E 27.5(3600000 ;) +241.94 609.6 R(Expire)2.5 E(259200 \))241.94 621.6 Q 2.5(;M)29.17 G +(inimum)-2.5 E(The)117 642 Q F3 .434(Start of A)2.934 F(uthority)-.2 E +2.934(,S)-.55 G -.55(OA)-2.934 G(,).55 E F2 .434 +(record designates the start of a zone.)2.934 F .434 +(The name is the name of the)5.434 F .787(zone and is often gi)117 654 R +-.15(ve)-.25 G 3.287(na).15 G 3.287(s`)-3.287 G(`@')-4.027 E 3.287('s) +-.74 G .787(ince this is al)-3.287 F -.1(wa)-.1 G .787 +(ys the current $ORIGIN and the SO).1 F 3.288(AR)-.35 G 3.288(Ri)-3.288 +G(s)-3.288 E 1.009 +(usually the \214rst record of the primary zone \214le.)117 666 R 1.008 +(Origin is the name of the host on which this)6.008 F .868 +(data \214le resides \(in other w)117 678 R .868(ords, the)-.1 F F3 .868 +(primary master)3.368 F F2(serv)3.368 E .868(er for this zone.\))-.15 F +.868(Person in char)5.868 F .869(ge is)-.18 F .67 +(the e-mail address for the person responsible for the name serv)117 690 +R(er)-.15 E 3.17(,w)-.4 G .67(ith `)-3.17 F(`@')-.74 E 3.17('c)-.74 G +.67(hanged to a `)-3.17 F(`.)-.74 E -.74('')-.7 G(.).74 E .994 +(The serial number is the v)117 702 R .994 +(ersion number of this data \214le and must be a positi)-.15 F 1.295 +-.15(ve i)-.25 H(nte).15 E(ger)-.15 E 5.995(.T)-.55 G(his)-5.995 E EP +%%Page: 14 14 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF 203.87(SMM:10-14 Name)72 60 R(Ser)2.5 E -.1(ve) +-.1 G 2.5(rO).1 G(perations Guide f)-2.5 E(or)-.25 E/F1 9/Times-Bold@0 +SF(BIND)2.5 E/F2 10/Times-Roman@0 SF .903 +(number must be incremented whene)117 96 R -.15(ve)-.25 G 3.403(rac).15 +G .903(hange is made to the data.)-3.403 F .902(Older serv)5.903 F .902 +(ers permitted)-.15 F 1.5(the use of a phantom `)117 108 R(`.)-.74 E +2.98 -.74('' i)-.7 H 4(nt).74 G 1.5 +(his and other numbers in a zone \214le; the meaning of n.m w)-4 F(as) +-.1 E -.74(``)117 120 S(n000m').74 E 3.755('r)-.74 G 1.254 +(ather than the more intuiti)-3.755 F 1.554 -.15(ve `)-.25 H(`n*1000+m') +-.59 E 3.754('\()-.74 G 1.254(such that 1.234 translated to 1000234) +-3.754 F .28(rather than to 1234\).)117 132 R .281 +(This feature has been deprecated due to its obscurity)5.28 F 2.781(,u) +-.65 G(npredictability)-2.781 E 2.781(,a)-.65 G(nd)-2.781 E 2.104 +(lack of necessity)117 144 R 7.103(.N)-.65 G 2.103(ote that using a `) +-7.103 F(`YYYYMMDDNN')-.74 E 4.603('n)-.74 G 2.103 +(otation you can still mak)-4.603 F 4.603(e1)-.1 G(00)-4.603 E .074 +(changes per day until the year 4294.)117 156 R -1.1(Yo)5.075 G 2.575 +(us)1.1 G .075(hould choose a notation that w)-2.575 F .075 +(orks for you.)-.1 F .075(If you')5.075 F(re)-.5 E 3.092(ac)117 168 S +(le)-3.092 E -.15(ve)-.25 G(r).15 E/F3 10/Times-Italic@0 SF(perl)3.092 E +F2 .592(programmer you could e)3.092 F -.15(ve)-.25 G 3.091(nu).15 G(se) +-3.091 E F3(RCS)3.091 E F2 -.15(ve)3.091 G .591 +(rsion numbers to help generate your zone).15 F .535(serial numbers.)117 +180 R .535(The refresh indicates ho)5.535 F 3.036(wo)-.25 G .536 +(ften, in seconds, the secondary name serv)-3.036 F .536(ers are to)-.15 +F .212(check with the primary name serv)117 192 R .212 +(er to see if an update is needed.)-.15 F .211(The retry indicates ho) +5.212 F 2.711(wl)-.25 G(ong,)-2.711 E .718(in seconds, a secondary serv) +117 204 R .718(er should w)-.15 F .719(ait before retrying a f)-.1 F +.719(ailed zone transfer)-.1 F 5.719(.E)-.55 G .719(xpire is the)-5.719 +F .287(upper limit, in seconds, that a secondary name serv)117 216 R +.287(er is to use the data before it e)-.15 F .286(xpires for lack)-.15 +F .175(of getting a refresh.)117 228 R .175(Minimum is the def)5.175 F +.175(ault number of seconds to be used for the T)-.1 F .175(ime T)-.35 F +2.675(oL)-.8 G -2.15 -.25(iv e)-2.675 H .486(\214eld on resource records which do not specify one in the zone \214le.) +117 240 R .485(It is also an enforced mini-)5.485 F .632(mum on T)117 +252 R .632(ime T)-.35 F 3.132(oL)-.8 G -2.15 -.25(iv e)-3.132 H .632 +(if it is speci\214ed on some resource record \(RR\) in the zone.)3.382 +F .633(There must)5.633 F(be e)117 264 Q(xactly one)-.15 E F3(SO)2.5 E +(A)-.55 E F2(record per zone.)2.5 E F0 2.5(6.5.4. NS)102 288 R 2.5(-N) +2.5 G(ame Ser)-2.5 E -.1(ve)-.1 G(r).1 E F3 12.5({name} {ttl})117 304.2 +R(addr)16.6 E 10.82(-class NS)-.2 F(Name server)16.11 E 2.5(sn)-.1 G +(ame)-2.5 E F2 42.29(IN NS)194.6 316.2 R(ucbarpa)15 E F0(.)1.666 E F2 +(Berk)1.666 E(ele)-.1 E(y)-.15 E F0(.)1.666 E F2(Edu)1.666 E F0(.)A F2 +(The)117 332.4 Q F3 .044(Name Server)2.544 F F2(record,)2.544 E F3(NS) +2.544 E F2 2.544(,l)C .044(ists a name serv)-2.544 F .044 +(er responsible for a gi)-.15 F -.15(ve)-.25 G 2.543(nd).15 G .043 +(omain, creating a)-2.543 F F3(dele-)2.543 E .43(gation point)117 344.4 +R F2 .43(and a)2.93 F F3(subzone)2.93 E F2 5.43(.T)C .431(he \214rst name \214eld speci\214es the zone that is serviced by the name) +-5.43 F(serv)117 356.4 Q(er speci\214ed by the second name.)-.15 E(Ev)5 +E(ery zone needs at least tw)-.15 E 2.5(on)-.1 G(ame serv)-2.5 E(ers.) +-.15 E EP +%%Page: 15 15 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF(Name Ser)72 60 Q -.1(ve)-.1 G 2.5(rO).1 G +(perations Guide f)-2.5 E(or)-.25 E/F1 9/Times-Bold@0 SF 206.564 +(BIND SMM)2.5 F F0(:10-15)A 2.5(6.5.5. A)102 96 R 2.5(-A)2.5 G(ddr)-2.5 +E(ess)-.18 E/F2 10/Times-Italic@0 SF 14.49({name} {ttl})117 112.2 R +(addr)16.6 E 10.82(-class A)-.2 F(addr)16.11 E(ess)-.37 E/F3 10 +/Times-Roman@0 SF 45.44(ucbarpa IN)117 124.2 R 15(A1)44.79 G(28)-15 E F0 +(.)A F3(32)A F0(.)A F3(0)A F0(.)A F3(4)A 42.29(IN A)196.59 136.2 R(10)15 +E F0(.)A F3(0)A F0(.)A F3(0)A F0(.)A F3(78)A(The)117 152.4 Q F2(Addr) +3.754 E(ess)-.37 E F3(record,)3.754 E F2(A)3.754 E F3 3.754(,l)C 1.254 +(ists the address for a gi)-3.754 F -.15(ve)-.25 G 3.754(nm).15 G 3.754 +(achine. The)-3.754 F 1.253(name \214eld is the machine)3.754 F .342 +(name and the address is the netw)117 164.4 R .342(ork address.)-.1 F +.342(There should be one)5.342 F F2(A)2.843 E F3 .343 +(record for each address of)2.843 F(the machine.)117 176.4 Q F0 2.5 +(6.5.6. HINFO)102 200.4 R 2.5(-H)2.5 G(ost Inf)-2.5 E(ormation)-.25 E F2 +12.5({name} {ttl})117 216.6 R(addr)16.6 E 10.82(-class HINFO)-.2 F(Har) +15 E(dwar)-.37 E 26.05(eO)-.37 G(S)-26.05 E F3 42.29(IN HINFO)194.6 +228.6 R -1.35(VA)15 G 12.5(X-11/780 UNIX)1.35 F F2 .393 +(Host Information)117 244.8 R F3 .393(resource record,)2.893 F F2(HINFO) +2.893 E F3 2.893(,i)C 2.893(sf)-2.893 G .393(or host speci\214c data.) +-2.893 F .393(This lists the hardw)5.393 F .392(are and)-.1 F 1.94 +(operating system that are running at the listed host.)117 256.8 R 1.94 +(If you w)6.94 F 1.94(ant to include a space in the)-.1 F 1.155 +(machine name you must quote the name \(using `)117 268.8 R(`"')-.74 E +3.654('c)-.74 G 3.654(haracters.\) There)-3.654 F 1.154(could be one) +3.654 F F2(HINFO)3.654 E F3 .653 +(record for each host, though for security reasons most domains don')117 +280.8 R 3.154(th)-.18 G -2.25 -.2(av e)-3.154 H(an)3.354 E(y)-.15 E F2 +(HINFO)3.154 E F3(records)3.154 E(at all.)117 292.8 Q +(No application depends on them.)5 E F0 2.5(6.5.7. WKS)102 321 R 2.5(-W) +2.5 G(ell Kno)-3.15 E(wn Ser)-.1 E(vices)-.1 E F2 12.5({name} {ttl})117 +337.2 R(addr)16.6 E 10.82(-class WKS)-.2 F(addr)17.22 E 29.26(ess pr) +-.37 F 12.39(otocol list)-.45 F(of services)2.5 E F3 42.29(IN WKS)194.6 +349.2 R(128)15 E F0(.)A F3(32)A F0(.)A F3(0)A F0(.)A F3 12.5(10 UDP)B +(who route timed domain)28.33 E 42.29(IN WKS)194.6 361.2 R(128)15 E F0 +(.)A F3(32)A F0(.)A F3(0)A F0(.)A F3 12.5(10 TCP)B 2.5(\(e)29.99 G +(cho telnet)-2.5 E(discard sunrpc sftp)397.99 373.2 Q +(uucp-path systat daytime)397.99 385.2 Q(netstat qotd nntp)397.99 397.2 +Q(link char)397.99 409.2 Q(gen ftp)-.18 E(auth time whois mtp)397.99 +421.2 Q(pop rje \214nger smtp)397.99 433.2 Q(supdup hostnames)397.99 +445.2 Q(domain)397.99 457.2 Q(nameserv)397.99 469.2 Q(er \))-.15 E(The) +117 485.4 Q F2 -.92(We)2.574 G .074(ll Known Services).92 F F3(record,) +2.574 E F2(WKS)2.574 E F3 2.574(,d)C .074(escribes the well kno)-2.574 F +.073(wn services supported by a partic-)-.25 F .366 +(ular protocol at a speci\214ed address.)117 497.4 R .367 +(The list of services and port numbers come from the list of)5.366 F +1.122(services speci\214ed in)117 509.4 R F2(/etc/services.)3.622 E F3 +1.122(There should be only one)3.622 F F2(WKS)3.621 E F3 1.121 +(record per protocol per ad-)3.621 F 2.5(dress. Note)117 521.4 R +(that RFC1123 says of)2.5 E F2(WKS)2.5 E F3(records:)2.5 E 2.5 +(2.2 Using)124.5 541.8 R(Domain Name Service)2.5 E(...)124.5 553.8 Q +(An application SHOULD NO)132 565.8 Q 2.5(Tr)-.4 G +(ely on the ability to locate a WKS)-2.5 E +(record containing an accurate listing of all services at a)132 577.8 Q +(particular host address, since the WKS RR type is not often used)132 +589.8 Q(by Internet sites.)132 601.8 Q 1.6 -.8(To c)5 H +(on\214rm that a service is present, simply).8 E(attempt to use it.)132 +613.8 Q(...)124.5 625.8 Q 2.5(5.2.12 WKS)132 637.8 R +(Use in MX Processing: RFC-974, p. 5)2.5 E +(RFC-974 [SMTP:3] recommended that the domain system be queried)139.5 +661.8 Q(for WKS \("W)139.5 673.8 Q(ell-Kno)-.8 E +(wn Service"\) records, to v)-.25 E(erify that each)-.15 E +(proposed mail tar)139.5 685.8 Q(get does support SMTP)-.18 E 5(.L)-1.11 +G(ater e)-5 E(xperience has)-.15 E(sho)139.5 697.8 Q +(wn that WKS is not widely supported, so the WKS step in MX)-.25 E +(processing SHOULD NO)139.5 709.8 Q 2.5(Tb)-.4 G 2.5(eu)-2.5 G(sed.)-2.5 +E EP +%%Page: 16 16 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF 203.87(SMM:10-16 Name)72 60 R(Ser)2.5 E -.1(ve) +-.1 G 2.5(rO).1 G(perations Guide f)-2.5 E(or)-.25 E/F1 9/Times-Bold@0 +SF(BIND)2.5 E/F2 10/Times-Roman@0 SF(...)124.5 96 Q 2.5(6.1.3.6 Status) +139.5 108 R(of RR T)2.5 E(ypes)-.8 E(...)124.5 120 Q +(The TXT and WKS RR types ha)159.5 132 Q .3 -.15(ve n)-.2 H +(ot been widely used by).15 E +(Internet sites; as a result, an application cannot rely)159.5 144 Q +(on the e)159.5 156 Q(xistence of a TXT or WKS RR in most)-.15 E +(domains.)159.5 168 Q F0 2.5(6.5.8. CN)102 196.2 R(AME - Canonical Name) +-.2 E/F3 10/Times-Italic@0 SF 32.49(alias {ttl})117 212.4 R(addr)16.6 E +10.82(-class CN)-.2 F 14.64(AME Canonical)-.27 F(name)2.5 E F2 45.44 +(ucbmonet IN)117 224.4 R(CN)44.79 E 12.5(AME monet)-.35 F(The)117 240.6 +Q F3 .086(Canonical Name)2.586 F F2 .086(resource record,)2.586 F F3(CN) +2.586 E(AME)-.27 E F2 2.586(,s)C .087 +(peci\214es an alias or nickname for the of)-2.586 F .087(\214cial, or) +-.25 F 1.322(canonical, host name.)117 252.6 R 1.322 +(This record must be the only one associated with the alias name.)6.322 +F(All)6.322 E .139(other resource records must be associated with the canonical name, not with the nickname.) +117 264.6 R(An)5.14 E(y)-.15 E .072 +(resource records that include a domain name as their v)117 276.6 R .072 +(alue \(e.g., NS or MX\))-.25 F F3(must)2.571 E F2 .071(list the canon-) +2.571 F .256(ical name, not the nickname.)117 288.6 R(Similarly)5.256 E +2.757(,aC)-.65 G -.35(NA)-2.757 G .257(ME will be follo).35 F .257 +(wed when searching for A RRs,)-.25 F -.2(bu)117 300.6 S 3.101(tn).2 G +.601(ot for MX RRs or NS RRs or most other types of RRs.)-3.101 F(CN)5.6 +E .6(AMEs are allo)-.35 F .6(wed to point to)-.25 F(other CN)117 312.6 Q +(AMEs, b)-.35 E(ut this is considered slopp)-.2 E -.65(y.)-.1 G .057 +(Nicknames are useful when a well kno)142 328.8 R .057 +(wn host changes its name.)-.25 F .058(In that case, it is usually)5.058 +F 2.772(ag)117 340.8 S .272(ood idea to ha)-2.772 F .572 -.15(ve a)-.2 H +F3(CN)2.922 E(AME)-.27 E F2 .271 +(record so that people still using the old name will get to the right) +2.772 F(place.)117 352.8 Q F0 2.5(6.5.9. PTR)102 376.8 R 2.5(-D)2.5 G +(omain Name P)-2.5 E(ointer)-.2 E F3 12.5(name {ttl})117 393 R(addr)16.6 +E 10.82(-class PTR)-.2 F -.37(re)15.56 G(al name).37 E F2 54.6(7.0 IN) +117 405 R 12.5(PTR monet)44.79 F F0(.)1.666 E F2(Berk)1.666 E(ele)-.1 E +(y)-.15 E F0(.)1.666 E F2(Edu)1.666 E F0(.)1.666 E F2(A)117 421.2 Q F3 +.816(Domain Name P)3.316 F(ointer)-.8 E F2(record,)3.316 E F3(PTR)3.316 +E F2 3.317(,a)C(llo)-3.317 E .817 +(ws special names to point to some other location in)-.25 F .842 +(the domain.)117 433.2 R .842(The abo)5.842 F 1.142 -.15(ve ex)-.15 H +.842(ample of a).15 F F3(PTR)3.342 E F2 .842 +(record is used in setting up re)3.342 F -.15(ve)-.25 G .841 +(rse pointers for the).15 F(special)117 445.2 Q F3(IN-ADDR)3.078 E F0(.) +1.666 E F3(ARP)1.666 E(A)-.9 E F2 .578(domain. This line is from the e) +3.078 F(xample)-.15 E F3(hosts.r)3.078 E -.15(ev)-.37 G F2(\214le.)3.229 +E F3(PTR)5.579 E F2 .579(records are)3.079 F 2.786(needed by the)117 +457.2 R F3 -.1(ge)5.286 G(thostbyaddr).1 E F2 5.286(function. Note)5.286 +F 2.786(the trailing `)5.286 F(`)-.74 E F0(.)1.666 E F2 4.266 -.74('' w) +1.666 H 2.786(hich pre).74 F -.15(ve)-.25 G(nts).15 E/F4 9/Times-Roman@0 +SF(BIND)5.286 E F2(from)5.286 E(appending the current)117 469.2 Q F4 +($ORIGIN)2.5 E F2(to that domain name.)2.5 E F0 2.5(6.5.10. MX)102 493.2 +R 2.5(-M)2.5 G(ail Exchange)-2.5 E F3 68.33(name {ttl})117 509.4 R(addr) +16.6 E 10.82(-class MX)-.2 F(pr)16.67 E(efer)-.37 E(ence value)-.37 E +(mail e)14.92 E(xc)-.2 E(hang)-.15 E(e)-.1 E F2(Munnari)117 521.4 Q F0 +(.)1.666 E F2(OZ)1.666 E F0(.)1.666 E F2 -.55(AU)1.666 G F0(.)2.216 E F2 +42.29(IN MX)47.94 F 76.1(0S)15 G(eismo)-76.1 E F0(.)1.666 E F2(CSS)1.666 +E F0(.)1.666 E F2(GO)1.666 E(V)-.5 E F0(.)1.666 E F2(*)117 533.4 Q F0(.) +1.666 E F2(IL)1.666 E F0(.)1.666 E F2 42.29(IN MX)100.992 F 76.1(0R)15 G +(ELA)-76.1 E(Y)-1.05 E F0(.)1.666 E F2(CS)1.666 E F0(.)1.666 E F2(NET) +1.666 E F0(.)1.666 E F3 .726(Mail eXc)117 549.6 R(hang)-.15 E(e)-.1 E F2 +(records,)3.226 E F3(MX)3.227 E F2 3.227(,a)C .727 +(re used to specify a list of hosts which are con\214gured to recei) +-3.227 F -.15(ve)-.25 G .093(mail sent to this domain name.)117 561.6 R +(Ev)5.093 E .092(ery name which recei)-.15 F -.15(ve)-.25 G 2.592(sm).15 +G .092(ail should ha)-2.592 F .392 -.15(ve a)-.2 H(n).15 E F3(MX)2.592 E +F2 .092(since if one)2.592 F .213 +(is not found at the time mail is being deli)117 573.6 R -.15(ve)-.25 G +.213(red, an).15 F F3(MX)2.713 E F2 .213(will be `)2.713 F(`imputed') +-.74 E 2.714('w)-.74 G .214(ith a cost of 0 and a)-2.714 F .881 +(destination of the host itself.)117 585.6 R .881(If you w)5.881 F .881 +(ant a host to recei)-.1 F 1.18 -.15(ve i)-.25 H .88(ts o).15 F .88 +(wn mail, you should create an)-.25 F F3(MX)117 597.6 Q F2 .464 +(for your host')2.964 F 2.964(sn)-.55 G .464 +(ame, pointing at your host')-2.964 F 2.964(sn)-.55 G 2.964(ame. It) +-2.964 F .465(is better to ha)2.965 F .765 -.15(ve t)-.2 H .465 +(his be e).15 F .465(xplicit than)-.15 F 1.198 +(to let it be imputed by remote mailers.)117 609.6 R 1.198 +(In the \214rst e)6.198 F 1.198(xample, abo)-.15 F -.15(ve)-.15 G 3.698 +(,S).15 G(eismo)-3.698 E F0(.)1.666 E F2(CSS)1.666 E F0(.)1.666 E F2(GO) +1.666 E(V)-.5 E F0(.)1.666 E F2 1.198(is a)3.698 F .692(mail g)117 621.6 +R(ate)-.05 E -.1(wa)-.25 G 3.192(yt).1 G .692(hat kno)-3.192 F .692 +(ws ho)-.25 F 3.192(wt)-.25 G 3.192(od)-3.192 G(eli)-3.192 E -.15(ve) +-.25 G 3.192(rm).15 G .692(ail to Munnari)-3.192 F F0(.)1.666 E F2(OZ) +1.666 E F0(.)1.666 E F2 -.55(AU)1.666 G F0(.)2.216 E F2 5.693(.T)C .693 +(hese tw)-5.693 F 3.193(om)-.1 G .693(achines may)-3.193 F(ha)117 633.6 +Q .476 -.15(ve a p)-.2 H(ri).15 E -.25(va)-.25 G .176 +(te connection or use a dif).25 F .175(ferent transport medium.)-.25 F +.175(The preference v)5.175 F .175(alue is the order)-.25 F .109 +(that a mailer should follo)117 645.6 R 2.609(ww)-.25 G .109 +(hen there is more than one w)-2.609 F .11(ay to deli)-.1 F -.15(ve)-.25 +G 2.61(rm).15 G .11(ail to a single machine.)-2.61 F .01(Note that lo) +117 657.6 R .009(wer numbers indicate higher precedence, and that mailers are supposed to randomize) +-.25 F(same-v)117 669.6 Q(alued)-.25 E F3(MX)2.719 E F2 .219 +(hosts so as to distrib)2.719 F .219(ute the load e)-.2 F -.15(ve)-.25 G +.22(nly if the costs are equal.).15 F .22(See RFC974 for)5.22 F +(more detailed information.)117 681.6 Q -.4(Wi)142 697.8 S 1.822 +(ldcard names containing the character `).4 F(`*')-.74 E 4.322('m)-.74 G +1.821(ay be used for mail routing with)-4.322 F F3(MX)4.321 E F2 4.366 +(records. There)117 709.8 R 1.866(are lik)4.366 F 1.866(ely to be serv) +-.1 F 1.866(ers on the netw)-.15 F 1.867(ork that simply state that an) +-.1 F 4.367(ym)-.15 G 1.867(ail to a)-4.367 F EP +%%Page: 17 17 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF(Name Ser)72 60 Q -.1(ve)-.1 G 2.5(rO).1 G +(perations Guide f)-2.5 E(or)-.25 E/F1 9/Times-Bold@0 SF 206.564 +(BIND SMM)2.5 F F0(:10-17)A/F2 10/Times-Roman@0 SF .43 +(domain is to be routed through a relay)117 96 R 5.429(.S)-.65 G .429 +(econd e)-5.429 F .429(xample, abo)-.15 F -.15(ve)-.15 G 2.929(,a).15 G +.429(ll mail to hosts in the domain)-2.929 F 1.72 +(IL is routed through RELA)117 108 R -1.29(Y.)-1.05 G(CS.NET)1.29 E +6.721(.T)-.74 G 1.721 +(his is done by creating a wildcard resource record,)-6.721 F .381 +(which states that *.IL has an)117 120 R/F3 10/Times-Italic@0 SF(MX) +2.881 E F2 .381(of RELA)2.881 F -1.29(Y.)-1.05 G(CS.NET)1.29 E 5.381(.W) +-.74 G(ildcard)-5.781 E F3(MX)2.881 E F2 .38(records are not v)2.88 F +.38(ery useful)-.15 F .189 +(in practice, though, since once a mail message gets to the g)117 132 R +(ate)-.05 E -.1(wa)-.25 G 2.69(yf).1 G .19(or a gi)-2.69 F -.15(ve)-.25 +G 2.69(nd).15 G .19(omain it still has)-2.69 F .862(to be routed)117 144 +R F3(within)3.362 E F2 .861 +(that domain and it is not currently possible to ha)3.362 F 1.161 -.15 +(ve a)-.2 H 3.361(na).15 G(pparently-dif)-3.361 E(ferent)-.25 E .228 +(set of)117 156 R F3(MX)2.728 E F2 .229 +(records inside and outside of a domain.)2.728 F .229(If you w)5.229 F +(on')-.1 E 2.729(tb)-.18 G 2.729(en)-2.729 G .229(eeding an)-2.729 F +2.729(yM)-.15 G .229(ail Exchanges)-2.729 F .306 +(inside your domain, go ahead and use a wildcard.)117 168 R .306 +(If you w)5.306 F .305(ant to use both wildcard `)-.1 F(`top-le)-.74 E +-.15(ve)-.25 G(l').15 E(')-.74 E 1.324(and speci\214c `)117 180 R +(`interior')-.74 E(')-.74 E F3(MX)3.824 E F2 1.324 +(records, note that each speci\214c record will ha)3.824 F 1.624 -.15 +(ve t)-.2 H 3.824(o`).15 G 1.324(`end with')-4.564 F 3.824('a)-.74 G +.711(complete recitation of the same data that is carried in the top-le) +117 192 R -.15(ve)-.25 G 3.21(lr).15 G 3.21(ecord. This)-3.21 F .71 +(is because the)3.21 F(speci\214c)117 204 Q F3(MX)3.124 E F2 .624 +(records will tak)3.124 F 3.124(ep)-.1 G .624(recedence o)-3.124 F -.15 +(ve)-.15 G 3.124(rt).15 G .624(he top-le)-3.124 F -.15(ve)-.25 G 3.124 +(lw).15 G .625(ildcard records, and must be able)-3.124 F .058 +(to perform the top-le)117 216 R -.15(ve)-.25 G(l').15 E 2.558(si)-.55 G +2.557(fag)-2.558 G -2.15 -.25(iv e)-2.557 H 2.557(ni).25 G .057 +(nterior domain is to be able to recei)-2.557 F .357 -.15(ve m)-.25 H +.057(ail from outside the).15 F -.05(ga)117 228 S(te).05 E -.1(wa)-.25 G +3.8 -.65(y. W).1 H(ildcard).25 E F3(MX)2.5 E F2(records are v)2.5 E +(ery subtle and you should be careful with them.)-.15 E F0 2.5 +(6.5.11. TXT)102 252 R 2.5(-T)2.5 G(ext)-3.42 E F3 68.33(name {ttl})117 +268.2 R(addr)16.6 E 10.82(-class TXT)-.2 F(string)17.21 E F2(Munnari)117 +280.2 Q F0(.)1.666 E F2(OZ)1.666 E F0(.)1.666 E F2 -.55(AU)1.666 G F0(.) +2.216 E F2 42.29(IN TXT)47.94 F("foo")15 E(A)117 296.4 Q F3(TXT)3.639 E +F2 1.139(record contains free-form te)3.639 F 1.139(xtual data.)-.15 F +1.139(The syntax of the te)6.139 F 1.14(xt depends on the domain)-.15 F +.146(where it is found; man)117 308.4 R 2.646(ys)-.15 G .146(ystems use) +-2.646 F F3(TXT)2.646 E F2 .146 +(records to encode local data in a stylized format.)2.646 F(MIT)5.145 E +(Hesiod is one such system.)117 320.4 Q F0 2.5(6.5.12. RP)102 344.4 R +2.5(-R)2.5 G(esponsible P)-2.5 E(erson)-.2 E F3 19.16(owner {ttl})117 +360.6 R(addr)16.6 E 10.82(-class RP)-.2 F 36.59(mbox-domain-name TXT) +15.01 F(-domain-name)-.74 E F2 45.44(franklin IN)117 372.6 R 12.5 +(RP ben.franklin.berk)44.79 F(ele)-.1 E -.65(y.)-.15 G 12.5 +(edu. sysadmins.berk).65 F(ele)-.1 E -.65(y.)-.15 G(edu.).65 E .393 +(The Responsible Person record,)142 393 R F3(RP)2.893 E F2 2.893(,i)C +.393(denti\214es the name or group name of the responsible)-2.893 F .331 +(person for a host.)117 405 R .33(Often it is desirable to be able to identify the responsible entity for a particu-) +5.331 F 1.165(lar host.)117 417 R 1.165(When that host is do)6.165 F +1.165(wn or malfunctioning, you w)-.25 F 1.166(ould w)-.1 F 1.166 +(ant to contact those parties)-.1 F +(who might be able to repair the host.)117 429 Q 1.119 +(The \214rst \214eld,)142 445.2 R F3(mbox-domain-name)3.619 E F2 3.619 +(,i)C 3.619(sad)-3.619 G 1.118 +(omain name that speci\214es the mailbox for the)-3.619 F 1.38 +(responsible person.)117 457.2 R 1.38 +(Its format in a zone \214le uses the)6.38 F/F4 9/Times-Roman@0 SF(DNS) +3.88 E F2(con)3.88 E -.15(ve)-.4 G 1.38(ntion for mailbox encoding,).15 +F .402(identical to that used for the)117 469.2 R F3 -.8(Pe)2.901 G -.1 +(rs).8 G(on-in-c).1 E(har)-.15 E -.1(ge)-.37 G F2 .401 +(mailbox \214eld in the SO)3.001 F 2.901(Ar)-.35 G 2.901(ecord. In) +-2.901 F .401(the e)2.901 F(xample)-.15 E(abo)117 481.2 Q -.15(ve)-.15 G +2.918(,t).15 G(he)-2.918 E F3(mbox-domain-name)2.918 E F2(sho)2.919 E +.419(ws the encoding for `)-.25 F(`)-.74 E F0()-.7 E F2 -.74('')C 5.419(.T).74 G(he)-5.419 E +(root domain name \(just `)117 493.2 Q(`)-.74 E F0(.)1.666 E F2 -.74('') +1.666 G 2.5(\)m).74 G +(ay be speci\214ed to indicate that no mailbox is a)-2.5 E -.25(va)-.2 G +(ilable.).25 E .931(The second \214eld,)142 509.4 R F3(TXT)3.431 E +(-domain-name)-.74 E F2 3.431(,i)C 3.431(sad)-3.431 G .931 +(omain name for which)-3.431 F F3(TXT)3.431 E F2 .93(records e)3.43 F +3.43(xist. A)-.15 F 1.808(subsequent query can be performed to retrie) +117 521.4 R 2.108 -.15(ve t)-.25 H 1.809(he associated).15 F F3(TXT) +4.309 E F2 1.809(resource records at)4.309 F F3(TXT)4.309 E(-)-.74 E +(domain-name)117 533.4 Q F2 6.416(.T)C 1.416(his pro)-6.416 F 1.416 +(vides a le)-.15 F -.15(ve)-.25 G 3.916(lo).15 G 3.915(fi)-3.916 G 1.415 +(ndirection so that the entity can be referred to from)-3.915 F 2.158 +(multiple places in the)117 545.4 R F4(DNS)4.658 E F2 7.158(.T)C 2.159 +(he root domain name \(just `)-7.158 F(`)-.74 E F0(.)1.666 E F2 -.74('') +1.666 G 4.659(\)m).74 G 2.159(ay be speci\214ed for)-4.659 F F3(TXT) +4.659 E(-)-.74 E 1.784 +(domain-name to indicate that no associated TXT RR e)117 557.4 R 4.284 +(xists. In)-.2 F 1.784(the e)4.284 F 1.783(xample abo)-.2 F(ve)-.1 E +4.283(,`)-.1 G(`)-5.393 E F0(sysad-)A(mins.berk)117 569.4 Q(eley)-.1 E +(.edu.)-.7 E F3 2.692 -1.11('' i)D 2.972(st)1.11 G .472 +(he name of a TXT r)-2.972 F(ecor)-.37 E 2.972(dt)-.37 G .472 +(hat might contain some te)-2.972 F .472(xt with names and)-.2 F +(phone number)117 581.4 Q(s.)-.1 E F2 1.168(The format of the)142 597.6 +R F3(RP)3.668 E F2 1.168(record is class-insensiti)3.668 F -.15(ve)-.25 +G 6.168(.M).15 G(ultiple)-6.168 E F3(RP)3.668 E F2 1.168 +(records at a single name)3.668 F +(may be present in the database, though the)117 609.6 Q 2.5(ys)-.15 G +(hould ha)-2.5 E .3 -.15(ve i)-.2 H(dentical TTLs.).15 E(The)142 625.8 Q +F3(RP)2.5 E F2(record is still e)2.5 E(xperimental; not all name serv) +-.15 E(ers implement or recognize it.)-.15 E F0 2.5(6.5.13. AFSDB)102 +649.8 R 2.5(-D)2.5 G(CE or AFS Ser)-2.5 E -.1(ve)-.1 G(r).1 E F3 39.17 +(name {ttl})117 666 R(addr)16.6 E 10.82(-class AFSDB)-.2 F 13.06 +(subtype server)16.68 F(host name)2.5 E F2(toaster)117 678 Q 45.44 +(.com. IN)-.55 F 12.5(AFSDB 1)44.79 F(jack.toaster)41.11 E(.com.)-.55 E +EP +%%Page: 18 18 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF 203.87(SMM:10-18 Name)72 60 R(Ser)2.5 E -.1(ve) +-.1 G 2.5(rO).1 G(perations Guide f)-2.5 E(or)-.25 E/F1 9/Times-Bold@0 +SF(BIND)2.5 E/F2 10/Times-Roman@0 SF(toaster)117 96 Q 45.44(.com. IN) +-.55 F 12.5(AFSDB 1)44.79 F(jill.toaster)41.11 E(.com.)-.55 E(toaster) +117 108 Q 45.44(.com. IN)-.55 F 12.5(AFSDB 2)44.79 F(track)41.11 E(er) +-.1 E(.toaster)-.55 E(.com.)-.55 E/F3 10/Times-Italic@0 SF(AFSDB)117 +124.2 Q F2 .042(records are used to specify the hosts that pro)2.542 F +.042(vide a style of distrib)-.15 F .042(uted service adv)-.2 F(ertised) +-.15 E 1.759(under this domain name.)117 136.2 R 4.259(As)6.759 G 1.759 +(ubtype v)-4.259 F 1.759(alue \(analogous to the `)-.25 F(`preference') +-.74 E 4.258('v)-.74 G 1.758(alue in the)-4.508 F F3(MX)4.258 E F2 .478 +(record\) indicates which style of distrib)117 148.2 R .478 +(uted service is pro)-.2 F .478(vided with the gi)-.15 F -.15(ve)-.25 G +2.978(nn).15 G 2.978(ame. Subtype)-2.978 F(1)2.978 E .021 +(indicates that the named host is an AFS \(R\) database serv)117 160.2 R +.021(er for the AFS cell of the gi)-.15 F -.15(ve)-.25 G 2.521(nd).15 G +(omain)-2.521 E 2.592(name. Subtype)117 172.2 R 2.592(2i)2.592 G .092 +(ndicates that the named host pro)-2.592 F .092 +(vides intra-cell name service for the DCE \(R\))-.15 F 4.017 +(cell named by the gi)117 184.2 R -.15(ve)-.25 G 6.516(nd).15 G 4.016 +(omain name.)-6.516 F 4.016(In the e)9.016 F 4.016(xample abo)-.15 F +-.15(ve)-.15 G 6.516(,j).15 G(ack)-6.516 E F0(.)1.666 E F2(toaster)1.666 +E F0(.)1.666 E F2 4.016(com and)1.666 F(jill)117 196.2 Q F0(.)1.666 E F2 +(toaster)1.666 E F0(.)1.666 E F2 .595 +(com are declared to be AFS database serv)1.666 F .595 +(ers for the toaster)-.15 F F0(.)1.666 E F2 .596(com AFS cell, so that) +1.666 F .586(AFS clients wishing service from toaster)117 208.2 R F0(.) +1.666 E F2 .586(com are directed to those tw)1.666 F 3.085(oh)-.1 G .585 +(osts for further infor)-3.085 F(-)-.2 E 3.946(mation. The)117 220.2 R +1.446(third record declares that track)3.946 F(er)-.1 E F0(.)1.666 E F2 +(toaster)1.666 E F0(.)1.666 E F2 1.446(com houses a directory serv)1.666 +F 1.447(er for the)-.15 F .235(root of the DCE cell toaster)117 232.2 R +F0(.)1.666 E F2 .234 +(com, so that DCE clients that wish to refer to DCE services should) +1.666 F .273(consult with the host track)117 244.2 R(er)-.1 E F0(.)1.666 +E F2(toaster)1.666 E F0(.)1.666 E F2 .274(com for further information.) +1.666 F .274(The DCE sub-type of record)5.274 F .045 +(is usually accompanied by a)117 256.2 R F3(TXT)2.545 E F2 .044 +(record for other information specifying other details to be used)2.545 +F 1.732(in accessing the DCE cell.)117 268.2 R 1.732 +(RFC1183 contains more detailed information on the use of this)6.732 F +(record type.)117 280.2 Q(The)142 296.4 Q F3(AFSDB)2.5 E F2 +(record is still e)2.5 E(xperimental; not all name serv)-.15 E +(ers implement or recognize it.)-.15 E F0 2.5(6.5.14. PX)102 332.4 R 2.5 +(-P)2.5 G(ointer to X.400/RFC822 mapping inf)-2.7 E(ormation)-.25 E F3 +85.22(name {ttl})117 348.6 R(addr)16.6 E 10.82(-class PX)-.2 F(pr)15.56 +E 12.3(efer 822-dom)-.37 F(X.400-dom)15.56 E F2(*.ADMD-g)117 360.6 Q +(arr)-.05 E 45.44(.X42D.it. IN)-.55 F 12.5(PX 50)44.79 F 40.55 +(it. ADMD-g)28.87 F(arr)-.05 E(.C-it.)-.55 E 105.65(*.infn.it. IN)117 +372.6 R 12.5(PX 50)44.79 F 21.94(infn.it. O.PRMD-infn.ADMD-g)28.87 F +(arr)-.05 E(.C-it.)-.55 E 124.26(*.it. IN)117 384.6 R 12.5(PX 50)44.79 F +40.55(it. O-g)28.87 F(ate.PRMD-g)-.05 E(arr)-.05 E(.ADMD-g)-.55 E(arr) +-.05 E(.C-it.)-.55 E(The)142 405 Q F3(PX)4.678 E F2 2.178(records \() +4.678 F F3 -.8(Po)C 2.177(inter to X.400/RFC822 mapping information).8 F +F2 4.677(\)a)C 2.177(re used to specify)-4.677 F 1.65(address mapping rules between X.400 O/R addresses and RFC822 style \(domain-style\) mail) +117 417 R(addresses. F)117 429 Q(or a detailed description of the mapping process please refer to RFC1327.) +-.15 E(Mapping rules are of 3 dif)142 445.2 Q(ferent types:)-.25 E(1\) mapping from X.400 to RFC822 \(de\214ned as "table 1 rules" in RFC1327\)) +142 461.4 Q(2\) mapping from RFC822 to X.400 \(de\214ned as "table 2 rules" in RFC1327\)) +142 477.6 Q(3\) encoding RFC822 into X.400)142 493.8 Q +(\(de\214ned as "g)7.5 E(ate table" in RFC1327\))-.05 E 2.38 +(All three types of mapping rules are speci\214ed using)142 510 R F3(PX) +4.88 E F2 2.38(Resource Records in DNS,)4.88 F .032(although the)117 522 +R F3(name)2.532 E F2 -.25(va)2.532 G .032(lue is dif).25 F .033 +(ferent: for case 1, the)-.25 F F3(name)2.533 E F2 -.25(va)2.533 G .033 +(lue is an X.400 domain in DNS syn-).25 F 1.067 +(tax, whereas for cases 2 and 3 the)117 534 R F3(name)3.567 E F2 -.25 +(va)3.567 G 1.067(lue is an RFC822 domain. Refer to RFC-1664 for).25 F +.009(details on specifying an X.400 domain in DNS syntax and for the use of the) +117 546 R F3(X42D)2.51 E F2 -.1(ke)2.51 G(yw)-.05 E .01(ord in it.)-.1 F +-.8(To)117 558 S .248(ols are a).8 F -.25(va)-.2 G .248(ilable to con) +.25 F -.15(ve)-.4 G .248 +(rt from RFC1327 tables format into DNS \214les syntax.).15 F F3(Pr) +5.247 E(efer)-.37 E(ence)-.37 E F2(is)2.747 E .39(analogous to the)117 +570 R F3(MX)2.89 E F2 .391 +(RR Preference parameter: it is currently advised to use a \214x)2.89 F +.391(ed v)-.15 F .391(alue of 50)-.25 F .004(for it.)117 582 R F3 +(822-dom)2.504 E F2(gi)2.504 E -.15(ve)-.25 G 2.504(st).15 G .004 +(he RFC822 part of the mapping rules, and)-2.504 F F3(X.400-dom)2.504 E +F2(gi)2.503 E -.15(ve)-.25 G 2.503(st).15 G .003(he X.400 part)-2.503 F +.209(of the mapping rule \(in DNS syntax\). It is currently advised al) +117 594 R -.1(wa)-.1 G .21(ys to use wildcarded).1 F F3(name)2.71 E F2 +-.25(va)2.71 G(l-).25 E 1.175(ues, as the RFC1327 tables speci\214cations permit wildcard speci\214cations only) +117 606 R 3.674(.T)-.65 G 1.174(his is to k)-3.674 F(eep)-.1 E 1.105 +(compatibility with e)117 618 R 1.106 +(xisting services using static RFC1327 tables instead of DNS)-.15 F F3 +(PX)3.606 E F2(informa-)3.606 E(tion.)117 630 Q .328(Speci\214cations of mapping rules from X.400 to RFC822 syntax requires the creation of an) +142 646.2 R 1.178 +(appropriate X.400 domain tree into DNS, including thus speci\214c)117 +658.2 R F3(SO)3.678 E(A)-.55 E F2(and)3.678 E F3(NS)3.678 E F2 1.178 +(records for the)3.678 F 2.623(domain itself. Speci\214cation of mapping rules from RFC822 into X.400 can be embedded) +117 670.2 R .782(directly into the normal direct)117 682.2 R F3(name) +3.283 E F2 3.283(tree. Ag)3.283 F .783 +(ain, refer to RFC1664 for details about or)-.05 F -.05(ga)-.18 G(niza-) +.05 E(tion of this structure.)117 694.2 Q EP +%%Page: 19 19 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF(Name Ser)72 60 Q -.1(ve)-.1 G 2.5(rO).1 G +(perations Guide f)-2.5 E(or)-.25 E/F1 9/Times-Bold@0 SF 206.564 +(BIND SMM)2.5 F F0(:10-19)A/F2 10/Times-Roman@0 SF -.8(To)142 96 S 1.089 +(ols and library routines, based on the standard resolv).8 F 1.089 +(er ones, are a)-.15 F -.25(va)-.2 G 1.089(ilable to retrie).25 F -.15 +(ve)-.25 G +(from DNS the appropriate mapping rules in RFC1327 or DNS syntax.)117 +108 Q .384(Once ag)142 124.2 R .384(ain, refer to RFC1664 to use the) +-.05 F/F3 10/Times-Italic@0 SF(PX)2.884 E F2 .384 +(resource record, and be careful in coordinat-)2.884 F .74(ing the mapping information you can specify in DNS with the same information speci\214ed into) +117 136.2 R(the RFC1327 static tables.)117 148.2 Q(The)142 164.4 Q F3 +(PX)2.5 E F2(record is still e)2.5 E(xperimental; not all serv)-.15 E +(ers implement or recognize it.)-.15 E F0 2.5(6.6. Discussion)87 200.4 R +(about the TTL)2.5 E F2 1.277(The use of dif)127 216.6 R 1.277(ferent T) +-.25 F 1.277(ime T)-.35 F 3.777(oL)-.8 G -2.15 -.25(iv e)-3.777 H 1.277 +(\214elds with in a RRset ha)4.027 F 1.577 -.15(ve b)-.2 H 1.277 +(een deprecated and this is).15 F .612(enforced by the serv)102 228.6 R +.612(er when loading a primary zone.)-.15 F .612 +(See the Security section for more discussion)5.612 F(of dif)102 240.6 Q +(fering TTLs.)-.25 E .465(The T)127 256.8 R .465(ime T)-.35 F 2.965(oL) +-.8 G -2.15 -.25(iv e)-2.965 H .466(assigned to the records and to the zone via the Minimum \214eld in the SO) +3.215 F(A)-.35 E .879(record is v)102 268.8 R .879 +(ery important. High v)-.15 F .879(alues will lead to lo)-.25 F .879 +(wer BIND netw)-.25 F .878(ork traf)-.1 F .878(\214c and f)-.25 F .878 +(aster response)-.1 F 2.321(time. Lo)102 280.8 R 2.321(wer v)-.25 F +2.321(alues will tend to generate lots of requests b)-.25 F 2.322 +(ut will allo)-.2 F 4.822(wf)-.25 G 2.322(aster propag)-4.922 F 2.322 +(ation of)-.05 F(changes.)102 292.8 Q 1.444 +(Only changes and deletions from the zone are af)127 309 R 1.444 +(fected by the TTLs.)-.25 F 1.443(Additions propag)6.443 F(ate)-.05 E +(according to the Refresh v)102 321 Q(alue in the SO)-.25 E(A.)-.35 E +.141(Experience has sho)127 337.2 R .141(wn that sites use def)-.25 F +.141(ault TTLs for their zones v)-.1 F .142(arying from around 0.5 day) +-.25 F .542(to around 7 days. Y)102 349.2 R .541 +(ou may wish to consider boosting the def)-1.1 F .541(ault TTL sho)-.1 F +.541(wn in former v)-.25 F .541(ersions of)-.15 F 1.912(this guide from one day \(86400 seconds\) to three days \(259200 seconds\). This will drastically) +102 361.2 R(reduce the number of requests made to your name serv)102 +373.2 Q(ers.)-.15 E .92(If you need f)127 389.4 R .92(ast propag)-.1 F +.919 +(ation of changes and deletions, it might be wise to reduce the Mini-) +-.05 F .328(mum \214eld a fe)102 401.4 R 2.828(wd)-.25 G .328(ays before the change, then do the modi\214cation itself and augment the TTL to its) +-2.828 F(former v)102 413.4 Q(alue.)-.25 E .646(If you kno)127 429.6 R +3.146(wt)-.25 G .646(hat your zone is pretty stable \(you mainly add ne) +-3.146 F 3.145(wr)-.25 G .645(ecords without deleting or)-3.145 F +(changing old ones\) then you may e)102 441.6 Q -.15(ve)-.25 G 2.5(nw) +.15 G(ish to consider a TTL higher than three days.)-2.5 E .536 +(Note that in an)127 457.8 R 3.036(yc)-.15 G .536(ase, it mak)-3.036 F +.537(es no sense to ha)-.1 F .837 -.15(ve r)-.2 H .537 +(ecords with a TTL belo).15 F 3.037(wt)-.25 G .537(he SO)-3.037 F 3.037 +(AR)-.35 G(efresh)-3.037 E(delay)102 469.8 Q 2.5(,a)-.65 G 2.5(sD)-2.5 G +(elay is the time required for secondaries to get a cop)-2.5 E 2.5(yo) +-.1 G 2.5(ft)-2.5 G(he ne)-2.5 E(wly modi\214ed zone.)-.25 E F0 2.5 +(6.7. About)87 505.8 R -.63(``)2.5 G(secur).63 E 2.5(ez)-.18 G(ones') +-2.5 E(')-.63 E F2 .379 +(Secure zones implement named security on a zone by zone basis.)127 522 +R .379(It is designed to use a per)5.379 F(-)-.2 E(mission list of netw) +102 534 Q +(orks or hosts which may obtain particular information from the zone.) +-.1 E .89(In order to use zone security)127 550.2 R(,)-.65 E F3(named) +3.391 E F2 .891(must be compiled with SECURE_ZONES de\214ned and)3.391 F +.939(you must ha)102 562.2 R 1.239 -.15(ve a)-.2 H 3.439(tl).15 G .939 +(east one secure_zone TXT RR.)-3.439 F .939(Unless a)5.939 F F3(secur) +3.439 E(e_zone)-.37 E F2 .938(record e)3.439 F .938(xists for a gi)-.15 +F -.15(ve)-.25 G(n).15 E .841 +(zone, no restrictions will be applied to the data in that zone.)102 +574.2 R .842(The format of the secure_zone TXT)5.841 F(RR is:)102 586.2 +Q 33.5(secure_zone addr)102 602.4 R 33.5(-class TXT string)-.2 F 1.272 +(The addr)127 618.6 R 1.272(-class may be either)-.2 F F3(HS)3.771 E F2 +(or)3.771 E F3(IN)3.771 E F2 6.271(.T)C 1.271 +(he syntax for the TXT string is either `)-6.271 F(`netw)-.74 E(ork)-.1 +E(address:netmask')102 630.6 Q 2.5('o)-.74 G 2.5(r`)-2.5 G +(`host IP address:H')-3.24 E('.)-.74 E -.74(``)127 646.8 S(netw).74 E +.032(ork address:netmask')-.1 F 2.532('a)-.74 G(llo)-2.532 E .032 +(ws queries from an entire netw)-.25 F 2.533(ork. If)-.1 F .033 +(the netmask is omitted,)2.533 F(named will use the def)102 658.8 Q +(ault netmask for the netw)-.1 E(ork address speci\214ed.)-.1 E -.74(``) +127 675 S .419(host IP address:H').74 F 2.918('a)-.74 G(llo)-2.918 E +.418(ws queries from a host.)-.25 F .418(The `)5.418 F(`H')-.74 E 2.918 +('a)-.74 G .418(fter the `)-2.918 F(`:')-.74 E 2.918('i)-.74 G 2.918(sr) +-2.918 G .418(equired to dif)-2.918 F(fer)-.25 E(-)-.2 E .217 +(entiate the host address from a netw)102 687 R .217(ork address.)-.1 F +.218(Multiple secure_zone TXT RRs are allo)5.217 F .218(wed in the)-.25 +F(same zone \214le.)102 699 Q EP +%%Page: 20 20 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF 203.87(SMM:10-20 Name)72 60 R(Ser)2.5 E -.1(ve) +-.1 G 2.5(rO).1 G(perations Guide f)-2.5 E(or)-.25 E/F1 9/Times-Bold@0 +SF(BIND)2.5 E/F2 10/Times-Roman@0 SF -.15(Fo)127 96 S 2.972(re).15 G +.472(xample, you can set up a zone to only answer Hesiod requests from the mask) +-3.122 F .471(ed class B)-.1 F(netw)102 108 Q +(ork 130.215.0.0 and from host 128.23.10.56 by adding the follo)-.1 E +(wing tw)-.25 E 2.5(oT)-.1 G(XT RR')-2.5 E(s:)-.55 E 33.5 +(secure_zone HS TXT `)102 124.2 R(`130.215.0.0:255.255.0.0')-.74 E(') +-.74 E 33.5(secure_zone HS TXT `)102 136.2 R(`128.23.10.56:H')-.74 E(') +-.74 E .866 +(This feature can be used to restrict access to a Hesiod passw)127 152.4 +R .866(ord map or to separate internal)-.1 F 1.493(and e)102 164.4 R +1.493(xternal internet address resolution on a \214re)-.15 F -.1(wa)-.25 +G 1.494(ll machine without needing to run a separate).1 F +(named for internal and e)102 176.4 Q(xternal address resolution.)-.15 E +1.065(Note that you will need to include your loopback interf)127 192.6 +R 1.064(ace \(127.0.0.1\) in your secure_zone)-.1 F +(record, or your local clients w)102 204.6 Q(on')-.1 E 2.5(tb)-.18 G 2.5 +(ea)-2.5 G(ble to resolv)-2.5 E 2.5(en)-.15 G(ames.)-2.5 E F0 2.5 +(6.8. About)87 240.6 R(Hesiod, and HS-class Resour)2.5 E(ce Records)-.18 +E F2 1.536(Hesiod, de)127 256.8 R -.15(ve)-.25 G 1.536(loped by).15 F/F3 +9/Times-Roman@0 SF(MIT)4.036 E F2 1.537 +(Project Athena, is an information service b)4.036 F 1.537(uilt upon)-.2 +F F3(BIND)4.037 E F2 6.537(.I)C(ts)-6.537 E .307 +(intent is similar to that of Sun')102 268.8 R(s)-.55 E F3(NIS)2.807 E +F2 2.806(:t)C 2.806(of)-2.806 G .306 +(urnish information about users, groups, netw)-2.806 F(ork-accessible) +-.1 E 1.549(\214le systems, printcaps, and mail service throughout an installation.) +102 280.8 R 1.55(Aside from its use of)6.55 F F3(BIND)4.05 E F2 .057 +(rather than separate serv)102 292.8 R .057 +(er code another important dif)-.15 F .056(ference between Hesiod and) +-.25 F F3(NIS)2.556 E F2 .056(is that Hesiod)2.556 F .892 +(is not intended to deal with passw)102 304.8 R .892 +(ords and authentication, b)-.1 F .893 +(ut only with data that are not security)-.2 F(sensiti)102 316.8 Q -.15 +(ve)-.25 G 5.623(.H).15 G .623(esiod serv)-5.623 F .623 +(ers can be implemented by adding resource records to)-.15 F F3(BIND) +3.122 E F2(serv)3.122 E .622(ers; or the)-.15 F(y)-.15 E +(can be implemented as separate serv)102 328.8 Q +(ers separately administered.)-.15 E 3.503 -.8(To l)127 345 T 1.903 +(earn about and obtain Hesiod mak).8 F 4.403(ea)-.1 G 4.403(na)-4.403 G +(non)-4.403 E(ymous)-.15 E F3(FTP)4.403 E F2 1.903(connection to host) +4.403 F F3 -.999(AT)4.404 G(HEN).999 E(A-)-.315 E(DIST)102 357 Q(.MIT) +-.666 E(.EDU)-.666 E F2 .304(and retrie)2.804 F .604 -.15(ve t)-.25 H +.304(he compressed tar \214le).15 F F0(/pub/A)2.804 E(THEN)-.95 E +(A/hesiod.tar)-.2 E(.Z)-1 E F2 5.304(.Y)C .303(ou will not need)-6.404 F +1.104(the named and resolv)102 369 R 1.105 +(er library portions of the distrib)-.15 F 1.105 +(ution because their functionality has already)-.2 F .225(been inte)102 +381 R .225(grated into)-.15 F F3 .225(BIND as of 4.9)2.725 F F2 5.225 +(.T)C 2.725(ol)-6.025 G .225(earn ho)-2.725 F 2.725(wH)-.25 G .224 +(esiod functions as part of the Athena computing)-2.725 F(en)102 393 Q +3.091(vironment obtain the paper)-.4 F F0(/pub/A)5.592 E(THEN)-.95 E +(A/usenix/athena-changes.PS)-.2 E F2 3.092(from the abo)5.592 F -.15(ve) +-.15 G F3(FTP)5.742 E F2(serv)102 405 Q(er host.)-.15 E +(There is also a tar \214le of sample Hesiod resource \214les.)5 E .471 +(Whether one should use Hesiod class is open to question, since the same services can proba-) +127 421.2 R .985(bly be pro)102 433.2 R .985 +(vided with class IN, type TXT and type CN)-.15 F .985(AME records.)-.35 +F .986(In either case, the code and)5.985 F +(documents for Hesiod will suggest ho)102 445.2 Q 2.5(wt)-.25 G 2.5(os) +-2.5 G(et up and use the service.)-2.5 E .74(Note that while)127 461.4 R +F3(BIND)3.24 E F2 .74(includes support for)3.24 F/F4 10/Times-Italic@0 +SF(HS)3.24 E F2 .739(-class queries, the zone transfer logic for non-)B +F4(IN)102 473.4 Q F2(-class zones is still e)A(xperimental.)-.15 E F0 +2.5(6.9. Sample)87 509.4 R(Files)2.5 E F2 1.099(The follo)127 525.6 R +1.099(wing section contains sample \214les for the name serv)-.25 F(er) +-.15 E 6.099(.T)-.55 G 1.1(his co)-6.099 F -.15(ve)-.15 G 1.1(rs e).15 F +1.1(xample boot)-.15 F(\214les for the dif)102 537.6 Q +(ferent types of serv)-.25 E(ers and e)-.15 E +(xample domain data base \214les.)-.15 E F0 2.5(6.9.1. Boot)102 561.6 R +(Files)2.5 E 2.5(6.9.1.1. Primary)117 585.6 R(Ser)2.5 E -.1(ve)-.1 G(r) +.1 E EP +%%Page: 21 21 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF(Name Ser)72 60 Q -.1(ve)-.1 G 2.5(rO).1 G +(perations Guide f)-2.5 E(or)-.25 E/F1 9/Times-Bold@0 SF 206.564 +(BIND SMM)2.5 F F0(:10-21)A/F2 10/Times-Roman@0 SF(;)132 100.2 Q 2.5(;B) +132 112.2 S(oot \214le for Primary Name Serv)-2.5 E(er)-.15 E(;)132 +124.2 Q 2.5(;t)132 144.6 S 26.1(ype domain)-2.5 F(source \214le or host) +71.66 E(;)132 156.6 Q 12.5(directory /usr/local/adm/named)132 168.6 R +16.94(primary Berk)132 180.6 R(ele)-.1 E(y)-.15 E F0(.)A F2 44.7 +(Edu ucbhosts)B 16.94(primary 32)132 192.6 R F0(.)A F2(128)A F0(.)A F2 +(in-addr)A F0(.)A F2 20.57(arpa ucbhosts)B F0(.)A F2(re)A(v)-.25 E 16.94 +(primary 0)132 204.6 R F0(.)A F2(0)A F0(.)A F2(127)A F0(.)A F2(in-addr)A +F0(.)A F2 18.07(arpa named)B F0(.)A F2(local)A(cache)132 216.6 Q F0(.) +28.34 E F2(root)99.16 E F0(.)A F2(cache)A F0 2.5(6.9.1.2. Secondary)117 +249 R(Ser)2.5 E -.1(ve)-.1 G(r).1 E F2(;)132 269.4 Q 2.5(;B)132 281.4 S +(oot \214le for Secondary Name Serv)-2.5 E(er)-.15 E(;)132 293.4 Q 2.5 +(;t)132 313.8 S 30.54(ype domain)-2.5 F(source \214le or host)71.66 E(;) +132 325.8 Q 16.94(directory /usr/local/adm/named)132 337.8 R 12.5 +(secondary Berk)132 349.8 R(ele)-.1 E(y)-.15 E F0(.)A F2 44.7(Edu 128)B +F0(.)A F2(32)A F0(.)A F2(0)A F0(.)A F2 2.5(41)C(28)-2.5 E F0(.)A F2(32)A +F0(.)A F2(0)A F0(.)A F2(10 ucbhosts.bak)A 12.5(secondary 32)132 361.8 R +F0(.)A F2(128)A F0(.)A F2(in-addr)A F0(.)A F2 20.57(arpa 128)B F0(.)A F2 +(32)A F0(.)A F2(0)A F0(.)A F2 2.5(41)C(28)-2.5 E F0(.)A F2(32)A F0(.)A +F2(0)A F0(.)A F2(10 ucbhosts.re)A -.65(v.)-.25 G(bak).65 E 21.38 +(primary 0)132 373.8 R F0(.)A F2(0)A F0(.)A F2(127)A F0(.)A F2(in-addr)A +F0(.)A F2 18.07(arpa named)B F0(.)A F2(local)A(cache)132 385.8 Q F0(.) +32.78 E F2(root)99.16 E F0(.)A F2(cache)A F0 2.5(6.9.1.3. Caching)117 +418.2 R(Only Ser)2.5 E -.1(ve)-.1 G(r).1 E F2(;)132 438.6 Q 2.5(;B)132 +450.6 S(oot \214le for Caching Only Name Serv)-2.5 E(er)-.15 E(;)132 +462.6 Q 2.5(;t)132 483 S 26.1(ype domain)-2.5 F(source \214le or host) +71.66 E(;)132 495 Q 12.5(directory /usr/local/adm/named)132 507 R(cache) +132 519 Q F0(.)28.34 E F2(root)99.16 E F0(.)A F2(cache)A 16.94 +(primary 0)132 531 R F0(.)A F2(0)A F0(.)A F2(127)A F0(.)A F2(in-addr)A +F0(.)A F2 18.07(arpa named)B F0(.)A F2(local)A F0 2.5(6.9.2. Remote)102 +587.4 R(Ser)2.5 E -.1(ve)-.1 G 2.5(r/D).1 G(NS Client)-2.5 E 2.5 +(6.9.2.1. /etc/r)117 611.4 R(esolv)-.18 E(.conf)-.7 E F2(domain Berk)132 +639.6 Q(ele)-.1 E(y)-.15 E F0(.)A F2(Edu)A(nameserv)132 651.6 Q(er 128) +-.15 E F0(.)A F2(32)A F0(.)A F2(0)A F0(.)A F2(4)A(nameserv)132 663.6 Q +(er 128)-.15 E F0(.)A F2(32)A F0(.)A F2(0)A F0(.)A F2(10)A +(sortlist 130.155.160.0/255.255.240.0 130.155.0.0)132 675.6 Q EP +%%Page: 22 22 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF 203.87(SMM:10-22 Name)72 60 R(Ser)2.5 E -.1(ve) +-.1 G 2.5(rO).1 G(perations Guide f)-2.5 E(or)-.25 E/F1 9/Times-Bold@0 +SF(BIND)2.5 E F0 2.5(6.9.3. r)102 96 R(oot.cache)-.18 E/F2 10 +/Times-Roman@0 SF(;)117 124.2 Q 17.5(;T)117 136.2 S +(his \214le holds the information on root name serv)-17.5 E +(ers needed to)-.15 E 17.5(;i)117 148.2 S +(nitialize cache of Internet domain name serv)-17.5 E(ers)-.15 E 17.5 +(;\()117 160.2 S(e.g. reference this \214le in the "cache)-17.5 E 5(.<)5 +G(\214le>")-5 E 17.5(;c)117 172.2 S +(on\214guration \214le of BIND domain name serv)-17.5 E(ers\).)-.15 E(;) +117 184.2 Q 17.5(;T)117 196.2 S(his \214le is made a)-17.5 E -.25(va)-.2 +G(ilable by InterNIC re).25 E(gistration services)-.15 E 17.5(;u)117 +208.2 S(nder anon)-17.5 E(ymous FTP as)-.15 E 27.5<3b8c>117 220.2 S 37.5 +(le /domain/named.root)-27.5 F 27.5(;o)117 232.2 S 2.5(ns)-27.5 G(erv) +-2.5 E 25(er FTP)-.15 F(.RS.INTERNIC.NET)-1.11 E 17.5(;-)117 244.2 S +(OR- under Gopher at)-17.5 E(RS.INTERNIC.NET)10 E 27.5(;u)117 256.2 S +(nder menu)-27.5 E(InterNIC Re)25 E(gistration Services \(NSI\))-.15 E +35(;s)117 268.2 S 22.5(ubmenu InterNIC)-35 F(Re)2.5 E(gistration Archi) +-.15 E -.15(ve)-.25 G(s).15 E 27.5<3b8c>117 280.2 S 37.5(le named.root) +-27.5 F(;)117 292.2 Q 17.5(;l)117 304.2 S(ast update:)-17.5 E +(Oct 5, 1994)10 E 17.5(;r)117 316.2 S(elated v)-17.5 E +(ersion of root zone:)-.15 E(1994100500)7.5 E(;)117 328.2 Q F0(.)117 +344.4 Q F2 12.5(604800 IN NS NS)110.28 F F0(.)A F2(INTERNIC)A F0(.)A F2 +(NET)A F0(.)A F2(NS)117 356.4 Q F0(.)A F2(INTERNIC)A F0(.)A F2(NET)A F0 +(.)A F2 12.5(604800 IN A)26.4 F(198)20.56 E F0(.)A F2(41)A F0(.)A F2(0)A +F0(.)A F2(4)A F0(.)117 368.4 Q F2 12.5(604800 IN NS NS1)110.28 F F0(.)A +F2(ISI)A F0(.)A F2(EDU)A F0(.)A F2(NS1)117 380.4 Q F0(.)A F2(ISI)A F0(.) +A F2(EDU)A F0(.)A F2 12.5(604800 IN A)54.73 F(128)20.56 E F0(.)A F2(9)A +F0(.)A F2(0)A F0(.)A F2(107)A F0(.)117 392.4 Q F2 12.5(604800 IN NS C) +110.28 F F0(.)A F2(PSI)A F0(.)A F2(NET)A F0(.)A F2(C)117 404.4 Q F0(.)A +F2(PSI)A F0(.)A F2(NET)A F0(.)A F2 12.5(604800 IN A)64.72 F(192)20.56 E +F0(.)A F2(33)A F0(.)A F2(4)A F0(.)A F2(12)A F0(.)117 416.4 Q F2 12.5 +(604800 IN NS TERP)110.28 F F0(.)A F2(UMD)A F0(.)A F2(EDU)A F0(.)A F2 +(TERP)117 428.4 Q F0(.)A F2(UMD)A F0(.)A F2(EDU)A F0(.)A F2 12.5 +(604800 IN A)36.95 F(128)20.56 E F0(.)A F2(8)A F0(.)A F2(10)A F0(.)A F2 +(90)A F0(.)117 440.4 Q F2 12.5(604800 IN NS NS)110.28 F F0(.)A F2 -.35 +(NA)C(SA).35 E F0(.)A F2(GO)A(V)-.5 E F0(.)A F2(NS)117 452.4 Q F0(.)A F2 +-.35(NA)C(SA).35 E F0(.)A F2(GO)A(V)-.5 E F0(.)A F2 12.5(604800 IN A) +44.47 F(128)20.56 E F0(.)A F2(102)A F0(.)A F2(16)A F0(.)A F2(10)A 12.5 +(604800 IN A)229.78 464.4 R(192)20.56 E F0(.)A F2(52)A F0(.)A F2(195)A +F0(.)A F2(10)A F0(.)117 476.4 Q F2 12.5(604800 IN NS NS)110.28 F F0(.)A +F2(ISC)A F0(.)A F2(ORG)A F0(.)A F2(NS)117 488.4 Q F0(.)A F2(ISC)A F0(.)A +F2(ORG)A F0(.)A F2 12.5(604800 IN A)55.83 F(192)20.56 E F0(.)A F2(5)A F0 +(.)A F2(5)A F0(.)A F2(241)A F0(.)117 500.4 Q F2 12.5(604800 IN NS NS) +110.28 F F0(.)A F2(NIC)A F0(.)A F2(DDN)A F0(.)A F2(MIL)A F0(.)A F2(NS) +117 512.4 Q F0(.)A F2(NIC)A F0(.)A F2(DDN)A F0(.)A F2(MIL)A F0(.)A F2 +12.5(604800 IN A)32.79 F(192)20.56 E F0(.)A F2(112)A F0(.)A F2(36)A F0 +(.)A F2(4)A F0(.)117 524.4 Q F2 12.5(604800 IN NS A)110.28 F(OS)-.55 E +F0(.)A F2(ARL)A F0(.)A F2(ARMY)A F0(.)A F2(MIL)A F0(.)A F2 -.55(AO)117 +536.4 S(S).55 E F0(.)A F2(ARL)A F0(.)A F2(ARMY)A F0(.)A F2(MIL)A F0(.)A +F2 12.5(604800 IN A)15 F(128)20.56 E F0(.)A F2(63)A F0(.)A F2(4)A F0(.)A +F2(82)A 12.5(604800 IN A)229.78 548.4 R(192)20.56 E F0(.)A F2(5)A F0(.)A +F2(25)A F0(.)A F2(82)A F0(.)117 560.4 Q F2 12.5(604800 IN NS NIC)110.28 +F F0(.)A F2(NORDU)A F0(.)A F2(NET)A F0(.)A F2(NIC)117 572.4 Q F0(.)A F2 +(NORDU)A F0(.)A F2(NET)A F0(.)A F2 12.5(604800 IN A)33.07 F(192)20.56 E +F0(.)A F2(36)A F0(.)A F2(148)A F0(.)A F2(17)A 2.5(;E)117 588.6 S +(nd of File)-2.5 E EP +%%Page: 23 23 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF(Name Ser)72 60 Q -.1(ve)-.1 G 2.5(rO).1 G +(perations Guide f)-2.5 E(or)-.25 E/F1 9/Times-Bold@0 SF 206.564 +(BIND SMM)2.5 F F0(:10-23)A 2.5(6.9.4. named.local)102 96 R/F2 10 +/Times-Roman@0 SF 15(@I)117 128.4 S 15(NS)-15 G 13.2 -.35(OA u)-15 H(cb) +.35 E -.25(va)-.15 G(x).25 E F0(.)A F2(Berk)A(ele)-.1 E(y)-.15 E F0(.)A +F2 12.5(Edu. kjd)B F0(.)A F2(ucb)A -.25(va)-.15 G(x).25 E F0(.)A F2 +(Berk)A(ele)-.1 E(y)-.15 E F0(.)A F2(Edu)A F0(.)A F2(\()2.5 E 50.44 +(1994072100 ;)201.41 140.4 R(Serial)2.5 E 75.44(10800 ;)201.41 152.4 R +(Refresh)2.5 E 80.44(1800 ;)201.41 164.4 R(Retry)2.5 E 65.44(3600000 ;) +201.41 176.4 R(Expire)2.5 E(259200 \))201.41 188.4 Q 2.5(;M)67.11 G +(inimum)-2.5 E 12.5(IN NS)141.21 200.4 R(ucb)21.87 E -.25(va)-.15 G(x) +.25 E F0(.)A F2(Berk)A(ele)-.1 E(y)-.15 E F0(.)A F2(Edu)A F0(.)A F2 2.5 +(;p)15 G(edantic)-2.5 E 19.21(1I)117 212.4 S 15(NP)-19.21 G 13.81 +(TR localhost)-15 F F0(.)A 2.5(6.9.5. host.r)102 244.8 R -.15(ev)-.18 G +F2(;)117 273 Q 10(;@)117 285 S(\(#\)ucb-hosts.re)-10 E 10(v1)-.25 G 7.5 +(.1 \(Berk)-10 F(ele)-.1 E 7.5(y\) 86/02/05)-.15 F(;)117 297 Q 28.29(@I) +117 313.2 S 15(NS)-28.29 G 13.2 -.35(OA u)-15 H(cb).35 E -.25(va)-.15 G +(x).25 E F0(.)A F2(Berk)A(ele)-.1 E(y)-.15 E F0(.)A F2(Edu)A F0(.)A F2 +(kjd)15 E F0(.)A F2(monet)A F0(.)A F2(Berk)A(ele)-.1 E(y)-.15 E F0(.)A +F2(Edu)A F0(.)A F2(\()2.5 E 50.44(1986020501 ;)214.7 325.2 R(Serial)2.5 +E 75.44(10800 ;)214.7 337.2 R(Refresh)2.5 E 80.44(1800 ;)214.7 349.2 R +(Retry)2.5 E 65.44(3600000 ;)214.7 361.2 R(Expire)2.5 E(259200 \))214.7 +373.2 Q 2.5(;M)67.11 G(inimum)-2.5 E 12.5(IN NS)154.5 385.2 R(ucbarpa) +21.87 E F0(.)A F2(Berk)A(ele)-.1 E(y)-.15 E F0(.)A F2(Edu)A F0(.)A F2 +12.5(IN NS)154.5 397.2 R(ucb)21.87 E -.25(va)-.15 G(x).25 E F0(.)A F2 +(Berk)A(ele)-.1 E(y)-.15 E F0(.)A F2(Edu)A F0(.)A F2(0)117 409.2 Q F0(.) +A F2 25(0I)C 15(NP)-25 G 13.81(TR Berk)-15 F(ele)-.1 E(y-net)-.15 E F0 +(.)A F2(Berk)A(ele)-.1 E(y)-.15 E F0(.)A F2(EDU)A F0(.)A F2 12.5(IN A) +154.5 421.2 R(255)27.43 E F0(.)A F2(255)A F0(.)A F2(255)A F0(.)A F2(0)A +(0)117 433.2 Q F0(.)A F2 12.5(130 IN PTR)B(csdi)16.31 E(v-net)-.25 E F0 +(.)A F2(Berk)A(ele)-.1 E(y)-.15 E F0(.)A F2(EDU)A F0(.)A F2(4)117 445.2 +Q F0(.)A F2 25(0I)C 15(NP)-25 G 13.81(TR ucbarpa)-15 F F0(.)A F2(Berk)A +(ele)-.1 E(y)-.15 E F0(.)A F2(Edu)A F0(.)A F2(6)117 457.2 Q F0(.)A F2 25 +(0I)C 15(NP)-25 G 13.81(TR ernie)-15 F F0(.)A F2(Berk)A(ele)-.1 E(y)-.15 +E F0(.)A F2(Edu)A F0(.)A F2(7)117 469.2 Q F0(.)A F2 25(0I)C 15(NP)-25 G +13.81(TR monet)-15 F F0(.)A F2(Berk)A(ele)-.1 E(y)-.15 E F0(.)A F2(Edu)A +F0(.)A F2(10)117 481.2 Q F0(.)A F2 20(0I)C 15(NP)-20 G 13.81(TR ucb)-15 +F -.25(va)-.15 G(x).25 E F0(.)A F2(Berk)A(ele)-.1 E(y)-.15 E F0(.)A F2 +(Edu)A F0(.)A F2(6)117 493.2 Q F0(.)A F2 12.5(130 IN PTR)B(monet)16.31 E +F0(.)A F2(Berk)A(ele)-.1 E(y)-.15 E F0(.)A F2(Edu)A F0(.)A 2.5 +(6.9.6. Hosts)102 525.6 R EP +%%Page: 24 24 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF 203.87(SMM:10-24 Name)72 60 R(Ser)2.5 E -.1(ve) +-.1 G 2.5(rO).1 G(perations Guide f)-2.5 E(or)-.25 E/F1 9/Times-Bold@0 +SF(BIND)2.5 E/F2 10/Times-Roman@0 SF(;)117 96 Q 10(;@)117 108 S 7.5 +(\(#\)ucb-hosts 1.2 \(berk)-10 F(ele)-.1 E 7.5(y\) 88/02/05)-.15 F(;)117 +120 Q 45.23(@I)117 136.2 S 15(NS)-45.23 G 29.31 -.35(OA u)-15 H(cb).35 E +-.25(va)-.15 G(x).25 E F0(.)A F2(Berk)A(ele)-.1 E(y)-.15 E F0(.)A F2 +(Edu)A F0(.)A F2(kjd)48.375 E F0(.)A F2(monet)A F0(.)A F2(Berk)A(ele)-.1 +E(y)-.15 E F0(.)A F2(Edu)A F0(.)A F2(\()2.5 E 83.815(1988020501 ;)247.75 +148.2 R(Serial)2.5 E 108.815(10800 ;)247.75 160.2 R(Refresh)2.5 E +113.815(1800 ;)247.75 172.2 R(Retry)2.5 E 98.815(3600000 ;)247.75 184.2 +R(Expire)2.5 E(259200 \))247.75 196.2 Q 2.5(;M)100.485 G(inimum)-2.5 E +12.5(IN NS)171.44 208.2 R(ucbarpa)37.98 E F0(.)A F2(Berk)A(ele)-.1 E(y) +-.15 E F0(.)A F2(Edu)A F0(.)A F2 12.5(IN NS)171.44 220.2 R(ucb)37.98 E +-.25(va)-.15 G(x).25 E F0(.)A F2(Berk)A(ele)-.1 E(y)-.15 E F0(.)A F2 +(Edu)A F0(.)A F2 15.83(localhost IN)117 232.2 R 43.54(A1)15 G(27)-43.54 +E F0(.)A F2(1)A 2.5(;n)247.75 244.2 S +(ote that 127.1 is the same as 127.0.0.1; see inet\(3n\))-2.5 E 20.29 +(ucbarpa IN)117 256.2 R 43.54(A1)15 G(28)-43.54 E F0(.)A F2(32)A F0(.)A +F2(4)A 12.5(IN A)171.44 268.2 R(10)43.54 E F0(.)A F2(0)A F0(.)A F2(0)A +F0(.)A F2(78)A 12.5(IN HINFO)171.44 280.2 R -1.35(VA)20.21 G +(X-11/780 UNIX)1.35 E 34.73(arpa IN)117 292.2 R(CN)15 E 12.5 +(AME ucbarpa)-.35 F 31.95(ernie IN)117 304.2 R 43.54(A1)15 G(28)-43.54 E +F0(.)A F2(32)A F0(.)A F2(6)A 12.5(IN HINFO)171.44 316.2 R -1.35(VA)20.21 +G(X-11/780 UNIX)1.35 E 17.51(ucbernie IN)117 328.2 R(CN)15 E 12.5 +(AME ernie)-.35 F 26.94(monet IN)117 340.2 R 43.54(A1)15 G(28)-43.54 E +F0(.)A F2(32)A F0(.)A F2(7)A 12.5(IN A)171.44 352.2 R(128)43.54 E F0(.)A +F2(32)A F0(.)A F2(130)A F0(.)A F2(6)A 12.5(IN HINFO)171.44 364.2 R -1.35 +(VA)20.21 G(X-11/750 UNIX)1.35 E 12.5(ucbmonet IN CN)117 376.2 R 12.5 +(AME monet)-.35 F(ucb)117 388.2 Q -.25(va)-.15 G 25.96(xI).25 G 11.04 15 +(NA 1)-25.96 H(0)-15 E F0(.)A F2(2)A F0(.)A F2(0)A F0(.)A F2(78)A 2.5 +(;1)247.75 400.2 S(28.32.10 means 128.32.0.10; see inet\(3n\))-2.5 E +12.5(IN A)171.44 412.2 R(128)43.54 E F0(.)A F2(32)A F0(.)A F2(10)A 2.5 +(;H)247.75 424.2 S(INFO and WKS are widely unused,)-2.5 E 2.5(;b)247.75 +436.2 S(ut we')-2.7 E(ll sho)-.1 E 2.5(wt)-.25 G(hem as e)-2.5 E +(xamples.)-.15 E 12.5(IN HINFO)171.44 448.2 R -1.35(VA)20.21 G +(X-11/750 UNIX)1.35 E 12.5(IN WKS)171.44 460.2 R +(128.32.0.10 TCP \( echo telnet)28.54 E(discard sunrpc sftp)247.75 472.2 +Q(uucp-path systat daytime)247.75 484.2 Q(netstat qotd nntp)247.75 496.2 +Q(link char)247.75 508.2 Q(gen ftp)-.18 E(auth time whhois mtp)247.75 +520.2 Q(pop rje \214nger smtp)247.75 532.2 Q(supdup hostnames)247.75 +544.2 Q(domain)247.75 556.2 Q(nameserv)247.75 568.2 Q(er \))-.15 E -.25 +(va)117 580.2 S 40.25(xI).25 G 15(NC)-40.25 G -.35(NA)-15 G 12.5(ME ucb) +.35 F -.25(va)-.15 G(x).25 E(to)117 592.2 Q 24.26(ybox IN)-.1 F 43.54 +(A1)15 G(28)-43.54 E F0(.)A F2(32)A F0(.)A F2(131)A F0(.)A F2(119)A 12.5 +(IN HINFO)171.44 604.2 R(Pro350 R)20.21 E(T11)-.6 E(to)117 616.2 Q 24.26 +(ybox IN)-.1 F 32.15(MX 0)15 F(monet.Berk)5 E(ele)-.1 E -.65(y.)-.15 G +(Edu.).65 E(csr)117 628.2 Q 37.96(gI)-.18 G 15(NM)-37.96 G 34.65(X0)-15 +G(Ralph.CS)-32.15 E 12.5(IN MX)171.44 640.2 R 2.5(0Z)34.65 G(hou.CS)-2.5 +E 12.5(IN MX)171.44 652.2 R 2.5(0P)34.65 G(ainter)-2.65 E(.CS)-.55 E +12.5(IN MX)171.44 664.2 R 2.5(0R)34.65 G(iggle.CS)-2.5 E 12.5(IN MX) +171.44 676.2 R 2.5(0T)34.65 G(erry)-3.2 E(.CS)-.65 E 12.5(IN MX)171.44 +688.2 R 2.5(0K)34.65 G -.25(ev)-2.75 G(in.CS).25 E EP +%%Page: 25 25 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF(Name Ser)72 60 Q -.1(ve)-.1 G 2.5(rO).1 G +(perations Guide f)-2.5 E(or)-.25 E/F1 9/Times-Bold@0 SF 206.564 +(BIND SMM)2.5 F F0(:10-25)A 2.5(7. Setting)72 96 R(up Y)2.5 E +(our Own Domain)-1.11 E/F2 10/Times-Roman@0 SF .86 +(When setting up a domain that is going to be on a public netw)112 112.2 +R .86(ork the site administrator should)-.1 F .375(contact the or)87 +124.2 R -.05(ga)-.18 G .375(nization in char).05 F .375(ge of the netw) +-.18 F .375(ork and request the appropriate domain re)-.1 F .375 +(gistration form.)-.15 F 1.053(An or)87 136.2 R -.05(ga)-.18 G 1.053 +(nization that belongs to multiple netw).05 F 1.053(orks \(such as the) +-.1 F/F3 10/Times-Italic@0 SF(Internet)3.553 E F2(and)3.553 E F3(BITNET) +3.553 E F2 3.552(\)s)C 1.052(hould re)-3.552 F(gister)-.15 E +(with only one netw)87 148.2 Q(ork.)-.1 E F0 2.5(7.1. Inter)87 172.2 R +(net)-.15 E F2 .091(Sites on the Internet who need information on setting up a domain should contact the re) +127 188.4 R(gistrar)-.15 E(for their netw)102 200.4 Q +(ork, which is one of the follo)-.1 E(wing:)-.25 E(MILnet)102 216.6 Q/F4 +9/Times-Roman@0 SF(HOSTMASTER)15 E F2(@)A F4(NIC)A F0(.)1.666 E F4(DDN) +1.666 E F0(.)1.666 E F4(MIL)1.666 E F2(other)102 228.6 Q F4(HOSTMASTER) +25 E F2(@)A F4(INTERNIC)A F0(.)1.666 E F4(NET)1.666 E F2 -1.1(Yo)102 +244.8 S 3.16(um)1.1 G .66(ay also w)-3.16 F .659 +(ant to be placed on the)-.1 F F4(BIND)3.159 E F2 .659 +(mailing list, which is a mail group for people on the)3.159 F 1.532 +(Internet who run)102 256.8 R F4(BIND)4.033 E F2 6.533(.T)C 1.533 +(he group discusses future design decisions, operational problems, and) +-6.533 F(other related topic.)102 268.8 Q +(The address to request being placed on this mailing list is:)5 E F3 +(bind-r)152 285 Q -.834(equest @ uunet)-.37 F F0(.)1.666 E F3(uu)1.666 E +F0(.)1.666 E F3(net)1.666 E F0 2.5(7.2. Subdomains)87 313.2 R +(of Existing Domains)2.5 E F2 .715(If you w)127 329.4 R .715 +(ant a subdomain of some e)-.1 F .715 +(xisting domain, you should \214nd the contact point for the)-.15 F .77 +(parent domain rather than asking one of the abo)102 341.4 R 1.07 -.15 +(ve t)-.15 H(op-le).15 E -.15(ve)-.25 G 3.27(lr).15 G -.15(eg)-3.27 G +3.27(istrars. There).15 F .77(should be a con)3.27 F -.15(ve)-.4 G(n-) +.15 E .715(tion that)102 353.4 R F0 -.18(re)3.215 G(gistrar).18 E F2(@)A +F3(domain)A F2(or)3.215 E F0(hostmaster)3.215 E F2(@)A F3(domain)A F2 +.715(for an)3.215 F 3.215(yg)-.15 G -2.15 -.25(iv e)-3.215 H 3.215(nd) +.25 G .714(omain will al)-3.215 F -.1(wa)-.1 G .714(ys be an alias).1 F +1.08(for that domain')102 365.4 R 3.58(sr)-.55 G -.15(eg)-3.58 G 1.08 +(istrar \(some).15 F 1.08(what analogous to)-.25 F F0(postmaster)3.58 E +F2 1.08(\), b)B 1.08(ut there is no such con)-.2 F -.15(ve)-.4 G(ntion.) +.15 E -.35(Tr)102 377.4 S 2.957(yi).35 G 2.957(ta)-2.957 G 2.957(sal) +-2.957 G .457(ast resort, b)-2.957 F .457(ut \214rst you should e)-.2 F +.456(xamine the)-.15 F F3(SO)2.956 E(A)-.55 E F2 .456 +(record for the domain and send mail to)2.956 F(the `)102 389.4 Q +(`responsible person')-.74 E 2.5('s)-.74 G(ho)-2.5 E(wn therein.)-.25 E +-1.1(Yo)5 G 2.5(uc)1.1 G(an also try)-2.5 E F3(whois)2.5 E F2(.)A F0 2.5 +(8. Domain)72 425.4 R(Management)2.5 E F2 +(This section contains information for starting, controlling and deb)112 +441.6 Q(ugging)-.2 E F3(named)2.5 E F2(.)A F0 2.5(8.1. /etc/r)87 465.6 R +(c.local)-.18 E F2 .369 +(The hostname should be set to the full domain style name in)127 481.8 R +F3(/etc/r)2.87 E(c.local)-.37 E F2(using)2.87 E F3 -.834(hostname \(1\)) +2.87 F F2(.)A(The follo)102 493.8 Q(wing entry should be added to)-.25 E +F3(/etc/r)2.5 E(c.local)-.37 E F2(to start up)2.5 E F3(named)2.5 E F2 +(at system boot time:)2.5 E F3(if [ -f /usr/sbin/named ]; then)152 510 Q +(/usr/sbin/named)162 522 Q F2([options])2.5 E F3 2.5(&e)2.5 G -.15(ch) +-2.5 G 2.5(o-).15 G 2.5(n'n)-2.5 G 2.5(amed' >/de)-2.5 F(v/console)-.15 +E<8c>152 534 Q F2 .583(This usually directly follo)102 550.2 R .583 +(ws the lines that start)-.25 F F3(syslo)3.083 E(gd)-.1 E F2(.)A F0 .582 +(Do Not)5.582 F F2 .582(attempt to run)3.082 F F3(named)3.082 E F2(from) +3.082 E F3(inetd)3.082 E F2(.)A +(This will continuously restart the name serv)102 562.2 Q +(er and defeat the purpose of the cache.)-.15 E F0 2.5(8.2. /v)87 586.2 +R(ar/run/named.pid)-.1 E F2(When)127 602.4 Q F3(named)2.605 E F2 .105 +(is successfully started up it writes its process id into the \214le) +2.605 F F3(/var/run/named.pid)2.605 E F2(.)A .113 +(This is useful to programs that w)102 614.4 R .113 +(ant to send signals to)-.1 F F3(named)2.613 E F2 2.613(.T)C .112 +(he name of this \214le may be changed)-2.613 F(by de\214ning)102 626.4 +Q F3(PIDFILE)2.5 E F2(to the ne)2.5 E 2.5(wn)-.25 G(ame when compiling) +-2.5 E F3(named)2.5 E F2(.)A F0 2.5(8.3. /etc/hosts)87 650.4 R F2(The) +127 666.6 Q F3 -.1(ge)4.281 G -.834(thostbyname \(\)).1 F F2 1.781 +(library call can detect if)4.281 F F3(named)4.282 E F2 1.782 +(is running.)4.282 F 1.782(If it is determined that)6.782 F F3(named)102 +678.6 Q F2 .109(is not running it will look in)2.609 F F3(/etc/hosts) +2.609 E F2 .109(to resolv)2.609 F 2.609(ea)-.15 G 2.609(na)-2.609 G +2.609(ddress. This)-2.609 F .109(option w)2.609 F .108(as added to allo) +-.1 F(w)-.25 E F3 -.834(ifcon\214g \(8C\))102 690.6 R F2 .016 +(to con\214gure the machines local interf)2.516 F .016 +(aces and to enable a system manager to access the)-.1 F(netw)102 702.6 +Q .41(ork while the system is in single user mode.)-.1 F .41 +(It is advisable to put the local machines interf)5.41 F(ace)-.1 E EP +%%Page: 26 26 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF 203.87(SMM:10-26 Name)72 60 R(Ser)2.5 E -.1(ve) +-.1 G 2.5(rO).1 G(perations Guide f)-2.5 E(or)-.25 E/F1 9/Times-Bold@0 +SF(BIND)2.5 E/F2 10/Times-Roman@0 SF .651 +(addresses and a couple of machine names and address in)102 96 R/F3 10 +/Times-Italic@0 SF(/etc/hosts)3.151 E F2 .652 +(so the system manager can rcp)3.151 F .071 +(\214les from another machine when the system is in single user mode.) +102 108 R .071(The format of)5.071 F F3(/etc/hosts)2.571 E F2 .071 +(has not)2.571 F .045(changed. See)102 120 R F3 -.834(hosts \(5\))2.545 +F F2 .045(for more information.)2.545 F .045 +(Since the process of reading)5.045 F F3(/etc/hosts)2.545 E F2 .046 +(is slo)2.545 F 1.346 -.65(w, i)-.25 H 2.546(ti).65 G 2.546(sn)-2.546 G +(ot)-2.546 E +(advisable to use this option when the system is in multi user mode.)102 +132 Q F0 2.5(8.4. Signals)87 168 R F2 1.163(There are se)127 184.2 R +-.15(ve)-.25 G 1.163(ral signals that can be sent to the).15 F F3(named) +3.662 E F2 1.162(process to ha)3.662 F 1.462 -.15(ve i)-.2 H 3.662(td) +.15 G 3.662(ot)-3.662 G 1.162(asks without)-3.662 F +(restarting the process.)102 196.2 Q F0 2.5(8.4.1. Reload)102 220.2 R F2 +1.782(SIGHUP - Causes)142 236.4 R F3(named)4.282 E F2 1.782(to read) +4.282 F F3(named.boot)4.282 E F2 1.782(and reload the database.)4.282 F +1.783(This is useful)6.783 F .218(when you ha)117 248.4 R .517 -.15 +(ve m)-.2 H .217(ade a change to a `).15 F(`primary')-.74 E 2.717('d) +-.74 G .217(ata \214le and you w)-2.717 F(ant)-.1 E F3(named)2.717 E F2 +1.317 -.55('s i)1.666 H .217(nternal database).55 F .685 +(to re\215ect the change.)117 260.4 R .686(If you b)5.685 F(uild)-.2 E +/F4 9/Times-Roman@0 SF(BIND)3.186 E F2 .686(with the)3.186 F F4 +(FORCED_RELO)3.186 E(AD)-.315 E F2 .686(option, then)3.186 F F4(SIGHUP) +3.186 E F2(also)3.186 E .724(has the ef)117 272.4 R .723 +(fect of scheduling all `)-.25 F(`secondary')-.74 E 3.223('z)-.74 G .723 +(ones for serial-number checks, which could lead)-3.223 F .524 +(to zone transfers ahead of the usual schedule.)117 284.4 R .525 +(Normally serial-number compares are done only)5.525 F(at the interv)117 +296.4 Q(als speci\214ed in the zone')-.25 E(s)-.55 E F4(SO)2.5 E(A)-.315 +E F2(record.)2.5 E F0 2.5(8.4.2. Deb)102 320.4 R(ugging)-.2 E F2(When) +142 336.6 Q F3(named)4.314 E F2 1.814(is running incorrectly)4.314 F +4.313(,l)-.65 G 1.813(ook \214rst in)-4.313 F F3(/var/lo)4.313 E +(g/messa)-.1 E -.1(ge)-.1 G(s).1 E F2 1.813(and check for an)4.313 F(y) +-.15 E .804(messages logged by)117 348.6 R F3(syslo)3.304 E(g)-.1 E F2 +5.804(.N)C -.15(ex)-5.804 G 3.304(ts).15 G .804 +(end it a signal to see what is happening.)-3.304 F .805 +(Unless you run it)5.804 F 1.827(with the `)117 360.6 R(`-d')-.74 E +4.327('o)-.74 G(ption,)-4.327 E F3(named)4.327 E F2 1.827(has v)4.327 F +1.827(ery little to say on its standard output or standard error)-.15 F +(.)-.55 E(Ev)117 372.6 Q(erything)-.15 E F3(named)2.5 E F2(has to say) +2.5 E 2.5(,i)-.65 G 2.5(ts)-2.5 G(ays to)-2.5 E F3(syslo)2.5 E(g)-.1 E +F2(.)A 2.612(SIGINT - Dumps the current data base and cache to)142 388.8 +R F3(/var/tmp/named_dump.db)5.112 E F2(This)5.112 E .792(should gi)117 +400.8 R 1.092 -.15(ve y)-.25 H .792 +(ou an indication to whether the data base w).15 F .792 +(as loaded correctly)-.1 F 5.792(.T)-.65 G .791(he name of the)-5.792 F +(dump \214le may be changed by de\214ning)117 412.8 Q F3(DUMPFILE)2.5 E +F2(to the ne)2.5 E 2.5(wn)-.25 G(ame when compiling)-2.5 E F3(named)2.5 +E F2(.)A F3(Note:)117 436.8 Q F2(the follo)2.5 E(wing tw)-.25 E 2.5(os) +-.1 G(ignals only w)-2.5 E(ork when)-.1 E F3(named)2.5 E F2(is b)2.5 E +(uilt with)-.2 E F3(DEB)2.5 E(UG)-.1 E F2(de\214ned.)2.5 E 1.103 +(SIGUSR1 - T)142 453 R 1.103(urns on deb)-.45 F 1.104 +(ugging. Each follo)-.2 F 1.104(wing SIGUSR1 increments the deb)-.25 F +1.104(ug le)-.2 F -.15(ve)-.25 G(l.).15 E .186(The output goes to)117 +465 R F3(/var/tmp/named.run)2.686 E F2 .186(The name of this deb)2.686 F +.186(ug \214le may be changed by de\214ning)-.2 F F3(DEB)117 477 Q +(UGFILE)-.1 E F2(to the ne)2.5 E 2.5(wn)-.25 G(ame before compiling)-2.5 +E F3(named)2.5 E F2(.)A(SIGUSR2 - T)142 493.2 Q(urns of)-.45 E 2.5(fd) +-.25 G(eb)-2.5 E(ugging completely)-.2 E(.)-.65 E -.15(Fo)117 517.2 S +5.77(rm).15 G 3.27(ore detailed deb)-5.77 F 3.27(ugging, de\214ne DEB) +-.2 F 3.27(UG when compiling the resolv)-.1 F 3.27(er routines into)-.15 +F F3(/lib/libc.a)117 529.2 Q F2(.)A .925(SIGWINCH - T)142 545.4 R .925 +(oggles tracing of all incoming queries if)-.8 F F3(named)3.424 E F2 +.924(has been compiled with)3.424 F F3(QR)117 557.4 Q(YLOG)-.18 E F2 +3.876(de\214ned. The)3.876 F 1.376 +(trace is sent to syslog, and is huge, b)3.876 F 1.377(ut it is v)-.2 F +1.377(ery useful for tracking)-.15 F(do)117 569.4 Q(wn problems.)-.25 E +2.098 -.8(To r)117 593.4 T .498 +(un with tracing of all queries specify the).8 F F3(-q)2.998 E F2 .498 +(\215ag on the command line.)2.998 F .497(If you routinely log)5.497 F +.133(queries you will probably w)117 605.4 R .133(ant to analyze the results using the dnsstats stats script in the contrib) +-.1 F(directory)117 617.4 Q(.)-.65 E(SIGIO)142 633.6 Q 2.694(T-)-.4 G +.193(Dumps statistics data into)-.001 F F3(/var/tmp/named.stats)2.693 E +F2 .193(if the serv)2.693 F .193(er is b)-.15 F .193(uilt with)-.2 F F3 +(ST)2.693 E -.37(AT)-.5 G(S).37 E F2 2.5(de\214ned. Statistics)117 645.6 +R(are appended to the \214le.)2.5 E F0 2.5(9. Building)72 681.6 R 2.5 +(aS)2.5 G(ystem with a Name Ser)-2.5 E -.1(ve)-.1 G(r).1 E F2 .335 +(BIND is composed of tw)112 697.8 R 2.835(op)-.1 G 2.835(arts. One) +-2.835 F .335(is the user interf)2.835 F .335(ace called the)-.1 F F3 +-.37(re)2.836 G(solver).37 E F2 .336(which consists of a)2.836 F .293 +(group of routines that reside in the C library)87 709.8 R F3 +(/lib/libc.a)2.793 E F2 5.293(.S)C .293(econd is the actual serv)-5.293 +F .293(er called)-.15 F F3(named)2.793 E F2 5.292(.T)C(his)-5.292 E .066 +(is a daemon that runs in the background and services queries on a gi)87 +721.8 R -.15(ve)-.25 G 2.566(nn).15 G(etw)-2.566 E .066 +(ork port. The standard port)-.1 F EP +%%Page: 27 27 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF(Name Ser)72 60 Q -.1(ve)-.1 G 2.5(rO).1 G +(perations Guide f)-2.5 E(or)-.25 E/F1 9/Times-Bold@0 SF 206.564 +(BIND SMM)2.5 F F0(:10-27)A/F2 10/Times-Roman@0 SF +(for UDP and TCP is speci\214ed in)87 96 Q/F3 10/Times-Italic@0 SF +(/etc/services)2.5 E F2(.)A F0 2.5(9.1. Resolv)87 120 R +(er Routines in libc)-.1 E F2 .11(When b)127 136.2 R .11 +(uilding your 4.3BSD system you may either b)-.2 F .109 +(uild the C library to use the name serv)-.2 F(er)-.15 E(resolv)102 +148.2 Q .415(er routines or use the host table lookup routines to do host name and address resolution.) +-.15 F(The)5.415 E(def)102 160.2 Q .94(ault resolv)-.1 F .94 +(er for 4.3BSD uses the name serv)-.15 F(er)-.15 E 5.939(.N)-.55 G -.25 +(ew)-5.939 G .939(er BSD systems include both name serv).25 F(er)-.15 E +.65(and host table functionality with preference gi)102 172.2 R -.15(ve) +-.25 G 3.15(nt).15 G 3.15(ot)-3.15 G .65(he name serv)-3.15 F .651 +(er if there is one or if there is a)-.15 F F3(/etc/r)102 184.2 Q(esolv) +-.37 E(.conf)-.74 E F2(\214le.)2.5 E 3.604 +(Building the C library to use the name serv)127 200.4 R 3.603 +(er changes the w)-.15 F(ay)-.1 E F3 -.1(ge)6.103 G(thostbyname).1 E F2 +(\(3N\),)1.666 E F3 -.1(ge)102 212.4 S(thostbyaddr).1 E F2 6.986 +(\(3N\), and)1.666 F F3(sethostent)9.486 E F2 6.986 +(\(3N\) do their functions.)1.666 F 6.987(The name serv)11.987 F 6.987 +(er renders)-.15 F F3 -.1(ge)102 224.4 S(thostent).1 E F2 .684 +(\(3N\) obsolete, since it has no concept of a ne)1.666 F .683 +(xt line in the database.)-.15 F .683(These library calls)5.683 F(are b) +102 236.4 Q(uilt with the resolv)-.2 E +(er routines needed to query the name serv)-.15 E(er)-.15 E(.)-.55 E +(The)127 252.6 Q F3 -.37(re)4.915 G(solver).37 E F2 2.416 +(contains functions that b)4.915 F 2.416(uild query pack)-.2 F 2.416 +(ets and e)-.1 F 2.416(xchange them with name)-.15 F(serv)102 264.6 Q +(ers.)-.15 E 1.587(Before b)127 280.8 R 1.587 +(uilding the 4.3BSD C library)-.2 F 4.087(,s)-.65 G 1.587(et the v) +-4.087 F(ariable)-.25 E F3(HOSTLOOKUP)4.087 E F2 1.587(equal to)4.087 F +F3(named)4.087 E F2(in)4.086 E F3(/usr/sr)102 292.8 Q(c/lib/libc/Mak) +-.37 E(e\214le)-.1 E F2 5.99(.Y)C .99(ou then mak)-7.09 F 3.49(ea)-.1 G +.99(nd install the C library and compiler and then compile)-3.49 F .733 +(the rest of the 4.3BSD system.)102 304.8 R -.15(Fo)5.733 G 3.233(rm).15 +G .733(ore information see section 6.6 of `)-3.233 F .732 +(`Installing and Operating)-.74 F(4.3BSD on the V)102 316.8 Q(AX\210') +-1.35 E('.)-.74 E 1.34(If your operating system isn')127 333 R 3.84(tV) +-.18 G 1.341(AX\210 4.3BSD, it is probably the case that your v)-5.19 F +1.341(endor has)-.15 F(included)102 345 Q F3 -.37(re)2.981 G(solver).37 +E F2 .481(support in the supplied C Library)2.981 F 5.481(.Y)-.65 G .481 +(ou should consult your v)-6.581 F(endor')-.15 E 2.98(sd)-.55 G +(ocumenta-)-2.98 E 1.038 +(tion to \214nd out what has to be done to enable)102 357 R F3 -.37(re) +3.538 G(solver).37 E F2 3.538(support. Note)3.538 F 1.039(that your v) +3.539 F(endor')-.15 E(s)-.55 E F3 -.37(re)3.539 G(solver).37 E F2 1.099 +(may be out of date with respect to the one shipped with)102 369 R/F4 9 +/Times-Roman@0 SF(BIND)3.599 E F2 3.599(,a)C 1.099(nd that you might w) +-3.599 F 1.099(ant to b)-.1 F(uild)-.2 E F4(BIND)102 381 Q F2 1.943 -.55 +('s r)D(esolv).55 E .844 +(er library and install it, and its include \214les, into your system') +-.15 F 3.344(sc)-.55 G .844(ompile/link path so)-3.344 F(that your o)102 +393 Q(wn netw)-.25 E(ork applications will be able to use the ne)-.1 E +(wer features.)-.25 E .32 LW 76 680.4 72 680.4 DL 80 680.4 76 680.4 DL +84 680.4 80 680.4 DL 88 680.4 84 680.4 DL 92 680.4 88 680.4 DL 96 680.4 +92 680.4 DL 100 680.4 96 680.4 DL 104 680.4 100 680.4 DL 108 680.4 104 +680.4 DL 112 680.4 108 680.4 DL 116 680.4 112 680.4 DL 120 680.4 116 +680.4 DL 124 680.4 120 680.4 DL 128 680.4 124 680.4 DL 132 680.4 128 +680.4 DL 136 680.4 132 680.4 DL 140 680.4 136 680.4 DL 144 680.4 140 +680.4 DL 148 680.4 144 680.4 DL 152 680.4 148 680.4 DL 156 680.4 152 +680.4 DL 160 680.4 156 680.4 DL 164 680.4 160 680.4 DL 168 680.4 164 +680.4 DL 172 680.4 168 680.4 DL 176 680.4 172 680.4 DL 180 680.4 176 +680.4 DL 184 680.4 180 680.4 DL 188 680.4 184 680.4 DL 192 680.4 188 +680.4 DL 196 680.4 192 680.4 DL 200 680.4 196 680.4 DL 204 680.4 200 +680.4 DL 208 680.4 204 680.4 DL 212 680.4 208 680.4 DL 216 680.4 212 +680.4 DL/F5 8/Times-Roman@0 SF<8856>93.6 692.4 Q(AX is a T)-1.08 E +(rademark of Digital Equipment Corporation)-.28 E EP +%%Page: 28 28 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF 203.87(SMM:10-28 Name)72 60 R(Ser)2.5 E -.1(ve) +-.1 G 2.5(rO).1 G(perations Guide f)-2.5 E(or)-.25 E/F1 9/Times-Bold@0 +SF(BIND)2.5 E F0 -.55(AC)212.13 96 S(KNO).55 E(WLEDGEMENTS \212 4.9.3) +-.5 E/F2 10/Times-Roman@0 SF(The)97 112.2 Q/F3 10/Times-Italic@0 SF +()-.1 E F2 .959(mailing list w) +3.459 F .959(as once ag)-.1 F .958(ain of great help; this release w) +-.05 F .958(ould not be)-.1 F .251 +(nearly as ready for prime time if not for their ef)72 124.2 R 2.752 +(forts. Special)-.25 F .252(commendations are o)2.752 F .252 +(wed to Robert Elz, Don)-.25 F("T)72 136.2 Q(ruck" Le)-.35 E +(wis, Bob Halle)-.25 E 1.3 -.65(y, M)-.15 H(ark Andre).65 E +(ws, Berthold P)-.25 E(af)-.15 E(frath, Ruediger V)-.25 E +(olk, and Peter K)-1.29 E(och.)-.35 E .788 +(Digital Equipment Corporation, He)97 152.4 R .787(wlett P)-.25 F .787 +(ackard, Silicon Graphics, and SunSoft all made hardw)-.15 F(are)-.1 E +-.2(av)72 164.4 S 1.156(ailable for inte)-.05 F 1.156 +(gration testing; this made the release f)-.15 F 1.156 +(ar more solid than it w)-.1 F 1.157(ould otherwise ha)-.1 F 1.457 -.15 +(ve b)-.2 H(een.).15 E .687(More hardw)72 176.4 R .687 +(are loans are welcome \212 if you are a system v)-.1 F .686 +(endor and you w)-.15 F .686(ould lik)-.1 F(e)-.1 E/F4 8/Times-Roman@0 +SF(BIND)3.186 E F2 .686(to run `)3.186 F .686(`out of)-.74 F .455 +(the box')72 188.4 R 2.955('o)-.74 G 2.955(ny)-2.955 G .455 +(our platform and are willing to lend some rusty old hardw)-2.955 F .456 +(are for the purpose, please contact)-.1 F(me \()72 200.4 Q F3 +()-.37 E F2 2.5(\)t)C 2.5(om)-2.5 G(ak)-2.5 E 2.5(et) +-.1 G(he arrangements.)-2.5 E 4.346 +(Special thanks to the Internet Softw)97 216.6 R 4.346 +(are Consortium for funding this w)-.1 F 6.845(ork. Contact)-.1 F F3 +()-.37 E F2 .971(if your or)3.471 +F -.05(ga)-.18 G .972(nization w).05 F .972(ould lik)-.1 F 3.472(et)-.1 +G 3.472(op)-3.472 G .972(articipate in funding future releases of)-3.472 +F F4(BIND)3.472 E F2 .972(and other)3.472 F(freely redistrib)72 240.6 Q +(utable softw)-.2 E(are packages that are in wide use on the Internet.) +-.1 E F0 -.55(AC)197.495 276.6 S(KNO).55 E(WLEDGEMENTS \212 thr)-.5 E +(ough 4.9)-.18 E F2 .604(The alpha-test group w)97 292.8 R .604(as e)-.1 +F .603(xtremely helpful in furnishing impro)-.15 F -.15(ve)-.15 G .603 +(ments, \214nding and repairing b).15 F(ugs,)-.2 E .843 +(and being patient.)72 304.8 R 3.343(Iw)5.843 G .844(ould lik)-3.443 F +3.344(et)-.1 G 3.344(oe)-3.344 G .844 +(xpress special thanks to Brian Reid of Digital Equipment corporation) +-3.494 F .024(for funding this w)72 316.8 R 2.524(ork. Robert)-.1 F .023 +(Elz, Alan Barrett, P)2.524 F .023(aul Albitz, Bryan Beecher)-.15 F +2.523(,A)-.4 G(ndre)-2.523 E 2.523(wP)-.25 G .023(artan, Andy Cheren-) +-2.673 F 1.097(son, T)72 328.8 R 1.098(om Limoncelli, Berthold P)-.8 F +(af)-.15 E 1.098(frath, Fuat Baran, Anant K)-.25 F(umar)-.15 E 3.598(,A) +-.4 G 1.098(rt Harkin, W)-3.598 F 1.098(in T)-.4 F 1.098(reese, Don Le) +-.35 F(wis,)-.25 E 1.606(Christophe W)72 340.8 R 1.606 +(olfhugel, and a cast of dozens all helped out abo)-.8 F 1.906 -.15 +(ve a)-.15 H 1.606(nd be).15 F 1.606(yond the call of duty)-.15 F 6.605 +(.S)-.65 G(pecial)-6.605 E .702 +(thanks to Phil Almquist, who got the project started and contrib)72 +352.8 R .703(uted a lot of the code and \214x)-.2 F .703(ed se)-.15 F +-.15(ve)-.25 G .703(ral of).15 F(the w)72 364.8 Q(orst b)-.1 E(ugs.)-.2 +E F0 -.55(AC)193.745 400.8 S(KNO).55 E(WLEDGEMENTS \212 thr)-.5 E +(ough 4.8.3)-.18 E F2(Man)97 417 Q 2.916(yt)-.15 G .416 +(hanks to the users at U. C. Berk)-2.916 F(ele)-.1 E 2.916(yf)-.15 G +.416(or f)-2.916 F .415(alling into man)-.1 F 2.915(yo)-.15 G 2.915(ft) +-2.915 G .415(he holes in)-2.915 F -.2(vo)-.4 G(lv).2 E .415 +(ed with inte)-.15 F(grat-)-.15 E .467 +(ing BIND into the system so that others w)72 429 R .467 +(ould be spared the trauma.)-.1 F 2.968(Iw)5.468 G .468(ould also lik) +-3.068 F 2.968(et)-.1 G 2.968(oe)-2.968 G .468(xtend gratitude)-3.118 F +.461(to Jim McGinness and Digital Equipment Corporation for permitting me to spend most of my time on this) +72 441 R(project.)72 453 Q .924(Ralph Campbell, Doug Kingston, Craig P) +97 469.2 R .925(artridge, Smoot Carl-Mitchell, Mik)-.15 F 3.425(eM)-.1 G +.925(uuss and e)-3.425 F -.15(ve)-.25 G(ryone).15 E .081(else on the D) +72 481.2 R(ARP)-.4 E 2.581(AI)-.92 G .081(nternet who has contrib)-2.581 +F .081(uted to the de)-.2 F -.15(ve)-.25 G .08(lopment of BIND.).15 F +1.68 -.8(To t)5.08 H .08(he members of the orig-).8 F +(inal BIND project, Douglas T)72 493.2 Q(erry)-.7 E 2.5(,M)-.65 G(ark P) +-2.5 E(ainter)-.15 E 2.5(,D)-.4 G -.2(av)-2.5 G +(id Riggle and Songnian Zhou.).2 E 1.14 +(Anne Hughes, Jim Bloom and Kirk McK)97 509.4 R 1.14(usick and the man) +-.15 F 3.64(yo)-.15 G 1.14(thers who ha)-3.64 F 1.44 -.15(ve r)-.2 H +-.25(ev).15 G(ie).25 E 1.14(wed this paper)-.25 F(gi)72 521.4 Q +(ving considerable advice.)-.25 E 1.021(This w)97 537.6 R 1.021(ork w) +-.1 F 1.021(as sponsored by the Defense Adv)-.1 F 1.021 +(anced Research Projects Agenc)-.25 F 3.52(y\()-.15 G 1.02 +(DoD\), Arpa Order)-3.52 F .786(No. 4871 monitored by the Na)72 549.6 R +-.25(va)-.2 G 3.287(lE).25 G .787 +(lectronics Systems Command under contract No. N00039-84-C-0089.)-3.287 +F 1.21(The vie)72 561.6 R 1.209(ws and conclusions contained in this document are those of the authors and should not be inter) +-.25 F(-)-.2 E 2.264(preted as representing of)72 573.6 R 2.264 +(\214cial policies, either e)-.25 F 2.265 +(xpressed or implied, of the Defense Research Projects)-.15 F(Agenc)72 +585.6 Q 1.3 -.65(y, o)-.15 H 2.5(ft).65 G(he US Go)-2.5 E -.15(ve)-.15 G +(rnment, or of Digital Equipment Corporation.).15 E EP +%%Page: 29 29 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF(Name Ser)72 60 Q -.1(ve)-.1 G 2.5(rO).1 G +(perations Guide f)-2.5 E(or)-.25 E/F1 9/Times-Bold@0 SF 206.564 +(BIND SMM)2.5 F F0(:10-29)A(REFERENCES)254.385 96 Q/F2 10/Times-Roman@0 +SF 36.73([Birrell] Birrell,)72 124.2 R .001(A. D., Le)2.501 F .001 +(vin, R., Needham, R. M., and Schroeder)-.25 F 2.501(,M)-.4 G +(.D., \231Grape)-2.501 E(vine: An Ex)-.25 E(ercise)-.15 E(in Distrib)144 +136.2 Q(uted Computing.)-.2 E 5<9a49>-.7 G(n)-5 E/F3 10/Times-Italic@0 +SF(Comm. A.C.M. 25,)2.5 E F2(4:260-274 April 1982.)2.5 E 28.94 +([RFC819] Su,)72 152.4 R 4.586(Z. Postel,)4.586 F 2.086 +(J., \231The Domain Naming Con)4.586 F -.15(ve)-.4 G 2.087 +(ntion for Internet User Applications.).15 F<9a>-.7 E F3 2.925 +(Internet Request F)144 164.4 R 2.925(or Comment 819)-1.05 F F2(Netw) +5.424 E 2.924(ork Information Center)-.1 F 5.424(,S)-.4 G 2.924 +(RI International,)-5.424 F(Menlo P)144 176.4 Q(ark, California.)-.15 E +(August 1982.)5 E 28.94([RFC974] P)72 192.6 R .933 +(artridge, C., \231Mail Routing and The Domain System.)-.15 F<9a>-.7 E +F3 .933(Internet Request F)5.933 F .933(or Comment)-1.05 F(974)144 204.6 +Q F2(Netw)3.998 E 1.498(ork Information Center)-.1 F 3.998(,S)-.4 G +1.498(RI International, Menlo P)-3.998 F 1.497(ark, California.)-.15 F +(February)6.497 E(1986.)144 216.6 Q 23.94([RFC1032] Stahl,)72 232.8 R +.202(M., \231Domain Administrators Guide\232)2.702 F F3 .202 +(Internet Request F)2.702 F .202(or Comment 1032)-1.05 F F2(Netw)2.702 E +(ork)-.1 E(Information Center)144 244.8 Q 2.5(,S)-.4 G +(RI International, Menlo P)-2.5 E(ark, California.)-.15 E(No)5 E -.15 +(ve)-.15 G(mber 1987.).15 E 23.94([RFC1033] Lottor)72 261 R 4.01(,M)-.4 +G 1.51(., \231Domain Administrators Guide\232)-4.01 F F3 1.51 +(Internet Request F)4.01 F 1.51(or Comment 1033)-1.05 F F2(Net-)4.01 E +-.1(wo)144 273 S(rk Information Center).1 E 2.5(,S)-.4 G +(RI International, Menlo P)-2.5 E(ark, California.)-.15 E(No)5 E -.15 +(ve)-.15 G(mber 1987.).15 E 23.94([RFC1034] Mockapetris,)72 289.2 R +-1.11(P.)3.434 G 3.434<2c99>1.11 G .934(Domain Names - Concept and F) +-3.434 F(acilities.)-.15 E<9a>-.7 E F3 .935(Internet Request F)5.935 F +.935(or Com-)-1.05 F 3.072(ment 1034)144 301.2 R F2(Netw)5.571 E 3.071 +(ork Information Center)-.1 F 5.571(,S)-.4 G 3.071 +(RI International, Menlo P)-5.571 F 3.071(ark, California.)-.15 F(No)144 +313.2 Q -.15(ve)-.15 G(mber 1987.).15 E 23.94([RFC1035] Mockapetris,)72 +329.4 R -1.11(P.)3.138 G 3.139<2c99>1.11 G .639 +(Domain Names - Implementation and Speci\214cation.)-3.139 F<9a>-.7 E F3 +.639(Internet Request)5.639 F -1.05(Fo)144 341.4 S 2.889(rC)1.05 G .389 +(omment 1035)-2.889 F F2(Netw)2.889 E .389(ork Information Center)-.1 F +2.889(,S)-.4 G .389(RI International, Menlo P)-2.889 F .389 +(ark, Califor)-.15 F(-)-.2 E 2.5(nia. No)144 353.4 R -.15(ve)-.15 G +(mber 1987.).15 E 23.94([RFC1101] Mockapetris,)72 369.6 R -1.11(P.)2.853 +G 2.853<2c99>1.11 G .353(DNS Encoding of Netw)-2.853 F .354 +(ork Names and Other T)-.1 F(ypes.)-.8 E<9a>-.7 E F3 .354 +(Internet Request)5.354 F -1.05(Fo)144 381.6 S 2.889(rC)1.05 G .389 +(omment 1101)-2.889 F F2(Netw)2.889 E .389(ork Information Center)-.1 F +2.889(,S)-.4 G .389(RI International, Menlo P)-2.889 F .389 +(ark, Califor)-.15 F(-)-.2 E 2.5(nia. April)144 393.6 R(1989.)2.5 E +23.94([RFC1123] R.)72 409.8 R .293(Braden, Editor)2.793 F 2.793<2c99>-.4 +G .294(Requirements for Internet Hosts -- Application and Support\232) +-2.793 F F3(Internet)2.794 E .369(Request F)144 421.8 R .369 +(or Comment 1123)-1.05 F F2(Netw)2.869 E .369(ork Information Center)-.1 +F 2.869(,S)-.4 G .369(RI International, Menlo P)-2.869 F(ark,)-.15 E 2.5 +(California. October)144 433.8 R(1989.)2.5 E 23.94([RFC1183] Ev)72 450 R +1.525(erhart, C., Mamak)-.15 F 1.526 +(os, L., Ullmann, R., and Mockapetris, P)-.1 F 1.526(., \231Ne)-1.11 F +4.026(wD)-.25 G 1.526(NS RR De\214ni-)-4.026 F(tions\232)144 462 Q F3 +1.688(Internet Request F)4.188 F 1.688(or Comment 1183)-1.05 F F2(Netw) +4.188 E 1.688(ork Information Center)-.1 F 4.188(,S)-.4 G 1.688 +(RI Interna-)-4.188 F(tional, Menlo P)144 474 Q(ark, California.)-.15 E +(October 1990.)5 E 23.94([RFC1327] Hardcastle-Kille,)72 490.2 R .805 +(S., \231Mapping between X.400\(1988\) / ISO 10021 and RFC 822\232)3.305 +F F3(Inter)3.306 E(-)-.2 E 1.215(net Request F)144 502.2 R 1.215 +(or Comment 1327)-1.05 F F2(Netw)3.715 E 1.215(ork Information Center) +-.1 F 3.715(,S)-.4 G 1.215(RI International, Menlo)-3.715 F -.15(Pa)144 +514.2 S(rk, California.).15 E(May 1992.)5 E 23.94([RFC1664] Allocchio,) +72 530.4 R .14(C., Bonito, A., Cole, B., Giordano, S., Hagens, R., \231Using the Internet DNS to) +2.64 F(Distrib)144 542.4 Q .263(ute RFC1327 Mail Address Mapping T)-.2 F +(ables\232)-.8 E F3 .263(Internet Request F)2.763 F .263 +(or Comment 1664)-1.05 F F2(Netw)144 554.4 Q(ork Information Center)-.1 +E 2.5(,S)-.4 G(RI International, Menlo P)-2.5 E(ark, California.)-.15 E +(August 1994.)5 E 23.94([RFC1713] Romao,)72 570.6 R .173(A., \231T)2.673 +F .173(ools for DNS deb)-.8 F(ugging\232)-.2 E F3 .173 +(Internet Request F)2.673 F .174(or Comment 1713, also FYI27)-1.05 F F2 +(Netw)144 582.6 Q .019(ork Information Center)-.1 F 2.519(,S)-.4 G .019 +(RI International, Menlo P)-2.519 F .019(ark, California.)-.15 F(No) +5.019 E -.15(ve)-.15 G .018(mber 1994.).15 F([T)72 598.8 Q 41.33 +(erry] T)-.7 F(erry)-.7 E 4.677(,D)-.65 G 4.677(.B)-4.677 G 2.178(., P) +-4.677 F(ainter)-.15 E 4.678(,M)-.4 G 2.178(., Riggle, D. W)-4.678 F +2.178(., and Zhou, S.,)-.92 F F3 2.178(The Berk)4.678 F(ele)-.1 E 4.678 +(yI)-.3 G 2.178(nternet Name)-4.678 F .747(Domain Server)144 610.8 R(.) +-1.11 E F2 .747(Proceedings USENIX Summer Conference, Salt Lak)5.747 F +3.247(eC)-.1 G(ity)-3.247 E 3.247(,U)-.65 G 3.247(tah. June)-3.247 F +(1984, pages 23-31.)144 622.8 Q 41.73([Zhou] Zhou,)72 639 R(S.,)2.745 E +F3 .246(The Design and Implementation of the Berk)2.745 F(ele)-.1 E +2.746(yI)-.3 G .246(nternet Name Domain \(BIND\))-2.746 F(Server)144 651 +Q(s.)-.1 E F2 .465(UCB/CSD 84/177.)5.465 F(Uni)5.465 E -.15(ve)-.25 G +.464(rsity of California, Berk).15 F(ele)-.1 E 1.764 -.65(y, C)-.15 H +.464(omputer Science Di).65 F(vi-)-.25 E 2.5(sion. May)144 663 R(1984.) +2.5 E 12.85([Mockapetris] Mockapetris,)72 679.2 R -1.11(P.)3.462 G 3.462 +(,D)1.11 G .962(unlap, K,)-3.462 F F3(De)3.463 E .963 +(velopment of the Domain Name System)-.15 F F2 -.4(AC)3.463 G 3.463(MC) +.4 G(omputer)-3.463 E 2.058(Communications Re)144 691.2 R(vie)-.25 E +4.558(w1)-.25 G 2.058(8, 4:123-133.)-4.558 F 2.057(Proceedings A)7.058 F +2.057(CM SIGCOMM '88)-.4 F(Sympo-)7.057 E(sium, August 1988.)144 703.2 Q +EP +%%Page: 30 30 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Bold@0 SF 203.87(SMM:10-30 Name)72 60 R(Ser)2.5 E -.1(ve) +-.1 G 2.5(rO).1 G(perations Guide f)-2.5 E(or)-.25 E/F1 9/Times-Bold@0 +SF(BIND)2.5 E/F2 10/Times-Roman@0 SF 48.95([Liu] Liu,)72 96 R 1.09 +(C., Albitz, P)3.59 F(.,)-1.11 E/F3 10/Times-Italic@0 SF 1.09 +(DNS and BIND)3.59 F F2 1.09 +(O'Reilly & Associates, Sebastopol, CA, 502 pages,)3.59 F +(ISBN 0-937175-82-X 1992)144 108 Q EP +%%Trailer +end +%%EOF diff --git a/usr.sbin/named/doc/bog/files.me b/usr.sbin/named/doc/bog/files.me new file mode 100644 index 000000000000..7e7552526672 --- /dev/null +++ b/usr.sbin/named/doc/bog/files.me @@ -0,0 +1,1154 @@ +.\" ++Copyright++ 1986, 1988, 1995 +.\" - +.\" Copyright (c) 1986, 1988, 1995 +.\" The Regents of the University of California. All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" - +.\" Portions Copyright (c) 1993 by Digital Equipment Corporation. +.\" +.\" Permission to use, copy, modify, and distribute this software for any +.\" purpose with or without fee is hereby granted, provided that the above +.\" copyright notice and this permission notice appear in all copies, and that +.\" the name of Digital Equipment Corporation not be used in advertising or +.\" publicity pertaining to distribution of the document or software without +.\" specific, written prior permission. +.\" +.\" THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL +.\" WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES +.\" OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT +.\" CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL +.\" DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR +.\" PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS +.\" ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +.\" SOFTWARE. +.\" - +.\" --Copyright-- +.\" +.\" @(#)files.me 6.8 (Berkeley) 9/19/89 +.\" +.sh 1 "Files +.pp +The name server uses several files to load its data base. +This section covers the files and their formats needed for \fInamed\fP. +.sh 2 "Boot File" +.pp +This is the file that is first read when \fInamed\fP starts up. +This tells the server what type of server it is, +which +zones it has authority over and where to get its initial data. +The default location for this file is \fI/etc\|/named.boot\fP\|. +However this can be changed +by setting the \fIBOOTFILE\fP variable when you compile \fInamed\fP +or by specifying +the location on the command line when \fInamed\fP is started up. +.sh 3 "Domain" +.pp +A default domain may be specified for the name server +using a line such as +.(b l +.ta 0.5i +\w`secondary `u +\w`berkeley.edu `u +.5i +.5i +\fIdomain Berkeley\fP\fB\|.\|\fP\fIEdu\fP +.)b +.re +Older name servers use this information when they receive a query for a name +without a ``\fB.\fP'' that is not known. Newer designs assume that the +resolver library will append its own idea of a ``default domain'' to any +unqualified names. Though the name server can still be compiled with +support for the \fIdomain\fP directive in the boot file, the default is to +leave it out and we strenuously recommend against its use. If you use this +feature, clients outside your local domain which send you requests about +unqualified names will have the implicit qualification of your domain rather +than theirs. The proper place for this function is on the client, in their +\fB/etc/resolv.conf\fP (or equivalent) file. Use of the \fIdomain\fP +directive in your boot file is strongly discouraged. +.sh 3 "Directory" +.pp +The \fIdirectory\fP directive specifies the directory in which the name server +should run, allowing the other file names in the boot file to use relative path +names. There can be only one \fIdirectory\fP directive and it should be given +before any other directives that specify file names. +.(b l +.ta 0.5i +\w`secondary `u +\w`berkeley.edu `u +.5i +.5i +\fIdirectory /var/named\fP +.)b +.re +If you have more than a couple of named files to be maintained, you may wish +to place the named files in a directory such as /var/named and adjust the +directory command properly. The main purposes of this command are to make +sure named is in the proper directory when trying to include files by +relative path names with $INCLUDE and to allow named to run in a location +that is reasonable to dump core if it feels the urge. +.sh 3 "Primary Service" +.pp +The line in the boot file that designates the server as a primary master server +for a zone looks as follows: +.(b l +.ta 0.5i +\w`secondary `u +\w`berkeley.edu `u +.5i +.5i +\fIprimary Berkeley\fP\fB\|.\|\fP\fIEdu ucbhosts\fP +.)b +.re +The first field specifies that the server is a primary one for the zone +stated in the second field. +The third field is the name of the file from which the data is read. +.pp +The above assumes that the zone you are specifying is a class \fIIN\fP +zone. If you wish to designate a different class you can append +\fI/class\fP to the first field, where \fIclass\fP is either the +integer value or the standard mnemonic for the class. For example the line +for a primary server for a hesiod class zone looks as follows: +.(b l +.ta 0.5i +\w`secondary `u +\w`berkeley.edu `u +.5i +.5i +\fIprimary/HS Berkeley\fP\fB\|.\|\fP\fIEdu hesiod.data\fP +.)b +.re +Note that this support for specifying other than class \fIIN\fP zones is a +compile-time option which your vendor may not have enabled when they built +your operating system. +.sh 3 "Secondary Service" +.pp +The line for a secondary server is similar to the primary except +that it lists addresses of other servers (usually primary servers) +from which the zone data will be obtained. +.(b l +.ta 0.5i +\w`secondary `u +\w`berkeley.edu `u +\w`128.32.0.10 `u +\w`128.32.0.10 `u +.5i +.5i +\fIsecondary Berkeley\fP\fB\|.\|\fP\fIEdu 128\fP\fB.\fP\fI32\fP\fB.\fP\fI0\fP\fB.\fP\fI10 \fP\fI128\fP\fB.\fP\fI32\fP\fB.\fP\fI0\fP\fB.\fP\fI4\fP \fIucbhosts.bak\fP +.)b +.re +The first field specifies that the server is a secondary server for +the zone stated in the second field. +The two network addresses specify the name servers which have data for the +zone. Note that at least one of these will be a \fIprimary\fP, and, unless +you are using some protocol other than \s-1IP/DNS\s+1 for your zone transfer +mechanism, the others will all be other \fIsecondary\fP servers. Having your +secondary server pull data from other secondary servers is usually unwise, +since you can add delay to the propagation of zone updates if your network's +connectivity varies in pathological but common ways. The intended use for +multiple addresses on a \fIsecondary\fP declaration is when the \fIprimary\fP +server has multiple network interfaces and therefore multiple host addresses. +The secondary server gets its data across the network from one of the listed +servers. The server addresses are tried in the order listed. +If a filename is present after the list of primary servers, data for the zone +will be dumped into that file as a backup. +When the server is first started, the data is loaded from the backup file +if possible, and a primary server is then consulted to check that the zone +is still up-to-date. Note that listing your server as a \fIsecondary\fP +server does not necessarily make it one \(em the parent zone must +\fIdelegate\fP authority to your server as well as the primary and the +other secondaries, or you will be transferring a zone over for no reason; +no other server will have a reason to query you for that zone unless the +parent zone lists you as a server for the zone. +.pp +As with primary you may specify a secondary server for a class other than +\fIIN\fP by appending \fI/class\fP to the \fIsecondary\fP keyword, e.g., +\fIsecondary/HS\fP. +.sh 3 "Stub Service" +.pp +The line for a stub server is similar to a secondary. +(This feature is experimental as of 4.9.3.) +.(b l +.ta 0.5i +\w`stub `u +\w`berkeley.edu `u +\w`128.32.0.10 `u +\w`128.32.0.10 `u +.5i +.5i +\fIstub Berkeley\fP\fB\|.\|\fP\fIEdu 128\fP\fB.\fP\fI32\fP\fB.\fP\fI0\fP\fB.\fP\fI10 \fP\fI128\fP\fB.\fP\fI32\fP\fB.\fP\fI0\fP\fB.\fP\fI4\fP \fIucbhosts.bak\fP +.)b +.re +The first field specifies that the server is a stub server for the zone stated +in the second field. +.pp +Stub zones are intended to ensure that a primary for a zone always has the +correct \fINS\fP records for children of that zone. If the primary is not +a secondary for a child zone it should be configured with stub zones for +all its children. Stub zones provide a mechanism to allow \fINS\fP records +for a zone to be specified in only one place. +.(b l +.ta 0.5i +\w`primary `u +\w`dms.csiro.au `u +\w`130.155.98.1 `u +.5i +.5i +\fIprimary CSIRO\fP\fB\|.\|\fP\fIAU \fIcsiro.dat\fP +\fIstub dms.CSIRO\fP\fB\|.\|\fP\fIAU 130\fP\fB.\fP\fI155\fP\fB.\fP\fI16\fP\fB.\fP\fI1 \fIdms.stub\fP +\fIstub dap.CSIRO\fP\fB\|.\|\fP\fIAU 130\fP\fB.\fP\fI155\fP\fB.\fP\fI98\fP\fB.\fP\fI1 \fIdap.stub\fP +.)b +.re +.sh 3 "Cache Initialization" +.pp +All servers, including ``caching only'' servers, should have a line as +follows in the boot file to prime the name servers cache: +.(b l +\fIcache \fP\fB.\fP\fI root\fP\fB.\fP\fIcache\fP +.)b +Do not put anything into your \fIcache\fP files other than root server +information. +.pp +All cache files listed will be read in at named boot time and any values +still valid will be reinstated in the cache. +The root name server +information in the cache files will be used until a root query is +actually answered by one of the name servers in the cache file, after +which that answer will be used instead of the cache file until the answer +times out. +.pp +As with \fIprimary\fP and \fIsecondary\fP, you may specify a secondary +server for a class other than \fIIN\fP by appending \fI/class\fP to the +\fIcache\fP keyword, e.g., \fIclass/HS\fP. +.sh 3 "Forwarders" +.pp +Any server can make use of \fIforwarders\fP. A \fIforwarder\fP is another +server capable of processing recursive queries that is willing to try +resolving queries on behalf of other systems. The \fIforwarders\fP +command specifies forwarders by internet address as follows: +.(b l +\fIforwarders \fI128\fP\fB.\fP\fI32\fP\fB.\fP\fI0\fP\fB.\fP\fI10 \fP\fI128\fP\fB.\fP\fI32\fP\fB.\fP\fI0\fP\fB.\fP\fI4\fP +.)b +.re +There are two main reasons for wanting to do so. First, some systems may +not have full network access and may be prevented from sending any IP +packets into the rest of the Internet and therefore must rely on a forwarder +which does have access to the full net. The second reason is that the +forwarder sees a union of all queries as they pass through its server and +therefore it builds up a very rich cache of data compared to the cache in a +typical workstation name server. In effect, the \fIforwarder\fP becomes a +meta-cache that all hosts can benefit from, thereby reducing the total +number of queries from that site to the rest of the net. +.pp +The effect of ``forwarders'' is to prepend some fixed addresses to the list +of name servers to be tried for every query. Normally that list is made up +only of higher-authority servers discovered via \fINS\fP record lookups for +the relevant domain. If the forwarders do not answer, then unless the +\fIslave\fP directive was given, the appropriate servers for the domains +will be queried directly. + +.sh 3 "Slave Servers" +.pp +Slave mode is used if the use of forwarders is the only possible way +to resolve queries due to lack of full net access or if you wish to prevent +the name server from using other than the listed forwarders. +Slave mode is activated by placing the simple command +.(b l +\fIoptions forward-only\fP +.)b +in the bootfile. If this option is used, then you must specify forwarders. +When in slave mode, the server will forward each query to each of the +forwarders until an answer is found or the list of forwarders is exhausted. +The server will not try to contact any remote name server other than those +named in the \fIforwarders\fP list. +.pp +So while \fIforwarders\fP prepends addresses to the ``server list'' for each +query, \fIoptions forward-only\fP causes the ``server list'' to contain +\fIonly\fP those addresses listed in the \fIforwarders\fP declarations. +Careless use of the \fIoptions forward-only\fP directive can cause really +horrible forwarding loops, since +you could end up forwarding queries only to some set of hosts which are also +slaves, and one or several of them could be forwarding queries back to you. +.pp +Use of the \fIoptions forward-only\fP directive should be considered very +carefully. Note that this same behaviour can be achieved using the deprecated +directive, \fIslave\fP. + +.sh 3 "Nonrecursive Servers" +.pp +\s-1BIND\s+1's separation of authoritative (zone) and nonauthoritiative (cache) +data has always been somewhat weak, and pollution of the former via the latter +has been known to occur. One way to prevent this, as well as to save memory on +servers carrying a lot of authoritative data (e.g., root servers) is to make +such servers ``nonrecursive.'' This can be achieved via the directive +.(b l +\fIoptions no-recursion\fP +.)b +in the bootfile. A server with this option enabled will not attempt to fetch +data to help answer queries \(em if you ask it for data it does not have, it +will send you a referral to a more authoritative server or, if it is itself +authoritative for the zone of the query, it will send you an negative answer. +.pp +A nonrecursive server can be named in an \s-1NS\ RR\s+1 but it cannot be listed +in the \fIresolv.conf\fP file. + +.sh 3 "Query Logging" +.pp +If the file system containing your \fIsyslog\fP file has quite a bit of space, +you can consider using the +.(b l +\fIoptions query-log\fP +.)b +directive in your bootfile. This will cause your name server to log every +query it receives, which when combined with a Perl or \s-1AWK\s+1 script to +postprocess the logs, can be a useful management tool. + +.sh 3 "Inverse Query Pseudosupport" +.pp +\s-1BIND\s+1 by default does not support inverse queries, and this has been +known to cause problems for certain microcomputer operating systems and for +older versions of \s-1BIND\s+1's \fInslookup\fP tool. You may decide that +rather than answering with ``operation not implemented,'' \fInamed\fP should +detect the most common inverse queries and answer them with bogus information. +It is better to upgrade your clients to stop depending on inverse queries, but +if that is not possible, you should use the +.(b l +\fIoptions fake-iquery\fP +.)b +directive in your bootfile. \fINOTE:\fP the responses are in fact bogus, in +that they contain \s-1ISO\s+18859 square brackets (\fB[\fP and \fB]\fP), so +your clients will not be able to do anything useful with these responses. It +has been observed that no client ever did anything useful with real inverse +query responses, either. + +.sh 3 "Setting Name Server Limits" +.pp +Some name server operations can be quite resource intensive, and in order to +tune your system properly it is sometimes necessary to change \s-1BIND\s+1's +internal quotas. This is accomplished via +.(b l +\fIlimit \fP +.)b +directives in the bootfile. Limits, and their default values, are as follows: +.(b I +\fIlimit transfers-in 10\fP +.)b +This is the number of simultaneous \fInamed-xfer\fP processes \s-1BIND\s+1 is +willing to start. Higher numbers yield faster convergence to primary servers +if your secondary server has hundreds or thousands of zones to maintain, but +setting this number too high can cause thrashing due to starvation of resources +such as network bandwidth or swap space. \fINOTE:\fP this limit can also be +expressed via the deprecated directive \fImax-fetch NN\fP. +.(b I +\fIlimit transfers-per-ns 2\fP +.)b +This is the number of simultaneous \fInamed-xfer\fP processes \s-1BIND\s+1 is +willing to initiate \fIto any given name server\fP. In most cases, you should +not need to change it. If your secondary server is pulling hundreds or +thousands of zones from a single primary server, increasing +\fItransfers-per-ns\fP may speed convergence. It should be kept as +small as possible, to avoid causing thrashing and resource starvation +on the primary server. +.(b I +\fIlimit datasize \fP +.)b +Most systems have a quota that limits the size of the so-called ``data +segment,'' which is where \s-1BIND\s+1 keeps all of its authority and cache +data. \s-1BIND\s+1 will behave suboptimally (perhaps even exiting) if it runs +up against this quota. If your system supports a system call to change this +quota for a given process, you can ask \s-1BIND\s+1 to use that system call +via the \fIlimit datasize NN\fP directive. The value given here may be scaled +by postfixing \fIk\fP for 1024X, \fIm\fP for (1024^2)X, and \fIg\fP for +(1024^3)X. In 1995, the root servers all use \fIlimit datasize 64m\fP. + +.sh 3 "Zone Transfer Restrictions" +.pp +It may be the case that your organization does not wish to give complete +lists of your hosts to anyone on the Internet who can reach your name servers. +While it is still possible for people to ``iterate'' through your address +range, looking for \fIPTR\fP records, and build a list of your hosts the +``slow'' way, it is still considered reasonable to restrict your export of +zones via the zone transfer protocol. To limit the list of neighbors who +can transfer zones from your server, use the \fIxfrnets\fP directive. +.pp +This directive has the same syntax as \fIforwarders\fP except that you can +list network numbers in addition to host addresses. For example, you could +add the directive +.(b l +\fIxfrnets 16.0.0.0\fP +.)b +.re +if you wanted to permit only hosts on Class A network number 16 to transfer +zones from your server. This is not nearly granular enough, and a future +version of \s-1BIND\s+1 will permit such access-control to be specified on a +per-host basis rather than the current per-net basis. Note that while +addresses without explicit masks are assumed by this directive to be networks, +you can specify a mask which is as granular as you wish, perhaps including +all bits of the address such that only a single host is given transfer +permission. For example, consider +.(b l +\fIxfrnets 16.1.0.2&255.255.255.255\fP +.)b +which would permit only host \fI16.1.0.2\fP to transfer zones from you. Note +that no spaces are allowed surrounding the ``\fI&\fP'' character that +introduces a netmask. +.pp +The \fIxfrnets\fP directive may also be given as \fItcplist\fP for +compatibility with interim releases of \s-1BIND\s+1 4.9. + +.sh 3 "Sorting Addresses" +.pp +If there are multiple addresses available for a name server which \s-1BIND\s+1 +wants to contact, \s-1BIND\s+1 will try the ones it believes are ``closest'' +first. ``Closeness'' is defined in terms of similarity-of-address; that is, +if one address is on the same \fIsubnet\fP as some interface of the local host, +then that address will be tried first. Failing that, an address which is on +the same \fInetwork\fP will be tried first. Failing that, they will be tried +in a more-or-less random order unless the \fIsortlist\fP directive was given +in the \fInamed.boot\fP file. \fIsortlist\fP has a syntax similar to +\fIforwarders\fP, \fIxfrnets\fP, and \fIbogusns\fP \(em you give it a list +of dotted-quad networks and it uses these to ``prefer'' some remote name server +addresses over others. If no explicit mask is provided with each element of +a \fIsortlist\fP, one will be inferred based on the high order address bits. +.pp +If you are on a Class C net which has a Class B net between you and the rest +of the Internet, you could try to improve the name server's luck in getting +answers by listing the Class B network's number in a \fIsortlist\fP +directive. This should have the effect of trying ``closer'' servers before +the more ``distant'' ones. Note that this behaviour is new as of \s-1BIND +4.9\s+1. +.pp +The other and older effect of the \fIsortlist\fP directive is to cause +\s-1BIND\s+1 to sort the \fIA\fP records in any response it generates, so as +to put those which appear on the \fIsortlist\fP earlier than those which do +not. This is not as helpful as you might think, since many clients will +reorder the \fIA\fP records either at random or using \s-1LIFO\s+1; also, +consider the fact that the server won't be able to guess the client's network +topology, and so will not be able to accurately order for ``closeness'' to +all possible clients. Doing the ordering in the resolver is clearly superior. +.pp +In actual practice, this directive is used only rarely since it hardwires +information which changes rapidly; a network which is ``close'' today may +be ``distant'' next month. Since \s-1BIND\s+1 builds up a cache of the +remote name servers' response times, it will quickly converge on +``reasonable'' behaviour, which isn't the same as ``optimal'' but it's +close enough. Future directions for \s-1BIND\s+1 include choosing +addresses based on local interface metrics (on hosts that have more than +one) and perhaps on routing table information. We do not intend to solve +the generalized ``multihomed host'' problem, but we should be able to do a +little better than we're doing now. Likewise, we hope to see a higher +level resolver library that sorts responses using topology information that +only exists on the client's host. + +.sh 3 "Bogus Name Servers" +.pp +It happens occasionally that some remote name server goes ``bad''. You can +tell your name server to refuse to listen to or ask questions of certain +other name servers by listing them in a \fIbogusns\fP directive in your +\fInamed.boot\fP file. Its syntax is the same as \fIforwarders\fP, +\fIxfrnets\fP, and \fIsortlist\fP \(em you just give it a list of dotted-quad +Internet addresses. Note that zones delegated to such servers will not be +reachable from clients of your servers; thus you should use this directive +sparingly or not at all. + +.sh 3 "Segmented Boot Files" +.pp +If you are secondary for a lot of zones, you may find it convenient to split +your \fInamed.boot\fP file into a static portion which hardly ever changes +(directives such as \fIdirectory\fP, \fIsortlist\fP, \fIxfrnets\fP and +\fIcache\fP could go here), and dynamic portions that change frequently +(all of your \fIprimary\fP directives might go in one file, and all of your +\fIsecondary\fP directives might go in another file \(em and either or both +of these might be fetched automatically from some neighbor so that they can +change your list of secondary zones without requiring your active +intervention). You can accomplish this via the \fIinclude\fP directive, +which takes just a single file name as its argument. No quotes are needed +around the file name. The file name will be evaluated after the name server +has changed its working directory to that specified in the \fIdirectory\fP +directive, so you can use relative pathnames if your system supports them. + +.sh 2 "Resolver Configuration" +.pp +The configuration file's name is \fI/etc/resolv.conf\fP. +This file designates the name servers on the network that should +be sent queries. +The resolver will try to contact a name server on the localhost if it cannot +find its configuration file. You should install the configuration file +on every host anyway, since this is the only recommended way to specify a +system-level default domain, and you can still list the local host's address +if it runs a name server. +It is considered reasonable to create this file even if you run a local +server, since its contents will be cached by each client of the resolver +library when the client makes its first call to a resolver routine. +.pp +The \fIresolv.conf\fP file contains directives, one per line, of the +following forms: +.(l I +; comment +# another comment +domain \fIlocal-domain\fP +search \fIsearch-list\fP +nameserver \fIserver-address\fP +sortlist \fIsort-list\fP +options \fIoption-list\fP +.)l +Exactly one of the \fIdomain\fP or \fIsearch\fP directives should be given, +exactly once. +If the \fIsearch\fP directive is given, the first item in the given +\fIsearch-list\fP will override any previously-specified \fIlocal-domain\fP. +The \fInameserver\fP directive may be given up to three times; additional +\fInameserver\fP directives will be ignored. Comments may be given by +starting a line with a ``\fB\|;\|\fP'' or ``\fB\|#\|\fP''; note that +comments were not permitted in versions of the resolver earlier than the one +included with \s-1BIND 4.9\s+1 \(em so if your vendor's resolver supports +comments, you know they are really on the ball. +.pp +The \fIlocal-domain\fP will be appended to any query-name that does not +contain a ``\fB\|.\|\fP''. \fIlocal-domain\fP can be overridden on a +per-process basis by setting the \s-1LOCALDOMAIN\s+1 environment variable. +Note that \fIlocal-domain\fP processing can be disabled by setting an +option in the resolver. +.pp +The \fIsearch-list\fP is a list of domains which are tried, in order, +as qualifying domains for query-names which do not contain a ``\fB\|.\|\fP''. +Note that \fIsearch-list\fP processing can be disabled by setting an +option in the resolver. Also note that the environment variable +``\s-1LOCALDOMAIN\s+1'' can override this \fIsearch-list\fP on a per-process +basis. +.pp +The \fIserver-address\fP\|'s are aggregated and then used as the default +destination of queries generated through the resolver. In other words, +this is the way you tell the resolver which name servers it should use. It +is possible for a given client application to override this list, and this +is often done inside the name server (which is itself a \fIresolver\fP +client) and in test programs such as \fInslookup\fP. +Note that if you wish to list the +local host in your resolver configuration file, you should probably use its +primary Internet address rather than a local-host alias such as 127.0.0.1 or +0.0.0.0. This is due to a bug in the handling of connected \s-1SOCK_DGRAM\s+1 +sockets in some versions of the \s+1BSD\s-1 networking code. If you must use +an address-alias, you should prefer 0.0.0.0 (or simply ``0'') over 127.0.0.1, +though be warned that depending on the vintage of your \s-1BSD\s+1-derived +networking code, both of them are capable of failing in their own ways. +If your host's IP +implementation does not create a short-circuit route between the default +interface and the loopback interface, then you might also want to add a +static route (eg. in \fB/etc/rc.local\fP) to do so: +.(b l +\fIroute add myhost.domain.name localhost 1\fP +.)b +.pp +The \fIsort-list\fP is a list of IP address, netmask pairs. Addresses +returned by gethostbyname are sorted to the order specified by this list. +Any addresses that do not match the address netmask pair will be returned +after those that do. The netmask is optional and the natural netmask will be +used if not specified. +.pp +The \fIoption-list\fP is a list of options which each override some internal +resolver variable. Supported options at this time are: +.ip \fBdebug\fP +sets the \s-1RES_DEBUG\s+1 bit in \fB_res.options\fP. +.ip \fBndots:\fP\fIn\fP +sets the lower threshold (measured in ``number of dots'') on names given to +\fIres_query\fP() such that names with more than this number of dots will be +tried as absolute names before any \fIlocal-domain\fP or \fIsearch-list\fP +processing is done. The default for this internal variable is ``1''. +.\" .pp +.\" Finally, if the environment variable \s-1HOSTALIASES\s+1 is set, it is +.\" taken to contain the name of a file which in turn contains resolver-level +.\" aliases. These aliases are applied only to names which do not contain any +.\" ``\fB\|.\|\fP'' characters, and they are applied to query-names before the +.\" query is generated. Note that the resolver options governing the operation +.\" of \fIlocal-domain\fP and \fIsearch-list\fP do not apply to +.\" \s-1HOSTALIASES\s+1. + +.sh 2 "Cache Initialization File" +.sh 3 root.cache +.pp +The name server needs to know the servers that are the authoritative name +servers for the root domain of the network. To do this we have to prime the +name server's cache with the addresses of these higher authorities. The +location of this file is specified in the boot file. This file uses the +Standard Resource Record Format (aka. Masterfile Format) covered further on +in this paper. + +.sh 2 "Domain Data Files" +.pp +There are two standard files for specifying the data for a +domain. These are \fIhosts\fP and \fIhost.rev\fP. +These files use the Standard Resource Record Format covered later +in this paper. Note that the file names are arbitrary; many network +administrators prefer to name their zone files after the domains they +contain, especially in the average case which is where a given server +is primary and/or secondary for many different zones. +.sh 3 hosts +.pp +This file contains all the data about the machines in this zone. +The location of this file is specified in the boot file. +.sh 3 hosts.rev +.pp +This file specifies the IN-ADDR\|.\|ARPA domain. +This is a special domain for allowing address to name mapping. +As internet host addresses do not fall within domain boundaries, +this special domain was formed to allow inverse mapping. +The IN-ADDR\|.\|ARPA domain has four +labels preceding it. These labels correspond to the 4 octets of +an Internet address. +All four octets must be specified even if an octet contains zero. +The Internet address 128.32.0.4 is located in the domain +4\|.\|0\|.\|32\|.\|128\|.\|IN-ADDR\|.\|ARPA. +This reversal of the address is awkward to read but allows +for the natural grouping of hosts in a network. +.sh 3 named.local +.pp +This file specifies the \fIPTR\fP record for the local loopback interface, +better known as \fIlocalhost\fP, whose network address is 127.0.0.1. The +location of this file is specified in the boot file. It is vitally +important to the proper operation of every name server that the 127.0.0.1 +address have a \fIPTR\fP record pointing back to the name +``\fBlocalhost.\fP''. The name of this \fIPTR\fP record is always +``\fB1.0.0.127.\s-1IN-ADDR.ARPA\s+1\fP''. This is necessary if you want +your users to be able to use hostname-authentication (\fIhosts.equiv\fP or +\fI~/.rhosts\fP) on the name ``\fBlocalhost\fP''. As implied by this +\fIPTR\fP record, there should be a ``\fBlocalhost.\fP\fImy.dom.ain\fP'' +\fIA\fP record (with address 127.0.0.1) in every domain that contains hosts. +``\fBlocalhost.\fP'' will lose its trailing dot when +\fB1.0.0.127.in-addr.arpa\fP is queried for; then, the DEFNAMES and/or +DNSRCH resolver options will cause ``\fBlocalhost\fP'' to be evaluated as a +host name in the local domain, and that means the top domains (or ideally, +every domain) in your resolver's search path had better have something by +that name. +.sh 2 "Standard Resource Record Format" +.pp +The records in the name server data files are called resource records. +The Standard Resource Record Format (RR) is specified in RFC1035. +The following is a general description of these records: +.TS +l l l l l. +\fI{name} {ttl} addr-class Record Type Record Specific data\fP +.TE +Resource records have a standard format shown above. +The first field is always the name of the domain record +and it must always start in column 1. +For all RR's other than the first in a file, the name may be left blank; +in that case it takes on the name of the previous RR. +The second field is an optional time to live field. +This specifies how long this data will be stored in the data base. +By leaving this field blank the default time to live is specified +in the \fIStart Of Authority\fP resource record (see below). +The third field is the address class; currently, only one class is supported: +\fIIN\fP for internet addresses and other internet information. Limited +support is included for the \fIHS\fP class, which is for MIT/Athena ``Hesiod'' +information. +The fourth field states the type of the resource record. +The fields after that are dependent on the type of the RR. +Case is preserved in names and data fields when loaded into the name server. +All comparisons and lookups in the name server data base are case insensitive. +.bl +.b +The following characters have special meanings: +.ip ``\fB.\fP'' +A free standing dot in the name field refers to the root domain. +.ip ``@'' +A free standing @ in the name field denotes the current origin. +.ip "``\eX''" +Where X is any character other than a digit (0-9), +quotes that character so that its special meaning does not apply. +For example, ``\e.'' can be used to place a dot character in a label. +.ip "``\eDDD''" +Where each D is a digit, is the octet corresponding to the +decimal number described by DDD. +The resulting octet is assumed to be text and +is not checked for special meaning. +.ip "``( )''" +Parentheses are used to group data that crosses a line. +In effect, line terminations are not recognized within parentheses. +(At present, this notation only works for SOA RR's and is not optional.) +.ip "``;''" +Semicolon starts a comment; the remainder of the line is ignored. Note +that a completely blank line is also considered a comment, and ignored. +.ip "``*''" +An asterisk signifies wildcarding. Note that this is just another data +character whose special meaning comes about only during internal name +server search operations. Wildcarding is only meaningful for some RR +types (notably \fIMX\fP), and then only in the name field \(em not in +the data fields. +.pp +Anywhere a name appears \(em either in the name field or in some data field +defined to contain names \(em the current origin will be appended if the +name does not end in a ``\fB\|.\|\fP''. +This is useful for appending the current domain name to the data, +such as machine names, but may cause problems where you do not want +this to happen. +A good rule of thumb is that, if the name is not in the domain for which +you are creating the data file, end the name with a ``\fB.\fP''. +.sh 3 $INCLUDE +.pp +An include line begins with $INCLUDE, starting in column 1, +and is followed by a file name, and, optionally, by a new +temporary $ORIGIN to be used while reading this file. +This feature is +particularly useful for separating different types of data into multiple files. +An example would be: +.(b l +$INCLUDE /usr/local/adm/named/data/mail-exchanges +.)b +The line would be interpreted as a request to load the file +\fI/usr/local/adm/named/data/mail-exchanges\fP. The $INCLUDE command does not cause +data to be loaded into a different zone or tree. This is simply a way to +allow data for a given primary zone to be organized in separate files. +Not even the ``temporary $ORIGIN'' feature described above is sufficient +to cause your data to branch out into some other zone \(em zone boundaries +can only be introduced in the boot file. +.pp +A $INCLUDE file must have a name on its first RR. That is, the first +character of the first non-comment line must not be a space. The current +default name in the parent file \fIdoes not\fP carry into the $INCLUDE +file. +.sh 3 $ORIGIN +.pp +The origin is a way of changing the origin in a data file. The line starts +in column 1, and is followed by a domain origin. This seems like it could +be useful for putting more then one zone into a data file, but that's not +how it works. The name server fundamentally requires a given zone to map +entirely to some specific file. You should therefore be very careful to use +$ORIGIN only once at the top of a file, or, within a file, to change to a +``lower'' domain in the zone \(em never to some other zone altogether. +.sh 3 "SOA - Start Of Authority" +.(b L +.TS +l l l l l l. +\fIname {ttl} addr-class SOA Origin Person in charge\fP +@ IN SOA ucbvax\fB.\fPBerkeley\fB.\fPEdu\fB.\fP kjd\fB.\fPucbvax\fB.\fPBerkeley\fB.\fPEdu\fB.\fP ( + 1995122103 ; Serial + 10800 ; Refresh + 1800 ; Retry + 3600000 ; Expire + 259200 ) ; Minimum +.TE +.)b +The \fIStart of Authority, SOA,\fP record designates the start of a zone. +The name is the name of the zone and is often given as ``@'' since this +is always the current $ORIGIN and the SOA RR is usually the first record +of the primary zone file. +Origin is the name of the host on which this data file resides (in other +words, the \fIprimary master\fP server for this zone.) +Person in charge is the e-mail address for the person responsible +for the name server, with ``@'' changed to a ``.''. +The serial number is the version number of this data file and must be a +positive integer. +This number must be incremented whenever a change is made to the data. +Older servers permitted the use of a phantom ``.'' in this and other +numbers in a zone file; the meaning of n.m was ``n000m'' rather than the +more intuitive ``n*1000+m'' (such that 1.234 translated to 1000234 rather +than to 1234). This feature has been deprecated due to its +obscurity, unpredictability, and lack of necessity. +Note that using a ``YYYYMMDDNN'' notation you can still make 100 changes +per day until the year 4294. You should choose a notation that works for +you. If you're a clever \fIperl\fP programmer you could even use \fIRCS\fP +version numbers to help generate your zone serial numbers. +The refresh indicates how often, in seconds, the secondary name servers +are to check with the primary name server to see if an update is needed. +The retry indicates how long, in seconds, a secondary server should wait +before retrying a failed zone transfer. +Expire is the upper limit, in seconds, that a secondary name server +is to use the data before it expires for lack of getting a refresh. +Minimum is the default number of seconds to be used for the Time To Live +field on resource records which do not specify one in the zone file. +It is also an enforced minimum on Time To Live if it is specified on +some resource record (RR) in the zone. +There must be exactly one \fISOA\fP record per zone. +.sh 3 "NS - Name Server" +.TS +l l l l l. +\fI{name} {ttl} addr-class NS Name servers name\fP + IN NS ucbarpa\fB\|.\|\fPBerkeley\fB\|.\|\fPEdu\fB.\fP +.TE +The \fIName Server\fP record, \fINS\fP, lists a name server responsible +for a given domain, creating a \fIdelegation point\fP and a \fIsubzone\fP. +The first name field specifies the zone that is serviced by +the name server specified by the second name. +Every zone needs at least two name servers. +.bp \" ----PLACEMENT HACK---- +.sh 3 "A - Address" +.TS +l l l l l. +\fI{name} {ttl} addr-class A address\fP +ucbarpa IN A 128\fB.\fP32\fB.\fP0\fB.\fP4 + IN A 10\fB.\fP0\fB.\fP0\fB.\fP78 +.TE +The \fIAddress\fP record, \fIA\fP, lists the address for a given machine. +The name field is the machine name and the address is the network address. +There should be one \fIA\fP record for each address of the machine. +.sh 3 "HINFO - Host Information" +.TS +l l l l l l. +\fI{name} {ttl} addr-class HINFO Hardware OS\fP + IN HINFO VAX-11/780 UNIX +.TE +\fIHost Information\fP resource record, \fIHINFO\fP, is for host specific +data. This lists the hardware and operating system that are running at the +listed host. If you want to include a space in the machine name you must +quote the name (using ``"'' characters.) There could be one \fIHINFO\fP +record for each host, though for security reasons most domains don't have +any \fIHINFO\fP records at all. No application depends on them. +.(b L +.sh 3 "WKS - Well Known Services" +.TS +l l l l l l l. +\fI{name} {ttl} addr-class WKS address protocol list of services\fP + IN WKS 128\fB.\fP32\fB.\fP0\fB.\fP10 UDP who route timed domain + IN WKS 128\fB.\fP32\fB.\fP0\fB.\fP10 TCP ( echo telnet + discard sunrpc sftp + uucp-path systat daytime + netstat qotd nntp + link chargen ftp + auth time whois mtp + pop rje finger smtp + supdup hostnames + domain + nameserver ) +.TE +The \fIWell Known Services\fP record, \fIWKS\fP, describes the well known +services supported by a particular protocol at a specified address. The +list of services and port numbers come from the list of services specified +in \fI/etc/services.\fP There should be only one \fIWKS\fP record per +protocol per address. Note that RFC1123 says of \fIWKS\fP records: +.)b +.(l L + 2.2 Using Domain Name Service + ... + An application SHOULD NOT rely on the ability to locate a WKS + record containing an accurate listing of all services at a + particular host address, since the WKS RR type is not often used + by Internet sites. To confirm that a service is present, simply + attempt to use it. + ... + 5.2.12 WKS Use in MX Processing: RFC-974, p. 5 + + RFC-974 [SMTP:3] recommended that the domain system be queried + for WKS ("Well-Known Service") records, to verify that each + proposed mail target does support SMTP. Later experience has + shown that WKS is not widely supported, so the WKS step in MX + processing SHOULD NOT be used. + ... + 6.1.3.6 Status of RR Types + ... + The TXT and WKS RR types have not been widely used by + Internet sites; as a result, an application cannot rely + on the existence of a TXT or WKS RR in most + domains. +.)l +.sh 3 "CNAME - Canonical Name" +.TS +l l l l l. +\fIalias {ttl} addr-class CNAME Canonical name\fP +ucbmonet IN CNAME monet +.TE +The \fICanonical Name\fP resource record, \fICNAME\fP, specifies an +alias or nickname for the official, or canonical, host name. +This record must be the only one associated with the alias name. +All other resource records must be +associated with the canonical name, not with the nickname. +Any resource records that include a domain name as their value +(e.g., NS or MX) \fImust\fP list the canonical name, not the nickname. +Similarly, a CNAME will be followed when searching for A RRs, but not +for MX RRs or NS RRs or most other types of RRs. CNAMEs are allowed +to point to other CNAMEs, but this is considered sloppy. +.pp +Nicknames are useful when a well known host changes its name. In that +case, it is usually a good idea to have a \fICNAME\fP record so that +people still using the old name will get to the right place. +.sh 3 "PTR - Domain Name Pointer" +.TS +l l l l l. +\fIname {ttl} addr-class PTR real name\fP +7.0 IN PTR monet\fB\|.\|\fPBerkeley\fB\|.\|\fPEdu\fB\|.\fP +.TE +A \fIDomain Name Pointer\fP record, \fIPTR\fP, allows special names to point +to some other location in the domain. The above example of a \fIPTR\fP +record is used in setting up reverse pointers for the special +\fIIN-ADDR\fP\fB\|.\|\fP\fIARPA\fP domain. This line is from the example +\fIhosts.rev\fP file. \fIPTR\fP records are needed by the +\fIgethostbyaddr\fP function. Note the trailing ``\fB\|.\|\fP'' which +prevents \s-1BIND\s+1 from appending the current \s-1$ORIGIN\s+1 to that +domain name. +.sh 3 "MX - Mail Exchange" +.TS +l l l l l l. +\fIname {ttl} addr-class MX preference value mail exchange\fP +Munnari\fB\|.\|\fPOZ\fB\|.\|\fPAU\fB\|.\fP IN MX 0 Seismo\fB\|.\|\fPCSS\fB\|.\|\fPGOV\fB\|.\fP +*\fB\|.\|\fPIL\fB\|.\fP IN MX 0 RELAY\fB\|.\|\fPCS\fB\|.\|\fPNET\fB\|.\fP +.TE +\fIMail eXchange\fP records, \fIMX\fP, are used to specify a list of hosts +which are configured to receive mail sent to this domain name. Every name +which receives mail should have an \fIMX\fP since if one is not found at the +time mail is being delivered, an \fIMX\fP will be ``imputed'' with a cost +of 0 and a destination of the host itself. If you want a host to receive +its own mail, you should create an \fIMX\fP for your host's name, pointing +at your host's name. It is better to have this be explicit than to let it +be imputed by remote mailers. +In the first example, above, +Seismo\fB\|.\|\fPCSS\fB\|.\|\fPGOV\fB\|.\fP is a mail gateway that knows how +to deliver mail to Munnari\fB\|.\|\fPOZ\fB\|.\|\fPAU\fB\|.\fP. These two +machines may have a private connection or use a different transport medium. +The preference value is the order that a mailer should follow when there is +more than one way to deliver mail to a single machine. Note that lower +numbers indicate higher precedence, and that mailers are supposed to randomize +same-valued \fIMX\fP hosts so as to distribute the load evenly if the costs +are equal. See RFC974 for more detailed information. +.pp +Wildcard names containing the character ``*'' may be used for mail routing +with \fIMX\fP records. There are likely to be servers on the network that +simply state that any mail to a domain is to be routed through a relay. +Second example, above, all mail to hosts in the domain IL is routed through +RELAY.CS.NET. This is done by creating a wildcard resource record, which +states that *.IL has an \fIMX\fP of RELAY.CS.NET. Wildcard \fIMX\fP records +are not very useful in practice, though, since once a mail message gets to +the gateway for a given domain it still has to be routed \fIwithin\fP that +domain and it is not currently possible to have an apparently-different set +of \fIMX\fP records inside and outside of a domain. If you won't be needing +any Mail Exchanges inside your domain, go ahead and use a wildcard. If you +want to use both wildcard ``top-level'' and specific ``interior'' \fIMX\fP +records, note that each specific record will have to ``end with'' a complete +recitation of the same data that is carried in the top-level record. This +is because the specific \fIMX\fP records will take precedence over the +top-level wildcard records, and must be able to perform the top-level's +if a given interior domain is to be able to receive mail from outside the +gateway. Wildcard \fIMX\fP records are very subtle and you should be careful +with them. +.sh 3 "TXT - Text" +.TS +l l l l l l. +\fIname {ttl} addr-class TXT string\fP +Munnari\fB\|.\|\fPOZ\fB\|.\|\fPAU\fB\|.\fP IN TXT "foo" +.TE +A \fITXT\fP record contains free-form textual data. The syntax of the text +depends on the domain where it is found; many systems use \fITXT\fP records +to encode local data in a stylized format. MIT Hesiod is one such system. +.sh 3 "RP - Responsible Person" +.TS +l l l l l l. +\fIowner {ttl} addr-class RP mbox-domain-name TXT-domain-name\fP +franklin IN RP ben.franklin.berkeley.edu. sysadmins.berkeley.edu. +.TE +.pp +The Responsible Person record, \fIRP\fP, identifies the name or group name of +the responsible person for a host. Often it is desirable to be able to +identify the responsible entity for a particular host. When that host +is down or malfunctioning, you would want to contact those parties +who might be able to repair the host. +.pp +The first field, \fImbox-domain-name\fP, is a domain name that specifies the +mailbox for the responsible person. Its format in a zone file uses +the \s-1DNS\s+1 convention for mailbox encoding, identical to that used for +the \fIPerson-in-charge\fP mailbox field in the SOA record. +In the example above, the \fImbox-domain-name\fP shows the encoding for +``\fB\fP''. +The root domain name (just ``\fB\|.\|\fP'') may be specified +to indicate that no mailbox is available. +.pp +The second field, \fITXT-domain-name\fP, is a domain name for which +\fITXT\fP records exist. A subsequent query can be performed to retrieve +the associated \fITXT\fP resource records at \fITXT-domain-name\fP. This +provides a level of indirection so that the entity can be referred to from +multiple places in the \s-1DNS\s+1. The root domain name (just +``\fB\|.\|\fP'') may be specified for \fITXT-domain-name\fI to indicate +that no associated \fITXT\fP RR exists. In the example above, +``\fBsysadmins.berkeley.edu.\fP'' is the name of a TXT record that might +contain some text with names and phone numbers. +.pp +The format of the \fIRP\fP record is class-insensitive. +Multiple \fIRP\fP records at a single name may be present in the database, +though they should have identical TTLs. +.pp +The \fIRP\fP record is still experimental; not all name servers implement +or recognize it. +.sh 3 "AFSDB - DCE or AFS Server" +.TS +l l l l l l. +\fIname {ttl} addr-class AFSDB subtype server host name\fP +toaster.com. IN AFSDB 1 jack.toaster.com. +toaster.com. IN AFSDB 1 jill.toaster.com. +toaster.com. IN AFSDB 2 tracker.toaster.com. +.TE +\fIAFSDB\fP records are used to specify the hosts that provide a style of +distributed service advertised under this domain name. A subtype value +(analogous to the ``preference'' value in the \fIMX\fP record) indicates +which style of distributed service is provided with the given name. +Subtype 1 indicates that the named host is an AFS (R) database server for +the AFS cell of the given domain name. Subtype 2 indicates that the +named host provides intra-cell name service for the DCE (R) cell named by +the given domain name. +In the example above, jack\fB\|.\|\fPtoaster\fB\|.\|\fPcom and +jill\fB\|.\|\fPtoaster\fB\|.\|\fPcom are declared to be AFS database +servers for the toaster\fB\|.\|\fPcom AFS cell, so that AFS clients +wishing service from toaster\fB\|.\|\fPcom are directed to those two hosts +for further information. The third record declares that +tracker\fB\|.\|\fPtoaster\fB\|.\|\fPcom houses a directory server for the +root of the DCE cell toaster\fB\|.\|\fPcom, so that DCE clients that wish +to refer to DCE services should consult with the host +tracker\fB\|.\|\fPtoaster\fB\|.\|\fPcom for further information. The +DCE sub-type of record is usually accompanied by a \fITXT\fP record for +other information specifying other details to be used in accessing the +DCE cell. RFC1183 contains more detailed information on the use of +this record type. +.pp +The \fIAFSDB\fP record is still experimental; not all name servers implement +or recognize it. + +.sh 3 "PX - Pointer to X.400/RFC822 mapping information" +.TS +l l l l l l l. +\fIname {ttl} addr-class PX prefer 822-dom X.400-dom\fP +*.ADMD-garr.X42D.it. IN PX 50 it. ADMD-garr.C-it. +*.infn.it. IN PX 50 infn.it. O.PRMD-infn.ADMD-garr.C-it. +*.it. IN PX 50 it. O-gate.PRMD-garr.ADMD-garr.C-it. +.TE +.pp +The \fIPX\fP records (\fIPointer to X.400/RFC822 mapping information\fP) +are used to specify address mapping rules between X.400 O/R addresses and +RFC822 style (domain-style) mail addresses. For a detailed description of the +mapping process please refer to RFC1327. +.pp +Mapping rules are of 3 different types: +.pp +1) mapping from X.400 to RFC822 (defined as "table 1 rules" in RFC1327) +.pp +2) mapping from RFC822 to X.400 (defined as "table 2 rules" in RFC1327) +.pp +3) encoding RFC822 into X.400 (defined as "gate table" in RFC1327) +.pp +All three types of mapping rules are specified using \fIPX\fP Resource +Records in DNS, although the \fIname\fP value is different: for case 1, the +\fIname\fP value is an X.400 domain in DNS syntax, whereas for cases 2 and +3 the \fIname\fP value is an RFC822 domain. Refer to RFC-1664 for details +on specifying an X.400 domain in DNS syntax and for the use of the +\fIX42D\fP keyword in it. Tools are available to convert from RFC1327 +tables format into DNS files syntax. \fIPreference\fP is analogous to the +\fIMX\fP RR Preference parameter: it is currently advised to use a fixed +value of 50 for it. \fI822-dom\fP gives the RFC822 part of the mapping +rules, and \fIX.400-dom\fP gives the X.400 part of the mapping rule (in DNS +syntax). It is currently advised always to use wildcarded \fIname\fP +values, as the RFC1327 tables specifications permit wildcard +specifications only. This is to keep compatibility with existing services +using static RFC1327 tables instead of DNS \fIPX\fP information. +.pp +Specifications of mapping rules from X.400 to RFC822 syntax requires the +creation of an appropriate X.400 domain tree into DNS, including thus specific +\fISOA\fP and \fINS\fP records for the domain itself. Specification of mapping +rules from RFC822 into X.400 can be embedded directly into the normal direct +\fIname\fP tree. +Again, refer to RFC1664 for details about organization of this structure. +.pp +Tools and library routines, based on the standard resolver ones, are available +to retrieve from DNS the appropriate mapping rules in RFC1327 or DNS syntax. +.pp +Once again, refer to RFC1664 to use the \fIPX\fP resource record, and be careful +in coordinating the mapping information you can specify in DNS with the same +information specified into the RFC1327 static tables. +.pp +The \fIPX\fP record is still experimental; not all servers implement or +recognize it. + +.sh 2 "Discussion about the TTL" +.pp +The use of different Time To Live fields with in a RRset have been +deprecated and this is enforced by the server when loading a primary +zone. See the Security section for more discussion of differing TTLs. +.pp +The Time To Live assigned to the records and to the zone via the +Minimum field in the SOA record is very important. High values will +lead to lower BIND network traffic and faster response time. Lower +values will tend to generate lots of requests but will allow faster +propagation of changes. +.pp +Only changes and deletions from the zone are affected by the TTLs. +Additions propagate according to the Refresh value in the SOA. +.pp +Experience has shown that sites use default TTLs for their zones varying +from around 0.5 day to around 7 days. You may wish to consider boosting +the default TTL shown in former versions of this guide from one day +(86400 seconds) to three days (259200 seconds). This will drastically +reduce the number of requests made to your name servers. +.pp +If you need fast propagation of changes and deletions, it might be wise +to reduce the Minimum field a few days before the change, then do the +modification itself and augment the TTL to its former value. +.pp +If you know that your zone is pretty stable (you mainly add new records +without deleting or changing old ones) then you may even wish to consider +a TTL higher than three days. +.pp +Note that in any case, it makes no sense to have records with a TTL +below the SOA Refresh delay, as Delay is the time required for secondaries +to get a copy of the newly modified zone. + +.sh 2 "About ``secure zones'' +.pp +Secure zones implement named security on a zone by zone basis. It is +designed to use a permission list of networks or hosts which may obtain +particular information from the zone. +.pp +In order to use zone security, \fInamed\fP must be compiled with SECURE_ZONES +defined and you must have at least one secure_zone TXT RR. Unless a +\fIsecure_zone\fP record exists for a given zone, no restrictions will be +applied to the data in that zone. The format of the secure_zone TXT RR is: +.lp +secure_zone\h'0.5i'addr-class\h'0.5i'TXT\h'0.5i'string +.pp +The addr-class may be either \fIHS\fP or \fIIN\fP. The syntax for the TXT +string is either ``network address:netmask'' or ``host IP address:H''. +.pp +``network address:netmask'' allows queries from an entire network. If the +netmask is omitted, named will use the default netmask for the network +address specified. +.pp +``host IP address:H'' allows queries from a host. The ``H'' after the ``:'' +is required to differentiate the host address from a network address. +Multiple secure_zone TXT RRs are allowed in the same zone file. +.pp +For example, you can set up a zone to only answer Hesiod requests from the +masked class B network 130.215.0.0 and from host 128.23.10.56 by adding the +following two TXT RR's: +.lp +secure_zone\h'0.5i'HS\h'0.5i'TXT\h'0.5i'``130.215.0.0:255.255.0.0'' +secure_zone\h'0.5i'HS\h'0.5i'TXT\h'0.5i'``128.23.10.56:H'' +.pp +This feature can be used to restrict access to a Hesiod password map or to +separate internal and external internet address resolution on a firewall +machine without needing to run a separate named for internal and external +address resolution. +.pp +Note that you will need to include your loopback interface (127.0.0.1) in +your secure_zone record, or your local clients won't be able to resolve +names. + +.sh 2 "About Hesiod, and HS-class Resource Records +.pp +Hesiod, developed by \s-1MIT\s+1 Project Athena, is an information service +built upon \s-1BIND\s+1. Its intent is similar to that of Sun's +\s-1NIS\s+1: to furnish information about users, groups, network-accessible +file systems, printcaps, and mail service throughout an installation. Aside +from its use of \s-1BIND\s+1 rather than separate server code another +important difference between Hesiod and \s-1NIS\s+1 is that Hesiod is not +intended to deal with passwords and authentication, but only with data that +are not security sensitive. Hesiod servers can be implemented by adding +resource records to \s-1BIND\s+1 servers; or they can be implemented as +separate servers separately administered. +.pp +To learn about and obtain Hesiod make an anonymous \s-1FTP\s+1 connection to +host \s-1ATHENA-DIST.MIT.EDU\s+1 and retrieve the compressed tar file +\fB/pub/ATHENA/hesiod.tar.Z\fP. You will not need the named and resolver +library portions of the distribution because their functionality has already +been integrated into \s-1BIND as of 4.9\s+1. To learn how Hesiod functions +as part of the Athena computing environment obtain the paper +\fB/pub/ATHENA/usenix/athena-changes.PS\fP from the above \s-1FTP\s+1 server +host. There is also a tar file of sample Hesiod resource files. +.pp +Whether one should use Hesiod class is open to question, since the same +services can probably be provided with class IN, type TXT and type +CNAME records. In either case, the code and documents for Hesiod will +suggest how to set up and use the service. +.pp +Note that while \s-1BIND\s+1 includes support for \fIHS\fP-class queries, +the zone transfer logic for non-\fIIN\fP-class zones is still experimental. + +.sh 2 "Sample Files" +.pp +The following section contains sample files for the name server. +This covers example boot files for the different types of servers +and example domain data base files. diff --git a/usr.sbin/named/doc/bog/intro.me b/usr.sbin/named/doc/bog/intro.me new file mode 100644 index 000000000000..597fa440b2d3 --- /dev/null +++ b/usr.sbin/named/doc/bog/intro.me @@ -0,0 +1,75 @@ +.\" ++Copyright++ 1986, 1988 +.\" - +.\" Copyright (c) 1986, 1988 +.\" The Regents of the University of California. All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" - +.\" Portions Copyright (c) 1993 by Digital Equipment Corporation. +.\" +.\" Permission to use, copy, modify, and distribute this software for any +.\" purpose with or without fee is hereby granted, provided that the above +.\" copyright notice and this permission notice appear in all copies, and that +.\" the name of Digital Equipment Corporation not be used in advertising or +.\" publicity pertaining to distribution of the document or software without +.\" specific, written prior permission. +.\" +.\" THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL +.\" WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES +.\" OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT +.\" CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL +.\" DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR +.\" PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS +.\" ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +.\" SOFTWARE. +.\" - +.\" --Copyright-- +.\" +.\" @(#)intro.me 6.2 (Berkeley) 2/28/88 +.\" +.sh 1 Introduction +.pp +The Berkeley Internet Name Domain (\s-1BIND\s+1) implements an Internet name +server for \s-2BSD\s+2-derived operating systems. The \s-1BIND\s+1 consists +of a server (or ``daemon'') called \fInamed\fP and a \fIresolver\fP library. +A name server is a network service that enables clients to name resources or +objects and share this information with other objects in the network. This +in effect is a distributed data base system for objects in a computer +network. The \s-1BIND\s+1 server runs in the background, servicing queries +on a well known network port. The standard port for UDP and TCP is specified +in \fI/etc/services\fP. The \fIresolver\fP is a set of routines residing +in a system library that provides the interface that programs can use to +access the domain name services. +.pp +BIND is fully integrated into BSD (4.3 and later releases) +network programs for use in storing and retrieving host names and address. +The system administrator can configure the system to use BIND as a +replacement to the older host table lookup of information in the network +hosts file \fI/etc/hosts\fP. The default configuration for BSD uses +BIND. diff --git a/usr.sbin/named/doc/bog/manage.me b/usr.sbin/named/doc/bog/manage.me new file mode 100644 index 000000000000..2f3b4cbfe755 --- /dev/null +++ b/usr.sbin/named/doc/bog/manage.me @@ -0,0 +1,156 @@ +.\" ++Copyright++ 1986, 1988, 1995 +.\" - +.\" Copyright (c) 1986, 1988, 1995 +.\" The Regents of the University of California. All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" - +.\" Portions Copyright (c) 1993 by Digital Equipment Corporation. +.\" +.\" Permission to use, copy, modify, and distribute this software for any +.\" purpose with or without fee is hereby granted, provided that the above +.\" copyright notice and this permission notice appear in all copies, and that +.\" the name of Digital Equipment Corporation not be used in advertising or +.\" publicity pertaining to distribution of the document or software without +.\" specific, written prior permission. +.\" +.\" THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL +.\" WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES +.\" OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT +.\" CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL +.\" DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR +.\" PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS +.\" ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +.\" SOFTWARE. +.\" - +.\" --Copyright-- +.\" +.\" @(#)manage.me 6.6 (Berkeley) 9/19/89 +.\" $Id: manage.me,v 1.1.1.1 1997/04/13 09:07:57 mrg Exp $ +.\" +.sh 1 "Domain Management" +.pp +This section contains information for starting, controlling and debugging +\fInamed\fP. +.sh 2 /etc/rc.local +.pp +The hostname should be set to the full domain style name in +\fI/etc/rc.local\fP using \fIhostname\|(1)\fP. The following entry should +be added to \fI/etc/rc.local\fP to start up \fInamed\fP at system boot time: +.(b l +\fIif [ -f /usr/sbin/named ]; then + /usr/sbin/named\fP [options] \fI& echo -n ' named' >/dev/console\fP +\fIfi\fP +.)b +This usually directly follows the lines that start \fIsyslogd\fP. +\fBDo Not\fP attempt to run \fInamed\fP from \fIinetd\fP. +This will +continuously restart the name server and defeat the purpose of the cache. +.sh 2 /var/run/named.pid +.pp +When \fInamed\fP is successfully started up it writes its process id into +the file \fI/var/run/named.pid\fP. This is useful to programs that want to +send signals to \fInamed\fP. The name of this file may be changed by defining +\fIPIDFILE\fP to the new name when compiling \fInamed\fP. +.sh 2 /etc/hosts +.pp +The \fIgethostbyname\|()\fP library call can detect if \fInamed\fP is running. +If it is determined that \fInamed\fP is not running it will look in +\fI/etc/hosts\fP to resolve an address. +This option was added to allow \fIifconfig\|(8C)\fP to configure the machines +local interfaces and to enable a system manager to access the network +while the system is in single user mode. +It is advisable to put the local machines interface addresses and a couple of +machine names and address in +\fI/etc/hosts\fP so the system manager can rcp files from another machine +when the system is in single user mode. +The format of \fI/etc/hosts\fP has not changed. See \fIhosts\|(5)\fP +for more information. +Since the process of reading \fI/etc/hosts\fP is slow, +it is not advisable to use this option when the system is in multi user mode. + +.sh 2 Signals +.pp +There are several signals that can be sent to the \fInamed\fP process +to have it do tasks without restarting the process. +.sh 3 Reload +.pp +SIGHUP - +Causes \fInamed\fP to read \fInamed.boot\fP and reload the database. +This is useful when you have made a change to a ``primary'' data file +and you want \fInamed\fP\|'s internal database to reflect the change. +If you build \s-1BIND\s+1 with the \s-1FORCED_RELOAD\s+1 option, then +\s-1SIGHUP\s+1 also has the effect of scheduling all ``secondary'' zones +for serial-number checks, which could lead to zone transfers ahead of +the usual schedule. Normally serial-number compares are done only at +the intervals specified in the zone's \s-1SOA\s+1 record. +.sh 3 Debugging +.pp +When \fInamed\fP is running incorrectly, look first in +\fI/var/log/messages\fP and check for any messages logged by \fIsyslog\fP. +Next send it a signal to see what is happening. Unless you run it with the +``-d'' option, \fInamed\fP has very little to say on its standard output or +standard error. Everything \fInamed\fP has to say, it says to \fIsyslog\fP. +.pp +SIGINT - +Dumps the current data base and cache to +\fI/var/tmp/named_dump.db\fP +This should give you an indication to whether the data base was loaded +correctly. +The name of the dump file may be changed +by defining \fIDUMPFILE\fP to the new name when compiling \fInamed\fP. + +\fINote:\fP the following two signals only work when \fInamed\fP is built with +\fIDEBUG\fP defined. +.pp +SIGUSR1 - +Turns on debugging. Each following SIGUSR1 increments the debug level. +The output goes to \fI/var/tmp/named.run\fP +The name of this debug file may be changed +by defining \fIDEBUGFILE\fP to the new name before compiling \fInamed\fP. +.pp +SIGUSR2 - +Turns off debugging completely. + +For more detailed debugging, define DEBUG when compiling the resolver +routines into \fI/lib/libc.a\fP. +.pp +SIGWINCH - +Toggles tracing of all incoming queries if \fInamed\fP has been +compiled with \fIQRYLOG\fP defined. The trace is sent to syslog, and +is huge, but it is very useful for tracking down problems. + +To run with tracing of all queries specify the \fI-q\fP flag on the +command line. If you routinely log queries you will probably want to +analyze the results using the dnsstats stats script in the +contrib directory. +.pp +SIGIOT - +Dumps statistics data into \fI/var/tmp/named.stats\fP if the server +is built with \fISTATS\fP defined. Statistics are appended to the file. diff --git a/usr.sbin/named/doc/bog/named.boot.cache b/usr.sbin/named/doc/bog/named.boot.cache new file mode 100644 index 000000000000..5e0e3d348128 --- /dev/null +++ b/usr.sbin/named/doc/bog/named.boot.cache @@ -0,0 +1,77 @@ +.\" ++Copyright++ 1986, 1988 +.\" - +.\" Copyright (c) 1986, 1988 +.\" The Regents of the University of California. All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" - +.\" Portions Copyright (c) 1993 by Digital Equipment Corporation. +.\" +.\" Permission to use, copy, modify, and distribute this software for any +.\" purpose with or without fee is hereby granted, provided that the above +.\" copyright notice and this permission notice appear in all copies, and that +.\" the name of Digital Equipment Corporation not be used in advertising or +.\" publicity pertaining to distribution of the document or software without +.\" specific, written prior permission. +.\" +.\" THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL +.\" WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES +.\" OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT +.\" CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL +.\" DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR +.\" PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS +.\" ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +.\" SOFTWARE. +.\" - +.\" --Copyright-- +.\" +.\" @(#)named.boot.cache 6.4 (Berkeley) 9/19/89 +.\" +.ne 13v +.sh 4 "Caching Only Server" +.(b L +.TS +l. +; +; Boot file for Caching Only Name Server +; +.TE +.TS +l l l +l +l l l. +; type domain source file or host +; +directory /usr/local/adm/named +cache \fB.\fP root\fB.\fPcache +primary 0\fB.\fP0\fB.\fP127\fB.\fPin-addr\fB.\fParpa named\fB.\fPlocal +.TE +.)b + + diff --git a/usr.sbin/named/doc/bog/named.boot.primary b/usr.sbin/named/doc/bog/named.boot.primary new file mode 100644 index 000000000000..0f3c3ca9aa85 --- /dev/null +++ b/usr.sbin/named/doc/bog/named.boot.primary @@ -0,0 +1,78 @@ +.\" ++Copyright++ 1986, 1988 +.\" - +.\" Copyright (c) 1986, 1988 +.\" The Regents of the University of California. All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" - +.\" Portions Copyright (c) 1993 by Digital Equipment Corporation. +.\" +.\" Permission to use, copy, modify, and distribute this software for any +.\" purpose with or without fee is hereby granted, provided that the above +.\" copyright notice and this permission notice appear in all copies, and that +.\" the name of Digital Equipment Corporation not be used in advertising or +.\" publicity pertaining to distribution of the document or software without +.\" specific, written prior permission. +.\" +.\" THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL +.\" WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES +.\" OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT +.\" CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL +.\" DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR +.\" PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS +.\" ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +.\" SOFTWARE. +.\" - +.\" --Copyright-- +.\" +.\" @(#)named.boot.primary 6.4 (Berkeley) 9/19/89 +.\" +.ne 15v +.sh 3 "Boot Files" +.sh 4 "Primary Server" +.(b L +.TS +l. +; +; Boot file for Primary Name Server +; +.TE +.TS +l l l +l +l l l. +; type domain source file or host +; +directory /usr/local/adm/named +primary Berkeley\fB.\fPEdu ucbhosts +primary 32\fB.\fP128\fB.\fPin-addr\fB.\fParpa ucbhosts\fB.\fPrev +primary 0\fB.\fP0\fB.\fP127\fB.\fPin-addr\fB.\fParpa named\fB.\fPlocal +cache \fB.\fP root\fB.\fPcache +.TE +.)b diff --git a/usr.sbin/named/doc/bog/named.boot.secondary b/usr.sbin/named/doc/bog/named.boot.secondary new file mode 100644 index 000000000000..64a607d58019 --- /dev/null +++ b/usr.sbin/named/doc/bog/named.boot.secondary @@ -0,0 +1,77 @@ +.\" ++Copyright++ 1986, 1988 +.\" - +.\" Copyright (c) 1986, 1988 +.\" The Regents of the University of California. All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" - +.\" Portions Copyright (c) 1993 by Digital Equipment Corporation. +.\" +.\" Permission to use, copy, modify, and distribute this software for any +.\" purpose with or without fee is hereby granted, provided that the above +.\" copyright notice and this permission notice appear in all copies, and that +.\" the name of Digital Equipment Corporation not be used in advertising or +.\" publicity pertaining to distribution of the document or software without +.\" specific, written prior permission. +.\" +.\" THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL +.\" WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES +.\" OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT +.\" CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL +.\" DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR +.\" PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS +.\" ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +.\" SOFTWARE. +.\" - +.\" --Copyright-- +.\" +.\" @(#)named.boot.secondary 6.4 (Berkeley) 9/19/89 +.\" +.ne 12v +.sh 4 "Secondary Server" +.(b L +.TS +l. +; +; Boot file for Secondary Name Server +; +.TE +.TS +l l l +l +l l l. +; type domain source file or host +; +directory /usr/local/adm/named +secondary Berkeley\fB.\fPEdu 128\fB.\fP32\fB.\fP0\fB.\fP4 128\fB.\fP32\fB.\fP0\fB.\fP10 ucbhosts.bak +secondary 32\fB.\fP128\fB.\fPin-addr\fB.\fParpa 128\fB.\fP32\fB.\fP0\fB.\fP4 128\fB.\fP32\fB.\fP0\fB.\fP10 ucbhosts.rev.bak +primary 0\fB.\fP0\fB.\fP127\fB.\fPin-addr\fB.\fParpa named\fB.\fPlocal +cache \fB.\fP root\fB.\fPcache +.TE +.)b diff --git a/usr.sbin/named/doc/bog/named.local b/usr.sbin/named/doc/bog/named.local new file mode 100644 index 000000000000..209c5be8bae2 --- /dev/null +++ b/usr.sbin/named/doc/bog/named.local @@ -0,0 +1,75 @@ +.\" ++Copyright++ 1986, 1988 +.\" - +.\" Copyright (c) 1986, 1988 +.\" The Regents of the University of California. All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" - +.\" Portions Copyright (c) 1993 by Digital Equipment Corporation. +.\" +.\" Permission to use, copy, modify, and distribute this software for any +.\" purpose with or without fee is hereby granted, provided that the above +.\" copyright notice and this permission notice appear in all copies, and that +.\" the name of Digital Equipment Corporation not be used in advertising or +.\" publicity pertaining to distribution of the document or software without +.\" specific, written prior permission. +.\" +.\" THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL +.\" WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES +.\" OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT +.\" CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL +.\" DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR +.\" PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS +.\" ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +.\" SOFTWARE. +.\" - +.\" --Copyright-- +.\" +.\" @(#)named.local 6.3 (Berkeley) 5/24/89 +.\" +.ne 13v +.sh 3 "named.local" +.(b L + +.TS +l l l l l s. +@ IN SOA ucbvax\fB.\fPBerkeley\fB.\fPEdu. kjd\fB.\fPucbvax\fB.\fPBerkeley\fB.\fPEdu\fB.\fP ( +.T& +l l l l l. + 1994072100 ; Serial + 10800 ; Refresh + 1800 ; Retry + 3600000 ; Expire + 259200 ) ; Minimum +.T& +l l l l l s. + IN NS ucbvax\fB.\fPBerkeley\fB.\fPEdu\fB.\fP ; pedantic +1 IN PTR localhost\fB.\fP +.TE +.)b diff --git a/usr.sbin/named/doc/bog/ns.me b/usr.sbin/named/doc/bog/ns.me new file mode 100644 index 000000000000..b507e9420ddf --- /dev/null +++ b/usr.sbin/named/doc/bog/ns.me @@ -0,0 +1,127 @@ +.\" Copyright (c) 1986, 1988 +.\" The Regents of the University of California. All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" - +.\" Portions Copyright (c) 1993 by Digital Equipment Corporation. +.\" +.\" Permission to use, copy, modify, and distribute this software for any +.\" purpose with or without fee is hereby granted, provided that the above +.\" copyright notice and this permission notice appear in all copies, and that +.\" the name of Digital Equipment Corporation not be used in advertising or +.\" publicity pertaining to distribution of the document or software without +.\" specific, written prior permission. +.\" +.\" THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL +.\" WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES +.\" OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT +.\" CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL +.\" DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR +.\" PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS +.\" ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +.\" SOFTWARE. +.\" +.\" @(#)ns.me 6.3 (Berkeley) 9/19/89 +.\" +.sh 1 "The Name Service" +.pp +The basic function of the name server is to provide information about network +objects by answering queries. The specifications for this name server are +defined in RFC1034, RFC1035 and RFC974. These documents can be found in +\fI/usr/src/etc/named/doc\fP in 4.3BSD or \fIftp\fPed from +\fBftp.rs.internic.net\fP. +It is also recommended that you read the related manual pages, +\fInamed\fP\|(8), +\fIresolver\fP\|(3), +and \fIresolver\fP\|(5). +.pp +The advantage of using a name server over the host table lookup for host +name resolution is to avoid the need for a single centralized clearinghouse +for all names. The authority for this information can be delegated to the +different organizations on the network responsible for it. +.pp +The host table lookup routines require that the master file for the entire +network be maintained at a central location by a few people. This works +fine for small networks where there are only a few machines and the +different organizations responsible for them cooperate. But this does not +work well for large networks where machines cross organizational boundaries. +.pp +With the name server, the network can be broken into a hierarchy of domains. +The name space is organized as a tree according to organizational or +administrative boundaries. +Each node, called a \fIdomain\fP, is given a label, and the name of the +domain is the concatenation of all the labels of the domains from +the root to the current domain, listed from right to left separated by dots. +A label need only be unique within its domain. +The whole space is partitioned into several areas called \fIzones\fP, +each starting at a domain and extending down to the leaf domains or to +domains where other zones start. +Zones usually represent administrative boundaries. +An example of a host address for a host at the University of California, +Berkeley would look as follows: +.(b +\fImonet\fP\|\fB.\fP\|\fIBerkeley\fP\|\fB.\fP\|\fIEDU\fP +.)b +The top level domain for educational organizations is EDU; +Berkeley is a subdomain of EDU and monet is the name of the host. +.sh 1 Security +.pp +This section examines some of the know security implications of various +versions of BIND. Some of these have been used to attack the nameservers +in the past. +.sh 2 "Unnecessary Glue" +.pp +Unnecessary glue can lead to incorrect records being loaded into the +server. This can result in connections going to the wrong machines. +.pp +To prevent unnecessary glue being loaded, all the servers of zones being +servered by a server and the servers of the parent zones need to be +upgraded to BIND 4.9.3 or later. +.sh 2 "Insertion of data into a zone that is being servered" +.pp +BIND versions prior to BIND 4.9.2 are subject to the insertion of +resource records into zone that they are serving. +.sh 2 "Denial of Service: Hash Bug Exploit" +.pp +September 1996 saw the COM TLD subject to a denial of service attack by +injecting into the DNS a record with a final label of COM, eight spaces +and COM. This effected BIND 4.9.4 servers. Similar attacks are possible +on BIND 4.9.3 and BIND 4.9.3-P1. +.pp +It is recommend that you run a BIND 4.9.4-P1 or later server to avoid +this exploit. +.sh 2 "Denial of Service: TTL Inconsistency Attacks" +.pp +If you are still using multiple TTL values within a RRset you can be +subject to a denial of service attack. BIND 4.9.5 onwards uses multiple +ttl values within a RRset to reject obviously bad RRset. +.pp +It is recommend that you upgrade to BIND 4.9.5 or later as these server +prevent you loading multiple TTL values and doesn't merge answers received +across the network. diff --git a/usr.sbin/named/doc/bog/resolv.conf b/usr.sbin/named/doc/bog/resolv.conf new file mode 100644 index 000000000000..1f15991f8e6a --- /dev/null +++ b/usr.sbin/named/doc/bog/resolv.conf @@ -0,0 +1,67 @@ +.\" ++Copyright++ 1986, 1988 +.\" - +.\" Copyright (c) 1986, 1988 +.\" The Regents of the University of California. All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" - +.\" Portions Copyright (c) 1993 by Digital Equipment Corporation. +.\" +.\" Permission to use, copy, modify, and distribute this software for any +.\" purpose with or without fee is hereby granted, provided that the above +.\" copyright notice and this permission notice appear in all copies, and that +.\" the name of Digital Equipment Corporation not be used in advertising or +.\" publicity pertaining to distribution of the document or software without +.\" specific, written prior permission. +.\" +.\" THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL +.\" WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES +.\" OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT +.\" CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL +.\" DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR +.\" PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS +.\" ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +.\" SOFTWARE. +.\" - +.\" --Copyright-- +.\" +.\" @(#)resolv.conf 6.2 (Berkeley) 2/29/88 +.\" +.ne 6v +.\" .bp +.sh 3 "Remote Server / DNS Client" +.sh 4 "/etc/resolv.conf" +.(b L + +domain Berkeley\fB.\fPEdu +nameserver 128\fB.\fP32\fB.\fP0\fB.\fP4 +nameserver 128\fB.\fP32\fB.\fP0\fB.\fP10 +sortlist 130.155.160.0/255.255.240.0 130.155.0.0 + +.)b diff --git a/usr.sbin/named/doc/bog/root.cache b/usr.sbin/named/doc/bog/root.cache new file mode 100644 index 000000000000..3bf572724f82 --- /dev/null +++ b/usr.sbin/named/doc/bog/root.cache @@ -0,0 +1,102 @@ +.\" ++Copyright++ 1986, 1988 +.\" - +.\" Copyright (c) 1986, 1988 +.\" The Regents of the University of California. All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" - +.\" Portions Copyright (c) 1993 by Digital Equipment Corporation. +.\" +.\" Permission to use, copy, modify, and distribute this software for any +.\" purpose with or without fee is hereby granted, provided that the above +.\" copyright notice and this permission notice appear in all copies, and that +.\" the name of Digital Equipment Corporation not be used in advertising or +.\" publicity pertaining to distribution of the document or software without +.\" specific, written prior permission. +.\" +.\" THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL +.\" WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES +.\" OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT +.\" CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL +.\" DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR +.\" PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS +.\" ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +.\" SOFTWARE. +.\" - +.\" --Copyright-- +.\" +.\" @(#)root.cache 6.4 (Berkeley) 4/29/90 +.\" +.ne 38v +.sh 3 "root.cache" +.(b L + +; +; This file holds the information on root name servers needed to +; initialize cache of Internet domain name servers +; (e.g. reference this file in the "cache . " +; configuration file of BIND domain name servers). +; +; This file is made available by InterNIC registration services +; under anonymous FTP as +; file /domain/named.root +; on server FTP.RS.INTERNIC.NET +; -OR- under Gopher at RS.INTERNIC.NET +; under menu InterNIC Registration Services (NSI) +; submenu InterNIC Registration Archives +; file named.root +; +; last update: Oct 5, 1994 +; related version of root zone: 1994100500 +; +.TS +l l l l l. +\fB.\fP 604800 IN NS NS\fB.\fPINTERNIC\fB.\fPNET\fB.\fP +NS\fB.\fPINTERNIC\fB.\fPNET\fB.\fP 604800 IN A 198\fB.\fP41\fB.\fP0\fB.\fP4 +\fB.\fP 604800 IN NS NS1\fB.\fPISI\fB.\fPEDU\fB.\fP +NS1\fB.\fPISI\fB.\fPEDU\fB.\fP 604800 IN A 128\fB.\fP9\fB.\fP0\fB.\fP107 +\fB.\fP 604800 IN NS C\fB.\fPPSI\fB.\fPNET\fB.\fP +C\fB.\fPPSI\fB.\fPNET\fB.\fP 604800 IN A 192\fB.\fP33\fB.\fP4\fB.\fP12 +\fB.\fP 604800 IN NS TERP\fB.\fPUMD\fB.\fPEDU\fB.\fP +TERP\fB.\fPUMD\fB.\fPEDU\fB.\fP 604800 IN A 128\fB.\fP8\fB.\fP10\fB.\fP90 +\fB.\fP 604800 IN NS NS\fB.\fPNASA\fB.\fPGOV\fB.\fP +NS\fB.\fPNASA\fB.\fPGOV\fB.\fP 604800 IN A 128\fB.\fP102\fB.\fP16\fB.\fP10 + 604800 IN A 192\fB.\fP52\fB.\fP195\fB.\fP10 +\fB.\fP 604800 IN NS NS\fB.\fPISC\fB.\fPORG\fB.\fP +NS\fB.\fPISC\fB.\fPORG\fB.\fP 604800 IN A 192\fB.\fP5\fB.\fP5\fB.\fP241 +\fB.\fP 604800 IN NS NS\fB.\fPNIC\fB.\fPDDN\fB.\fPMIL\fB.\fP +NS\fB.\fPNIC\fB.\fPDDN\fB.\fPMIL\fB.\fP 604800 IN A 192\fB.\fP112\fB.\fP36\fB.\fP4 +\fB.\fP 604800 IN NS AOS\fB.\fPARL\fB.\fPARMY\fB.\fPMIL\fB.\fP +AOS\fB.\fPARL\fB.\fPARMY\fB.\fPMIL\fB.\fP 604800 IN A 128\fB.\fP63\fB.\fP4\fB.\fP82 + 604800 IN A 192\fB.\fP5\fB.\fP25\fB.\fP82 +\fB.\fP 604800 IN NS NIC\fB.\fPNORDU\fB.\fPNET\fB.\fP +NIC\fB.\fPNORDU\fB.\fPNET\fB.\fP 604800 IN A 192\fB.\fP36\fB.\fP148\fB.\fP17 +.TE +; End of File +.)b diff --git a/usr.sbin/named/doc/bog/setup.me b/usr.sbin/named/doc/bog/setup.me new file mode 100644 index 000000000000..fff765748f9a --- /dev/null +++ b/usr.sbin/named/doc/bog/setup.me @@ -0,0 +1,88 @@ +.\" ++Copyright++ 1986, 1988 +.\" - +.\" Copyright (c) 1986, 1988 +.\" The Regents of the University of California. All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" - +.\" Portions Copyright (c) 1993 by Digital Equipment Corporation. +.\" +.\" Permission to use, copy, modify, and distribute this software for any +.\" purpose with or without fee is hereby granted, provided that the above +.\" copyright notice and this permission notice appear in all copies, and that +.\" the name of Digital Equipment Corporation not be used in advertising or +.\" publicity pertaining to distribution of the document or software without +.\" specific, written prior permission. +.\" +.\" THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL +.\" WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES +.\" OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT +.\" CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL +.\" DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR +.\" PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS +.\" ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +.\" SOFTWARE. +.\" - +.\" --Copyright-- +.\" +.\" @(#)setup.me 6.4 (Berkeley) 9/19/89 +.\" +.sh 1 "Setting up Your Own Domain" +.pp +When setting up a domain that is going to be on a public network the site +administrator should contact the organization in charge of the network and +request the appropriate domain registration form. An organization that +belongs to multiple networks (such as the \fIInternet\fP and +\fIBITNET\fP) should register with only one network. +.sh 2 "Internet" +.pp +Sites on the Internet who need information on setting up a domain should +contact the registrar for their network, which is one of the following: +.TS +l l. +MILnet \s-1HOSTMASTER\s+1@\s-1NIC\s+1\fB\|.\|\fP\s-1DDN\s+1\fB\|.\|\fP\s-1MIL\s+1 +other \s-1HOSTMASTER\s+1@\s-1INTERNIC\s+1\fB\|.\|\fP\s-1NET\s+1 +.TE +You may also want to be placed on the \s-1BIND\s+1 mailing list, which is a +mail group for people on the Internet who run \s-1BIND\s+1. The group +discusses future design decisions, operational problems, and other related +topic. The address to request being placed on this mailing list is: +.(b l +\fIbind-request\|@\|uunet\fP\fB\|.\|\fP\fIuu\fP\fB\|.\|\fP\fInet\fP +.)b +.sh 2 "Subdomains of Existing Domains" +.pp +If you want a subdomain of some existing domain, you should find the contact +point for the parent domain rather than asking one of the above top-level +registrars. There should be a convention that \fBregistrar\fP@\fIdomain\fP +or \fBhostmaster\fP@\fIdomain\fP for any given domain will always be an alias +for that domain's registrar (somewhat analogous to \fBpostmaster\fP), but +there is no such convention. Try it as a last resort, but first you should +examine the \fISOA\fP record for the domain and send mail to the ``responsible +person'' shown therein. You can also try \fIwhois\fP. diff --git a/usr.sbin/named/doc/bog/types.me b/usr.sbin/named/doc/bog/types.me new file mode 100644 index 000000000000..9d14111214d3 --- /dev/null +++ b/usr.sbin/named/doc/bog/types.me @@ -0,0 +1,163 @@ +.\" ++Copyright++ 1986, 1988, 1995 +.\" - +.\" Copyright (c) 1986, 1988, 1995 +.\" The Regents of the University of California. All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" - +.\" Portions Copyright (c) 1993 by Digital Equipment Corporation. +.\" +.\" Permission to use, copy, modify, and distribute this software for any +.\" purpose with or without fee is hereby granted, provided that the above +.\" copyright notice and this permission notice appear in all copies, and that +.\" the name of Digital Equipment Corporation not be used in advertising or +.\" publicity pertaining to distribution of the document or software without +.\" specific, written prior permission. +.\" +.\" THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL +.\" WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES +.\" OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT +.\" CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL +.\" DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR +.\" PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS +.\" ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +.\" SOFTWARE. +.\" - +.\" --Copyright-- +.\" +.\" @(#)types.me 6.3 (Berkeley) 9/19/89 +.\" +.sh 1 "Types of Zones" +.pp +A ``zone'' is a point of delegation in the DNS tree. It contains all names +from a certain point ``downward'' except those which are delegated to other +zones. A ``delegation point'' has one or more \fINS\fP records in the +``parent zone'', which should be matched by equivalent \fINS\fP records at +the root of the ``delegated zone'' (i.e., the ``@'' name in the zone file). +.pp +Understanding the difference between a ``zone'' and a ``domain'' is crucial +to the proper operation of a name server. As an example, consider the +\s-1DEC.COM\s+1 \fIdomain\fP, which includes names such as +\s-1POBOX1.PA.DEC.COM\s+1 and \s-1QUABBIN.CRL.DEC.COM\s+1 even though +the \s-1DEC.COM\s+1 \fIzone\fP includes only \fIdelegations\fP for the +\s-1PA.DEC.COM\s+1 and \s-1CRL.DEC.COM\s+1 zones. A zone can map exactly +to a single domain, but could also include only part of a domain (the rest +of which could be delegated to other name servers). Technically speaking, +every name in the DNS tree is a ``domain'', even if it is ``terminal'', that +is, has no ``subdomains''. Technically speaking, every subdomain is a domain +and every domain except the root is also a subdomain. The terminology is not +intuitive and you would do well to read RFC's 1033, 1034, and 1035 to gain a +complete understanding of this difficult and subtle topic. +.pp +Though \s-1BIND\s+1 is a \fIDomain\fP Name Server, it deals primarily in terms +of \fIzones\fP. The \fIprimary\fP and \fIsecondary\fP declarations in the +\fInamed.boot\fP file specify \fIzones\fP, not \fIdomains\fP. When you ask +someone if they are willing to be a secondary server for your ``domain'', you +are actually asking for secondary service for some collection of \fIzones\fP. +.pp +Each zone will have one ``primary'' server, which loads the zone contents +from some local file which is edited by humans or perhaps generated +mechanically from some other local file which is edited by humans. Then +there will be some number of ``secondary'' servers, which load the zone +contents using the \s-1IP/DNS\s+1 protocol (that is, the secondary servers will +contact the primary and fetch the zone using \s-1IP/TCP\s+1). This set of +servers (the primary and all of the secondaries) should be listed in the +\fINS\fP records in the parent zone, which will constitute a ``delegation''. +This set of servers must also be listed in the zone file itself, usually +under the ``@'' name which is a magic cookie that means the ``top level'' +or ``root'' of current zone. You can list servers in the zone's +top-level ``@'' \fINS\fP records that are not in the parent's \fINS\fP +delegation, but you cannot list servers in the parent's delegation that are +not present in the zone's ``@''. Any servers listed in the \fINS\fP records +must be configured as authoritative (either primary or secondary) for the +zone. If a server listed in a \fINS\fP record is not authoritative, it +will respond with a ``lame delegation'' when queried. +.sh 1 "Types of Servers" +.pp +Servers do not really have ``types''. A server can be a primary for some +zones and a secondary for others, or it can be only a primary, or only a +secondary, or it can serve no zones and just answer queries via its ``cache''. +Previous versions of this document referred to servers as ``master'' and +``slave'' but we now feel that those distinctions \(em and the assignment of +a ``type'' to a name server \(em are not useful. +.sh 2 "Caching Only Server" +.pp +All servers are caching servers. This means that the server caches the +information that it receives for use until the data expires. A \fICaching +Only Server\fP is a server that is not authoritative for any zone. This +server services queries and asks other servers, who have the authority, for +the information needed. All servers keep data in their cache until the data +expires, based on a \fITTL\fP (``Time To Live'') field which is maintained +for all resource records. +.sh 2 "Remote Server" +.pp +A Remote Server is an option given to people who would like to use +a name server from their workstation or on a machine that has a limited +amount of memory and CPU cycles. +With this option you can run all of the networking programs that use +the name server without the name server running on the local machine. +All of the queries are serviced by a name server that is running on another +machine on the network. +A host which has an +\fI/etc/resolv.conf\fP file listing only remote hosts, and which does not +run a name server of its own, is sometimes called a Remote Server (because +the actual server is remote?) but more +often it is called simply a DNS Client. +This kind of host is technically not a ``server'', +since it has no cache and does not answer queries. +.sh 2 "Slave Server" +.pp +A Slave Server is a server that always forwards queries it cannot +satisfy from its cache, to a fixed list of \fIforwarding\fP servers +instead of interacting +with the name servers for the root and other domains. +The queries to the \fIforwarding servers\fP are recursive queries. +There may be one or more forwarding servers, and they are tried in turn +until the list is exhausted. +A Slave and forwarder configuration is typically used when you do not +wish all the servers at a given site to interact with the rest +of the Internet servers. A typical scenario would involve a number of +workstations and a departmental timesharing machine with Internet +access. The workstations might be +administratively prohibited from having Internet access. +To give the workstations the appearance of access to the Internet +domain system, the workstations could be Slave servers to the timesharing +machine which would forward the queries and interact with other +name servers to resolve the query before returning the answer. +An added benefit of using the forwarding feature is that the central +machine develops a much more complete cache of information that +all the workstations can take advantage of. The use of Slave mode +and forwarding is discussed further under the description of +the \fInamed\fP bootfile commands. +.pp +There is no prohibition against declaring a server to be a \fIslave\fP +even though it has \fIprimary\fP and/or \fIsecondary\fP zones as well; +the effect will still be that anything in the local server's cache or +zones will be answered, and anything else will be forwarded using the +\fIforwarders\fP list. diff --git a/usr.sbin/named/doc/bog/ucbhosts b/usr.sbin/named/doc/bog/ucbhosts new file mode 100644 index 000000000000..2cb26355eb85 --- /dev/null +++ b/usr.sbin/named/doc/bog/ucbhosts @@ -0,0 +1,118 @@ +.\" ++Copyright++ 1986, 1988 +.\" - +.\" Copyright (c) 1986, 1988 +.\" The Regents of the University of California. All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" - +.\" Portions Copyright (c) 1993 by Digital Equipment Corporation. +.\" +.\" Permission to use, copy, modify, and distribute this software for any +.\" purpose with or without fee is hereby granted, provided that the above +.\" copyright notice and this permission notice appear in all copies, and that +.\" the name of Digital Equipment Corporation not be used in advertising or +.\" publicity pertaining to distribution of the document or software without +.\" specific, written prior permission. +.\" +.\" THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL +.\" WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES +.\" OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT +.\" CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL +.\" DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR +.\" PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS +.\" ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +.\" SOFTWARE. +.\" - +.\" --Copyright-- +.\" +.\" @(#)ucbhosts 6.3 (Berkeley) 2/8/89 +.\" +.\" .ne 48v +.\" .bp +.sh 3 "Hosts" +.(b L +; +; @(#)ucb-hosts 1.2 (berkeley) 88/02/05 +; +.TS +l l l l l s. +@ IN SOA ucbvax\fB.\fPBerkeley\fB.\fPEdu\fB.\fP kjd\fB.\fPmonet\fB.\fPBerkeley\fB.\fPEdu\fB.\fP ( +.T& +l l l l l. + 1988020501 ; Serial + 10800 ; Refresh + 1800 ; Retry + 3600000 ; Expire + 259200 ) ; Minimum +.T& +l l l l s. + IN NS ucbarpa\fB.\fPBerkeley\fB.\fPEdu\fB.\fP + IN NS ucbvax\fB.\fPBerkeley\fB.\fPEdu\fB.\fP +localhost IN A 127\fB.\fP1 + ; note that 127.1 is the same as 127.0.0.1; see inet(3n) +ucbarpa IN A 128\fB.\fP32\fB.\fP4 + IN A 10\fB.\fP0\fB.\fP0\fB.\fP78 + IN HINFO VAX-11/780 UNIX +arpa IN CNAME ucbarpa +ernie IN A 128\fB.\fP32\fB.\fP6 + IN HINFO VAX-11/780 UNIX +ucbernie IN CNAME ernie +monet IN A 128\fB.\fP32\fB.\fP7 + IN A 128\fB.\fP32\fB.\fP130\fB.\fP6 + IN HINFO VAX-11/750 UNIX +ucbmonet IN CNAME monet +ucbvax IN A 10\fB.\fP2\fB.\fP0\fB.\fP78 + ; 128.32.10 means 128.32.0.10; see inet(3n) + IN A 128\fB.\fP32\fB.\fP10 + ; HINFO and WKS are widely unused, + ; but we'll show them as examples. + IN HINFO VAX-11/750 UNIX + IN WKS 128.32.0.10 TCP ( echo telnet + discard sunrpc sftp + uucp-path systat daytime + netstat qotd nntp + link chargen ftp + auth time whhois mtp + pop rje finger smtp + supdup hostnames + domain + nameserver ) +vax IN CNAME ucbvax +toybox IN A 128\fB.\fP32\fB.\fP131\fB.\fP119 + IN HINFO Pro350 RT11 +toybox IN MX 0 monet.Berkeley.Edu. +csrg IN MX 0 Ralph.CS + IN MX 0 Zhou.CS + IN MX 0 Painter.CS + IN MX 0 Riggle.CS + IN MX 0 Terry.CS + IN MX 0 Kevin.CS +.TE +.)b +.\" .bp diff --git a/usr.sbin/named/doc/bog/ucbhosts.rev b/usr.sbin/named/doc/bog/ucbhosts.rev new file mode 100644 index 000000000000..16207afefede --- /dev/null +++ b/usr.sbin/named/doc/bog/ucbhosts.rev @@ -0,0 +1,86 @@ +.\" ++Copyright++ 1986, 1988 +.\" - +.\" Copyright (c) 1986, 1988 +.\" The Regents of the University of California. All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" - +.\" Portions Copyright (c) 1993 by Digital Equipment Corporation. +.\" +.\" Permission to use, copy, modify, and distribute this software for any +.\" purpose with or without fee is hereby granted, provided that the above +.\" copyright notice and this permission notice appear in all copies, and that +.\" the name of Digital Equipment Corporation not be used in advertising or +.\" publicity pertaining to distribution of the document or software without +.\" specific, written prior permission. +.\" +.\" THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL +.\" WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES +.\" OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT +.\" CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL +.\" DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR +.\" PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS +.\" ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +.\" SOFTWARE. +.\" - +.\" --Copyright-- +.\" +.\" @(#)ucbhosts.rev 6.3 (Berkeley) 9/19/89 +.\" +.ne 22v +.sh 3 "host.rev" +.(b L + +; +; @(#)ucb-hosts.rev 1.1 (Berkeley) 86/02/05 +; +.TS +l l l l l s. +@ IN SOA ucbvax\fB.\fPBerkeley\fB.\fPEdu\fB.\fP kjd\fB.\fPmonet\fB.\fPBerkeley\fB.\fPEdu\fB.\fP ( +.T& +l l l l l. + 1986020501 ; Serial + 10800 ; Refresh + 1800 ; Retry + 3600000 ; Expire + 259200 ) ; Minimum +.T& +l l l l s. + IN NS ucbarpa\fB.\fPBerkeley\fB.\fPEdu\fB.\fP + IN NS ucbvax\fB.\fPBerkeley\fB.\fPEdu\fB.\fP +0\fB.\fP0 IN PTR Berkeley-net\fB.\fPBerkeley\fB.\fPEDU\fB.\fP + IN A 255\fB.\fP255\fB.\fP255\fB.\fP0 +0\fB.\fP130 IN PTR csdiv-net\fB.\fPBerkeley\fB.\fPEDU\fB.\fP +4\fB.\fP0 IN PTR ucbarpa\fB.\fPBerkeley\fB.\fPEdu\fB.\fP +6\fB.\fP0 IN PTR ernie\fB.\fPBerkeley\fB.\fPEdu\fB.\fP +7\fB.\fP0 IN PTR monet\fB.\fPBerkeley\fB.\fPEdu\fB.\fP +10\fB.\fP0 IN PTR ucbvax\fB.\fPBerkeley\fB.\fPEdu\fB.\fP +6\fB.\fP130 IN PTR monet\fB.\fPBerkeley\fB.\fPEdu\fB.\fP +.TE +.)b diff --git a/usr.sbin/named/doc/i-d/draft-andrews-dns-ascii-02.txt b/usr.sbin/named/doc/i-d/draft-andrews-dns-ascii-02.txt new file mode 100644 index 000000000000..3d1300a17965 --- /dev/null +++ b/usr.sbin/named/doc/i-d/draft-andrews-dns-ascii-02.txt @@ -0,0 +1,109 @@ + Mark Andrews +INTERNET DRAFT CSIRO +Expires: September 1996 May 1996 +Updates RFC-1035 + + ASCII Encoding for Domain Names + + draft-andrews-dns-ascii-02.txt + +1. Status of This Memo + + This document is an Internet Draft. Internet Drafts are working + documents of the Internet Engineering Task Force (IETF), its Areas, + and its Working Groups. Note that other groups may also distribute + working documents as Internet Drafts. + + Internet Drafts are draft documents valid for a maximum of six + months. Internet Drafts may be updated, replaced, or obsoleted by + other documents at any time. It is not appropriate to use Internet + Drafts as reference material or to cite them other than as a "working + draft" or "work in progress." + + Please check the 1id-abstracts.txt listing contained in the internet- + drafts Shadow Directories to learn the current status of any Internet + Draft. + +2. Abstract + + [RFC 1035 Section 5.1] describes how to encode domain names as + character strings. It however allows non printable characters to be + used. It also allows for encodings of text files which would not + survive intact ftp ASCII mode transfers, different end of line + conventions. This document addresses these problems by stating where + decimal escapes SHOULD be used. + + While a applications MUST continue to read the full range as + expressed by [RFC 1035 5.1]. They SHOULD emit only this selected + subset. + +3. Encoding + + Octets within the follow ranges are encoded as backslash followed by + three decimal digits, 0x00 - 0x20, 0x7f - 0xff. + + e.g. + 0x00, \000 + 0x1f, \031 + 0xff, \255 + + + +Andrews [Page 1] + +Internet Draft draft-andrews-dns-ascii-02.txt May 1996 + + + Period (".") when NOT used as a domain separator is encoded as the + sequence backslash period, e.g. "\.". Un-escaped periods indicate + label separators. + + Backslash ("\") is encoded as two consecutive backslashes, e.g. "\\". + + Double quotes ('"') should always be represented as backslash quote + as a common nameserver implementation mis-parses strings containing + quotes, e.g. '\"'. + + Semi-colon (";") should always be encoded as backslash semi-colon + otherwise it will be interpreted as a comment. e.g. "\;". + + Space may be a literal space when the string is enclosed by double + quotes. + + All other characters represent their literal ASCII encoding eighth + bit not set. + +4. Security + + This draft introduces no known security problems. It may however + remove some latent security problems in applications where the + encoding is NOT reversible leading to unexpected changes in domain + names. + +4. References + + [RFC-1035] + P. Mockapetris, ``DOMAIN NAMES - IMPLEMENTATION AND + SPECIFICATION'', RFC-1035, ISI, November 1987. + +6. Author's Address + + Mark Andrews + CSIRO + Division of Mathematics and Statistics + Locked Bag 17 + North Ryde NSW 2113 + AUSTRALIA + + Mark.Andrews@dms.csiro.au [MA88] + + + + + + + + + +Andrews [Page 2] + diff --git a/usr.sbin/named/doc/i-d/draft-andrews-dns-hostnames-02.txt b/usr.sbin/named/doc/i-d/draft-andrews-dns-hostnames-02.txt new file mode 100644 index 000000000000..632513a415a7 --- /dev/null +++ b/usr.sbin/named/doc/i-d/draft-andrews-dns-hostnames-02.txt @@ -0,0 +1,339 @@ + + + + + + + Mark Andrews +INTERNET DRAFT CSIRO +Expires: October 1996 April 1996 + + Clarification on the use of + Hostnames, Mail Boxes and Mail Domains in the DNS + + draft-andrews-dns-hostnames-02.txt + +1. Status of This Memo + + This document is an Internet Draft. Internet Drafts are working + documents of the Internet Engineering Task Force (IETF), its Areas, + and its Working Groups. Note that other groups may also distribute + working documents as Internet Drafts. + + Internet Drafts are draft documents valid for a maximum of six + months. Internet Drafts may be updated, replaced, or obsoleted by + other documents at any time. It is not appropriate to use Internet + Drafts as reference material or to cite them other than as a "working + draft" or "work in progress." + + Please check the 1id-abstracts.txt listing contained in the internet- + drafts Shadow Directories to learn the current status of any Internet + Draft. + +2. Abstract + + At the protocol level, DNS domain names and records may contain + arbitrary binary data. However, many domain names and records are, + or refer to, hostnames, which are restricted by RFCs 952 and 1123 to + contain only certain characters. Similar restrictions apply to mail + domain names, RFC-821. This document identifies the types of domain + names and records which are hostnames / mail domain names, and + specifies the circumstances under which validation checks should be + performed within the class IN. + +3. Scope + + This document addresses restrictions that apply to records of class + IN. Similar restrictions may apply to other classes but no attempt + has been made to address them here. + + "hostname" is an ASCII string as specified by [RFC-952] and modified + by [RFC-1123]. + + "mail domain name" is an ASCII string as specified by [RFC-821]. It + is syntactically identical to a hostname. While a broader definition + + + +Andrews [Page 1] + +Internet Draft draft-andrews-dns-hostnames-02.txt February 1996 + + + is described in [RFC-822] only the subset described within [RFC-821] + will be allowed. [RFC-1123] does not explicitly change the syntax + for mail domain names, the changes to hostnames MUST flow through + indicating an implicit change. For the purposes of this document + hostname refers to either a hostname or a mail domain name. + + "mailbox" is a ASCII string specified by [RFC-821] and mapped into + the DNS using the mapping specified by [RFC-1035] Section 8. The + first label represents the local part and the second and subsequent + labels MUST form a hostname / mail domain name. The local part is + restricted to printable ASCII (0x21 - 0x7e) plus single interior + SPACE (0x21), that is a SPACE MUST be surrounded by printable ASCII. + This definition is tighter than [RFC-821]. + + legal: + "abc def.foo.bar" + "ab cd ef.foo.bar" + illegal: + " abcdef.foo.bar" + "abcdef .foo.bar" + "abc def.foo.bar" (sequence of two spaces) + + Field names are as described by [RFC-1035] unless otherwise noted. + + The terms "SHOULD", "SHOULD NOT", "MUST" and "MUST NOT" are defined + in [RFC-1123] and specify the latitude developers may take. + +4. Owner Name: Unconditional + + The owner names of the following resource records MUST be hostnames: + + A [RFC-1035] + WKS [RFC-1035] + MD [RFC-1035] (Obsolete) + MF [RFC-1035] (Obsolete) + MINFO [RFC-1035] MUST be a mailbox + MR [RFC-1035] MUST be a mailbox + MX [RFC-974] + AAAA [RFC-1886] + X25 [RFC-1183] + ISDN [RFC-1183] + RT [RFC-1183] + AFSDB [RFC-1183] + + Records which do not conform MUST NOT be accepted or sent by + nameservers, and queries containing non-conforming names MUST NOT be + generated by library routines. Nameservers MUST return FORMERR to + these queries. + + + +Andrews [Page 2] + +Internet Draft draft-andrews-dns-hostnames-02.txt February 1996 + + + If a query of type ANY is made, non-conforming records with the types + specified above MUST be discarded by library routines before the + results are returned to the application. + +5. Owner Name: Conditional + + The owner names of the following resource records MUST be hostnames + when the following conditions are met. Library routines must return + an error indication if passed a non-conforming name. + + When looking up network numbers or subnet masks [RFC-1101] the lookup + name MUST be verified as conforming or an error indication MUST be + returned. That is, if the PTRDNAME field ends in IN-ADDR.ARPA [RFC- + 1033] or IP6.INT [RFC-1886]. + +6. Hostnames in data fields: Unconditional + + The following records contain entries in their data components that + MUST refer to hostnames. Nameservers MUST reject records which fail + to conform and MUST NOT forward non-conforming records. FORMERR MUST + be returned if non-conforming records are received. + + SOA MNAME field MUST be a hostname. + SOA RNAME field. All but the first label MUST be a hostname. + MX EXCHANGE field MUST be a hostname. + NS NSDNAME field MUST be a hostname. + MB MADNAME field MUST be a hostname. + MD MADNAME field MUST be a hostname (Obsolete). + MF MADNAME field MUST be a hostname (Obsolete). + MG MGMNAME field MUST be a mailbox. + MINFO RMAILBX field MUST be a mailbox. + MINFO EMAILBX field MUST be a mailbox. + AFSDB field [RFC-1183] MUST be a hostname. + RP field [RFC-1183] MUST be a mailbox. + Empty field, e.g. ".", need not be checked. + RT field [RFC-1183] MUST be a hostname. + + If a query of type ANY is made, non-conforming records with the types + specified above MUST be discarded by library routines before the + results are returned to the application. + +7. Hostnames in the data field: Conditional + + The following resource record MAY contain hostnames in its data + fields. Library routines MUST ignore the resource record and indicate + an error to the calling routine. + + PTR records in the IP6.INT [RFC-1886] and IN-ADDR.ARPA [RFC-1033] + + + +Andrews [Page 3] + +Internet Draft draft-andrews-dns-hostnames-02.txt February 1996 + + + domains are used for mapping addresses into host and network names. + The data fields of PTR records in these two domains MUST be + hostnames. Records which do not conform MUST NOT be accepted or sent + by nameservers. FORMERR MUST be returned if received. In addition the + data fields of PTR records referred to by CNAMES within this space + MUST also conform [EIDNES]. Servers and libraries MUST ensure + conformance. REFUSED MUST be returned in this case. + + When looking up address records, A or AAAA, the CNAME data field MUST + be checked for conformance and the query terminated if required. + REFUSED MUST be returned in this case. + +8. Security Considerations + + This document addresses security issues raised by the use of non- + conforming hostnames. + + Some applications use hostnames as returned by the DNS without + checking their conformance. This has caused security problems in + those applications. This document addresses these problems by + requiring DNS resolvers and nameservers to enforce conformance, and + specifying exactly which parts of the DNS namespace are subject to + these restrictions. + + This document is believed to introduce no additional security + problems to the current DNS protocol, except perhaps by lulling + application developers into a false sense of security by having DNS + servers and resolver libraries implement conformance checks that + applications should implement in any case. DNS servers and resolver + libraries may be out-of-date, or compromised by malicious users, and + no application should depend on them actually performing conformance + checks. + + Requiring DNS servers and resolver libraries to perform the checks is + only an attempt to protect against faulty applications which fail to + perform these checks. + + +7. References + + [RFC-821] + J. Postel, ``SIMPLE MAIL TRANSFER PROTOCOL'', USC/Information + Sciences Institute, August 1982. + + [RFC-822] + D. Crocker, ``STANDARD FOR THE FORMAT ARPA INTERNET TEXT + MESSAGES'', University of Delaware, August 1982. + + + + +Andrews [Page 4] + +Internet Draft draft-andrews-dns-hostnames-02.txt February 1996 + + + [RFC-952] + K. Harrenstien, M. Stahl, E. Feinler, ``DoD Internet Host Table + Specification'', RFC-952, SRI, October 1985. + + [RFC-974] + Craig Partridge, ``MAIL ROUTING AND THE DOMAIN SYSTEM'', RFC-974, + CSNET CIC BBN Laboratories Inc, January 1986 + + [RFC-1033] + M. Lottor, ``DOMAIN ADMINISTRATORS OPERATIONS GUIDE'', RFC-1033, + SRI International, November 1987 + + [RFC-1035] + P. Mockapetris, ``Domain Names - Implementation and + Specification'', RFC-1035, USC/Information Sciences Institute, + November 1987. + + [RFC-1101] + P. Mockapetris, ``DNS Encoding of Network Names and Other Types'', + RFC-1101, ISI, April 1989 + + [RFC-1123] + Internet Engineering Task Force, R. Braden, Editor, ``Requirements + for Internet Hosts -- Application and Support'', RFC-1123, October + 1989 + + [RFC-1183] + C. Everhart, L. Mamakos, R. Ullmann, P. Mockapetris, ``New DNS RR + Definitions'', RFC-1183, Transarc, University of Maryland, Prime + Computer, ISI, October 1990 + + [RFC-1886] + S. Thomson, C. Huitema, ``DNS Extensions to support IP version + 6'', RFC-1886, Bellcore, INRIA, December 1995 + + [EIDNES] + WORK IN PROGRESS + + Havard Eidnes, Geert Jan de Groot ``Classless in-addr.arpa + delegation'', draft-ietf-cidrd-classless-inaddr-00.txt, SINTEF + RUNIT, RIPE NCC, Jan 1996 + +8. Author's Address + + Mark Andrews + CSIRO + Division of Mathematics and Statistics + Locked Bag 17 + + + +Andrews [Page 5] + +Internet Draft draft-andrews-dns-hostnames-02.txt February 1996 + + + North Ryde NSW 2113 + AUSTRALIA + + Mark.Andrews@dms.csiro.au [MA88] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Andrews [Page 6] + diff --git a/usr.sbin/named/doc/i-d/draft-andrews-dns-more-02.txt b/usr.sbin/named/doc/i-d/draft-andrews-dns-more-02.txt new file mode 100644 index 000000000000..174f439421f6 --- /dev/null +++ b/usr.sbin/named/doc/i-d/draft-andrews-dns-more-02.txt @@ -0,0 +1,262 @@ + Mark Andrews (CSIRO) + INTERNET-DRAFT Paul Vixie (ISC) + July 1996 + + Updates: RFC 1035 + + + Large Responses to DNS Queries (DNS MORE) + + + Status of This Memo + + This document is an Internet-Draft. Internet-Drafts are working + documents of the Internet Engineering Task Force (IETF), its + areas, and its working groups. Note that other groups may also + distribute working documents as Internet-Drafts. + + Internet-Drafts are draft documents valid for a maximum of six + months and may be updated, replaced, or obsoleted by other docu- + ments at any time. It is inappropriate to use Internet-Drafts + as reference material or to cite them other than as ``work in + progress.'' + + To learn the current status of any Internet-Draft, please check + the ``1id-abstracts.txt'' listing contained in the Internet- + Drafts Shadow Directories on ftp.is.co.za (Africa), + nic.nordu.net (Europe), munnari.oz.au (Pacific Rim), + ds.internic.net (US East Coast), or ftp.isi.edu (US West Coast). + + + Abstract + + DNS messages are limited to 64 kilobytes in size. At times it is + necessary to send a message that is greater that 64 kilobytes. + This is currently not possible. AXFR is the one exception. This + document describes how to send a sequence of messages, the total + length which may be greater than 64 kilobytes, by extending the + protocol. + + In addition average message sizes are increasing and the 512 + byte payload limit for UDP is now too small. This document + describes how servers can identify when they can send bigger + messages without necessarily resorting to TCP. + + + + + + Expires January 1996 [Page 1] + + INTERNET-DRAFT DNS MORE July 1996 + + + 1 - Protocol + + This extension uses one of the RESERVED flags bits from DNS header + [RFC1035 4.1.1] to indicate when a server can send the extended + response. This flag bit shall be known as MORE. + + The MORE flag's semantics depend upon the underlying transport protocol. + + This document only defines the use of the MORE flag with the opcode + QUERY. + + 1.1 - TCP Usage + + When using TCP a resolver sets the MORE flag to indicate that it is + capable of receiving a multi message response (which we call a ``message + sequence''). + + To indicate that the message sequence is not complete the server shall + set the RCODE to CONTINUED (TBA) in all but the last message of the mes- + sage sequence. + + The order of resource records in a multi message response MUST be the + same as if the response could have been sent is a single response. The + Questions first followed by, the Answer RRs, Authority RRs and Addi- + tional RRs. + + Each message in a sequence will contain a header with the same ID value, + flags, opcode. Only the count fields and the rcode are permitted to + change. The counts shall represent the number of resource records in + this message. MORE MUST cleared in the response. + + 1.1.1 - TCP Example + + The following example show how to send an answer with one question, 10 + answer records, 14 authority records and 5 additional records. The + answer is split up across 3 messages. + + MESSAGE 1: QCOUNT=1, ANCOUNT=10, AUCOUNT=0, + ADCOUNT=0, RCODE=CONTINUED + MESSAGE 2: QCOUNT=0, ANCOUNT=0, AUCOUNT=11, + ADCOUNT=0. RCODE=CONTINUED + MESSAGE 3: QCOUNT=0, ANCOUNT=0, AUCOUNT=3, + ADCOUNT=5, RCODE=NOERROR + + + + + + Expires January 1996 [Page 2] + + INTERNET-DRAFT DNS MORE July 1996 + + + 1.2 - UDP Usage + + When using UDP, a resolver may set the MORE flag in a QUERY request to + indicate that its receive buffer is greater than 512 bytes in size, + rather than the 512 byte size given in [RFC1035 3.2.4]. The resolver is + expected to set this flag only if it knows that the host's reassembly + buffer is large enough to accommodate datagrams of the size indicated. + + The new size is indicated by the RCODE is the query. The receive buffer + is 512 * (2 ^ RCODE) bytes in size. + + RCODE SIZE + 0 512 + 1 1024 + 2 2048 + 3 4096 + 4 8192 + 5 16384 + 6 32768 + 7 65536 + 8 131072 + 9 262144 + 10 524288 + 11 1048576 + 12 2097152 + 13 4194304 + 14 8388608 + 15 16777216 + + + A server receiving a QUERY request with the MORE flag set is allowed to + transmit a response of up to the size indicated. If the response will + not fit in size indicated, then the rules given in [RFC1035 4.1.1, + 4.2.1, 6.2] apply. If after taking section 1.2.1 into account the answer + section is still going to be truncated, the server should send a trun- + cated response in a 512 byte message. This is to remove the possibility + of IP reassembly errors causing the UDP response to be dropped. + + The server MUST clear the MORE flag in the response. + + The server SHOULD disable path MTU discovery on the UDP response packet + resulting in host fragmentation. + + + + + + + Expires January 1996 [Page 3] + + INTERNET-DRAFT DNS MORE July 1996 + + + 1.2.1 - UDP Fragmentation + + A server MAY take account of common MTU values [RFC1191 7.1] and if the + answer without additional and/or authority sections would fall below the + MTU and the message with the additional and/or authority sections would + be greater than the MTU value, it MAY wish to leave the whole section(s) + off rather than truncate within a section. + + 2 - Header Format + + The header format is that described in [RFC1035 4.1.1] with the MORE + flag added: + + 1 1 1 1 1 1 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 + +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ + | ID | + +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ + |QR| Opcode |AA|TC|RD|RA|MO| Z | RCODE | + +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ + | QDCOUNT | + +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ + | ANCOUNT | + +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ + | NSCOUNT | + +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ + | ARCOUNT | + +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ + + + Where MO is the MORE flag. + + 3 - Security Considerations + + Though DNS is related to several security problems, no attempt is made + to fix them in this document. + + This document is believed to introduce no additional security problems + to the current DNS protocol. + + + + + + + + + + Expires January 1996 [Page 4] + + INTERNET-DRAFT DNS MORE July 1996 + + + References + + [RFC1035] + P. Mockapetris, ``Domain Names - Implementation and Specifica- + tion,'' RFC 1035, USC/Information Sciences Institute, November + 1987. + + + [RFC1191] + Mogul, J., and S. Deering, ``Path MTU Discovery'' RFC 1191, + DECWRL, Stanford University, November 1990. + + + Authors' Addresses + + Mark Andrews + CSIRO - Division of Mathematics and Statistics + Locked Bag 17 + North Ryde NSW 2113 + AUSTRALIA + +61 2 325 3148 + + + Paul Vixie + Internet Software Consortium + Star Route Box 159A + Woodside, CA 94062 + USA + +1 415 747 0204 + + + + + + + + + + + + + + + + + + + + Expires January 1996 [Page 5] + diff --git a/usr.sbin/named/doc/i-d/draft-ietf-dnsind-2ndry-03.txt b/usr.sbin/named/doc/i-d/draft-ietf-dnsind-2ndry-03.txt new file mode 100644 index 000000000000..56c436306c8a --- /dev/null +++ b/usr.sbin/named/doc/i-d/draft-ietf-dnsind-2ndry-03.txt @@ -0,0 +1,670 @@ + + +Network Working Group Robert Elz +Internet Draft University of Melbourne +Expiration Date: February 1997 + Randy Bush + RGnet, Inc. + + Scott Bradner + Harvard University + + Michael A. Patton + Bolt Beranek and Newman + + August 1996 + + + Selection and Operation of Secondary DNS Servers + + + draft-ietf-dnsind-2ndry-03.txt + +Status of this Memo + + This document is an Internet-Draft. Internet-Drafts are working + documents of the Internet Engineering Task Force (IETF), its areas, + and its working groups. Note that other groups may also distribute + working documents as Internet-Drafts. + + Internet-Drafts are draft documents valid for a maximum of six months + and may be updated, replaced, or obsoleted by other documents at any + time. It is inappropriate to use Internet-Drafts as reference + material or to cite them other than as "work in progress." + + To learn the current status of any Internet-Draft, please check the + "1id-abstracts.txt" listing contained in the Internet-Drafts Shadow + Directories on ftp.is.co.za (Africa), nic.nordu.net (Europe), + munnari.oz.au (Pacific Rim), ds.internic.net (US East Coast), or + ftp.isi.edu (US West Coast). + +Abstract + + The Domain Name System requires that multiple servers exist for every + delegated domain (zone). This document discusses the selection of + secondary servers for DNS zones. Both the physical and topological + location of each server are material considerations when selecting + secondary servers. The number of servers appropriate for a zone is + also discussed, and some general secondary server maintenance issues + considered. + + + + +kre, et al. [Page 1] + +Internet Draft draft-ietf-dnsind-2ndry-03.txt August 1996 + + + + +Contents + + Status of this Memo ........................................ 1 + Abstract ................................................... 1 + 1 Introduction ............................................... 2 + 2 Definitions ................................................ 2 + 3 Secondary Servers .......................................... 3 + 4 Unreachable servers ........................................ 5 + 5 How many secondaries? ...................................... 7 + 6 Finding Suitable Secondary Servers ......................... 8 + 7 Serial Number Maintenance .................................. 8 + Security Considerations .................................... 10 + References ................................................. 11 + Acknowledgements ........................................... 11 + Authors' Addresses ......................................... 11 + + + + +1. Introduction + + A number of problems in DNS operations today are attributable to poor + choices of secondary servers for DNS zones. The geographic placement + as well as the diversity of network connectivity exhibited by the set + of DNS servers for a zone can increase the reliability of that zone + as well as improve overall network performance and access + characteristics. Other considerations in server choice can + unexpectedly lower reliability or impose extra demands on the + network. + + This document discusses many of the issues that should be considered + when selecting secondary servers for a zone. It offers guidance in + how to best choose servers to serve a given zone. + +2. Definitions + + For the purposes of this document, and only this document, the + following definitions apply: + + DNS The Domain Name System [RFC1034, RFC1035]. + + Zone A part of the DNS tree, that is treated as a + unit. + + Forward Zone A zone containing data mapping names to host + addresses, mail exchange targets, etc. + + + +kre, et al. [Page 2] + +Internet Draft draft-ietf-dnsind-2ndry-03.txt August 1996 + + + Reverse Zone A zone containing data used to map addresses + to names. + + Server An implementation of the DNS protocols able to + provide answers to queries. Answers may be + from information known by the server, or + information obtained from another server. + + Authoritative Server A server that knows the content of a DNS zone + from local knowledge, and thus can answer + queries about that zone without needing to + query other servers. + + Listed Server An Authoritative Server for which there is an + "NS" resource record (RR) in the zone. + + Primary Server An authoritative server for which the zone + information is locally configured. Sometimes + known as a Master server. + + Secondary Server An authoritative server that obtains + information about a zone from a Primary Server + via a zone transfer mechanism. Sometimes + known as a Slave Server. + + Stealth Server An authoritative server, usually secondary, + which is not a Listed Server. + + Resolver A client of the DNS which seeks information + contained in a zone using the DNS protocols. + +3. Secondary Servers + + A major reason for having multiple servers for each zone is to allow + information from the zone to be available widely and reliably to + clients throughout the Internet, that is, throughout the world, even + when one server is unavailable or unreachable. + + Multiple servers also spread the name resolution load, and improve + the overall efficiency of the system by placing servers nearer to the + resolvers. Those purposes are not treated further here. + + With multiple servers, usually one server will be the primary server, + and others will be secondary servers. Note that while some unusual + configurations use multiple primary servers, that can result in data + inconsistencies, and is not advisable. + + + + + +kre, et al. [Page 3] + +Internet Draft draft-ietf-dnsind-2ndry-03.txt August 1996 + + + The distinction between primary and secondary servers is relevant + only to the servers for the zone concerned, to the rest of the DNS + there are simply multiple servers. All are treated equally at first + instance, even by the parent server that delegates the zone. + Resolvers often measure the performance of the various servers, + choose the "best", for some definition of best, and prefer that one + for most queries. That is automatic, and not considered here. + + The primary server holds the master copy of the zone file. That is, + the server where the data is entered into the DNS from some source + outside the DNS. Secondary servers obtain data for the zone using + DNS protocol mechanisms to obtain the zone from the primary server. + +3.1. Selecting Secondary Servers + + When selecting secondary servers, attention should be given to the + various likely failure modes. Servers should be placed so that it is + likely that at least one server will be available to all significant + parts of the Internet, for any likely failure. + + Consequently, placing all servers at the local site, while easy to + arrange, and easy to manage, is not a good policy. Should a single + link fail, or there be a site, or perhaps even building, or room, + power failure, such a configuration can lead to all servers being + disconnected from the Internet. + + Secondary servers must be placed at both topologically and + geographically dispersed locations on the Internet, to minimise the + likelihood of a single failure disabling all of them. + + That is, secondary servers should be at geographically distant + locations, so it is unlikely that events like power loss, etc, will + disrupt all of them simultaneously. They should also be connected to + the net via quite diverse paths. This means that the failure of any + one link, or of routing within some segment of the network (such as a + service provider) will not make all of the servers unreachable. + +3.2. Unsuitable Configurations + + While it is unfortunately quite common, servers for a zone should + certainly not all be placed on the same LAN segment in the same room + of the same building - or any of those. Such a configuration almost + defeats the requirement, and utility, of having multiple servers. + The only redundancy usually provided in that configuration is for the + case when one server is down, whereas there are many other possible + failure modes, such as power failures, including lengthy ones, to + consider. + + + + +kre, et al. [Page 4] + +Internet Draft draft-ietf-dnsind-2ndry-03.txt August 1996 + + +4. Unreachable servers + + Another class of problems is caused by listing servers that cannot be + reached from large parts of the network. This could be listing the + name of a machine that is completely isolated behind a firewall, or + just a secondary address on a dual homed machine which is not + accessible from outside. The names of servers listed in NS records + should resolve to addresses which are reachable from the region to + which the NS records are being returned. Including addresses which + most of the network cannot reach does not add any reliability, and + causes several problems, which may, in the end, lower the reliability + of the zone. + + First, the only way the resolvers can determine that these addresses + are, in fact, unreachable, is to try them. They then need to wait on + a lack of response timeout (or occasionally an ICMP error response) + to know that the address cannot be used. Further, even that is + generally indistinguishable from a simple packet loss, so the + sequence must be repeated, several times, to give any real evidence + of an unreachable server. All of this probing and timeout may take + sufficiently long that the original client program or user will + decide that no answer is available, leading to an apparent failure of + the zone. Additionally, the whole thing needs to be repeated from + time to time to distinguish a permanently unreachable server from a + temporarily unreachable one. + + And finally, all these steps will potentially need to be done by + resolvers all over the network. This will increase the traffic, and + probably the load on the filters at whatever firewall is blocking + this access. All of this additional load does no more than + effectively lower the reliability of the service. + +4.1. Servers behind intermittent connections + + A similar problem occurs with DNS servers located in parts of the net + that are often disconnected from the Internet as a whole. For + example, those which connect via an intermittent connection that is + often down. Such servers should usually be treated as if they were + behind a firewall, and unreachable to the network at any time. + +4.2. Other problem cases + + Similar problems occur when a Network Address Translator (NAT) + [RFC1631] exists between a resolver and server. Despite what + [RFC1631] suggests, NATs in practice do not translate addresses + embedded in packets, only those in the headers. As [RFC1631] + suggests, this is somewhat of a problem for the DNS. This can + sometimes be overcome if the NAT is accompanied by, or replaced with, + + + +kre, et al. [Page 5] + +Internet Draft draft-ietf-dnsind-2ndry-03.txt August 1996 + + + an Application Layer Gateway (ALG). Such a device would understand + the DNS protocol and translate all the addresses as appropriate as + packets pass through. Even with such a device, it is likely to be + better in any of these cases to adopt the solution described in the + following section. + +4.3. A Solution + + To avoid these problems, NS records for a zone returned in any + response should list only servers that the resolver requesting the + information, is likely to be able to reach. Some resolvers are + simultaneously servers performing lookups on behalf of other + resolvers. The NS records returned should be reachable not only by + the resolver that requested the information, but any other resolver + that may be forwarded the information. All the addresses of all the + servers returned must be reachable. As the addresses of each server + form a Resource Record Set [KRE1996b], all must be returned (or + none), thus it is not acceptable to elide addresses of servers that + are unreachable, or to return them with a low TTL (while returning + others with a higher TTL). + + In particular, when some servers are behind a firewall, intermittent + connection, or NAT, which disallows, or has problems with, DNS + queries or responses, their names, or addresses, should not be + returned to clients outside the firewall. Similarly, servers outside + the firewall should not be made known to clients inside it, if the + clients would be unable to query those servers. Implementing this + usually requires dual DNS setups, one for internal use, the other for + external use. Such a setup often solves other problems with + environments like this. + + When a server is at a firewall boundary, reachable from both sides, + but using different addresses, that server should be given two names, + each name associated with appropriate A records, such that each + appears to be reachable only on the appropriate side of the firewall. + This should then be treated just like two servers, one on each side + of the firewall. A server implemented in an ALG will usually be such + a case. Special care will need to be taken to allow such a server to + return the correct responses to clients on each side. That is, + return only information about hosts reachable from that side and the + correct IP address(es) for the host when viewed from that side. + + Servers in this environment often need special provision to give them + access to the root servers. Often this is accomplished via "fake + root" configurations. In such a case the servers should be kept well + isolated from the rest of the DNS, lest their unusual configuration + pollute others. + + + + +kre, et al. [Page 6] + +Internet Draft draft-ietf-dnsind-2ndry-03.txt August 1996 + + +5. How many secondaries? + + The DNS specification and domain name registration rules require at + least two servers for every zone. That is, usually, the primary and + one secondary. While two, carefully placed, are often sufficient, + occasions where two are insufficient are frequent enough that we + advise the use of more than two listed servers. Various problems can + cause a server to be unavailable for extended periods - during such a + period, a zone with only two listed servers is actually running with + just one. Since any server may occasionally be unavailable, for all + kinds of reasons, this zone is likely, at times, to have no + functional servers at all. + + On the other hand, having large numbers of servers adds little + benefit, while adding costs. At the simplest, more servers cause + packets to be larger, so requiring more bandwidth. This may seem, + and realistically is, trivial. However there is a limit to the size + of a DNS packet, and causing that limit to be reached has more + serious performance implications. It is wise to stay well clear of + it. More servers also increase the likelihood that one server will + be misconfigured, or malfunction, without being detected. + + It is recommended that three servers be provided for most + organisation level zones, with at least one which must be well + removed from the others. For zones where even higher reliability is + required, four, or even five, servers may be desirable. Two, or + occasionally three of five, would be at the local site, with the + others not geographically or topologically close to the site, or each + other. + + Reverse zones, that is, sub-domains of .IN-ADDR.ARPA, tend to be less + crucial, and less servers, less distributed, will often suffice. + This is because address to name translations are typically needed + only when packets are being received from the address in question, + and only by resolvers at or near the destination of the packets. + This gives some assurances that servers located at or near the packet + source, for example, on the the same network, will be reachable from + the resolvers that need to perform the lookups. Thus some of the + failure modes that need to be considered when planning servers for + forward zones may be less relevant when reverse zones are being + planned. + + + + + + + + + + +kre, et al. [Page 7] + +Internet Draft draft-ietf-dnsind-2ndry-03.txt August 1996 + + +5.1. Stealth Servers + + Servers which are authoritative for the zone, but not listed in NS + records (also known as "stealth" servers) are not included in the + count of servers. + + It can often be useful for all servers at a site to be authoritative + (secondary), but only one or two be listed servers, the rest being + unlisted servers for all local zones, that is, to be stealth servers. + + This allows those servers to provide answers to local queries + directly, without needing to consult another server. If it were + necessary to consult another server, it would usually be necessary + for the root servers to be consulted, in order to follow the + delegation tree - that the zone is local would not be known. This + would mean that some local queries may not be able to be answered if + external communications were disrupted. + + Listing all such servers in NS records, if more than one or two, + would cause the rest of the Internet to spend unnecessary effort + attempting to contact all servers at the site when the whole site is + inaccessible due to link or routing failures. + +6. Finding Suitable Secondary Servers + + Operating a secondary server is usually an almost automatic task. + Once established, the server generally runs itself, based upon the + actions of the primary server. Because of this, large numbers of + organisations are willing to provide a secondary server, if + requested. The best approach is usually to find an organisation of + similar size, and agree to swap secondary zones - each organisation + agrees to provide a server to act as a secondary server for the other + organisation's zones. Note that there is no loss of confidential + data here, the data set exchanged would be available publically + whatever the servers are. + +7. Serial Number Maintenance + + Secondary servers use the serial number in the SOA record of the zone + to determine when it is necessary to update their local copy of the + zone. Serial numbers are basically just 32 bit unsigned integers + that wrap around from the biggest possible value to zero again. See + [KRE1996a] for a more rigorous definition of the serial number. + + The serial number must be incremented every time a change, or group + of changes, is made to the zone on the primary server. This informs + secondary servers they need update their copies of the zone. Note + that it is not possible to decrement a serial number, increments are + + + +kre, et al. [Page 8] + +Internet Draft draft-ietf-dnsind-2ndry-03.txt August 1996 + + + the only defined modification. + + Occasionally due to editing errors, or other factors, it may be + necessary to cause a serial number to become smaller. Never simply + decrease the serial number. Secondary servers will ignore that + change, and further, will ignore any later increments until the + earlier large value is exceeded. + + Instead, given that serial numbers wrap from large to small, in + absolute terms, increment the serial number, several times, until it + has reached the value desired. At each step, wait until all + secondary servers have updated to the new value before proceeding. + + For example, assume that the serial number of a zone was 10, but has + accidentally been set to 1000, and it is desired to set it back to + 11. Do not simply change the value from 1000 to 11. A secondary + server that has seen the 1000 value (and in practice, there is always + at least one) will ignore this change, and continue to use the + version of the zone with serial number 1000, until the primary + server's serial number exceeds that value. This may be a long time - + in fact, the secondary often expires its copy of the zone before the + zone is ever updated again. + + Instead, for this example, set the primary's serial number to + 2000000000, and wait for the secondary servers to update to that + zone. The value 2000000000 is chosen as a value a lot bigger than + the current value, but less that 2^31 bigger (2^31 is 2147483648). + This is then an increment of the serial number [KRE1996a]. + + Next, after all servers needing updating have the zone with that + serial number, the serial number can be set to 4000000000. + 4000000000 is 2000000000 more than 2000000000 (fairly clearly), and + is thus another increment (the value added is less than 2^31). + + Once this copy of the zone file exists at all servers, the serial + number can simply be set to 11. In serial number arithmetic, a + change from 4000000000 to 11 is an increment. Serial numbers wrap at + 2^32 (4294967296), so 11 is identical to 4294967307 + (4294967296 + 11). 4294967307 is just 294967307 greater than + 4000000000, and 294967307 is well under 2^31, this is therefore an + increment. + + When following this procedure, it is essential to verify that all + relevant servers have been updated at each step, never assume + anything. Failing to do this can result in a worse mess than existed + before the attempted correction. Also beware that it is the + relationship between the values of the various serial numbers that is + important, not the absolute values. The values used above are + + + +kre, et al. [Page 9] + +Internet Draft draft-ietf-dnsind-2ndry-03.txt August 1996 + + + correct for that one example only. + + It is possible in essentially all cases to correct the serial number + in two steps by being more aggressive in the choices of the serial + numbers. This however causes the numbers used to be less "nice", and + requires considerably more care. + + Also, note that not all nameserver implementations correctly + implement serial number operations. With such servers as secondaries + there is typically no way to cause the serial number to become + smaller, other than contacting the administrator of the server and + requesting that all existing data for the zone be purged. Then that + the secondary be loaded again from the primary, as if for the first + time. + + It remains safe to carry out the above procedure, as the + malfunctioning servers will need manual attention in any case. After + the sequence of serial number changes described above, conforming + secondary servers will have been reset. Then when the primary server + has the correct (desired) serial number, contact the remaining + secondary servers and request their understanding of the correct + serial number be manually corrected. Perhaps also suggest that they + upgrade their software to a standards conforming implementation. + + A server which does not implement this algorithm is defective, and + may be detected as follows. At some stage, usually when the absolute + integral value of the serial number becomes smaller, a server with + this particular defect will ignore the change. Servers with this + type of defect can be detected by waiting for at least the time + specified in the SOA refresh field and then sending a query for the + SOA. Servers with this defect will still have the old serial number. + We are not aware of other means to detect this defect. + +Security Considerations + + This document does not consider security. + + The mention of firewalls in section 4 is purely because they are a + fact of life (and an impediment to orderly communications). It is + not intended to imply that a firewall is in any way useful for + security purposes. + + It is not believed that anything in this document adds to any + security issues that may exist with the DNS, nor does it do anything + to lessen them. + + + + + + +kre, et al. [Page 10] + +Internet Draft draft-ietf-dnsind-2ndry-03.txt August 1996 + + +References + + [RFC1034] Domain Names - Concepts and Facilities, + P. Mockapetris, ISI, November 1987. + + [RFC1035] Domain Names - Implementation and Specification, + P. Mockapetris, ISI, November 1987 + + [RFC1631] The IP Network Address Translator (NAT), + K. Egevang, Cray Communications, P. Francis, NTT, May 1994 + + [KRE1996a] Serial Number Arithmetic, + R. Elz, R. Bush, + Work in Progress (RFC pending), April 1996. + + [KRE1996b] Clarifications to the DNS specification, + R. Elz, R. Bush, + Work In Progress (internet-draft), May 1996. + +Acknowledgements + + Brian Carpenter and Yakov Rekhter suggested mentioning NATs and ALGs + as a companion to the firewall text. + +Authors' Addresses + + Robert Elz + Computer Science + University of Melbourne + Parkville, Vic, 3052 + Australia. + + EMail: kre@munnari.OZ.AU + + Randy Bush + RGnet, Inc. + 10361 NE Sasquatch Lane + Bainbridge Island, Washington, 98110 + United States. + + EMail: randy@psg.com + + + + + + + + + + +kre, et al. [Page 11] + +Internet Draft draft-ietf-dnsind-2ndry-03.txt August 1996 + + + Scott Bradner + Harvard University + 1350 Mass Ave + Cambridge, MA, 02138 + United States. + + EMail: sob@harvard.edu + + Michael A. Patton + Bolt Beranek and Newman + 10 Moulton Street + Cambridge, MA, 02138 + United States. + + EMail: MAP@BBN.COM + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +kre, et al. [Page 12] diff --git a/usr.sbin/named/doc/i-d/draft-ietf-dnsind-clarify-01.txt b/usr.sbin/named/doc/i-d/draft-ietf-dnsind-clarify-01.txt new file mode 100644 index 000000000000..a8b652e5025b --- /dev/null +++ b/usr.sbin/named/doc/i-d/draft-ietf-dnsind-clarify-01.txt @@ -0,0 +1,334 @@ + + +Network Working Group Robert Elz +Internet Draft University of Melbourne +Expiration Date: November 1996 + Randy Bush + RGnet, Inc. + + May 1996 + + + Clarifications to the DNS Specification + + + draft-ietf-dnsind-clarify-01.txt + +Status of this Memo + + This document is an Internet-Draft. Internet-Drafts are working + documents of the Internet Engineering Task Force (IETF), its areas, + and its working groups. Note that other groups may also distribute + working documents as Internet-Drafts. + + Internet-Drafts are draft documents valid for a maximum of six months + and may be updated, replaced, or obsoleted by other documents at any + time. It is inappropriate to use Internet-Drafts as reference + material or to cite them other than as "work in progress." + + To learn the current status of any Internet-Draft, please check the + "1id-abstracts.txt" listing contained in the Internet-Drafts Shadow + Directories on ftp.is.co.za (Africa), nic.nordu.net (Europe), + munnari.oz.au (Pacific Rim), ds.internic.net (US East Coast), or + ftp.isi.edu (US West Coast). + +1. Abstract + + This draft considers some areas that have been identified as problems + with the specification of the Domain Name System, and proposes + remedies for the defects identified. Two separate issues are + considered, IP packet header address usage from multi-homed servers, + and TTLs in sets of records with the same name, class, and type. + + + + + + + + + + + + +kre/randy [Page 1] + +Internet Draft draft-ietf-dnsind-clarify-01.txt May 1996 + + +2. Introduction + + Several problem areas in the Domain Name System specification + [RFC1034, RFC1035] have been noted through the years [RFC1123]. This + draft addresses two additional problem areas. The two issues here + are independent. Those issues are the question of which source + address a multi-homed DNS server should use when replying to a query, + and the issue of differing TTLs for DNS records with the same label, + class and type. + + Suggestions for clarifications to the DNS specification to avoid + these problems are made in this memo. The solutions proposed herein + are intended to stimulate discussion. It is possible that the sense + of either may be reversed before the next iteration of this draft, + but less likely now than it was before the previous version. + +3. Server Reply Source Address Selection + + Most, if not all, DNS clients, whether servers acting as clients for + the purposes of recursive query resolution, or resolvers, expect the + address from which a reply is received to be the same address as that + to which the query eliciting the reply was sent. This, along with + the identifier (ID) in the reply is used for disambiguating replies, + and filtering spurious responses. This may, or may not, have been + intended when the DNS was designed, but is now a fact of life. + + Some multi-homed hosts running DNS servers fail to anticipate this + usage, and consequently send replies from the "wrong" source address, + causing the reply to be discarded by the client. + +3.1. UDP Source Address Selection + + To avoid these problems, servers when responding to queries using UDP + must cause the reply to be sent with the source address field in the + IP header set to the address that was in the destination address + field of the IP header of the packet containing the query causing the + response. If this would cause the response to be sent from an IP + address which is not permitted for this purpose, then the response + may be sent from any legal IP address allocated to the server. That + address should be chosen to maximise the possibility that the client + will be able to use it for further queries. Servers configured in + such a way that not all their addresses are equally reachable from + all potential clients need take particular care when responding to + queries sent to anycast, multicast, or similar, addresses. + + + + + + + +kre/randy [Page 2] + +Internet Draft draft-ietf-dnsind-clarify-01.txt May 1996 + + +3.2. Port Number Selection + + Replies to all queries must be directed to the port from which they + were sent. With queries received via TCP this is an inherent part of + the transport protocol, for queries received by UDP the server must + take note of the source port and use that as the destination port in + the response. Replies should always be sent from the port to which + they were directed. Except in extraordinary circumstances, this will + be the well known port assigned for DNS queries [RFC1700]. + +4. Resource Record Sets + + Each DNS Resource Record (RR) each has a label, class, type, and + data. While it is meaningless for two records to ever have label, + class, type and data all equal (servers should suppress such + duplicates if encountered), it is possible for many record types to + exist with the same label class and type, but with different data. + Such a group of records is hereby defined to be a Resource Record Set + (RRSet). + +4.1. Sending RRs from an RRSet + + A query for a specific (or non-specific) label, class, and type, will + always return all records in the associated RRSet - whether that be + one or more RRs, or the response shall be marked as "truncated" if + the entire RRSet will not fit in the response. + +4.2. TTLs of RRs in an RRSet + + Resource Records also have a time to live (TTL). It is possible for + the RRs in an RRSet to have different TTLs, however no uses for this + have been found which cannot be better accomplished in other ways. + This can, however, cause partial replies (not marked "truncated") + from a caching server, where the TTLs for some but not all of the RRs + in the RRSet have expired. + + Consequently the use of differing TTLs in an RRSet is hereby + deprecated, the TTLs of all RRs in an RRSet must be the same. + + Should a client receive a response containing RRs from an RRSet with + differing TTLs, it should treat the RRs for all purposes as if all + TTLs in the RRSet had been set to the value of the lowest TTL in the + RRSet. + + + + + + + + +kre/randy [Page 3] + +Internet Draft draft-ietf-dnsind-clarify-01.txt May 1996 + + +4.3. Receiving RRSets + + Servers never merge RRs from a response with RRs in their cache to + form an RRSet. If a response contains data which would form an RRSet + with data in a server's cache the server must either ignore the RRs + in the response, or use those to replace the existing RRSet in the + cache, as appropriate. Consequently the issue of TTLs varying + between the cache and a response does not cause concern, one will be + ignored. + +4.3.1. Ranking data + + When considering whether to accept an RRSet in a reply, or retain an + RRSet already in its cache instead, a server should consider the + relative likely trustworthiness of the various data. That is, an + authoritative answer from a reply should replace cached data that had + been obtained from additional information in an earlier reply, but + additional information from a reply will be ignored if the cache + contains data from an authoritative answer or a zone file. + + The accuracy of data available is assumed from its source. + Trustworthiness shall be, in order from most to least: + + + Data from a primary zone file, other than glue data, + + Data from a zone transfer, other than glue, + + That from the answer section of an authoritative reply, + + Glue from a primary zone, or glue from a zone transfer, + + Data from the authority section of an authoritative answer, + + Data from the answer section of a non-authoritative answer, + + Additional information from an authoritative answer, + + Data from the authority section of a non-authoritative answer, + + Additional information from non-authoritative answers. + + Where authenticated data has been received it shall be considered + more trustworthy than unauthenticated data of the same type. + + "Glue" above includes any record in a zone file that is not properly + part of that zone, including nameserver records of delegated sub- + zones (NS records), address records that accompany those NS records + (A, AAAA, etc), and any other stray data that might appear. + +4.4. Sending RRSets (reprise) + + A Resource Record Set should only be included once in any DNS reply. + It may occur in any of the Answer, Authority, or Additional + Information sections, as required, however should not be repeated in + the same, or any other, section, except where explicitly required by + a specification. For example, an AXFR response requires the SOA + + + +kre/randy [Page 4] + +Internet Draft draft-ietf-dnsind-clarify-01.txt May 1996 + + + record (always an RRSet containing a single RR) be both the first and + last record of the reply. Where duplicates are required this way, + the TTL transmitted in each case must be the same. + +5. Security Considerations + + This document does not consider security. + + In particular, nothing in section 3 is any way related to, or useful + for, any security related purposes. + + Section 4.3.1 is also not related to security. Security of DNS data + will be obtained by the Secure DNS [DNSSEC], which is orthogonal to + this memo. + + It is not believed that anything in this document adds to any + security issues that may exist with the DNS, nor does it do anything + to lessen them. + +6. References + + [RFC1034] Domain Names - Concepts and Facilities, (STD 13) + P. Mockapetris, ISI, November 1987. + + [RFC1035] Domain Names - Implementation and Specification (STD 13) + P. Mockapetris, ISI, November 1987 + + [RFC1123] Requirements for Internet hosts - application and support, + (STD 3) R. Braden, January 1989 + + [RFC1700] Assigned Numbers (STD 2) + J. Reynolds, J. Postel, October 1994. + + [DNSSEC] Domain Name System Security Extensions, + D. E. Eastlake, 3rd, C. W. Kaufman, + Work in Progress (Internet Draft), January 1996. + +7. Acknowledgements + + This memo arose from discussions in the DNSIND working group of the + IETF in 1995 and 1996, the members of that working group are largely + responsible for the ideas captured herein. + + + + + + + + + +kre/randy [Page 5] + +Internet Draft draft-ietf-dnsind-clarify-01.txt May 1996 + + +8. Authors' addresses + + Robert Elz + Computer Science + University of Melbourne + Parkville, Victoria, 3052 + Australia. + + EMail: kre@munnari.OZ.AU + + + Randy Bush + RGnet, Inc. + 9501 SW Westhaven + Portland, Oregon, 97225 + United States. + + EMail: randy@psg.com + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +kre/randy [Page 6] diff --git a/usr.sbin/named/doc/i-d/draft-ietf-dnsind-defupd-00.txt b/usr.sbin/named/doc/i-d/draft-ietf-dnsind-defupd-00.txt new file mode 100644 index 000000000000..0ed2bcdca296 --- /dev/null +++ b/usr.sbin/named/doc/i-d/draft-ietf-dnsind-defupd-00.txt @@ -0,0 +1,476 @@ + + + DNSIND Working Group Paul Vixie (ISC) + INTERNET-DRAFT May 1996 + + + Amends: RFC 1035, [UPDATE] + + + Deferred Dynamic Updates in the Domain Name System (DNS DEFUPD) + + + Status of this Memo + + This document is an Internet-Draft. Internet-Drafts are working + documents of the Internet Engineering Task Force (IETF), its areas, + and its working groups. Note that other groups may also distribute + working documents as Internet-Drafts. + + Internet-Drafts are draft documents valid for a maximum of six months + and may be updated, replaced, or obsoleted by other documents at any + time. It is inappropriate to use Internet-Drafts as reference + material or to cite them other than as ``work in progress.'' + + To learn the current status of any Internet-Draft, please check the + ``1id-abstracts.txt'' listing contained in the Internet-Drafts Shadow + Directories on ftp.is.co.za (Africa), nic.nordu.net (Europe), + munnari.oz.au (Pacific Rim), ds.internic.net (US East Coast), or + ftp.isi.edu (US West Coast). + + + Abstract + + Not all applications that perform dynamic updates using the protocol + specified in [UPDATE] want their updates applied immediately. A case + in point is [DHCP], wherein the DHCP lease time should control the + lifetime of associated DNS data even if the DHCP client or server is + not available at the time the DHCP lease expires. + + The essence of this proposal is that DNS Dynamic Updates should be + deferrable for some time delay period, after which they will be + executed normally. Furthermore, RRs added or updated by a deferred + update can have expiration times specified for them, as enforced by + the automatic Dynamic Updates. Automatic serial number changes (as + in [UPDATE]), dynamic zone slave notification (see [NOTIFY]) and + incremental zone transfer (see [IXFR]) will jointly see to it that + the zone changes are propagated with expedience. + + + + Expires November 1996 [Page 1] + + INTERNET-DRAFT DNS DEFUPD May 1996 + + + 1 - New Assigned Numbers + + Opcode: DEFUPD (6?) + RRtype: TUU (34?) + RRtype: TUE (35?) + + + 2 - Message Format + + The format and encoding of a DEFUPD is identical to that of UPDATE as + defined in [UPDATE 2], except that the Opcode is DEFUPD rather than + UPDATE, and there are two new RR types that can be used in the + Additional Data section. + + 2.1 - Additional Data Section: TUU RR + + In addition to the optional uses described in [UPDATE 2.6], a DEFUPD + request's Additional Data section can include a TUU (Time Until Update) + RR as follows: + + Owner: same as ZNAME (see [UPDATE 2.3]) + Class: same as ZCLASS (see [UPDATE 2.3]) + Type: TUU (new RRtype for this protocol) + TTL: deferral time, relative, in seconds + RDLENGTH: 0 + RDATA: empty + + Of particular note is the TTL, which contains the relative time delay, + in seconds, starting from the time this DEFUPD is received by the + primary master, before operations contained in the Update Section (see + [UPDATE 2.5]) will actually be performed. + + + + + + + + + + + + + + + + + + Expires November 1996 [Page 2] + + INTERNET-DRAFT DNS DEFUPD May 1996 + + + 2.2 - Additional Data Section: TUE RR + + In addition to the optional uses described in [UPDATE 2.6], a DEFUPD + request's Additional Data section can include a TUU (Time Until Expiry) + RR as follows: + + Owner: same as ZNAME (see [UPDATE 2.3]) + Class: same as ZCLASS (see [UPDATE 2.3]) + Type: TUE (new RRtype for this protocol) + TTL: expiry time, relative, in seconds + RDLENGTH: 0 + RDATA: empty + + Of particular note is the TTL, which contains the expiration time delay, + in seconds, starting from the time this DEFUPD is received by the + primary master, of all RRs added or updated by operations in the Update + Section (see [UPDATE 2.5]). + + 3 - Server Behavior + + A server, upon receiving a DEFUPD request, will first scan the request's + Additional Data section in search of TUU or TUE RRs. If no RRs of + either type TUU or TUE are found, then this request will be processed as + a normal UPDATE with no special behaviour. If any TUU or TUE RRs are + found, then processing continues as follows. + + 3.1 - Verify TUU RR + + If any TUU RRs are found in the Additional Data section, this update + will be processed with Deferral as explained below. If more than one + TUU RR is found, signal FORMERR to requestor. The TUU RR's owner name + and class are compared to ZNAME and ZCLASS; if a mismatch occurs, signal + FORMERR to requestor. The TUU RR's RDLENGTH/RDATA is ignored by + implementations of this specification, but future specifications may + make use of this field. + + 3.2 - Verify TUE RR + + If any TUE RRs are found in the Additional Data section, this update + will be processed with Expiry as explained below. If more than one TUE + RR is found, signal FORMERR to requestor. The TUE RR's owner name and + class are compared to ZNAME and ZCLASS; if a mismatch occurs, signal + FORMERR to requestor. The TUE RR's RDLENGTH/RDATA is ignored by + implementations of this specification, but future specifications may + make use of this field. + + + + Expires November 1996 [Page 3] + + INTERNET-DRAFT DNS DEFUPD May 1996 + + + 3.3 - Deferral + + If a TUU RR was specified in the Additional Data section, this update + will be processed with Deferral. Deferral means that the update will + not be applied synchronously to the requestor's transaction cycle, but + instead will be applied asynchronously at some potentially later time. + The delay period is measured in seconds and expressed in the TUU's TTL. + + 3.3.1 - Store Deferred Update + + Subject to per-server, per-zone, and per-RRset quotas, this UPDATE + message is stored, persistently, on the name server. If per-RRset + quotas are implemented, it is recommended that a DEFUPD ``count + against'' all RRsets mentioned in the Update Section. If an + implementation defined quota is exceeded by this deferred update, or if + persistent storage is unavailable, signal SERVFAIL to requestor (leaving + the zone in its former state). Note that even a deferred update whose + TUU's TTL is zero (0), specifying immediate application, should be + subject to quotas if the name server implements quotas. + + 3.3.2 - Send Early Response + + Signal NOERROR to requestor. + + 3.3.3 - Apply Deferred Update + + When a period of time equal to or greater than the TUU's TTL (measured + in seconds) has elapsed since a DEFUPD was first received at the primary + master, the DEFUPD message is applied to the zone as an UPDATE would be, + except that no error can be signalled to the requestor. Thus, all + errors not found and reported at the time the DEFUPD request was + received are silent, affecting only the continued processing of the + deferred update. Note that all sections are processed, including those + processed before the deferred update were stored. Thus, prerequisites + must hold before and after the deferral period. + + + + + + + + + + + + + + Expires November 1996 [Page 4] + + INTERNET-DRAFT DNS DEFUPD May 1996 + + + 3.4 - Expiry Processing + + When a DEFUPD is applied, either during the requestor's transaction + cycle or following the optional Deferral period, the inclusion of a TUE + RR in the Additional Data section will cause this update to be processed + with Expiry. + + Expiry as expressed in the TUE's TTL is the time, in seconds, before all + RRs added or modified by the Update Section will be automatically + deleted by the primary master server. This time is relative to the time + the DEFUPD message is processed, which might be after the delay period + specified by a TUU RR. + + 3.4.1 - Initial TTL Limits + + The TTL of all added or updated RRs in the Update Section will be + maximized silently to one half of the Expiry time. This will cause + downstream caching name servers to purge RRsets containing this RR at + least once before expiry. + + 3.4.2 - TTL Half Life + + Each time an RR's expiry reaches half of its previous value, that RR's + TTL will be reduced to half of its previous value, until the TTL reaches + a value less than or equal to sixty (60), i.e., one minute of real time, + at which time the TTL will not be automatically reduced further by the + primary master. It should be noted that RRs held in a server's memory + need not be swept for half life processing, as long as the TTL changes + appear when the RR next becomes externally visible, and as long as the + ``zone has changed'' processing (see below) is done at the time of the + half life expiration. + + Whenever the TTL is automatically reduced by this process, the zone will + be considered ``changed'' for the purpose of automatic SOA SERIAL + increment (see [UPDATE 3.6]) and real time zone slave notification (see + [NOTIFY]). + + + + + + + + + + + + + Expires November 1996 [Page 5] + + INTERNET-DRAFT DNS DEFUPD May 1996 + + + 3.4.3 - Automatic Deletion + + When the time since an RR was added or updated by a DEFUPD with Expiry + exceeds the TUE's TTL as specified in that update, all RRs added or + updated by that DEFUPD's Update Section will be automatically deleted by + the primary master. This deletion can be deferred until the deleted RRs + would next become visible, so long as the ``zone has changed'' + processing (see below) is done at the time of expiration (i.e., when the + automatic deletion is first deferred.) + + Whenever automatic deletion occurs, the zone will be considered + ``changed'' for the purpose of automatic SOA SERIAL increment (see + [UPDATE 3.6]) and real time zone slave notification (see [NOTIFY]). + + 3.5 - Requirements for Persistence + + Stored deferred updates should persist across name server restarts. + + 3.5.1 - Restarts and Deferral + + In the event of a name server restart, all deferred updates whose TUU + has expired must take effect before any network requests are processed + using data from the affected zone, and before any Expiry processing + takes place on RRs in the affected zone. + + 3.5.2 - Restarts and Expiry + + In the event of a name server restart, all expiries must be checked as + of the current time before any network responses are generated using + data from the affected zone. + + If an RR's expiry time has been reached while the name server was not + running, that RR will be deleted. Otherwise, the RR's TTL will be set + to one half of the time remaining before expiration, and half life + processing as specified in Section 3.4.2 will be restarted. + + If any RR is deleted or if an RR's TTL is changed during startup, then + the zone will be considered ``changed'' for the purpose of automatic SOA + SERIAL increment (see [UPDATE 3.6]) and real time zone slave + notification (see [NOTIFY]). + + + + + + + + + Expires November 1996 [Page 6] + + INTERNET-DRAFT DNS DEFUPD May 1996 + + + 4 - Requestor Behaviour + + A requestor will generate and transmit a DEFUPD request as specified in + [UPDATE 4], except that TUU and TUE RRs can be included in the + Additional Data section. + + 4.1. The TUU RR, if specified, must have an owner name and class equal + to the ZNAME and ZCLASS (see [UPDATE 2.3]). The TTL should be set to + the delay, measured in seconds, before this update should be processed + by the primary master. RDLENGTH should be set to 0, and RDATA should + therefore be empty. + + 4.2. The TUE RR, if specified, must have an owner name and class equal + to the ZNAME and ZCLASS (see [UPDATE 2.3]). The TTL should be set to + the delay, measured in seconds, before all RRs added or changed by the + Update Section will be automatically deleted by the primary master. + This delay is measured starting from the time the update is applied, + which could follow a deferral delay if a TUU RR was also included in + this update. + + 5 - Notes on Resource Consumption + + A TUE RR will require the primary master will initiate an automatic + update approximately O(log2(TTL)) times over the life of an expiring RR. + Even for massively sized zones, this is not considered an inappropriate + load on the primary master server itself. + + The network bandwidth consumed due to the use of TUE RRs is more + noticeable, although for massively sized zones, the bandwidth + requirements should flatten somewhat as many RRs will be automatically + updated during any given cycle of NOTIFY and AXFR/IXFR. + + 6 - Security Considerations + + This protocol suffers the same abject and intentional lack of security + as [UPDATE], from which it inherits its basic semantics. In the absence + of DNS Secure Updates, this protocol should not be used outside of an + enterprise network, and only with great care within an enterprise + network. + + + + + + + + + + Expires November 1996 [Page 7] + + INTERNET-DRAFT DNS DEFUPD May 1996 + + + 7 - Discussion Items for DNSIND and Namedroppers + + Should the server's response to a DEFUPD include an opaque cookie called + a ``deferred update ID'' which could be used in future DEFUPD requests + to cancel or replace a previous deferred update? + + Should automatic updates caused by a TUE RR be required to be batched up + and processed at some minimum interval? For example, if we only checked + for half life and expiration once per minute, this might drastically + reduce the number of NOTIFY/AXFR/IXFR cycles caused by any given zone. + We would have to recommend that all zones in a given server not be + synchronized to the same timer, lest a server with many zones cause all + of its zones to change and require NOTIFY/AXFR/IXFR in the same second. + + Astute readers will have noticed that this proposal is a precise + superset of [UPDATE], and by adding the optional behaviour and + definitions of TUU and TUE to [UPDATE], we could do away with the + separate Opcode for DEFUPD. This was only possible up until the time + [UPDATE] went to proposed standard, but hopefully the intent was clear. + + 8 - References + + [RFC1035] + P. Mockapetris, ``Domain Names - Implementation and Specification,'' + RFC 1035, USC/Information Sciences Institute, November 1987. + + [IXFR] + M. Ohta, ``Incremental Zone Transfer,'' Internet Draft, February + 1996, . + + [NOTIFY] + P. Vixie, ``A Mechanism for Prompt Notification of Zone Changes,'' + Internet Draft, March 1996, . + + [UPDATE] + P. Vixie (Ed), et al, ``Dynamic Updates in the Domain Name System,'' + Internet Draft, March 1996, . + + [DHCP] + Y. Rechter, ``Interaction between DHCP and DNS,'' Internet Draft, + February 1996, . + + + + + + + + Expires November 1996 [Page 8] + + INTERNET-DRAFT DNS DEFUPD May 1996 + + + 9 - Acknowledgements + + Yakov Rechter assisted in the design of this protocol. Robert Elz + assisted in the requirements definition. + + 10 - Author's Addresses + + Paul Vixie + Internet Software Consortium + Star Route Box 159A + Woodside, CA 94062 + +1 415 747 0204 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Expires November 1996 [Page 9] + diff --git a/usr.sbin/named/doc/i-d/draft-ietf-dnsind-dynDNS-09.txt b/usr.sbin/named/doc/i-d/draft-ietf-dnsind-dynDNS-09.txt new file mode 100644 index 000000000000..5aacb08ef1b1 --- /dev/null +++ b/usr.sbin/named/doc/i-d/draft-ietf-dnsind-dynDNS-09.txt @@ -0,0 +1,1482 @@ + + DNSIND Working Group Paul Vixie (Ed.) (ISC) + INTERNET-DRAFT Susan Thomson (Bellcore) + Yakov Rekhter (Cisco) + Jim Bound (DEC) + Amends: RFC 1035 March 1996 + + + Dynamic Updates in the Domain Name System (DNS UPDATE) + + + Status of this Memo + + This document is an Internet-Draft. Internet-Drafts are working + documents of the Internet Engineering Task Force (IETF), its areas, + and its working groups. Note that other groups may also distribute + working documents as Internet-Drafts. + + Internet-Drafts are draft documents valid for a maximum of six months + and may be updated, replaced, or obsoleted by other documents at any + time. It is inappropriate to use Internet-Drafts as reference + material or to cite them other than as ``work in progress.'' + + To learn the current status of any Internet-Draft, please check the + ``1id-abstracts.txt'' listing contained in the Internet-Drafts Shadow + Directories on ftp.is.co.za (Africa), nic.nordu.net (Europe), + munnari.oz.au (Pacific Rim), ds.internic.net (US East Coast), or + ftp.isi.edu (US West Coast). + + + Abstract + + The Domain Name System was originally designed to support queries of + a statically configured database. While the data was expected to + change, the frequency of those changes was expected to be fairly low, + and all updates were made as external edits to a zone's Master File. + + Using this specification of the UPDATE opcode, it is possible to add + or delete RRs or RRsets from a specified zone. Prerequisites are + specified separately from update operations, and can specify a + dependency upon either the previous existence or nonexistence of an + RRset, or the existence of a single RR. + + UPDATE is atomic, i.e., all prerequisites must be satisfied or else + no update operations will take place. There are no data dependent + error conditions defined after the prerequisites have been met. + + + + Expires October 1996 [Page 1] + + INTERNET-DRAFT DNS UPDATE March 1996 + + + 1 - Definitions + + This document intentionally gives more definition to the roles of + ``Master,'' ``Slave,'' and ``Primary Master'' servers, and their + enumeration in NS RRs, and the SOA MNAME field. In that sense, the + following server type definitions can be considered an addendum to + [RFC1035], and are intended to be consistent with [NOTIFY]: + + Slave an authoritative server that uses AXFR or IXFR to + retrieve the zone and is named in the zone's NS + RRset. + + Master an authoritative server configured to be the source + of AXFR or IXFR data for one or more slave servers. + + Primary Master master server at the root of the AXFR/IXFR dependency + graph. The primary master is named in the zone's SOA + MNAME field and optionally by an NS RR. There is by + definition only one primary master server per zone. + + A domain name identifies a node within the domain name space tree + structure. Each node has a set (possibly empty) of Resource Records + (RRs). All RRs having the same NAME, CLASS and TYPE are called a + Resource Record Set (RRset). + + The pseudocode used in this document is for example purposes only. If + it is found to disagree with the text, the text shall be considered + authoritative. If the text is found to be ambiguous, the pseudocode can + be used to help resolve the ambiguity. + + 1.1 - Comparison Rules + + 1.1.1. Two RRs are considered equal if their NAME, CLASS, TYPE, RDLENGTH + and RDATA fields are equal. Note that the time-to-live (TTL) field is + explicitly excluded from the comparison. + + 1.1.2. The rules for comparison of character strings in names are + specified in [RFC1035 2.3.3]. + + 1.1.3. Wildcarding is disabled. That is, a wildcard (``*'') in an + update only matches a wildcard (``*'') in the zone, and vice versa. + + 1.1.4. Aliasing is disabled: A CNAME in the zone matches a CNAME in the + update, and will not otherwise be followed. All UPDATE operations are + done on the basis of canonical names. + + + + Expires October 1996 [Page 2] + + INTERNET-DRAFT DNS UPDATE March 1996 + + + 1.1.5. The following RR types cannot be appended to an RRset. If the + following comparison rules are met, then an attempt to add the new RR + will result in the replacement of the previous RR: + + SOA compare only NAME, CLASS and TYPE -- it is not possible to + have more than one SOA per zone, even if any of the data + fields differ. + + WKS compare only NAME, CLASS, TYPE, ADDRESS, and PROTOCOL -- only + one WKS RR is possible for this tuple, even if the services + masks differ. + + CNAME compare only NAME, CLASS, and TYPE -- it is not possible to + have more than one CNAME RR, even if their data fields differ. + + 1.2 - Glue RRs + + For the purpose of determining whether a domain name used in the UPDATE + protocol is contained within a specified zone, a domain name is ``in'' a + zone if it is owned by that zone's domain name. See section 7.19 for + details. + + 1.3 - New Assigned Numbers + + CLASS = NONE (TBD: 254) + RCODE = YXDOMAIN (TBD: 6) + RCODE = YXRRSET (TBD: 7) + RCODE = NXRRSET (TBD: 8) + RCODE = NOTAUTH (TBD: 9) + RCODE = NOTZONE (TBD: 10?) + Opcode = UPDATE (5) + + + 2 - Update Message Format + + The DNS Message Format is defined by [RFC1035 4.1]. Some extensions are + necessary (for example, more error codes are possible under UPDATE than + under QUERY) and some fields must be overloaded (see description of + CLASS fields below). + + The overall format of an UPDATE message is, following [ibid]: + + + + + + + + Expires October 1996 [Page 3] + + INTERNET-DRAFT DNS UPDATE March 1996 + + + +---------------------+ + | Header | + +---------------------+ + | Zone | specifies the zone to be updated + +---------------------+ + | Prerequisite | RRs or RRsets which must (not) preexist + +---------------------+ + | Update | RRs or RRsets to be added or deleted + +---------------------+ + | Additional Data | additional data + +---------------------+ + + + The Header Section specifies that this message is an UPDATE, and + describes the size of the other sections. The Zone Section names the + zone that is to be updated by this message. The Prerequisite Section + specifies the starting invariants (in terms of zone content) required + for this update. The Update Section contains the edits to be made, and + the Additional Data Section contains data which may be necessary to + complete, but is not part of, this update. + + 2.1 - Transport Issues + + An update transaction may be carried in a UDP datagram, if the request + fits, or in a TCP connection (at the discretion of the requestor). When + TCP is used, the message is in the format described in [RFC1035 4.2.2]. + + 2.2 - Message Header + + The header of the DNS Message Format is defined by [RFC 1035 4.1]. Not + all opcodes define the same set of flag bits, though as a practical + matter most of the bits defined for QUERY (in [ibid]) are identically + defined by the other opcodes. UPDATE uses only one flag bit (QR). + + The DNS Message Format specifies record counts for its four sections + (Question, Answer, Authority, and Additional). UPDATE uses the same + fields, and the same section formats, but the naming and use of these + sections differs as shown in the following modified header, after + [RFC1035 4.1.1]: + + + + + + + + + + Expires October 1996 [Page 4] + + INTERNET-DRAFT DNS UPDATE March 1996 + + + 1 1 1 1 1 1 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 + +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ + | ID | + +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ + |QR| Opcode | Z | RCODE | + +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ + | ZOCOUNT | + +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ + | PRCOUNT | + +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ + | UPCOUNT | + +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ + | ADCOUNT | + +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ + + These fields are used as follows: + + ID A 16-bit identifier assigned by the entity that generates any + kind of request. This identifier is copied in the + corresponding reply and can be used by the requestor to match + replies to outstanding requests, or by the server to detect + duplicated requests from some requestor. + + QR A one bit field that specifies whether this message is a + request (0), or a response (1). + + Opcode A four bit field that specifies the kind of request in this + message. This value is set by the originator of a request + and copied into the response. The Opcode value that + identifies an UPDATE message is five (5). + + Z Reserved for future use. Should be zero (0) in all requests + and responses. A non-zero Z field should be ignored by + implementations of this specification. + + + + + + + + + + + + + + Expires October 1996 [Page 5] + + INTERNET-DRAFT DNS UPDATE March 1996 + + + RCODE Response code - this four bit field is undefined in requests + and set in responses. The values and meanings of this field + within responses are as follows: + + Mneumonic Value Description + ------------------------------------------------------------ + NOERROR 0 No error condition. + FORMERR 1 The name server was unable to interpret + the request due to a format error. + SERVFAIL 2 The name server encountered an internal + failure while processing this request, + for example an operating system error + or a forwarding timeout. + NXDOMAIN 3 Some name that ought to exist, + does not exist. + NOTIMP 4 The name server does not support + the specified Opcode. + REFUSED 5 The name server refuses to perform the + specified operation for policy or + security reasons. + YXDOMAIN 6? Some name that ought not to exist, + does exist. + YXRRSET 7? Some RRset that ought not to exist, + does exist. + NXRRSET 8? Some RRset that ought to exist, + does not exist. + NOTAUTH 9? The server is not authoritative for + the zone named in the Zone Section. + NOTZONE 10? A name used in the Prerequisite or + Update Section is not within the + zone denoted by the Zone Section. + + + ZOCOUNT The number of RRs in the Zone Section. + + PRCOUNT The number of RRs in the Prerequisite Section. + + UPCOUNT The number of RRs in the Update Section. + + ADCOUNT The number of RRs in the Additional Data Section. + + + + + + + + + Expires October 1996 [Page 6] + + INTERNET-DRAFT DNS UPDATE March 1996 + + + 2.3 - Zone Section + + The Zone Section has the same format as that specified in [RFC1035 + 4.1.2], with the fields redefined as follows: + + 1 1 1 1 1 1 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 + +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ + | | + / ZNAME / + / / + +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ + | ZTYPE | + +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ + | ZCLASS | + +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ + + + UPDATE uses this section to denote the zone of the records being + updated. All records to be updated must be in the same zone, and + therefore the Zone Section is allowed to contain exactly one record. + The ZNAME is the zone name, the ZTYPE must be SOA, and the ZCLASS is the + zone's class. + + 2.4 - Prerequisite Section + + This section contains a set of RRset prerequisites which must be + satisfied at the time the UPDATE packet is received by the primary + master server. The format of this section is as specified by [RFC1035 + 4.1.3]. There are five possible sets of semantics that can be expressed + here, summarized as follows and then explained below. + + (1) RRset exists (value independent). At least one RR with a + specified NAME and TYPE (in the zone and class specified by the + Zone Section) must exist. + + (2) RRset exists (value dependent). A set of RRs with a specified + NAME and TYPE exists and has the same members with the same + RDATAs as the RRset specified here in this Section. + + (3) RRset does not exist. No RRs with a specified NAME and TYPE (in + the zone and class denoted by the Zone Section) can exist. + + + + + + + Expires October 1996 [Page 7] + + INTERNET-DRAFT DNS UPDATE March 1996 + + + (4) Name is in use. At least one RR with a specified NAME (in the + zone and class specified by the Zone Section) must exist. Note + that this prerequisite is NOT satisfied by empty nonterminals. + + (5) Name is not in use. No RR of any type is owned by a specified + NAME. Note that this prerequisite IS satisfied by empty + nonterminals. + + The syntax of these is as follows: + + 2.4.1 - RRset Exists (Value Independent) + + At least one RR with a specified NAME and TYPE (in the zone and class + specified in the Zone Section) must exist. + + For this prerequisite, a requestor adds to the section a single RR whose + NAME and TYPE are equal to that of the zone RRset whose existence is + required. RDLENGTH is zero and RDATA is therefore empty. CLASS must be + specified as ANY to differentiate this condition from that of an actual + RR whose RDLENGTH is naturally zero (0) (e.g., NULL). TTL is specified + as zero (0). + + 2.4.2 - RRset Exists (Value Dependent) + + A set of RRs with a specified NAME and TYPE exists and has the same + members with the same RDATAs as the RRset specified here in this + section. While RRset ordering is undefined and therefore not + significant to this comparison, the sets be identical in their extent. + + For this prerequisite, a requestor adds to the section an entire RRset + whose preexistence is required. NAME and TYPE are that of the RRset + being denoted. CLASS is that of the zone. TTL must be specified as + zero (0) and is ignored when comparing RRsets for identity. + + 2.4.3 - RRset Does Not Exist + + No RRs with a specified NAME and TYPE (in the zone and class denoted by + the Zone Section) can exist. + + For this prerequisite, a requestor adds to the section a single RR whose + NAME and TYPE are equal to that of the RRset whose nonexistence is + required. The RDLENGTH of this record is zero (0), and RDATA field is + therefore empty. CLASS must be specified as NONE in order to + distinguish this condition from a valid RR whose RDLENGTH is naturally + zero (0) (for example, the NULL RR). TTL must be specified as zero (0). + + + + Expires October 1996 [Page 8] + + INTERNET-DRAFT DNS UPDATE March 1996 + + + 2.4.4 - Name Is In Use + + Name is in use. At least one RR with a specified NAME (in the zone and + class specified by the Zone Section) must exist. Note that this + prerequisite is NOT satisfied by empty nonterminals. + + For this prerequisite, a requestor adds to the section a single RR whose + NAME is equal to that of the name whose ownership of an RR is required. + RDLENGTH is zero and RDATA is therefore empty. CLASS must be specified + as ANY to differentiate this condition from that of an actual RR whose + RDLENGTH is naturally zero (0) (e.g., NULL). TYPE must be specified as + ANY to differentiate this case from that of an RRset existence test. + TTL is specified as zero (0). + + 2.4.5 - Name Is Not In Use + + Name is not in use. No RR of any type is owned by a specified NAME. + Note that this prerequisite IS satisfied by empty nonterminals. + + For this prerequisite, a requestor adds to the section a single RR whose + NAME is equal to that of the name whose nonownership of any RRs is + required. RDLENGTH is zero and RDATA is therefore empty. CLASS must be + specified as NONE. TYPE must be specified as ANY. TTL must be + specified as zero (0). + + 2.5 - Update Section + + This section contains RRs to be added to or deleted from the zone. The + format of this section is as specified by [RFC1035 4.1.3]. There are + four possible sets of semantics, summarized below and with details to + follow. + + (1) Add RRs to an RRset. + (2) Delete an RRset. + (3) Delete all RRsets from a name. + (4) Delete an RR from an RRset. + + + The syntax of these is as follows: + + 2.5.1 - Add To An RRset + + RRs are added to the Update Section whose NAME, TYPE, TTL, RDLENGTH and + RDATA are those being added, and CLASS is the same as the zone class. + Any duplicate RRs will be silently ignored by the primary master. + + + + Expires October 1996 [Page 9] + + INTERNET-DRAFT DNS UPDATE March 1996 + + + 2.5.2 - Delete An RRset + + One RR is added to the Update Section whose NAME and TYPE are those of + the RRset to be deleted. TTL must be specified as zero (0) and is + otherwise not used by the primary master. CLASS must be specified as + ANY. RDLENGTH must be zero (0) and RDATA must therefore be empty. If + no such RRset exists, then this Update RR will be silently ignored by + the primary master. + + 2.5.3 - Delete All RRsets From A Name + + One RR is added to the Update Section whose NAME is that of the name to + be cleansed of RRsets. TYPE must be specified as ANY. TTL must be + specified as zero (0) and is otherwise not used by the primary master. + CLASS must be specified as ANY. RDLENGTH must be zero (0) and RDATA + must therefore be empty. If no such RRsets exist, then this Update RR + will be silently ignored by the primary master. + + 2.5.4 - Delete An RR From An RRset + + RRs to be deleted are added to the Update Section. The NAME, TYPE, + RDLENGTH and RDATA must match the RR being deleted. TTL must be + specified as zero (0) and will otherwise be ignored by the primary + master. CLASS must be specified as NONE to distinguish this from an RR + addition. If no such RRs exist, then this Update RR will be silently + ignored by the primary master. + + 2.6 - Additional Data Section + + This section contains RRs which are related to the update itself, or to + new RRs being added by the update. For example, out of zone glue (A RRs + referred to by new NS RRs) should be presented here. The server can use + or ignore out of zone glue, at the discretion of the server implementor. + The format of this section is as specified by [RFC1035 4.1.3]. + + + + + + + + + + + + + + + Expires October 1996 [Page 10] + + INTERNET-DRAFT DNS UPDATE March 1996 + + + 3 - Server Behavior + + A server, upon receiving an UPDATE request, will signal NOTIMP to the + requestor if the UPDATE opcode is not recognized or if it is recognized + but has not been implemented. Otherwise, processing continues as + follows. + + 3.1 - Process Zone Section + + 3.1.1. The Zone Section is checked to see that there is exactly one RR + therein and that the RR's ZTYPE is SOA, else signal FORMERR to the + requestor. Next, the ZNAME and ZCLASS are checked to see if the zone so + named is one of this server's authority zones, else signal NOTAUTH to + the requestor. If the server is a zone slave, the request will be + forwarded toward the primary master. + + 3.1.2 - Pseudocode For Zone Section Processing + + if (zcount != 1 || ztype != SOA) + return (FORMERR) + if (zone_type(zname, zclass) == SLAVE) + return forward() + if (zone_type(zname, zclass) == MASTER) + return update() + return (NOTAUTH) + + Sections 3.2 through 3.8 describe the primary master's behaviour, + whereas Section 6 describes a forwarder's behaviour. + + 3.2 - Process Prerequisite Section + + Next, the Prerequisite Section is checked to see that all prerequisites + are satisfied by the current state of the zone. Using the definitions + expressed in Section 1.2, if any RR's NAME is not within the zone + specified in the Zone Section, signal NOTZONE to the requestor. + + 3.2.1. For RRs in this section whose CLASS is ANY, test to see that TTL + and RDLENGTH are both zero (0), else signal FORMERR to the requestor. + If TYPE is ANY, test to see that there is at least one RR in the zone + whose NAME is the same as that of the Prerequisite RR, else signal + NXDOMAIN to the requestor. If TYPE is not ANY, test to see that there + is at least one RR in the zone whose NAME and TYPE are the same as that + of the Prerequisite RR, else signal NXRRSET to the requestor. + + + + + + Expires October 1996 [Page 11] + + INTERNET-DRAFT DNS UPDATE March 1996 + + + 3.2.2. For RRs in this section whose CLASS is NONE, test to see that the + TTL and RDLENGTH are both zero (0), else signal FORMERR to the + requestor. If the TYPE is ANY, test to see that there are no RRs in the + zone whose NAME is the same as that of the Prerequisite RR, else signal + YXDOMAIN to the requestor. If the TYPE is not ANY, test to see that + there are no RRs in the zone whose NAME and TYPE are the same as that of + the Prerequisite RR, else signal YXRRSET to the requestor. + + 3.2.3. For RRs in this section whose CLASS is the same as the ZCLASS, + test to see that the TTL is zero (0), else signal FORMERR to the + requestor. Then, build an RRset for each unique and compare + each resulting RRset for set equality (same members, no more, no less) + with RRsets in the zone. If any Prerequisite RRset is not entirely and + exactly matched by a zone RRset, signal NXRRSET to the requestor. If + any RR in this section has a CLASS other than ZCLASS or NONE or ANY, + signal FORMERR to the requestor. + + 3.2.4 - Table Of Metavalues Used In Prerequisite Section + + CLASS TYPE RDATA Meaning + ------------------------------------------------------------ + ANY ANY empty Name is in use + ANY rrset empty RRset exists (value independent) + NONE ANY empty Name is not in use + NONE rrset empty RRset does not exist + zone rrset rr RRset exists (value dependent) + + + + + + + + + + + + + + + + + + + + + + + Expires October 1996 [Page 12] + + INTERNET-DRAFT DNS UPDATE March 1996 + + + 3.2.5 - Pseudocode for Prerequisite Section Processing + + for rr in prerequisites + if (rr.ttl != 0) + return (FORMERR) + if (zone_of(rr.name) != ZNAME) + return (NOTZONE); + if (rr.class == ANY) + if (rr.rdlength != 0) + return (FORMERR) + if (rr.type == ANY) + if (!zone_name) + return (NXDOMAIN) + else + if (!zone_rrset) + return (NXRRSET) + if (rr.class == NONE) + if (rr.rdlength != 0) + return (FORMERR) + if (rr.type == ANY) + if (zone_name) + return (YXDOMAIN) + else + if (zone_rrset) + return (YXRRSET) + if (rr.class == zclass) + temp += rr + else + return (FORMERR) + + for rrset in temp + if (zone_rrset != rrset) + return (NXDOMAIN) + + + 3.3 - Check Requestor's Permissions + + 3.3.1. Next, the requestor's permission to update the RRs named in the + Update Section may be tested in an implementation dependent fashion or + using mechanisms specified in a subsequent Secure DNS Update protocol. + If the requestor does not have permission to perform these updates, the + server may write a warning message in its operations log, and may either + signal REFUSED to the requestor, or ignore the permission problem and + proceed with the update. + + + + + Expires October 1996 [Page 13] + + INTERNET-DRAFT DNS UPDATE March 1996 + + + 3.3.2. While the exact processing is implementation defined, if these + verification activities are to be performed, this is the point in the + server's processing where such performance should take place, since if a + REFUSED condition is encountered after an update has been partially + applied, it will be necessary to undo the partial update and restore the + zone to its original state before answering the requestor. + + 3.3.3 - Pseudocode for Permission Checking + + if (security policy exists) + if (this update is not permitted) + if (local option) + log a message about permission problem + if (local option) + return (REFUSED) + + + 3.4 - Process Update Section + + Next, the Update Section is processed as follows. + + 3.4.1 - Prescan + + The Update Section is parsed into RRs and each RR's CLASS is checked to + see if it is ANY, NONE, or the same as the Zone Class, else signal a + FORMERR to the requestor. Using the definitions in Section 1.2, each + RR's NAME must be in the zone specified by the Zone Section, else signal + NOTZONE to the requestor. + + 3.4.1.2. For RRs whose CLASS is not ANY, check the TYPE and if it is + ANY, AXFR, MAILA, MAILB, or any other QUERY metatype, or any + unrecognized type, then signal FORMERR to the requestor. For RRs whose + CLASS is ANY or NONE, check the TTL to see that it is zero (0), else + signal a FORMERR to the requestor. For any RR whose CLASS is ANY, check + the RDLENGTH to make sure that it is zero (0) (that is, the RDATA field + is empty), and that the TYPE is not AXFR, MAILA, MAILB, or any other + QUERY metatype besides ANY, or any unrecognized type, else signal + FORMERR to the requestor. + + + + + + + + + + + Expires October 1996 [Page 14] + + INTERNET-DRAFT DNS UPDATE March 1996 + + + 3.4.1.3 - Pseudocode For Update Section Prescan + + [rr] for rr in updates + if (zone_of(rr.name) != ZNAME) + return (NOTZONE); + if (rr.class == zclass) + if (rr.type & ANY|AXFR|MAILA|MAILB) + return (FORMERR) + elsif (rr.class == ANY) + if (rr.ttl != 0 || rr.rdlength != 0 + || rr.type & AXFR|MAILA|MAILB) + return (FORMERR) + elsif (rr.class == NONE) + if (rr.ttl != 0 || rr.type & ANY|AXFR|MAILA|MAILB) + return (FORMERR) + else + return (FORMERR) + + + 3.4.2 - Update + + The Update Section is parsed into RRs and these RRs are processed in + order. + + 3.4.2.1. If any system failure (such as an out of memory condition, or a + hardware error in persistent storage) occurs during the processing of + this section, signal SERVFAIL to the requestor and undo all updates + applied to the zone during this transaction. + + 3.4.2.2. Any Update RR whose CLASS is the same as ZCLASS is added to the + zone. In case of duplicate RDATAs (which for SOA RRs is always the + case, and for WKS RRs is the case if the ADDRESS and PROTOCOL fields + both match), the Zone RR is replaced by Update RR. If the TYPE is SOA + and there is no Zone SOA RR, or the new SOA.SERIAL is lower (according + to [KRE1996]) than the current Zone SOA RR's SOA.SERIAL, the Update RR + is ignored. In the case of a CNAME Update RR and a non-CNAME Zone RRset + or vice versa, ignore the CNAME Update RR, otherwise replace the CNAME + Zone RR with the CNAME Update RR. + + + + + + + + + + + Expires October 1996 [Page 15] + + INTERNET-DRAFT DNS UPDATE March 1996 + + + 3.4.2.3. For any Update RR whose CLASS is ANY and whose TYPE is ANY, all + Zone RRs with the same NAME are deleted, unless the NAME is the same as + ZNAME in which case only those RRs whose TYPE is other than SOA or NS + are deleted. For any Update RR whose CLASS is ANY and whose TYPE is not + ANY all Zone RRs with the same NAME and TYPE are deleted, unless the + NAME is the same as ZNAME in which case neither SOA or NS RRs will be + deleted. + + 3.4.2.4. For any Update RR whose class is NONE, any Zone RR whose NAME, + TYPE, RDATA and RDLENGTH are equal to the Update RR is deleted, unless + the NAME is the same as ZNAME and either the TYPE is SOA or the TYPE is + NS and the matching Zone RR is the only NS remaining in the RRset, in + which case this Update RR is ignored. + + 3.4.2.5. Signal NOERROR to the requestor. + + 3.4.2.6 - Table Of Metavalues Used In Update Section + + CLASS TYPE RDATA Meaning + --------------------------------------------------------- + ANY ANY empty Delete all RRsets from a name + ANY rrset empty Delete an RRset + NONE rrset rr Delete an RR from an RRset + zone rrset rr Add to an RRset + + + + + + + + + + + + + + + + + + + + + + + + + Expires October 1996 [Page 16] + + INTERNET-DRAFT DNS UPDATE March 1996 + + + 3.4.2.7 - Pseudocode For Update Section Processing + + [rr] for rr in updates + if (rr.class == zclass) + if (rr.type == CNAME) + if (zone_rrset) + next [rr] + elsif (zone_rrset) + next [rr] + if (rr.type == SOA) + if (!zone_rrset || + zone_rr.serial > rr.soa.serial) + next [rr] + for zrr in zone_rrset + if (rr.type == CNAME || rr.type == SOA || + (rr.type == WKS && rr.proto == zrr.proto && + rr.address == zrr.address) || + rr.rdata == zrr.rdata) + zrr = rr + next [rr] + zone_rrset += rr + elsif (rr.class == ANY) + if (rr.type == ANY) + if (rr.name == zname) + zone_rrset = Nil + else + zone_rrset = Nil + elsif (rr.name == zname && + (rr.type == SOA || rr.type == NS)) + next [rr] + else + zone_rrset = Nil + elsif (rr.class == NONE) + if (rr.type == SOA) + next [rr] + if (rr.type == NS && zone_rrset == rr) + next [rr] + zone_rr = Nil + return (NOERROR) + + + + + + + + + + Expires October 1996 [Page 17] + + INTERNET-DRAFT DNS UPDATE March 1996 + + + 3.5 - Stability + + When a zone is modified by an UPDATE operation, the server must commit + the change to nonvolatile storage before sending a response to the + requestor or answering any queries or transfers for the modified zone. + It is reasonable for a server to store only the update records as long + as a system reboot or power failure will cause these update records to + be incorporated into the zone the next time the server is started. It + is also reasonable for the server to copy the entire modified zone to + nonvolatile storage after each update operation, though this would have + suboptimal performance for large zones. + + 3.6 - Zone Identity + + If the zone's SOA SERIAL is changed by an update operation, that change + must be in a positive direction (using modulo 2**32 arithmetic as + specified by [KRE1996]). Attempts to replace an SOA with one whose + SERIAL is less than the current one will be silently ignored by the + primary master server. + + If the zone's SOA's SERIAL is not changed as a result of an update + operation, then the server shall increment it automatically before the + SOA or any changed name or RR or RRset is included in any response or + transfer. The primary master server's implementor might choose to + autoincrement the SOA SERIAL if any of the following events occurs: + + (1) Each update operation. + + (2) A name, RR or RRset in the zone has changed and has subsequently + been visible to a DNS client since the unincremented SOA was + visible to a DNS client, and the SOA is about to become visible to + a DNS client. + + (3) A configurable period of time has elapsed since the last update + operation. This period shall be less than or equal to one third of + the zone refresh time, and the default shall be the lesser of that + maximum and 300 seconds. + + (4) A configurable number of updates has been applied since the last + SOA change. The default value for this configuration parameter + shall be one hundred (100). + + It is imperative that the zone's contents and the SOA's SERIAL be + tightly synchronized. If the zone appears to change, the SOA must + appear to change as well. + + + + Expires October 1996 [Page 18] + + INTERNET-DRAFT DNS UPDATE March 1996 + + + 3.7 - Atomicity + + During the processing of an UPDATE transaction, the server must ensure + atomicity with respect to other (concurrent) UPDATE or QUERY + transactions. No two transactions can be processed concurrently if + either depends on the final results of the other; in particular, a QUERY + should not be able to retrieve RRsets which have been partially modified + by a concurrent UPDATE, and an UPDATE should not be able to start from + prerequisites that might not still hold at the completion of some other + concurrent UPDATE. Finally, if two UPDATE transactions would modify the + same names, RRs or RRsets, then such UPDATE transactions must be + serialized. + + 3.8 - Response + + At the end of UPDATE processing, a response code will be known. A + response message is generated by copying the ID and Opcode fields from + the request, and either copying the ZOCOUNT, PRCOUNT, UPCOUNT, and + ADCOUNT fields and associated sections, or placing zeros (0) in the + these ``count'' fields and not including any part of the original + update. The QR bit is set to one (1), and the response is sent back to + the requestor. If the requestor used UDP, then the response will be + sent to the requestor's source UDP port. If the requestor used TCP, + then the response will be sent back on the requestor's open TCP + connection. + + 4 - Requestor Behaviour + + 4.1. From a requestor's point of view, any authoritative server for the + zone can appear to be able to process update requests, even though only + the primary master server is actually able to modify the zone's master + file. Requestors are expected to know the name of the zone they intend + to update and to know or be able to determine the name servers for that + zone. + + 4.2. If update ordering is desired, the requestor will need to know the + value of the existing SOA RR. Requestors who update the SOA RR must + update the SOA SERIAL field in a positive direction (as defined by + [KRE1996]) and to preserve the other SOA fields unless the requestor's + explicit intent is to change them. The SOA SERIAL field must never be + set to zero (0). + + + + + + + + Expires October 1996 [Page 19] + + INTERNET-DRAFT DNS UPDATE March 1996 + + + 4.3. If the requestor has reasonable cause to believe that all of a + zone's servers will be equally reachable, then it should arrange to try + the primary master server (as given by the SOA MNAME field if matched by + some NS NSDNAME) first to avoid unnecessary forwarding inside the slave + servers. (Note that the primary master will in some cases not be + reachable by all requestors, due to firewalls or network partitioning.) + + 4.4. Once the zone's name servers been found and possibly sorted so that + the ones more likely to be reachable and/or support the UPDATE opcode + are listed first, the requestor composes an UPDATE message of the + following form and sends it to the first name server on its list: + + ID: (new) + Opcode: UPDATE + Zone zcount: 1 + Zone zname: (zone name) + Zone zclass: (zone class) + Zone ztype: T_SOA + Prerequisite Section: (see previous text) + Update Section: (see previous text) + Additional Data Section: (empty) + + + 4.5. If the requestor receives a response, and the response has an RCODE + other than SERVFAIL or NOTIMP, then the requestor returns an appropriate + response to its caller. + + 4.6. If a response is received whose RCODE is SERVFAIL or NOTIMP, or if + no response is received within an implementation dependent timeout + period, or if an ICMP error is received indicating that the server's + port is unreachable, then the requestor will delete the unusable server + from its internal name server list and try the next one, repeating until + the name server list is empty. If the requestor runs out of servers to + try, an appropriate error will be returned to the requestor's caller. + + 5 - Duplicate Detection, Ordering and Mutual Exclusion + + 5.1. For correct operation, mechanisms may be needed to ensure + idempotence, order UPDATE requests and provide mutual exclusion. An + UPDATE message or response might be delivered zero times, one time, or + multiple times. Datagram duplication is of particular interest since it + covers the case of the so-called ``replay attack'' where a correct + request is duplicated maliciously by an intruder. + + + + + + Expires October 1996 [Page 20] + + INTERNET-DRAFT DNS UPDATE March 1996 + + + 5.2. Multiple UPDATE requests or responses in transit might be delivered + in any order, due to network topology changes or load balancing, or to + multipath forwarding graphs wherein several slave servers all forward to + the primary master. In some cases, it might be required that the + earlier update not be applied after the later update, where ``earlier'' + and ``later'' are defined by an external time base visible to some set + of requestors, rather than by the order of request receipt at the + primary master. + + 5.3. A requestor can ensure transaction idempotence by explicitly + deleting some ``marker RR'' (rather than deleting the RRset of which it + is a part) and then adding a new ``marker RR'' with a different RDATA + field. The Prerequisite Section should specify that the original + ``marker RR'' must be present in order for this UPDATE message to be + accepted by the server. + + 5.4. If the request is duplicated by a network error, all duplicate + requests will fail since only the first will find the original ``marker + RR'' present and having its known previous value. The decisions of + whether to use such a ``marker RR'' and what RR to use are left up to + the application programmer, though one obvious choice is the zone's SOA + RR as described below. + + 5.5. Requestors can ensure update ordering by externally synchronizing + their use of successive values of the ``marker RR.'' Mutual exclusion + can be addressed as a degenerate case, in that a single succession of + the ``marker RR'' is all that is needed. + + 5.6. A special case where update ordering and datagram duplication + intersect is when an RR validly changes to some new value and then back + to its previous value. Without a ``marker RR'' as described above, this + sequence of updates can leave the zone in an undefined state if + datagrams are duplicated. + + 5.7. To achieve an atomic multitransaction ``read-modify-write'' cycle, + a requestor could first retrieve the SOA RR, and build an UPDATE message + one of whose prerequisites was the old SOA RR. It would then specify + updates that would delete this SOA RR and add a new one with an + incremented SOA SERIAL, along with whatever actual prerequisites and + updates were the object of the transaction. If the transaction + succeeds, the requestor knows that the RRs being changed were not + otherwise altered by any other requestor. + + + + + + + Expires October 1996 [Page 21] + + INTERNET-DRAFT DNS UPDATE March 1996 + + + 6 - Forwarding + + When a zone slave forwards an UPDATE message upward toward the zone's + primary master server, it must allocate a new ID and prepare to enter + the role of ``forwarding server,'' which is a requestor with respect to + the forward server. + + 6.1. The set of forward servers will be same as the set of servers this + zone slave would use as the source of AXFR or IXFR data. So, while the + original requestor might have used the zone's NS RRset to locate its + update server, a forwarder always forwards toward its designated zone + master servers. + + 6.2. If the original requestor used TCP, then the TCP connection from + the requestor is still open and the forwarder must use TCP to forward + the message. If the original requestor used UDP, the forwarder may use + either UDP or TCP to forward the message, at the whim of the + implementor. + + 6.3. It is reasonable for forward servers to be forwarders themselves, + if the AXFR dependency graph being followed is a deep one involving + firewalls and multiple connectivity realms. In most cases the AXFR + dependency graph will be shallow and the forward server will be the + primary master server. + + 6.4. The forwarder will not respond to its requestor until it receives a + response from its forward server. UPDATE transactions involving + forwarders are therefore time synchronized with respect to the original + requestor and the primary master server. + + 6.5. When there are multiple possible sources of AXFR data and therefore + multiple possible forward servers, a forwarder will use the same + fallback strategy with respect to connectivity or timeout errors that it + would use when performing an AXFR. This is implementation dependent. + + 6.6. When a forwarder receives a response from a forward server, it + copies this response into a new response message, assigns its + requestor's ID to that message, and sends the response back to the + requestor. + + + + + + + + + + Expires October 1996 [Page 22] + + INTERNET-DRAFT DNS UPDATE March 1996 + + + 7 - Design, Implementation, Operation, and Protocol Notes + + Some of the principles which guided the design of this UPDATE + specification are as follows. Note that these are not part of the + formal specification and any disagreement between this section and any + other section of this document should be resolved in favour of the other + section. + + 7.1. Using metavalues for CLASS is possible only because all RRs in the + packet are assumed to be in the same zone, and CLASS is an attribute of + a zone rather than of an RRset. (It is for this reason that the Zone + Section is not optional.) + + 7.2. Since there are no data-present or data-absent errors possible from + processing the Update Section, it is necessary to state data-present and + data-absent dependencies in the Prerequisite Section. + + 7.3. The Additional Data Section can be used to supply a server with out + of zone glue that will be needed in referrals. For example, if adding a + new NS RR to HOME.VIX.COM specifying a nameserver called NS.AU.OZ, the A + RR for NS.AU.OZ can be included in the Additional Data Section. Servers + can use this information or ignore it, at the discretion of the + implementor. + + 7.4. The Additional Data Section might be used if some of the RRs later + needed for Secure DNS Update are not actually zone updates, but rather + ancillary keys or signatures not intended to be stored in the zone (as + an update would be), yet necessary for validating the update operation. + + 7.5. It is expected that in the absence of Secure DNS Update, a server + will only accept updates if they come from a source address that has + been statically configured in the server's description of a primary + master zone. DHCP servers would be likely candidates for inclusion in + this statically configured list. + + 7.6. It is not possible to create a zone using this protocol, since + there is no provision for a slave server to be told who its master + servers are. It is expected that this protocol will be extended in the + future to cover this case. Therefore, at this time, the addition of SOA + RRs is unsupported. For similar reasons, deletion of SOA RRs is also + unsupported. + + + + + + + + Expires October 1996 [Page 23] + + INTERNET-DRAFT DNS UPDATE March 1996 + + + 7.7. The prerequisite for specifying that a name own at least one RR + differs semantically from QUERY, in that QUERY would return + rather than NXDOMAIN if queried for an RRset at this + name, while UPDATE's prerequisite condition [Section 2.4.4] would NOT be + satisfied. + + 7.8. It is possible for a UDP response to be lost in transit and for a + request to be retried due to a timeout condition. In this case an + UPDATE that was successful the first time it was received by the primary + master might ultimately appear to have failed when the response to a + duplicate request is finally received by the requestor. (This is + because the original prerequisites may no longer be satisfied after the + update has been applied.) For this reason, requestors who require an + accurate response code must use TCP. + + 7.9. Because a requestor who requires an accurate response code will + initiate their UPDATE transaction using TCP, a forwarder who receives a + request via TCP must forward it using TCP. + + 7.10. Deferral of SOA SERIAL autoincrements is made possible so that + serial numbers can be conserved and wraparound at 2**32 can be made an + infrequent occurance. Visible (to DNS clients) SOA SERIALs need to + differ if the zone differs. Note that the Authority Section SOA in a + QUERY response is a form of visibility, for the purposes of this + prerequisite. + + 7.11. A zone's SOA SERIAL should never be set to zero (0) due to + interoperability problems with some older but widely installed + implementations of DNS. When incrementing an SOA SERIAL, if the result + of the increment is zero (0) (as will be true when wrapping around + 2**32), it is necessary to increment it again or set it to one (1). See + [KRE1996] for more detail on this subject. + + 7.12. Due to the TTL minimalization necessary when caching an RRset, it + is recommended that all TTLs in an RRset be set to the same value. + While the DNS Message Format permits variant TTLs to exist in the same + RRset, and this variance can exist inside a zone, such variance will + have counterintuitive results and its use is discouraged. + + + + + + + + + + + Expires October 1996 [Page 24] + + INTERNET-DRAFT DNS UPDATE March 1996 + + + 7.13. Zone cut management presents some obscure corner cases to the add + and delete operations in the Update Section. It is possible to delete + an NS RR as long as it's not the last RR in the RRset. If deleting all + RRs from a name, SOA and NS RRs at the top of a zone are unaffected. If + deleting RRsets, it is not possible to delete either SOA or NS RRsets at + the top of a zone. An attempt to add an SOA will be treated as a + replace operation. + + 7.14. No semantic checking is required in the primary master server when + adding new RRs. Therefore a requestor can cause CNAME or NS or any + other kind of RR to be added even if their target name does not exist or + does not have the proper RRsets to make the original RR useful. Primary + master servers which implement this kind of checking should take great + care to avoid out-of-zone dependencies (whose veracity cannot be + authoritatively checked) or signals to the requestor during processing + of the Update Section after the prescan. + + 7.15. Nonterminal or wildcard CNAMEs are not well specified by RFC 1035 + and their use will probably lead to unpredictable results. Their use is + discouraged. + + 7.16. Before adding a delegation to a zone, all RRsets at or below the + new zone cut should be removed, except for ``glue'' which are A RRs + below the zone cut which are targets of NS RRs at the zone cut. + + 7.17. A primary server implementation may choose to perform part of its + permission checking during the Update Section processing. This may be + needed if the permissions won't be known until the final form of an + RRset is known. In this case, a primary server can signal REFUSED to + the requestor as long as it also undoes all partial updates and restores + the zone to its original state. + + 7.18. In a deep AXFR dependency graph, it has not historically been an + error for slaves to depend mutually upon each other. This configuration + has been used to enable a zone to flow from the primary master to all + slaves even though not all slaves have continuous connectivity to the + primary master. UPDATE's use of the AXFR dependency graph for + forwarding prohibits this kind of dependency loop, since UPDATE + forwarding has no loop detection analagous to the SOA SERIAL pretest + used by AXFR. + + 7.19. For UPDATE's purposes, a zone is said to own all names at or below + the zone's root. This allows an UPDATE message to add or delete names + below a zone cut so as to create and maintain ``glue'' records needed + for delegation when a name server is within the zone being delegated. + + + + Expires October 1996 [Page 25] + + INTERNET-DRAFT DNS UPDATE March 1996 + + + 7.20. Previously existing names which are occluded by a new zone cut are + still considered part of the parent zone, for the purposes of zone + transfers, even though queries for such names will be referred to the + new subzone's servers. If a zone cut is removed, all parent zone names + that were occluded by it will again become visible to queries. (This is + a clarification of RFC 1034.) + + 7.21. If a node contains any name server delegations (NS RRs), this node + is said to be owned by the child zone, and the parent will answer only + with a nonauthoritative referral to the child zone's servers if queried + for a name at or below the child zone's root, except in the case of an + QTYPE=NS query at the zone cut itself, for which the parent zone's + servers would answer authoritatively. (This is a clarification of RFC + 1034.) + + 7.22. If a server is authoritative for both a zone and its child, then + queries for names at the zone cut between them will be answered + authoritatively using only data from the child zone. (This is a + clarification of RFC 1034.) + + 7.23. Update ordering using the SOA RR is problematic since there is no + way to know which of a zone's NS RRs represents the primary master, and + the zone slaves can be out of date if their SOA.REFRESH timers have not + elapsed since the last time the zone was changed on the primary master. + We recommend that a zone needing ordered updates use only servers which + implement NOTIFY (see [NOTIFY]) and IXFR (see [IXFR]), and that a client + receiving a prerequisite error while attempting an ordered update simply + retry after a random delay period to allow the zone to settle. + + 8 - Security Considerations + + In the absence of DNS Security, the protocol described by this document + makes it possible for anyone who can reach an authoritative name server + to alter the contents of a zone. This strongly indicates a need for out + of band access control such as static access control lists enforced by + the server combined with the strongest possible firewall techniques. + + At the time of this writing, work is progressing (see [DNSSEC]) on the + general problem of DNS Security, and for Secure DNS Updates (see + [SECUPD]). No updates should be accepted from hosts outside an + enterprise network's security perimeter until and unless Secure DNS + Updates have been implemented. For the purpose of this recommendation, + a slave server acting as a forwarder, or the primary master itself, is + outside the security perimeter if it is allowed to exchange DNS messages + with hosts outside that perimeter. + + + + Expires October 1996 [Page 26] + + INTERNET-DRAFT DNS UPDATE March 1996 + + + Acknowledgements + + We would like to thank the IETF DNSIND working group for their input and + assistance, in particular, Rob Austein, Randy Bush, Donald Eastlake, + Masataka Ohta, Mark Andrews, and Robert Elz. Special thanks to Bill + Simpson and Ken Wallich for reviewing this document. + + References + + [RFC1035] + P. Mockapetris, ``Domain Names - Implementation and Specification,'' + RFC 1035, USC/Information Sciences Institute, November 1987. + + [IXFR] + M. Ohta, ``Incremental Zone Transfer,'' Internet Draft, February + 1996, . + + [NOTIFY] + P. Vixie, ``A Mechanism for Prompt Notification of Zone Changes (DNS + NOTIFY),'' Internet Draft, March 1996, . + + [KRE1996] + R. Elz, ``Serial Number Arithmetic,'' Internet Draft, February 1996, + . + + [DNSSEC] + Donald E. Eastlake and Charles W. Kaufman, ``Domain Name System + Protocol Security Extensions,'' Internet Draft, January 1996, . + + [SECUPD] + Donald E. Eastlake, ``Secure Domain Name System Dynamic Update,'' + Internet Draft, February 1996, + + + + + + + + + + + + + + + Expires October 1996 [Page 27] + + INTERNET-DRAFT DNS UPDATE March 1996 + + + Authors' Addresses + + Yakov Rekhter Susan Thomson + Cisco Systems Bellcore + 170 West Tasman Drive 445 South Street + San Jose, CA 95134-1706 Morristown, NJ 07960 + +1 914 528 0090 +1 201 829 4514 + + + Jim Bound Paul Vixie + Digital Equipment Corp. Internet Software Consortium + 110 Spitbrook Rd ZK3-3/U14 Star Route Box 159A + Nashua, NH 03062-2698 Woodside, CA 94062 + +1 603 881 0400 +1 415 747 0204 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Expires October 1996 [Page 28] + diff --git a/usr.sbin/named/doc/i-d/draft-ietf-dnsind-ixfr-07.txt b/usr.sbin/named/doc/i-d/draft-ietf-dnsind-ixfr-07.txt new file mode 100644 index 000000000000..e638110879d1 --- /dev/null +++ b/usr.sbin/named/doc/i-d/draft-ietf-dnsind-ixfr-07.txt @@ -0,0 +1,391 @@ + + +INTERNET DRAFT M. Ohta +draft-ietf-dnsind-ixfr-07.txt Tokyo Institute of Technology + June 1996 + + Incremental Zone Transfer in DNS + +Status of this Memo + + This document is an Internet-Draft. Internet-Drafts are working + documents of the Internet Engineering Task Force (IETF), its areas, + and its working groups. Note that other groups may also distribute + working documents as Internet-Drafts. + + Internet-Drafts are draft documents valid for a maximum of six months + and may be updated, replaced, or obsoleted by other documents at any + time. It is inappropriate to use Internet- Drafts as reference + material or to cite them other than as ``work in progress.'' + + To learn the current status of any Internet-Draft, please check the + ``1id-abstracts.txt'' listing contained in the Internet- Drafts + Shadow Directories on ftp.is.co.za (Africa), nic.nordu.net (Europe), + munnari.oz.au (Pacific Rim), ds.internic.net (US East Coast), or + ftp.isi.edu (US West Coast). + +Abstract + + This document proposes extensions to the DNS protocols to provide an + incremental zone transfer (IXFR) mechanism. + +1. Introduction + + For rapid propagation of changes to a DNS database [STD13], it is + necessary to reduce latency by actively notifying servers of the + change. This is accomplished by the NOTIFY extension of the DNS + [NOTIFY]. + + The current full zone transfer mechanism (AXFR) is not an efficient + means to propagate changes to a small part of a zone, as it transfers + the entire zone file. + + Incremental transfer (IXFR) as proposed is a more efficient + mechanism, as it transfers only the changed portion(s) of a zone. + + In this document, a secondary name server which requests IXFR is + called an IXFR client and a primary or secondary name server which + responds to the request is called an IXFR server. + +2. Brief Description of the Protocol + + + +M. Ohta Expires on December 6, 1996 [Page 1] + +INTERNET DRAFT Incremental Zone Transfer in DNS June 1996 + + + If an IXFR client, which likely has an older version of a zone, + thinks it needs new information about the zone (typically through SOA + refresh timeout or the NOTIFY mechanism), it sends an IXFR message + containing the SOA serial number of its, presumably outdated, copy of + the zone. + + An IXFR server should keep record of the newest version of the zone + and the differences between that copy and several older versions. + When an IXFR request with an older version number is received, the + IXFR server needs to send only the differences required to make that + version current. Alternatively, the server may choose to transfer + the entire zone just as in a normal full zone transfer. + + When a zone has been updated, it should be saved in stable storage + before the new version is used to respond to IXFR (or AXFR) queries. + Otherwise, if the server crashes, data which is no longer available + may have been distributed to secondary servers, which can cause + persistent database inconsistencies. + + If an IXFR query with the same or newer version number than that of + the server is received, it is replied to with a single SOA record of + the server's current version, just as in AXFR. + + Transport of a query may be by either UDP or TCP. If an IXFR query + is via UDP, the IXFR server may attempt to reply using UDP if the + entire response can be contained in a single DNS packet. If the UDP + reply does not fit, the query is responded to with a single SOA + record of the server's current version to inform the client that a + TCP query should be initiated. + + Thus, a client should first make an IXFR query using UDP. If the + query type is not recognized by the server, an AXFR (preceded by a + UDP SOA query) should be tried, ensuring backward compatibility. If + the query response is a single packet with the entire new zone, or if + the server does not have a newer version than the client, everything + is done. Otherwise, a TCP IXFR query should be tried. + + To ensure integrity, servers should use UDP checksums for all UDP + responses. A cautious client which receives a UDP packet with a + checksum value of zero should ignore the result and try a TCP IXFR + instead. + + The query type value of IXFR assigned by IANA is 251. + +3. Query Format + + The IXFR query packet format is the same as that of a normal DNS + query, but with the query type being IXFR and the authority section + + + +M. Ohta Expires on December 6, 1996 [Page 2] + +INTERNET DRAFT Incremental Zone Transfer in DNS June 1996 + + + containing the SOA record of client's version of the zone. + +4. Response Format + + If incremental zone transfer is not available, the entire zone is + returned. The first and the last RR of the response is the SOA + record of the zone. I.e. the behavior is the same as an AXFR + response except the query type is IXFR. + + If incremental zone transfer is available, one or more difference + sequences is returned. The list of difference sequences is preceded + and followed by a copy of the server's current version of the SOA. + + Each difference sequence represents one update to the zone (one SOA + serial change) consisting of deleted RRs and added RRs. The first RR + of the deleted RRs is the older SOA RR and the first RR of the added + RRs is the newer SOA RR. + + Modification of an RR is performed first by removing the original RR + and then adding the modified one. + + The sequences of differential information are ordered oldest first + newest last. Thus, the differential sequences are the history of + changes made since the version known by the IXFR client up to the + server's current version. + + RRs in the incremental transfer messages may be partial. That is, if + a single RR of multiple RRs of the same RR type changes, only the + changed RR is transferred. + + An IXFR client, should only replace an older version with a newer + version after all the differences have been successfully processed. + + An incremental response is different from that of a non-incremental + response in that it begins with two SOA RRs, the server's current SOA + followed by the SOA of the client's version which is about to be + replaced. + +5. Purging Strategy + + An IXFR server can not be required to hold all previous versions + forever and may delete them anytime. In general, there is a trade-off + between the size of storage space and the possibility of using IXFR. + + Information about older versions should be purged if the total length + of an IXFR response would be longer than that of an AXFR response. + Given that the purpose of IXFR is to reduce AXFR overhead, this + strategy is quite reasonable. The strategy assures that the amount + + + +M. Ohta Expires on December 6, 1996 [Page 3] + +INTERNET DRAFT Incremental Zone Transfer in DNS June 1996 + + + of storage required is at most twice that of the current zone + information. + + Information older than the SOA expire period may also be purged. + +6. Optional Condensation of Multiple Versions + + An IXFR server may optionally condense multiple difference sequences + into a single difference sequence, thus, dropping information on + intermediate versions. + + This may be beneficial if a lot of versions, not all of which are + useful, are generated. For example, if multiple ftp servers share a + single DNS name and the IP address associated with the name is + changed once a minute to balance load between the ftp servers, it is + not so important to keep track of all the history of changes. + + But, this feature may not be so useful if an IXFR client has access + to two IXFR servers: A and B, with inconsistent condensation results. + The current version of the IXFR client, received from server A, may + be unknown to server B. In such a case, server B can not provide + incremental data from the unknown version and a full zone transfer is + necessary. + + Condensation is completely optional. Clients can't detect from the + response whether the server has condensed the reply or not. + + For interoperability, IXFR servers, including those without the + condensation feature, should not flag an error even if it receives a + client's IXFR request with a unknown version number and should, + instead, attempt to perform a full zone transfer. + +7. Example + + Given the following three generations of data with the current serial + number of 3, + + JAIN.AD.JP. IN SOA NS.JAIN.AD.JP. mohta.jain.ad.jp. ( + 1 600 600 3600000 604800) + IN NS NS.JAIN.AD.JP. + NS.JAIN.AD.JP. IN A 133.69.136.1 + NEZU.JAIN.AD.JP. IN A 133.69.136.5 + + NEZU.JAIN.AD.JP. is removed and JAIN-BB.JAIN.AD.JP. is added. + + jain.ad.jp. IN SOA ns.jain.ad.jp. mohta.jain.ad.jp. ( + 2 600 600 3600000 604800) + IN NS NS.JAIN.AD.JP. + + + +M. Ohta Expires on December 6, 1996 [Page 4] + +INTERNET DRAFT Incremental Zone Transfer in DNS June 1996 + + + NS.JAIN.AD.JP. IN A 133.69.136.1 + JAIN-BB.JAIN.AD.JP. IN A 133.69.136.4 + IN A 192.41.197.2 + + One of the IP addresses of JAIN-BB.JAIN.AD.JP. is changed. + + JAIN.AD.JP. IN SOA ns.jain.ad.jp. mohta.jain.ad.jp. ( + 3 600 600 3600000 604800) + IN NS NS.JAIN.AD.JP. + NS.JAIN.AD.JP. IN A 133.69.136.1 + JAIN-BB.JAIN.AD.JP. IN A 133.69.136.3 + IN A 192.41.197.2 + + The following IXFR query + + +---------------------------------------------------+ + Header | OPCODE=SQUERY | + +---------------------------------------------------+ + Question | QNAME=JAIN.AD.JP., QCLASS=IN, QTYPE=IXFR | + +---------------------------------------------------+ + Answer | | + +---------------------------------------------------+ + Authority | JAIN.AD.JP. IN SOA serial=1 | + +---------------------------------------------------+ + Additional | | + +---------------------------------------------------+ + + could be replied to with the following full zone transfer message: + + +---------------------------------------------------+ + Header | OPCODE=SQUERY, RESPONSE | + +---------------------------------------------------+ + Question | QNAME=JAIN.AD.JP., QCLASS=IN, QTYPE=IXFR | + +---------------------------------------------------+ + Answer | JAIN.AD.JP. IN SOA serial=3 | + | JAIN.AD.JP. IN NS NS.JAIN.AD.JP. | + | NS.JAIN.AD.JP. IN A 133.69.136.1 | + | JAIN-BB.JAIN.AD.JP. IN A 133.69.136.3 | + | JAIN-BB.JAIN.AD.JP. IN A 192.41.197.2 | + | JAIN.AD.JP. IN SOA serial=3 | + +---------------------------------------------------+ + Authority | | + +---------------------------------------------------+ + Additional | | + +---------------------------------------------------+ + + or with the following incremental message: + + + + +M. Ohta Expires on December 6, 1996 [Page 5] + +INTERNET DRAFT Incremental Zone Transfer in DNS June 1996 + + + +---------------------------------------------------+ + Header | OPCODE=SQUERY, RESPONSE | + +---------------------------------------------------+ + Question | QNAME=JAIN.AD.JP., QCLASS=IN, QTYPE=IXFR | + +---------------------------------------------------+ + Answer | JAIN.AD.JP. IN SOA serial=3 | + | JAIN.AD.JP. IN SOA serial=1 | + | NEZU.JAIN.AD.JP. IN A 133.69.136.5 | + | JAIN.AD.JP. IN SOA serial=2 | + | JAIN-BB.JAIN.AD.JP. IN A 133.69.136.4 | + | JAIN-BB.JAIN.AD.JP. IN A 192.41.197.2 | + | JAIN.AD.JP. IN SOA serial=2 | + | JAIN-BB.JAIN.AD.JP. IN A 133.69.136.4 | + | JAIN.AD.JP. IN SOA serial=3 | + | JAIN-BB.JAIN.AD.JP. IN A 133.69.136.3 | + | JAIN.AD.JP. IN SOA serial=3 | + +---------------------------------------------------+ + Authority | | + +---------------------------------------------------+ + Additional | | + +---------------------------------------------------+ + + or with the following condensed incremental message: + + +---------------------------------------------------+ + Header | OPCODE=SQUERY, RESPONSE | + +---------------------------------------------------+ + Question | QNAME=JAIN.AD.JP., QCLASS=IN, QTYPE=IXFR | + +---------------------------------------------------+ + Answer | JAIN.AD.JP. IN SOA serial=3 | + | JAIN.AD.JP. IN SOA serial=1 | + | NEZU.JAIN.AD.JP. IN A 133.69.136.5 | + | JAIN.AD.JP. IN SOA serial=3 | + | JAIN-BB.JAIN.AD.JP. IN A 133.69.136.3 | + | JAIN-BB.JAIN.AD.JP. IN A 192.41.197.2 | + | JAIN.AD.JP. IN SOA serial=3 | + +---------------------------------------------------+ + Authority | | + +---------------------------------------------------+ + Additional | | + +---------------------------------------------------+ + + or, if UDP packet overflow occurs, with the following message: + + + + + + + + +M. Ohta Expires on December 6, 1996 [Page 6] + +INTERNET DRAFT Incremental Zone Transfer in DNS June 1996 + + + +---------------------------------------------------+ + Header | OPCODE=SQUERY, RESPONSE | + +---------------------------------------------------+ + Question | QNAME=JAIN.AD.JP., QCLASS=IN, QTYPE=IXFR | + +---------------------------------------------------+ + Answer | JAIN.AD.JP. IN SOA serial=3 | + +---------------------------------------------------+ + Authority | | + +---------------------------------------------------+ + Additional | | + +---------------------------------------------------+ + +8. Acknowledgements + + The original idea of IXFR was conceived by Anant Kumar, Steve Hotz + and Jon Postel. + + For the refinement of the protocol and documentation, many people + have contributed including, but not limited to, Anant Kumar, Robert + Austein, Paul Vixie, Randy Bush, Mark Andrews, Robert Elz and the + members of the IETF DNSIND working group. + +9. References + + [NOTIFY] Vixie, P., "DNS NOTIFY: a mechanism for prompt notification + of zone changes", work in progress as . + + [STD13] Mockapetris, P., "Domain Name System" (RFC1034 and RFC1035), + November 1987. + +10. Security Considerations + + Though DNS is related to several security problems, no attempt is + made to fix them in this document. + + This document is believed to introduce no additional security + problems to the current DNS protocol. + +11. Author's Address + + Masataka Ohta + Computer Center, Tokyo Institute of Technology + 2-12-1, O-okayama, Meguro-ku, Tokyo 152, JAPAN + + Phone: +81-3-5734-3299, Fax: +81-3-5734-3415 + EMail: mohta@necom830.hpcl.titech.ac.jp + + + + +M. Ohta Expires on December 6, 1996 [Page 7] + diff --git a/usr.sbin/named/doc/i-d/draft-ietf-dnsind-notify-08.txt b/usr.sbin/named/doc/i-d/draft-ietf-dnsind-notify-08.txt new file mode 100644 index 000000000000..7ae181bb17bf --- /dev/null +++ b/usr.sbin/named/doc/i-d/draft-ietf-dnsind-notify-08.txt @@ -0,0 +1,423 @@ + + DNSIND Working Group Paul Vixie (ISC) + INTERNET-DRAFT May, 1996 + + + Updates: RFC 1035 + + + A Mechanism for Prompt Notification of Zone Changes (DNS NOTIFY) + + + Status of this Memo + + This document is an Internet-Draft. Internet-Drafts are working + documents of the Internet Engineering Task Force (IETF), its areas, + and its working groups. Note that other groups may also distribute + working documents as Internet-Drafts. + + Internet-Drafts are draft documents valid for a maximum of six months + and may be updated, replaced, or obsoleted by other documents at any + time. It is inappropriate to use Internet-Drafts as reference + material or to cite them other than as ``work in progress.'' + + To learn the current status of any Internet-Draft, please check the + ``1id-abstracts.txt'' listing contained in the Internet-Drafts Shadow + Directories on ftp.is.co.za (Africa), nic.nordu.net (Europe), + munnari.oz.au (Pacific Rim), ds.internic.net (US East Coast), or + ftp.isi.edu (US West Coast). + + + Abstract + + This draft describes the NOTIFY opcode for DNS, by which a master + server advises a set of slave servers that the master's data has been + changed and that a query should be initiated to discover the new + data. + + 1 - Rationale and Scope + + 1.1. Slow propagation of new and changed data in a DNS zone can be due + to a zone's relatively long refresh times. Longer refresh times are + beneficial in that they reduce load on the master servers, but that + benefit comes at the cost of long intervals of incoherence among + authority servers whenever the zone is updated. + + + + + + Expires November 1996 [Page 1] + + INTERNET-DRAFT DNS NOTIFY May 1996 + + + 1.2. The DNS NOTIFY transaction allows master servers to inform slave + servers when the zone has changed -- an interrupt as opposed to poll + model -- which it is hoped will reduce propagation delay while not + unduly increasing the masters' load. This specification only allows + slaves to be notified of SOA RR changes, but the architechture of NOTIFY + is intended to be extensible to other RR types. + + 1.3. This document intentionally gives more definition to the roles of + ``Master,'' ``Slave'' and ``Stealth'' servers, their enumeration in NS + RRs, and the SOA MNAME field. In that sense, this document can be + considered an addendum to [RFC1035]. + + 2 - Definitions and Invariants + + 2.1. The following definitions are used in this document: + + Slave an authoritative server which uses zone transfer to + retrieve the zone. All slave servers are named in + the NS RRs for the zone. + + Master any authoritative server configured to be the source + of zone transfer for one or more slave servers. + + Primary Master master server at the root of the zone transfer + dependency graph. The primary master is named in the + zone's SOA MNAME field and optionally by an NS RR. + There is by definition only one primary master server + per zone. + + Stealth like a slave server except not listed in an NS RR for + the zone. A stealth server, unless explicitly + configured to do otherwise, will set the AA bit in + responses and be capable of acting as a master. A + stealth server will only be known by other servers if + they are given static configuration data indicating + its existence. + + Notify Set set of servers to be notified of changes to some + zone. Default is all servers named in the NS RRset, + except for any server also named in the SOA MNAME. + Some implementations will permit the name server + administrator to override this set or add elements to + it (such as, for example, stealth servers). + + + + + + Expires November 1996 [Page 2] + + INTERNET-DRAFT DNS NOTIFY May 1996 + + + 2.2. The zone's servers must be organized into a dependency graph such + that there is a primary master, and all other servers must use AXFR or + IXFR either from the primary master or from some slave which is also a + master. No loops are permitted in the AXFR dependency graph. + + 3 - NOTIFY Message + + 3.1. When a master has updated one or more RRs in which slave servers + may be interested, the master may send the changed RR's name, class, + type, and optionally, new RDATA(s), to each known slave server using a + best efforts protocol based on the NOTIFY opcode. + + 3.2. NOTIFY uses the DNS Message Format, although it uses only a subset + of the available fields. Fields not otherwise described herein are to + be filled with binary zero (0), and implementations must ignore all + messages for which this is not the case. + + 3.3. NOTIFY is similar to QUERY in that it has a request message with + the header QR flag ``clear'' and a response message with QR ``set''. + The response message contains no useful information, but its reception + by the master is an indication that the slave has received the NOTIFY + and that the master can remove the slave from any retry queue for this + NOTIFY event. + + 3.4. The transport protocol used for a NOTIFY transaction will be UDP + unless the master has reason to believe that TCP is necessary; for + example, if a firewall has been installed between master and slave, and + only TCP has been allowed; or, if the changed RR is too large to fit in + a UDP/DNS datagram. + + 3.5. If TCP is used, both master and slave must continue to offer name + service during the transaction, even when the TCP transaction is not + making progress. The NOTIFY request is sent once, and a ``timeout'' is + said to have occurred if no NOTIFY response is received within a + reasonable interval. + + 3.6. If UDP is used, a master periodically sends a NOTIFY request to a + slave until either too many copies have been sent (a ``timeout''), an + ICMP message indicating that the port is unreachable, or until a NOTIFY + response is received from the slave with a matching query ID, QNAME, IP + source address, and UDP source port number. + + + + + + + + Expires November 1996 [Page 3] + + INTERNET-DRAFT DNS NOTIFY May 1996 + + + Note: + The interval between transmissions, and the total number of + retransmissions, should be operational parameters specifiable by the + name server administrator, perhaps on a per-zone basis. Reasonable + defaults are a 60 second interval (or timeout if using TCP), and a + maximum of 5 retransmissions (for UDP). It is considered reasonable + to use additive or exponential backoff for the retry interval. + + 3.7. A NOTIFY request has QDCOUNT>0, ANCOUNT>=0, AUCOUNT>=0, ADCOUNT>=0. + If ANCOUNT>0, then the answer section represents an unsecure hint at the + new RRset for this . A slave receiving such a hint + is free to treat equivilence of this answer section with its local data + as a ``no further work needs to be done'' indication. If ANCOUNT=0, or + ANCOUNT>0 and the answer section differs from the slave's local data, + then the slave should query its known masters to retrieve the new data. + + 3.8. In no case shall the answer section of a NOTIFY request be used to + update a slave's local data, or to indicate that a zone transfer needs + to be undertaken, or to change the slave's zone refresh timers. Only a + ``data present; data same'' condition can lead a slave to act + differently if ANCOUNT>0 than it would if ANCOUNT=0. + + 3.9. This version of the NOTIFY specification makes no use of the + authority or additional data sections, and so conforming implementations + should set AUCOUNT=0 and ADCOUNT=0 when transmitting requests. Since a + future revision of this specification may define a backwards compatible + use for either or both of these sections, current implementations must + ignore these sections, but not the entire message, if AUCOUNT>0 and/or + ADCOUNT>0. + + 3.10. If a slave receives a NOTIFY request from a host that is not a + known master for the zone containing the QNAME, it should ignore the + request and produce an error message in its operations log. + + Note: + This implies that slaves of a multihomed master must either know + their master by the ``closest'' of the master's interface addresses, + or must know all of the master's interface addresses. Otherwise, a + valid NOTIFY request might come from an address that is not on the + slave's state list of masters for the zone, which would be an error. + + + + + + + + + Expires November 1996 [Page 4] + + INTERNET-DRAFT DNS NOTIFY May 1996 + + + 3.11. The only defined NOTIFY event at this time is that the SOA RR has + changed. Upon completion of a NOTIFY transaction for QTYPE=SOA, the + slave should behave as though the zone given in the QNAME had reached + its REFRESH interval (see [RFC1035]), i.e., it should query its masters + for the SOA of the zone given in the NOTIFY QNAME, and check the answer + to see if the SOA SERIAL has been incremented since the last time the + zone was fetched. If so, a zone transfer (either AXFR or IXFR) should + be initiated. + + Note: + Because a deep server dependency graph may have multiple paths from + the primary master to any given slave, it is possible that a slave + will receive a NOTIFY from one of its known masters even though the + rest of its known masters have not yet updated their copies of the + zone. Therefore, when issuing a QUERY for the zone's SOA, the query + should be directed at the known master who was the source of the + NOTIFY event, and not at any of the other known masters. This + represents a departure from [RFC1035], which specifies that upon + expiry of the SOA REFRESH interval, all known masters should be + queried in turn. + + 3.12. If a NOTIFY request is received by a slave who does not implement + the NOTIFY opcode, it will respond with a NOTIMP (unimplemented feature + error) message. A master server who receives such a NOTIMP should + consider the NOTIFY transaction complete for that slave. + + 4 - Details and Examples + + 4.1. Retaining query state information across host reboots is optional, + but it is reasonable to simply execute an SOA NOTIFY transaction on each + authority zone when a server first starts. + + 4.2. Each slave is likely to receive several copies of the same NOTIFY + request: One from the primary master, and one from each other slave as + that slave transfers the new zone and notifies its potential peers. The + NOTIFY protocol supports this multiplicity by requiring that NOTIFY be + sent by a slave/master only AFTER it has updated the SOA RR or has + determined that no update is necessary, which in practice means after a + successful zone transfer. Thus, barring delivery reordering, the last + NOTIFY any slave receives will be the one indicating the latest change. + Since a slave always requests SOAs and AXFR/IXFRs only from its known + masters, it will have an opportunity to retry its QUERY for the SOA + after each of its masters have completed each zone update. + + + + + + Expires November 1996 [Page 5] + + INTERNET-DRAFT DNS NOTIFY May 1996 + + + 4.3. If a master server seeks to avoid causing a large number of + simultaneous outbound zone transfers, it may delay for an arbitrary + length of time before sending a NOTIFY message to any given slave. It + is expected that the time will be chosen at random, so that each slave + will begin its transfer at a unique time. The delay shall not in any + case be longer than the SOA REFRESH time. + + Note: + This delay should be a parameter that each primary master name server + can specify, perhaps on a per-zone basis. Random delays of between + 30 and 60 seconds would seem adequate if the servers share a LAN and + the zones are of moderate size. + + 4.4. A slave which receives a valid NOTIFY should defer action on any + subsequent NOTIFY with the same until it has + completed the transaction begun by the first NOTIFY. This duplicate + rejection is necessary to avoid having multiple notifications lead to + pummeling the master server. + + 4.5 - Zone has Updated on Primary Master + + Primary master sends a NOTIFY request to all servers named in Notify + Set. The NOTIFY request has the following characteristics: + + query ID: (new) + op: NOTIFY (4) + resp: NOERROR + flags: AA + qcount: 1 + qname: (zone name) + qclass: (zone class) + qtype: T_SOA + + + 4.6 - Zone has Updated on a Slave that is also a Master + + As above in 4.5, except that this server's Notify Set may be different + from the Primary Master's due to optional static specification of local + stealth servers. + + + + + + + + + + Expires November 1996 [Page 6] + + INTERNET-DRAFT DNS NOTIFY May 1996 + + + 4.7 - Slave Receives a NOTIFY Request from a Master + + When a slave server receives a NOTIFY request from one of its locally + designated masters for the zone enclosing the given QNAME, with + QTYPE=SOA and QR=0, it should enter the state it would if the zone's + refresh timer had expired. It will also send a NOTIFY response back to + the NOTIFY request's source, with the following characteristics: + + query ID: (same) + op: NOTIFY (4) + resp: NOERROR + flags: QR AA + qcount: 1 + qname: (zone name) + qclass: (zone class) + qtype: T_SOA + + This is intended to be identical to the NOTIFY request, except that the + QR bit is also set. The query ID of the response must be the same as + was received in the request. + + 4.8 - Master Receives a NOTIFY Response from Slave + + When a master server receives a NOTIFY response, it deletes this query + from the retry queue, thus completing the ``notification process'' of + ``this'' RRset change to ``that'' server. + + 5 - Security Considerations + + We believe that the NOTIFY operation's only security considerations are: + + 1. That a NOTIFY request with a forged IP/UDP source address can cause a + slave to send spurious SOA queries to its masters, leading to a + benign denial of service attack if the forged requests are sent very + often. + + 2. That TCP spoofing could be used against a slave server given NOTIFY + as a means of synchronizing an SOA query and UDP/DNS spoofing as a + means of forcing a zone transfer. + + + + + + + + + + Expires November 1996 [Page 7] + + INTERNET-DRAFT DNS NOTIFY May 1996 + + + 6 - References + + [RFC1035] + P. Mockapetris, "Domain Names - Implementation and Specification", + RFC 1035, USC/Information Sciences Institute, November 1987. + + [IXFR] + M. Ohta, "Incremental Zone Transfer", Internet Draft, February 1996, + . + + 7 - Author's Address + + Paul Vixie + Internet Software Consortium + Star Route Box 159A + Woodside, CA 94062 + +1 415 747 0204 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Expires November 1996 [Page 8] + + diff --git a/usr.sbin/named/doc/i-d/draft-ietf-dnssec-secext-10.txt b/usr.sbin/named/doc/i-d/draft-ietf-dnssec-secext-10.txt new file mode 100644 index 000000000000..fee10c29fcc1 --- /dev/null +++ b/usr.sbin/named/doc/i-d/draft-ietf-dnssec-secext-10.txt @@ -0,0 +1,2609 @@ + +DNS Security Working Group Donald E. Eastlake, 3rd +INTERNET-DRAFT CyberCash +UPDATES RFC 1034, 1035 Charles W. Kaufman + Iris +Expires: 4 February 1997 5 August 1996 + + + + Domain Name System Security Extensions + ------ ---- ------ -------- ---------- + + + + +Status of This Document + + This draft, file name draft-ietf-dnssec-secext-10.txt, is intended to + be become a Proposed Standard RFC. Distribution of this document is + unlimited. Comments should be sent to the DNS Security Working Group + mailing list or to the authors. + + This document is an Internet-Draft. Internet-Drafts are working + documents of the Internet Engineering Task Force (IETF), its areas, + and its working groups. Note that other groups may also distribute + working documents as Internet-Drafts. + + Internet-Drafts are draft documents valid for a maximum of six + months. Internet-Drafts may be updated, replaced, or obsoleted by + other documents at any time. It is not appropriate to use Internet- + Drafts as reference material or to cite them other than as a + ``working draft'' or ``work in progress.'' + + To learn the current status of any Internet-Draft, please check the + 1id-abstracts.txt listing contained in the Internet-Drafts Shadow + Directories on ds.internic.net (East USA), ftp.isi.edu (West USA), + nic.nordu.net (North Europe), ftp.nis.garr.it (South Europe), + munnari.oz.au (Pacific Rim), or ftp.is.co.za (Africa). + + + + + + + + + + + + + + + + + + +D. Eastlake, C. Kaufman [Page 1] + + +INTERNET-DRAFT DNS Protocol Security Extensions 5 August 1996 + + +Abstract + + The Domain Name System (DNS) has become a critical operational part + of the Internet infrastructure yet it has no strong security + mechanisms to assure data integrity or authentication. Extensions to + the DNS are described that provide these services to security aware + resolvers or applications through the use of cryptographic digital + signatures. These digital signatures are included in secured zones + as resource records. Security can still be provided even through + non-security aware DNS servers in many cases. + + The extensions also provide for the storage of authenticated public + keys in the DNS. This storage of keys can support general public key + distribution service as well as DNS security. The stored keys enable + security aware resolvers to learn the authenticating key of zones in + addition to those for which they are initially configured. Keys + associated with DNS names can be retrieved to support other + protocols. Provision is made for a variety of key types and + algorithms. + + In addition, the security extensions provide for the optional + authentication of DNS protocol transactions. + + + +Acknowledgments + + The significant contributions of the following persons (in alphabetic + order) to this document are gratefully acknowledged: + + Harald T. Alvestrand + Madelyn Badger + Scott Bradner + Matt Crawford + James M. Galvin + Olafur Gudmundsson + Edie Gunter + Sandy Murphy + Masataka Ohta + Michael A. Patton + Jeffrey I. Schiller + + + + + + + + + + + +D. Eastlake, C. Kaufman [Page 2] + + +INTERNET-DRAFT DNS Protocol Security Extensions 5 August 1996 + + +Table of Contents + + Status of This Document....................................1 + + Abstract...................................................2 + Acknowledgments............................................2 + + Table of Contents..........................................3 + + 1. Overview of Contents....................................5 + + 2. Overview of the DNS Extensions.........................6 + 2.1 Services Not Provided..................................6 + 2.2 Key Distribution.......................................6 + 2.3 Data Origin Authentication and Integrity...............7 + 2.3.1 The SIG Resource Record..............................8 + 2.3.2 Authenticating Name and Type Non-existence...........8 + 2.3.3 Special Considerations With Time-to-Live.............8 + 2.3.4 Special Considerations at Delegation Points..........9 + 2.3.5 Special Considerations with CNAME RRs................9 + 2.3.6 Signers Other Than The Zone.........................10 + 2.4 DNS Transaction and Request Authentication............10 + + 3. The KEY Resource Record................................12 + 3.1 KEY RDATA format......................................12 + 3.2 Object Types, DNS Names, and Keys.....................12 + 3.3 The KEY RR Flag Field.................................13 + 3.4 The Protocol Octet....................................15 + 3.5 The KEY Algorithm Number and the MD5/RSA Algorithm....16 + 3.6 Interaction of Flags, Algorithm, and Protocol Bytes...16 + 3.7 KEY RRs in the Construction of Responses..............17 + 3.8 File Representation of KEY RRs........................18 + + 4. The SIG Resource Record................................19 + 4.1 SIG RDATA Format......................................19 + 4.1.1 Signature Data......................................21 + 4.1.2 MD5/RSA Algorithm Signature Calculation.............22 + 4.1.3 Zone Transfer (AXFR) SIG............................23 + 4.1.4 Transaction and Request SIGs........................24 + 4.2 SIG RRs in the Construction of Responses..............25 + 4.3 Processing Responses and SIG RRs......................25 + 4.4 Signature Expiration, TTLs, and Validity..............26 + 4.5 File Representation of SIG RRs........................27 + + 5. Non-existent Names and Types...........................28 + 5.1 The NXT Resource Record...............................28 + 5.2 NXT RDATA Format......................................29 + 5.3 Example...............................................30 + 5.4 Interaction of NXT RRs and Wildcard RRs...............30 + 5.5 Blocking NXT Pseudo-Zone Transfers....................31 + + +D. Eastlake, C. Kaufman [Page 3] + + +INTERNET-DRAFT DNS Protocol Security Extensions 5 August 1996 + + + 5.6 Special Considerations at Delegation Points...........31 + + 6. The AD and CD Bits and How to Resolve Securely.........33 + 6.1 The AD and CD Header Bits.............................33 + 6.2 Boot File Format......................................34 + 6.3 Chaining Through Zones................................35 + 6.4 Secure Time...........................................36 + + 7. Operational Considerations.............................37 + 7.1 Key Size Considerations...............................37 + 7.2 Key Storage...........................................37 + 7.3 Key Generation........................................38 + 7.4 Key Lifetimes.........................................38 + 7.5 Signature Lifetime....................................39 + 7.6 Root..................................................39 + + 8. Conformance............................................40 + 8.1 Server Conformance....................................40 + 8.2 Resolver Conformance..................................40 + + 9. Security Considerations................................41 + + References................................................42 + + Authors Addresses.........................................43 + Expiration and File Name..................................43 + + Appendix: Base 64 Encoding................................44 + + + + + + + + + + + + + + + + + + + + + + + + +D. Eastlake, C. Kaufman [Page 4] + + +INTERNET-DRAFT DNS Protocol Security Extensions 5 August 1996 + + +1. Overview of Contents + + This document describes extensions of the Domain Name System (DNS) + protocol to support DNS security and public key distribution. It + assumes that the reader is familiar with the Domain Name System, + particularly as described in RFCs 1033, 1034, and 1035. + + Section 2 provides an overview of the extensions and the key + distribution, data origin authentication, and transaction and request + security they provide. + + Section 3 discusses the KEY resource record, its structure, use in + DNS responses, and file representation. These resource records + represent the public keys of entities named in the DNS and are used + for key distribution. + + Section 4 discusses the SIG digital signature resource record, its + structure, use in DNS responses, and file representation. These + resource records are used to authenticate other resource records in + the DNS and optionally to authenticate DNS transactions and requests. + + Section 5 discusses the NXT resource record and its use in DNS + responses. The NXT RR permits authenticated denial in the DNS of the + existence of a name or of a particular type for an existing name. + + Section 6 discusses how a resolver can be configured with a starting + key or keys and proceed to securely resolve DNS requests. + Interactions between resolvers and servers are discussed for all + combinations of security aware and security non-aware. Two + additional query header bits are defined for signaling between + resolvers and servers. + + Section 7 reviews a variety of operational considerations including + key generation, lifetime, and storage. + + Section 8 defines levels of conformance for resolvers and servers. + + Section 9 provides a few paragraphs on overall security + considerations. + + An Appendix is provided that gives details of base 64 encoding which + is used in the file representation of some RR's defined in this + document. + + + + + + + + + +D. Eastlake, C. Kaufman [Page 5] + + +INTERNET-DRAFT DNS Protocol Security Extensions 5 August 1996 + + +2. Overview of the DNS Extensions + + The Domain Name System (DNS) protocol security extensions provide + three distinct services: key distribution as described in Section 2.2 + below, data origin authentication as described in Section 2.3 below, + and transaction and request authentication, described in Section 2.4 + below. + + Special considerations related to "time to live", CNAMEs, and + delegation points are also discussed in Section 2.3. + + + +2.1 Services Not Provided + + It is part of the design philosophy of the DNS that the data in it is + public and that the DNS gives the same answers to all inquirers. + + Following this philosophy, no attempt has been made to include any + sort of access control lists or other means to differentiate + inquirers. + + In addition, no effort has been made to provide for any + confidentiality for queries or responses. (This service may be + available via IPSEC [RFC 1825].) + + + +2.2 Key Distribution + + Resource records (RRs) are defined to associate keys with DNS names. + This permits the DNS to be used as a public key distribution + mechanism in support of the DNS data origin authentication and other + security services. + + The syntax of a KEY resource record (RR) is described in Section 3. + It includes an algorithm identifier, the actual public key + parameters, and a variety of flags including those indicating the + type of entity the key is associated with and/or asserting that there + is no key associated with that entity. + + Under conditions described in Section 3.7, security aware DNS servers + will automatically attempt to return KEY resources as additional + information, along with those resource records actually requested, to + minimize the number of queries needed. + + + + + + + +D. Eastlake, C. Kaufman [Page 6] + + +INTERNET-DRAFT DNS Protocol Security Extensions 5 August 1996 + + +2.3 Data Origin Authentication and Integrity + + Authentication is provided by associating with resource records in + the DNS cryptographically generated digital signatures. Commonly, + there will be a single private key that signs for an entire zone. If + a security aware resolver reliably learns the public key of the zone, + it can verify, for signed data read from that zone, that it was + properly authorized and is reasonably current. The expected + implementation is for the zone private key to be kept off-line and + used to re-sign all of the records in the zone periodically. + + This data origin authentication key belongs to the zone and not to + the servers that store copies of the data. That means compromise of + a server or even all servers for a zone will not necessarily affect + the degree of assurance that a resolver has that it can determine + whether data is genuine. + + A resolver can learn the public key of a zone either by reading it + from DNS or by having it staticly configured. To reliably learn the + public key by reading it from DNS, the key itself must be signed. + Thus, to provide a reasonable degree of security, the resolver must + be configured with at least the public key of one zone that it can + use to authenticate signatures. From there, it can securely read the + public keys of other zones, if the intervening zones in the DNS tree + are secure and their signed keys accessible. (It is in principle + more secure to have the resolver manually configured with the public + keys of multiple zones, since then the compromise of a single zone + would not permit the faking of information from other zones. It is + also more administratively cumbersome, however, particularly when + public keys change.) + + Adding data origin authentication and integrity requires no change to + the "on-the-wire" DNS protocol beyond the addition of the signature + resource type and, as a practical matter, the key resource type + needed for key distribution. This service can be supported by + existing resolver and server implementations so long as they can + support the additional resource types (see Section 8). The one + exception is that CNAME referrals from a secure zone can not be + authenticated if they are from non-security aware servers (see + Section 2.3.5). + + If signatures are always separately retrieved and verified when + retrieving the information they authenticate, there will be more + trips to the server and performance will suffer. To avoid this, + security aware servers mitigate that degradation by always attempting + to send the signature(s) needed. + + + + + + +D. Eastlake, C. Kaufman [Page 7] + + +INTERNET-DRAFT DNS Protocol Security Extensions 5 August 1996 + + +2.3.1 The SIG Resource Record + + The syntax of a SIG resource record (signature) is described in + Section 4. It includes the type of the RR(s) being signed, the name + of the signer, the time at which the signature was created, the time + it expires (when it is no longer to be believed), its original time + to live (which may be longer than its current time to live but cannot + be shorter), the cryptographic algorithm in use, and the actual + signature. + + Every name in a secured zone will have associated with it at least + one SIG resource record for each resource type under that name except + for glue RRs and delgation point NS RRs. A security aware server + supporting the performance enhanced version of the DNS protocol + security extensions will attempt to return, with RRs retrieved, the + corresponding SIGs. If a server does not support the protocol, the + resolver must retrieve all the SIG records for a name and select the + one or ones that sign the resource record(s) that resolver is + interested in. + + + +2.3.2 Authenticating Name and Type Non-existence + + The above security mechanism provides only a way to sign existing RRs + in a zone. "Data origin" authentication is not obviously provided + for the non-existence of a domain name in a zone or the non-existence + of a type for an existing name. This gap is filled by the NXT RR + which authenticatably asserts a range of non-existent names in a zone + and the non-existence of types for the name just before that range. + + Section 5 below covers the NXT RR. + + + +2.3.3 Special Considerations With Time-to-Live + + A digital signature will fail to verify if any change has occurred to + the data between the time it was originally signed and the time the + signature is verified. This conflicts with our desire to have the + time-to-live field tick down when resource records are cached. + + This could be avoided by leaving the time-to-live out of the digital + signature, but that would allow unscrupulous servers to set + arbitrarily long time to live values undetected. Instead, we include + the "original" time-to-live in the signature and communicate that + data in addition to the current time-to-live. Unscrupulous servers + under this scheme can manipulate the time to live but a security + aware resolver will bound the TTL value it uses at the original + signed value. Separately, signatures include a time signed and an + + +D. Eastlake, C. Kaufman [Page 8] + + +INTERNET-DRAFT DNS Protocol Security Extensions 5 August 1996 + + + expiration time. A resolver that knows the absolute time can + determine securely whether a signature has expired. It is not + possible to rely solely on the signature expiration as a substitute + for the TTL, however, since the TTL is primarily a database + consistency mechanism and, in any case, non-security aware servers + that depend on TTL must still be supported. + + + +2.3.4 Special Considerations at Delegation Points + + DNS security would like to view each zone as a unit of data + completely under the control of the zone owner and signed by the + zone's key. But the operational DNS views the leaf nodes in a zone, + which are also the apex nodes of a subzone (i.e., delegation points), + as "really" belonging to the subzone. These nodes occur in two + master files and may have RRs signed by both the upper and lower + zone's keys. A retrieval could get a mixture of these RRs and SIGs, + especially since one server could be serving both the zone above and + below a delegation point. + + In general, there must be a zone KEY RR for the subzone in the + superzone and the copy signed in the superzone is controlling. For + all but one other RR type that should appearing in both the superzone + and subzone, the data from the subzone is more authoritative. To + avoid conflicts, only the KEY RR in the superzone should be signed + and the NS and any A (glue) RRs should only be signed in the subzone. + The SOA and any other RRs that have the zone name as owner should + appear only in the subzone and thus are signed there. The NXT RR type + is an exceptional case that will always appear differently and + authoritatively in both the superzone and subzone, if both are + secure, as described in Section 5. + + + +2.3.5 Special Considerations with CNAME RRs + + There is a significant problem when security related RRs with the + same owner name as a CNAME RR are retrieved from a non-security-aware + server. In particular, an initial retrieval for the CNAME or any + other type will not retrieve any associated signature, key, or NXT + RR. For types other than CNAME, it will retrieve that type at the + target name of the CNAME (or chain of CNAMEs) and will return the + CNAME as additional information. In particular, a specific retrieval + for type SIG will not get the SIG, if any, at the original CNAME + domain name but rather a SIG at the target name. + + In general, security aware servers MUST be used to securely CNAME in + DNS. Security aware servers must (1) allow KEY, SIG, and NXT RRs + along with CNAME RRs, (2) suppress CNAME processing on retrieval of + + +D. Eastlake, C. Kaufman [Page 9] + + +INTERNET-DRAFT DNS Protocol Security Extensions 5 August 1996 + + + these types as well as on retrieval of the type CNAME, and (3) + automatically return SIG RRs authenticating the CNAME or CNAMEs + encountered in resolving a query. This is a change from the previous + DNS standard which prohibited any other RR type at a node where a + CNAME RR was present. + + + +2.3.6 Signers Other Than The Zone + + There are two cases where a SIG resource record is signed by other + than the zone private key. One is for support of dynamic update + where an entity is permitted to authenticate/update its own records. + The public key of the entity must be present in the DNS and be + appropriately signed but the other RR(s) may be signed with the + entity's key. The other is for support of transaction and request + authentication as described in Section 2.4 immediately below. + + + +2.4 DNS Transaction and Request Authentication + + The data origin authentication service described above protects + retrieved resource records but provides no protection for DNS + requests or for message headers. + + If header bits are falsely set by a server, there is little that can + be done. However, it is possible to add transaction authentication. + Such authentication means that a resolver can be sure it is at least + getting messages from the server it thinks it queried, that the + response is from the query it sent, and that these messages have not + been diddled in transit. This is accomplished by optionally adding a + special SIG resource record at the end of the reply which digitally + signs the concatenation of the server's response and the resolver's + query. + + Requests can also be authenticated by including a special SIG RR at + the end of the request. Authenticating requests serves no function + in the current DNS and requests with a non-empty additional + information section are ignored by almost all current DNS servers. + However, this syntax for signing requests is defined in connection + with authenticating future secure dynamic update requests or the + like. + + The private keys used in transaction and request security belongs to + the host composing the request or reply message, not to the zone + involved. The corresponding public key is normally stored in and + retrieved from the DNS. + + Because requests and replies are highly variable, message + + +D. Eastlake, C. Kaufman [Page 10] + + +INTERNET-DRAFT DNS Protocol Security Extensions 5 August 1996 + + + authentication SIGs can not be pre-calculated. Thus it will be + necessary to keep the private key on-line, for example in software or + in a directly connected piece of hardware. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +D. Eastlake, C. Kaufman [Page 11] + + +INTERNET-DRAFT DNS Protocol Security Extensions 5 August 1996 + + +3. The KEY Resource Record + + The KEY resource record (RR) is used to document a key that is + associated with a Domain Name System (DNS) name. It will be a public + key as only public keys are stored in the DNS. This can be the + public key of a zone, a host or other end entity, or a user. A KEY + RR is, like any other RR, authenticated by a SIG RR. Security aware + DNS implementations MUST be designed to handle at least two + simultaneously valid keys of the same type associated with a name. + + The type number for the KEY RR is 25. + + + +3.1 KEY RDATA format + + The RDATA for a KEY RR consists of flags, a protocol octet, the + algorithm number, and the public key itself. The format is as + follows: + + 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | flags | protocol | algorithm | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | / + / public key / + / / + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-| + + The meaning of the KEY RR owner name, flags, and protocol octet are + described in Sections 3.2, 3.3 and 3.4 below respectively. The flags + and algorithm must be examined before any data following the + algorithm octet as they control the format and even whether there is + any following data. The algorithm and public key fields are + described in Section 3.5. The format of the public key is algorithm + dependent. + + + +3.2 Object Types, DNS Names, and Keys + + The public key in a KEY RR belongs to the object named in the owner + name. + + This DNS name may refer to up to three different categories of + things. For example, dee.cybercash.com could be (1) a zone, (2) a + host or other end entity , and (3) the mapping into a DNS name of the + user or account dee@cybercash.com. Thus, there are flags, as + described below, in the KEY RR to indicate with which of these roles + + +D. Eastlake, C. Kaufman [Page 12] + + +INTERNET-DRAFT DNS Protocol Security Extensions 5 August 1996 + + + the owner name and public key are associated. Note that an + appropriate zone KEY RR MUST occur at the apex node of a secure zone + and at every leaf node which is a delegation point (and thus the same + owner name as the apex of a subzone) within a secure zone. + + Although the same name can be used for up to all three of these + categories, such overloading of a name is discouraged. It is also + possible to use the same key for different things with the same name + or even different names, but this is strongly discouraged. In + particular, the use of a zone key as a non-zone key will usually + require that the corresponding private key be kept on line and + thereby become more vulnerable. + + In addition to the name type bits, there are additional flag bits + including the "type" field, "experimental" bit, "signatory" field, + etc., as described below. + + + +3.3 The KEY RR Flag Field + + In the "flags" field: + + Bit 0 and 1 are the key "type" field. Bit 0 a one indicates + that use of the key is prohibited for authentication. Bit 1 a one + indicates that use of the key is prohibited for confidentiality. If + this field is zero, then use of the key for authentication and/or + confidentiality is permitted. Note that DNS security makes use of + keys for authentication only. Confidentiality use flagging is + provided for use of keys in other protocols. Implementations not + intended to support key distribution for confidentiality MAY require + that the confidentiality use prohibited bit be on for keys they + serve. If both bits of this field are one, the "no key" value, there + is no key information and the RR stops after the algorithm octet. By + the use of this "no key" value, a signed KEY RR can authenticatably + assert that, for example, a zone is not secured. + + Bit 2 is the "experimental" bit. It is ignored if the type + field indicates "no key" and the following description assumes that + type field to be non-zero. Keys may be associated with zones, + entities, or users for experimental, trial, or optional use, in which + case this bit will be one. If this bit is a zero, it means that the + use or availability of security based on the key is "mandatory". + Thus, if this bit is off for a zone key, the zone should be assumed + secured by SIG RRs and any responses indicating the zone is not + secured should be considered bogus. If this bit is a one for a host + or end entity, it might sometimes operate in a secure mode and at + other times operate without security. The experimental bit, like all + other aspects of the KEY RR, is only effective if the KEY RR is + appropriately signed by a SIG RR. The experimental bit must be zero + + +D. Eastlake, C. Kaufman [Page 13] + + +INTERNET-DRAFT DNS Protocol Security Extensions 5 August 1996 + + + for safe secure operation and should only be a one for a minimal + transition period. + + Bits 3-4 are reserved and must be zero. + + Bit 5 on indicates that this is a key associated with a "user" + or "account" at an end entity, usually a host. The coding of the + owner name is that used for the responsible individual mailbox in the + SOA and RP RRs: The owner name is the user name as the name of a node + under the entity name. For example, "j.random_user" on + host.subdomain.domain could have a public key associated through a + KEY RR with name j\.random_user.host.subdomain.domain and the user + bit a one. It could be used in an security protocol where + authentication of a user was desired. This key might be useful in IP + or other security for a user level service such a telnet, ftp, + rlogin, etc. + + Bit 6 on indicates that this is a key associated with the non- + zone "entity" whose name is the RR owner name. This will commonly be + a host but could, in some parts of the DNS tree, be some other type + of entity such as a telephone number [RFC 1530]. This is the public + key used in connection with the optional DNS transaction + authentication service if the owner name is a DNS server host. It + could also be used in an IP-security protocol where authentication of + at the host, rather than user, level was desired, such as routing, + NTP, etc. + + Bit 7 is the "zone" bit and indicates that this is a zone key + for the zone whose name is the KEY RR owner name. This is the public + key used for DNS data origin authentication. + + Bit 8 is reserved to be the IPSEC [RFC 1825] bit and indicates + that this key is valid for use in conjunction with that security + standard. This key could be used in connection with secured + communication on behalf of an end entity or user whose name is the + owner name of the KEY RR if the entity or user bits are on. The + presence of a KEY resource with the IPSEC and entity bits on and + experimental and no-key bits off is an assertion that the host speaks + IPSEC. + + Bit 9 is reserved to be the "email" bit and indicate that this + key is valid for use in conjunction with MIME security multiparts. + This key could be used in connection with secured communication on + behalf of an end entity or user whose name is the owner name of the + KEY RR if the entity or user bits are on. + + Bits 10-11 are reserved and must be zero. + + Bits 12-15 are the "signatory" field. If non-zero, they + indicate that the key can validly sign RRs or updates of the same + + +D. Eastlake, C. Kaufman [Page 14] + + +INTERNET-DRAFT DNS Protocol Security Extensions 5 August 1996 + + + name. If the owner name is a wildcard, then RRs or updates with any + name which is in the wildcard's scope can be signed. Fifteen + different non-zero values are possible for this field and any + differences in their meaning are reserved for definition in + connection with DNS dynamic update or other new DNS commands. Zone + keys always have authority to sign any RRs in the zone regardless of + the value of this field. The signatory field, like all other aspects + of the KEY RR, is only effective if the KEY RR is appropriately + signed by a SIG RR. + + + +3.4 The Protocol Octet + + It is anticipated that some keys stored in DNS will be used in + conjunction with Internet protocols other than DNS (keys with zone + bit or signatory field non-zero) and IPSEC/email (keys with IPSEC + and/or email bit set). The protocol octet is provided to indicate + that a key is valid for such use and, for end entity keys or the host + part of user keys, that the secure version of that protocol is + implemented on that entity or host. + + Values between 1 and 191 decimal inclusive are available for + assignment by IANA for such protocols. The 63 values between 192 and + 254 inclusive will not be assigned to a specific protocol and are + available for experimental use under bilateral agreement. Value 0 + indicates, for a particular key, that it is not valid for any + particular additional protocol beyond those indicated in the flag + field. And value 255 indicates that the key is valid for all assigned + protocols (those in the 1 to 191 range). + + It is intended that new uses of DNS stored keys would initially be + implemented, and operational experience gained, using the + experimental range of the protocol octet. If demand for widespread + deployment for the indefinite future warrants, a value in the + assigned range would then be designated for the protocol. Finally, + (1) should the protocol become so widespread in conjunction with + other protocols and with which it shares key values that duplicate + RRs are a serious burden and (2) should the protocol provide + substantial facilities not available in any protocol for which a + flags field bit has been allocated, then one of the remaining flag + field bits may be allocated to the protocol. When such a bit has been + allocated, a key can be simultaneously indicated as valid for that + protocol and the entity or host can be simultaneously flagged as + implementing the secure version of that protocol, along with other + protocols for which flag field bits have been assigned. + + + + + + +D. Eastlake, C. Kaufman [Page 15] + + +INTERNET-DRAFT DNS Protocol Security Extensions 5 August 1996 + + +3.5 The KEY Algorithm Number and the MD5/RSA Algorithm + + This octet is the key algorithm parallel to the same field for the + SIG resource. The MD5/RSA algorithm described in this document is + number 1. Numbers 2 through 252 are available for assignment should + sufficient reason arise. However, the designation of a new algorithm + could have a major impact on interoperability and requires an IETF + standards action. Number 254 is reserved for private use and will + never be assigned a specific algorithm. For number 254, the public + key area shown in the packet diagram above will actually begin with a + length byte followed by an Object Identifier (OID) of that length. + The OID indicates the private algorithm in use and the remainder of + the area is whatever is required by that algorithm. Number 253 is + reserved as the "expiration date algorithm" for use where the + expiration date or other labeling fields of SIGs are desired without + any actual security. It is anticipated that this algorithm will only + be used in connection with some modes of DNS dynamic update. For + number 253, the public key area is null. Values 0 and 255 are + reserved. + + If the type field does not have the "no key" value and the algorithm + field is 1, indicating the MD5/RSA algorithm, the public key field is + structured as follows: + + 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | pub exp length| public key exponent / + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | / + +- modulus / + | / + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-/ + + To promote interoperability, the exponent and modulus are each + limited to 2552 bits in length. The public key exponent is a + variable length unsigned integer. Its length in octets is + represented as one octet if it is in the range of 1 to 255 and by a + zero octet followed by a two octet unsigned length if it is longer + than 255 bytes. The public key modulus field is a multiprecision + unsigned integer. The length of the modulus can be determined from + the RDLENGTH and the preceding RDATA fields including the exponent. + Leading zero bytes are prohibited in the exponent and modulus. + + + +3.6 Interaction of Flags, Algorithm, and Protocol Bytes + + Various combinations of the no-key type value, algorithm byte, + protocol byte, and any protocol indicating flags (such as the + + +D. Eastlake, C. Kaufman [Page 16] + + +INTERNET-DRAFT DNS Protocol Security Extensions 5 August 1996 + + + reserved IPSEC flag) are possible. (Note that the zone flag bit + being on or the signatory field being non-zero is effectively a DNS + protocol flag on.) The meaning of these combinations is indicated + below: + + NK = no key type value + AL = algorithm byte + PR = protocols indicated by protocol byte or protocol flags + + x represents any valid non-zero value(s). + + AL PR NK Meaning + 0 0 0 Illegal, claims key but has bad algorithm field. + 0 0 1 Specifies total lack of security for owner. + 0 x 0 Illegal, claims key but has bad algorithm field. + 0 x 1 Specified protocols insecure, others may be secure. + x 0 0 Useless. Gives key but no protocols to use it. + x 0 1 Useless. Denies key but for no protocols. + x x 0 Specifies key for protocols and asserts that + those protocols are implemented with security. + x x 1 Algorithm not understood for protocol. + + (remember, in reference to the above table, that a protocol + byte of 255 means all protocols with protocol byte values + assigned) + + + +3.7 KEY RRs in the Construction of Responses + + An explicit request for KEY RRs does not cause any special additional + information processing except, of course, for the corresponding SIG + RR from a security aware server. + + Security aware DNS servers MUST include KEY RRs as additional + information in responses where appropriate including the following: + + (1) On the retrieval of NS RRs, the zone key KEY RR(s) for the zone + served by these name servers MUST be included as additional + information if space is avilable. There will always be at least one + such KEY RR in a secure zone, even if it has the no-key type value to + indicate that the subzone is insecure. If not all additional + information will fit, the KEY RR(s) have higher priority than type A + or AAAA glue RRs. If such a KEY RR does not fit on a retrieval, the + retrieval must be considered truncated. + + (2) On retrieval of type A or AAAA RRs, the end entity KEY RR(s) MUST + be included if space is available. On inclusion of A or AAAA RRs as + additional information, their KEY RRs will also be included but with + lower priority than the relevant A or AAAA RRs. + + +D. Eastlake, C. Kaufman [Page 17] + + +INTERNET-DRAFT DNS Protocol Security Extensions 5 August 1996 + + +3.8 File Representation of KEY RRs + + KEY RRs may appear as lines in a zone data master file. + + The flag field, protocol, and algorithm number octets are then + represented as unsigned integers. Note that if the type field has + the "no key" value or the algorithm specified is 253, nothing appears + after the algorithm octet. + + The remaining public key portion is represented in base 64 (see + Appendix) and may be divided up into any number of white space + separated substrings, down to single base 64 digits, which are + concatenated to obtain the full signature. These substrings can span + lines using the standard parenthesis. + + Note that the public key may have internal sub-fields but these do + not appear in the master file representation. For example, with + algorithm 1 there is a public exponent size, then a public exponent, + and then a modulus. With algorithm 254, there will be an OID size, + an OID, and algorithm dependent information. But in both cases only a + single logical base 64 string will appear in the master file. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +D. Eastlake, C. Kaufman [Page 18] + + +INTERNET-DRAFT DNS Protocol Security Extensions 5 August 1996 + + +4. The SIG Resource Record + + The SIG or "signature" resource record (RR) is the fundamental way + that data is authenticated in the secure Domain Name System (DNS). As + such it is the heart of the security provided. + + The SIG RR unforgably authenticates other RRs of a particular type, + class, and name and binds them to a time interval and the signer's + domain name. This is done using cryptographic techniques and the + signer's private key. The signer is frequently the owner of the zone + from which the RR originated. + + + +4.1 SIG RDATA Format + + The RDATA portion of a SIG RR is as shown below. The integrity of + the RDATA information is protected by the signature field. + + 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | type covered | algorithm | labels | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | original TTL | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | signature expiration | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | time signed | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | key footprint | / + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ signer's name / + / / + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | / + +- signature / + / / + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + The value of the SIG RR type is 24. + + The "type covered" is the type of the other RRs covered by this SIG. + + The algorithm number is an octet specifying the digital signature + algorithm used parallel to the algorithm octet for the KEY RR. The + MD5/RSA algorithm described in this document is number 1. Numbers 2 + through 252 are available for assignment should sufficient reason + arise to allocate them. However, the designation of a new algorithm + could have a major impact on the interoperability of the global DNS + system and requires an IETF standards action. Number 254 is reserved + + +D. Eastlake, C. Kaufman [Page 19] + + +INTERNET-DRAFT DNS Protocol Security Extensions 5 August 1996 + + + for private use and will not be assigned a specific algorithm. For + number 254, the "signature" area shown above will actually begin with + a length byte followed by an Object Identifier (OID) of that length. + The OID indicates the private algorithm in use and the remainder of + the area is whatever is required by that algorithm. Number 253, + known as the "expiration date algorithm", is used when the expiration + date or other non-signature fields of the SIG are desired without any + actual security. It is anticipated that this algorithm will only be + used in connection with some modes of DNS dynamic update. For number + 253, the signature field will be null. Values 0 and 255 are + reserved. + + The "labels" octet is an unsigned count of how many labels there are + in the original SIG RR owner name not counting the null label for + root and not counting any initial "*" for a wildcard. If a secured + retrieval is the result of wild card substitution, it is necessary + for the resolver to use the original form of the name in verifying + the digital signature. This field helps optimize the determination + of the original form thus reducing the effort in authenticating + signed data. + + If, on retrieval, the RR appears to have a longer name than indicated + by "labels", the resolver can tell it is the result of wildcard + substitution. If the RR owner name appears to be shorter than the + labels count, the SIG RR must be considered corrupt and ignored. The + maximum number of labels allowed in the current DNS is 127 but the + entire octet is reserved and would be required should DNS names ever + be expanded to 255 labels. The following table gives some examples. + The value of "labels" is at the top, the retrieved owner name on the + left, and the table entry is the name to use in signature + verification except that "bad" means the RR is corrupt. + + labels= | 0 | 1 | 2 | 3 | 4 | + --------+-----+------+--------+----------+----------+ + .| . | bad | bad | bad | bad | + d.| *. | d. | bad | bad | bad | + c.d.| *. | *.d. | c.d. | bad | bad | + b.c.d.| *. | *.d. | *.c.d. | b.c.d. | bad | + a.b.c.d.| *. | *.d. | *.c.d. | *.b.c.d. | a.b.c.d. | + + The "original TTL" field is included in the RDATA portion to avoid + (1) authentication problems that caching servers would otherwise + cause by decrementing the real TTL field and (2) security problems + that unscrupulous servers could otherwise cause by manipulating the + real TTL field. This original TTL is protected by the signature + while the current TTL field is not. + + NOTE: The "original TTL" must be restored into the covered RRs when + the signature is verified. This implies that all RRs for a + particular type, name, and class must have the same TTL to start + + +D. Eastlake, C. Kaufman [Page 20] + + +INTERNET-DRAFT DNS Protocol Security Extensions 5 August 1996 + + + with. + + The SIG is valid until the "signature expiration" time which is an + unsigned number of seconds since the start of 1 January 1970, GMT, + ignoring leap seconds. (See also Section 4.4.) SIG RRs should not + have a date signed significantly in the future. To prevent + misordering of network requests to update a zone dynamically, + monotonically increasing "time signed" dates may be necessary. + + The "time signed" field is an unsigned number of seconds since the + start of 1 January 1970, GMT, ignoring leap seconds. + + A SIG RR with an expiration date before the time signed must be + considered corrupt and ignored. + + The "key footprint" is a 16 bit quantity that is used to help + efficiently select between multiple keys which may be applicable and + as a quick check that a public key about to be used for the + computationally expensive effort to check the signature is possibly + valid. Its exact meaning is algorithm dependent. For the MD5/RSA + algorithm, it is the next to the bottom two octets of the public key + modulus needed to decode the signature field. That is to say, the + most significant 16 of the lest significant 24 bits of the modulus in + network order. + + The "signer's name" field is the domain name of the signer generating + the SIG RR. This is the owner of the public KEY RR that can be used + to verify the signature. It is frequently the zone which contained + the RR(s) being authenticated. The signer's name may be compressed + with standard DNS name compression when being transmitted over the + network. + + The structure of the "signature" field is described below. + + + +4.1.1 Signature Data + + Except for algorithm number 253 where it is null, the actual + signature portion of the SIG RR binds the other RDATA fields to all + of the "type covered" RRs with that owner name and class. These + covered RRs are thereby authenticated. To accomplish this, a data + sequence is constructed as follows: + + data = RDATA | RR(s)... + + where "|" is concatenation, RDATA is all the RDATA fields in the SIG + RR itself before and not including the signature, and RR(s) are all + the RR(s) of the type covered with the same owner name and class as + the SIG RR in canonical form and order. How this data sequence is + + +D. Eastlake, C. Kaufman [Page 21] + + +INTERNET-DRAFT DNS Protocol Security Extensions 5 August 1996 + + + processed into the signature is algorithm dependent. + + For purposes of DNS security, the canonical form for an RR is the RR + with domain names (1) fully expanded (no name compression via + pointers), (2) all domain name letters set to lower case, and (3) the + original TTL substituted for the current TTL. + + For purposes of DNS security, the canonical order for RRs is to sort + them in ascending order by name, considering labels as a left + justified unsigned octet sequence in network (transmission) order + where a missing octet sorts before a zero octet. (See also ordering + discussion in Section 5.1.) Within any particular name they are + similarly sorted by type and then RDATA as a left justified unsigned + octet sequence. EXCEPT that the type SIG RR(s) covering any + particular type appear immediately after the other RRs of that type. + (This special consideration for SIG RR(s) in ordering really only + applies to calculating the AXFR SIG RR as explained in section 4.1.3 + below.) Thus if at name a.b there are two A RRs and one KEY RR, + their order with SIGs for concatenating the "data" to be signed would + be as follows: + + a.b. A .... + a.b. A .... + a.b. SIG A ... + a.b. KEY ... + a.b. SIG KEY ... + + SIGs covering type ANY should not be included in a zone. + + + +4.1.2 MD5/RSA Algorithm Signature Calculation + + For the MD5/RSA algorithm, the signature is as follows + + hash = MD5 ( data ) + + signature = ( 01 | FF* | 00 | prefix | hash ) ** e (mod n) + + where MD5 is the message digest algorithm documented in RFC 1321, "|" + is concatenation, "e" is the private key exponent of the signer, and + "n" is the modulus of the signer's public key. 01, FF, and 00 are + fixed octets of the corresponding hexadecimal value. "prefix" is the + ASN.1 BER MD5 algorithm designator prefix specified in PKCS1, that + is, + hex 3020300c06082a864886f70d020505000410 [NETSEC]. + This prefix is included to make it easier to use RSAREF or similar + packages. The FF octet is repeated the maximum number of times such + that the value of the quantity being exponentiated is one octet + shorter than the value of n. + + +D. Eastlake, C. Kaufman [Page 22] + + +INTERNET-DRAFT DNS Protocol Security Extensions 5 August 1996 + + + (The above specifications are identical to the corresponding part of + Public Key Cryptographic Standard #1 [PKCS1].) + + The size of n, including most and least significant bits (which will + be 1) SHALL be not less than 512 bits and not more than 2552 bits. n + and e SHOULD be chosen such that the public exponent is small. + + Leading zeros bytes are not permitted in the MD5/RSA algorithm + signature. + + A public exponent of 3 minimizes the effort needed to decode a + signature. Use of 3 as the public exponent may be weak for + confidentiality uses since, if the same data can be collected + encrypted under three different keys with an exponent of 3 then, + using the Chinese Remainder Theorem, the original plain text can be + easily recovered. This weakness is not significant for DNS because + we seek only authentication, not confidentiality. + + + +4.1.3 Zone Transfer (AXFR) SIG + + The above SIG mechanisms assure the authentication of all zone signed + RRs of a particular name, class and type. However, to efficiently + assure the completeness and security of zone transfers, a SIG RR + owned by the zone name must be created with a type covered of AXFR + that covers all zone signed RRs in the zone and their zone SIGs but + not the SIG AXFR itself. The RRs are ordered and concatenated for + hashing as described in Section 4.1.1. (See also ordering discussion + in Section 5.1.) + + The AXFR SIG must be calculated last of all zone key signed SIGs in + the zone. In effect, when signing the zone, you order, as described + above, all RRs to be signed by the zone, and all associated glue RRs + and delegation point NS RRs. You can then make one pass inserting + all the zone SIGs. As you proceed you hash RRs to be signed into + both an RRset hash and the zone hash. When the name or type changes + you calculate and insert the RRset zone SIG, clear the RRset hash, + and hash that SIG into the zone hash (note that glue RRs and + delegation point NSs are not zone signed but zone apex NSs are). + When you have finished processing all the starting RRs as described + above, you can then use the cumulative zone hash RR to calculate and + insert an AXFR SIG covering the zone. Of course any computational + technique producing the same results as above is permitted. + + The AXFR SIG really belongs to the zone as a whole, not to the zone + name. Although it should be correct for the zone name, the labels + field of an AXFR SIG is otherwise meaningless. The AXFR SIG is only + retrieved as part of a zone transfer. After validation of the AXFR + SIG, the zone MAY be considered valid without verification of the + + +D. Eastlake, C. Kaufman [Page 23] + + +INTERNET-DRAFT DNS Protocol Security Extensions 5 August 1996 + + + internal zone signed SIGs in the zone; however, any RRs authenticated + by SIGs signed by entity keys or the like MUST still be validated. + The AXFR SIG SHOULD be transmitted first in a zone transfer so the + receiver can tell immediately that they may be able to avoid + verifying other zone signed SIGs. + + RRs which are authenticated by a dynamic update key and not by the + zone key (see Section 3.2) are not included in the AXFR SIG. They may + originate in the network and might not, in general, be migrated to + the recommended off line zone signing procedure (see Section 7.2). + Thus, such RRs are not directly signed by the zone, are not included + in the AXFR SIG, and are protected against omission from zone + transfers only to the extent that the server and communication can be + trusted. + + + +4.1.4 Transaction and Request SIGs + + A response message from a security aware server may optionally + contain a special SIG as the last item in the additional information + section to authenticate the transaction. + + This SIG has a "type covered" field of zero, which is not a valid RR + type. It is calculated by using a "data" (see Section 4.1.2) of the + entire preceding DNS reply message, including DNS header but not the + IP header, concatenated with the entire DNS query message that + produced this response, including the query's DNS header but not its + IP header. That is + + data = full response (less final transaction SIG) | full query + + Verification of the transaction SIG (which is signed by the server + host key, not the zone key) by the requesting resolver shows that the + query and response were not tampered with in transit, that the + response corresponds to the intended query, and that the response + comes from the queried server. + + A DNS request may be optionally signed by including one or more SIGs + at the end of the query. Such SIGs are identified by having a "type + covered" field of zero. They sign the preceding DNS request message + including DNS header but not including the IP header or at the + begining or any preceding request SIGs at the end. Such request SIGs + are included in the "data" used to form any optional response + transaction SIG. + + WARNING: Request SIGs are unnecessary for currently defined queries + and will cause almost all existing DNS servers to completely ignore a + query. However, such SIGs may be needed to authenticate future DNS + secure dynamic update or other requests. + + +D. Eastlake, C. Kaufman [Page 24] + + +INTERNET-DRAFT DNS Protocol Security Extensions 5 August 1996 + + +4.2 SIG RRs in the Construction of Responses + + Security aware DNS servers MUST, for every authoritative RR the query + will return, attempt to send the available SIG RRs which authenticate + the requested RR. The following rules apply to the inclusion of SIG + RRs in responses: + + 1. when an RR set is placed in a response, its SIG RR has a higher + priority for inclusion than other additional RRs that may need to + be included. If space does not permit its inclusion, the response + MUST be considered truncated except as provided in 2 below. + + 2. when a SIG RR is present in the zone for an additional information + section RR, the response MUST NOT be considered truncated merely + because space does not permit the inclusion of its SIG RR. + + 3. SIGs to authenticate non-authoritative data (glue records and NS + RRs for subzones) are unnecessary and MUST NOT be sent. (Note + that KEYs for subzones are controlling in a superzone so the + superzone's signature on the KEY MUST be included (unless the KEY + was additional information and the SIG did not fit).) + + 4. If a SIG covers any RR that would be in the answer section of the + response, its automatic inclusion MUST be the answer section. If + it covers an RR that would appear in the authority section, its + automatic inclusion MUST be in the authority section. If it + covers an RR that would appear in the additional information + section it MUST appear in the additional information section. + This is a change in the existing standard which contemplates only + NS and SOA RRs in the authority section. + + 5. Optionally, DNS transactions may be authenticated by a SIG RR at + the end of the response in the additional information section + (Section 4.1.4). Such SIG RRs are signed by the DNS server + originating the response. Although the signer field MUST be the + name of the originating server host, the owner name, class, TTL, + and original TTL, are meaningless. The class and TTL fields + SHOULD be zero. To conserve space, the owner name SHOULD be root + (a single zero octet). If transaction authentication is desired, + that SIG RR must be considered higher priority for inclusion than + any other RR in the response. + + + +4.3 Processing Responses and SIG RRs + + The following rules apply to the processing of SIG RRs included in a + response: + + 1. a security aware resolver that receives a response from what it + + +D. Eastlake, C. Kaufman [Page 25] + + +INTERNET-DRAFT DNS Protocol Security Extensions 5 August 1996 + + + believes to be a security aware server via a secure communication + with the AD bit (see Section 6.1) set, MAY choose to accept the + RRs as received without verifying the zone SIG RRs. + + 2. in other cases, a security aware resolver SHOULD verify the SIG + RRs for the RRs of interest. This may involve initiating + additional queries for SIG or KEY RRs, especially in the case of + getting a response from an insecure server. (As explained in 4.2 + above, it will not be possible to secure CNAMEs being served up by + non-secure resolvers.) + + NOTE: Implementers might expect the above SHOULD to be a MUST. + However, local policy or the calling application may not require + the security services. + + 3. If SIG RRs are received in response to a user query explicitly + specifying the SIG type, no special processing is required. + + If the message does not pass reasonable checks or the SIG does not + check against the signed RRs, the SIG RR is invalid and should be + ignored. If all of the SIG RR(s) purporting to authenticate a set of + RRs are invalid, then the set of RR(s) is not authenticated. + + If the SIG RR is the last RR in a response in the additional + information section and has a type covered of zero, it is a + transaction signature of the response and the query that produced the + response. It MAY be optionally checked and the message rejected if + the checks fail. But even if the checks succeed, such a transaction + authentication SIG does NOT authenticate any RRs in the message. + Only a proper SIG RR signed by the zone or a key tracing its + authority to the zone or to static resolver configuration can + authenticate RRs. If a resolver does not implement transaction + and/or request SIGs, it MUST ignore them without error. + + If all reasonable checks indicate that the SIG RR is valid then RRs + verified by it should be considered authenticated. + + + +4.4 Signature Expiration, TTLs, and Validity + + Security aware servers must not consider SIG RRs to authenticate + anything after their expiration time and not consider any RR to be + authenticated after its signatures have expired. Within that + constraint, servers should continue to follow DNS TTL aging. Thus + authoritative servers should continue to follow the zone refresh and + expire parameters and a non-authoritative server should count down + the TTL and discard RRs when the TTL is zero. In addition, when RRs + are transmitted in a query response, the TTL should be trimmed so + that current time plus the TTL does not extend beyond the signature + + +D. Eastlake, C. Kaufman [Page 26] + + +INTERNET-DRAFT DNS Protocol Security Extensions 5 August 1996 + + + expiration time. Thus, in general, the TTL on an transmitted RR + would be + + min(sigExpTim,max(zoneMinTTL,min(originalTTL,currentTTL))) + + + +4.5 File Representation of SIG RRs + + A SIG RR can be represented as a single logical line in a zone data + file [RFC1033] but there are some special considerations as described + below. (It does not make sense to include a transaction or request + authenticating SIG RR in a file as they are a transient + authentication that covers data including an ephemeral transaction + number and so must be calculated in real time.) + + There is no particular problem with the signer, covered type, and + times. The time fields appears in the form YYYYMMDDHHMMSS where YYYY + is the year, the first MM is the month number (01-12), DD is the day + of the month (01-31), HH is the hour in 24 hours notation (00-23), + the second MM is the minute (00-59), and SS is the second (00-59). + + The original TTL and algorithm fields appear as unsigned integers. + + If the original TTL, which applies to the type signed, is the same as + the TTL of the SIG RR itself, it may be omitted. The date field + which follows it is larger than the maximum possible TTL so there is + no ambiguity. + + The "labels" field does not appear in the file representation as it + can be calculated from the owner name. + + The key footprint appears as an unsigned decimal number. + + However, the signature itself can be very long. It is the last data + field and is represented in base 64 (see Appendix) and may be divided + up into any number of white space separated substrings, down to + single base 64 digits, which are concatenated to obtain the full + signature. These substrings can be split between lines using the + standard parenthesis. + + + + + + + + + + + + +D. Eastlake, C. Kaufman [Page 27] + + +INTERNET-DRAFT DNS Protocol Security Extensions 5 August 1996 + + +5. Non-existent Names and Types + + The SIG RR mechanism described in Section 4 above provides strong + authentication of RRs that exist in a zone. But is it not clear + above how to authenticatably deny the existence of a name in a zone + or a type for an existent name. + + The nonexistence of a name in a zone is indicated by the NXT ("next") + RR for a name interval containing the nonexistent name. A NXT RR and + its SIG are returned in the authority section, along with the error, + if the server is security aware. The same is true for a non-existent + type under an existing name. This is a change in the existing + standard which contemplates only NS and SOA RRs in the authority + section. NXT RRs will also be returned if an explicit query is made + for the NXT type. + + The existence of a complete set of NXT records in a zone means that + any query for any name and any type to a security aware server + serving the zone will always result in an reply containing at least + one signed RR. + + NXT RRs do not appear in zone master files since they can be derived + from the rest of the zone. + + + +5.1 The NXT Resource Record + + The NXT resource record is used to securely indicate that RRs with an + owner name in a certain name interval do not exist in a zone and to + indicate what zone signed RR types are present for an existing name. + + The owner name of the NXT RR is an existing name in the zone. It's + RDATA is a "next" name and a type bit map. The presence of the NXT RR + means that generally no name between its owner name and the name in + its RDATA area exists and that no other zone signed types exist under + its owner name. This implies a canonical ordering of all domain + names in a zone. + + The ordering is to sort labels as unsigned left justified octet + strings where the absence of a octet sorts before a zero value octet + and upper case letters are treated as lower case letters. Names are + then sorted by sorting on the highest level label and then, within + those names with the same highest level label by the next lower + label, etc. down to leaf node labels. Since we are talking about a + zone, the zone name itself always exists and all other names are the + zone name with some prefix of lower level labels. Thus the zone name + itself always sorts first. + + There is a potential problem with the last NXT in a zone as it wants + + +D. Eastlake, C. Kaufman [Page 28] + + +INTERNET-DRAFT DNS Protocol Security Extensions 5 August 1996 + + + to have an owner name which is the last existing name in canonical + order, which is easy, but it is not obvious what name to put in its + RDATA to indicate the entire remainder of the name space. This is + handled by treating the name space as circular and putting the zone + name in the RDATA of the last NXT in a zone. + + There are special considerations due to interaction with wildcards as + explained below. + + The NXT RRs for a zone SHOULD be automatically calculated and added + to the zone by the same recommended off-line process that signs the + zone (see Section 7.2). The NXT RR's TTL SHOULD not exceed the zone + minimum TTL. + + + +5.2 NXT RDATA Format + + The RDATA for an NXT RR consists simply of a domain name followed by + a bit map. + + The type number for the NXT RR is 30. + + 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | next domain name / + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | type bit map / + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + The NXT RR type bit map is one bit per RR type present for the owner + name similar to the WKS socket bit map. The first bit represents RR + type zero (an illegal type which should not be present.) A one bit + indicates that at least one RR of that type is present for the owner + name. A zero indicates that no such RR is present. All bits not + specified because they are beyond the end of the bit map are assumed + to be zero. Note that bit 30, for NXT, will always be on so the + minimum bit map length is actually four octets. The NXT bit map + should be printed as a list of RR type mnemonics or decimal numbers + similar to the WKS RR. + + The domain name may be compressed with standard DNS name compression + when being transmitted over the network. The size of the bit map can + be inferred from the RDLENGTH and the length of the next domain name. + + + + + + + +D. Eastlake, C. Kaufman [Page 29] + + +INTERNET-DRAFT DNS Protocol Security Extensions 5 August 1996 + + +5.3 Example + + Assume zone foo.tld has entries for + + big.foo.tld, + medium.foo.tld. + small.foo.tld. + tiny.foo.tld. + + Then a query to a security aware server for huge.foo.tld would + produce an error reply with the authority section data including + something like the following: + + big.foo.tld. NXT medium.foo.tld. A MX SIG NXT + big.foo.tld. SIG NXT 1 3 ( ;type-cov=NXT, alg=1, labels=3 + 19960102030405 ;signature expiration + 19951211100908 ;time signed + 21435 ;key footprint + foo.tld. ;signer + MxFcby9k/yvedMfQgKzhH5er0Mu/vILz45IkskceFGgiWCn/GxHhai6VAuHAoNUz4YoU + 1tVfSCSqQYn6//11U6Nld80jEeC8aTrO+KKmCaY= ;signature (640 bits) + ) + + Note that this response implies that big.foo.tld is an existing name + in the zone and thus has other RR types associated with it than NXT. + However, only the NXT (and its SIG) RR appear in the response to this + query for huge.foo.tld, which is a non-existent name. + + + +5.4 Interaction of NXT RRs and Wildcard RRs + + Since, in some sense, a wildcard RR causes all possible names in an + interval to exist, there should not be an NXT RR that would cover any + part of this interval. Thus if *.X.ZONE exists you would expect an + NXT RR that ends at X.ZONE and one that starts with the last name + covered by *.X.ZONE. However, this "last name covered" is something + very ugly and long like \255\255\255....X.zone. So the NXT for the + interval following is simply given the owner name *.X.ZONE and an + RDATA of the next name after the wildcard. This "*" type owner name + is not expanded when the NXT is returned as authority information in + connection with a query for a non-existent name. + + If there could be any wildcard RRs in a zone and thus wildcard NXTs, + care must be taken in interpreting the results of explicit NXT + retrievals as the owner name may be a wildcard expansion. + + The existence of one or more wildcard RRs covering a name interval + makes it possible for a malicious server to hide any more + specifically named RRs in the internal. The server can just falsely + + +D. Eastlake, C. Kaufman [Page 30] + + +INTERNET-DRAFT DNS Protocol Security Extensions 5 August 1996 + + + return the wildcard match NXT instead of the more specifically named + RRs. If there is a zone wide wildcard, there will be an NXT RR whose + owner name is the wild card and whose RDATA is the zone name. In this + case a server could conceal the existence of any more specific RRs in + the zone. It would be possible to design a more strict NXT feature + which would eliminate this possibility. But it would be more complex + and might be so constraining as to make any dynamic update feature + very difficult. + + + +5.5 Blocking NXT Pseudo-Zone Transfers + + In a secure zone, a resolver can query for the initial NXT associated + with the zone name. Using the next domain name RDATA field from that + RR, it can query for the next NXT RR. By repeating this, it can walk + through all the NXTs in the zone. If there are no wildcards, it can + use this technique to find all names in a zone. If it does type ANY + queries, it can incrementally get all information in the zone and + thus defeat attempts to administratively block zone transfers. + + If there are any wildcards, this NXT walking technique will not find + any more specific RR names in the part of the name space the wildcard + covers. By doing explicit retrievals for wildcard names, a resolver + could determine what intervals are covered by wildcards but still + could not, with these techniques, find any names inside such + intervals except by trying every name. + + If it is desired to block NXT walking, the recommended method is to + add a zone wide wildcard of the KEY type with the no-key type value + and with no type (zone, entity, or user) bit on. This will cause + there to be one zone covering NXT RR and leak no information about + what real names exist in the zone. This protection from pseudo-zone + transfers is bought at the expense of eliminating the data origin + authentication of the non-existence of names that NXT RRs can + provide. If an entire zone is covered by a wildcard, a malicious + server can return an RR produced by matching the resulting wildcard + NXT and can thus hide all the real data and delegations in the zone + that have more specific names. + + + +5.6 Special Considerations at Delegation Points + + A name (other than root) which is the head of a zone also appears as + the leaf in a superzone. If both are secure, there will always be + two different NXT RRs with the same name. They can be distinguished + by their signers and next domain name fields. Security aware servers + should return the correct NXT automatically when required to + authenticate the non-existence of a name and both NXTs, if available, + + +D. Eastlake, C. Kaufman [Page 31] + + +INTERNET-DRAFT DNS Protocol Security Extensions 5 August 1996 + + + on explicit query for type NXT. + + Insecure servers will never automatically return an NXT and some + implementations may only return the NXT from the subzone on explicit + queries. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +D. Eastlake, C. Kaufman [Page 32] + + +INTERNET-DRAFT DNS Protocol Security Extensions 5 August 1996 + + +6. The AD and CD Bits and How to Resolve Securely + + Retrieving or resolving authentic data from the Domain Name System + (DNS) involves starting with one or more trusted public keys for one + or more zones. With trusted keys, a resolver willing to perform + cryptography can progress securely through the secure DNS zone + structure to the zone of interest as described in Section 6.3. Such + trusted public keys would normally be configured in a manner similar + to that described in Section 6.2. However, as a practical matter, a + security aware resolver would still gain some confidence in the + results it returns even if it was not configured with any keys but + trusted what it got from a local well known server as a starting + point. + + Data stored at a security aware server needs to be internally + categorized as Authenticated, Pending, or Insecure. There is also a + fourth transient state of Bad which indicates that all SIG checks + have explicitly failed on the data. Such Bad data is not retained at + a security aware server. Authenticated means that the data has a + valid SIG under a KEY traceable via a chain of zero or more SIG and + KEY RRs to a KEY configured at the resolver via its boot file. + Pending data has no authenticated SIGs and at least one additional + SIG the resolver is still trying to authenticate. Insecure data is + data which it is known can never be either Authenticated or found Bad + because it is in or has been reached via a non-secured zone. Behavior + in terms of control of and flagging based on such data labels is + described in Section 6.1. + + The proper validation of signatures requires a reasonably secure + shared opinion of the absolute time between resolvers and servers as + described in Section 6.4. + + + +6.1 The AD and CD Header Bits + + Two previously unused bits are allocated out of the DNS + query/response format header. The AD (authentic data) bit indicates + in a response that the data included has been verified by the server + providing it. The CD (checking disabled) bit indicates in a query + that non-verified data is acceptable to the resolver sending the + query. + + These bits are allocated from the must-be-zero Z field as follows: + + + + + + + + +D. Eastlake, C. Kaufman [Page 33] + + +INTERNET-DRAFT DNS Protocol Security Extensions 5 August 1996 + + + 1 1 1 1 1 1 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 + +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ + | ID | + +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ + |QR| Opcode |AA|TC|RD|RA| Z|AD|CD| RCODE | + +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ + | QDCOUNT | + +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ + | ANCOUNT | + +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ + | NSCOUNT | + +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ + | ARCOUNT | + +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ + + These bits are zero in old servers and resolvers. Thus the responses + of old servers are not flagged as authenticated to security aware + resolvers and queries from non-security aware resolvers do not assert + the checking disabled bit and thus will be answered by security aware + servers only with authenticated data. Aware resolvers MUST not trust + the AD bit unless they trust the server they are talking to and + either have a secure path to it or use DNS transaction security. + + Any security aware resolver willing to do cryptography SHOULD assert + the CD bit on all queries to reduce DNS latency time by allowing + security aware servers to answer before they have resolved the + validity of data. + + Security aware servers NEVER return Bad data. For non-security aware + resolvers or security aware resolvers requesting service by having + the CD bit clear, security aware servers MUST return only + Authenticated or Insecure data with the AD bit set in the response. + Security aware resolvers will know that if data is Insecure versus + Authentic by the absence of SIG RRs. Security aware servers MAY + return Pending data to security aware resolvers requesting the + service by clearing the AD bit in the response. The AD bit MUST NOT + be set on a response unless all of the RRs in the response are either + Authenticated or Insecure. + + + +6.2 Boot File Format + + Two boot file directives are added as described in this section. + + The format for a boot file directive to configure a starting zone key + is as follows: + + pubkey name flags protocol algorithm key-data + + +D. Eastlake, C. Kaufman [Page 34] + + +INTERNET-DRAFT DNS Protocol Security Extensions 5 August 1996 + + + for a public key. "name" is the owner name (if the line is + translated into a KEY RR). Flags indicates the type of key and is + the same as the flag octet in the KEY RR. Protocol and algorithm + also have the same meaning as they do in the KEY RR. The material + after the algorithm is algorithm dependent and, for private + algorithms (algorithm 254), starts with the algorithm's identifying + OID and its length. If the "no key" type value is set in flags or + the algorithm is specified as 253, then the key-data after algorithm + is null. When present the key-data is treated as an octet stream and + encoded in base 64 (see Appendix). + + A file of keys for cross certification or other purposes can be + configured though the keyfile directive as follows: + + keyfile filename + + The file looks like a master file except that it can only contain KEY + and SIG RRs with the SIGs signed under a key configured with the + pubkey directive. + + While it might seem logical for everyone to start with the key for + the root zone, this has problems. The logistics of updating every + DNS resolver in the world when the root key changes would be + excessive. It may be some time before there even is a root key. + Furthermore, many organizations will explicitly wish their "interior" + DNS implementations to completely trust only their own zone. Such + interior resolvers can then go through the organization's zone + servers to access data outsize the organization's domain and should + only be configured with the key forthe organization's DNS apex. + + + +6.3 Chaining Through Zones + + Starting with one or more trusted keys for a zone, it should be + possible to retrieve signed keys for its subzones which have a key + and, if the zone is not root, for its superzone. Every authoritative + secure zone server MUST also include the KEY RR for a super-zone + signed by the secure zone via a keyfile directive. This makes it + possible to climb the tree of zones if one starts below root. A + secure sub-zone is indicated by a KEY RR with non-null key + information appearing with the NS RRs for the sub-zone. These make + it possible to descend within the tree of zones. + + A resolver should keep track of the number of successive secure zones + traversed from a starting point to any secure zone it can reach. In + general, the lower such a distance number is, the greater the + confidence in the data. Data configured via a boot file directive + should be given a distance number of zero. If a query encounters + different data for the same query with different distance values, + + +D. Eastlake, C. Kaufman [Page 35] + + +INTERNET-DRAFT DNS Protocol Security Extensions 5 August 1996 + + + that with a larger value should be ignored. + + A security conscious resolver should completely refuse to step from a + secure zone into a non-secure zone unless the non-secure zone is + certified to be non-secure, or only experimentally secure, by the + presence of an authenticated KEY RR for the non-secure zone with the + no-key type value or the presence of a KEY RR with the experimental + bit set. Otherwise the resolver is getting bogus or spoofed data. + + If legitimate non-secure zones are encountered in traversing the DNS + tree, then no zone can be trusted as secure that can be reached only + via information from such non-secure zones. Since the non-secure zone + data could have been spoofed, the "secure" zone reach via it could be + counterfeit. The "distance" to data in such zones or zones reached + via such zones could be set to 512 or more as this exceeds the + largest possible distance through secure zones in the DNS. + Nevertheless, continuing to apply secure checks within "secure" zones + reached via non-secure zones is a good practice and will, as a + practical matter, provide some small increase in security. + + + +6.4 Secure Time + + Coordinated interpretation of the time fields in SIG RRs requires + that reasonably consistent time be available to the hosts + implementing the DNS security extensions. + + A variety of time synchronization protocols exist including the + Network Time Protocol (NTP, RFC1305). If such protocols are used, + they MUST be used securely so that time can not be spoofed. + Otherwise, for example, a host could get its clock turned back and + might then believe old SIG and KEY RRs which were valid but no longer + are. + + + + + + + + + + + + + + + + + + +D. Eastlake, C. Kaufman [Page 36] + + +INTERNET-DRAFT DNS Protocol Security Extensions 5 August 1996 + + +7. Operational Considerations + + This section discusses a variety of considerations in secure + operation of the Domain Name System (DNS) using these protocol + extensions. + + + +7.1 Key Size Considerations + + There are a number of factors that effect public key size choice for + use in the DNS security extension. Unfortunately, these factors + usually do not all point in the same direction. Choice of zone key + size should generally be made by the zone administrator depending on + their local conditions. + + For most schemes, larger keys are more secure but slower. Given a + small public exponent, verification (the most common operation) for + the MD5/RSA algorithm will vary roughly with the square of the + modulus length, signing will vary with the cube of the modulus + length, and key generation (the least common operation) will vary + with the fourth power of the modulus length. The current best + algorithms for factoring a modulus and breaking RSA security vary + roughly with the 1.6 power of the modulus itself. Thus going from a + 640 bit modulus to a 1280 bit modulus only increases the verification + time by a factor of 4 but increases the work factor of breaking the + key by over 2^900. An upper bound of 2552 bits has been established + for the MD5/RSA DNS security algorithm for interoperability purposes. + + However, larger keys increase the size of the KEY and SIG RRs. This + increases the chance of DNS UDP packet overflow and the possible + necessity for using higher overhead TCP in responses. + + The recommended minimum RSA algorithm modulus size, 640 bits, is + believed by the authors to be secure at this time but high level + zones in the DNS tree may wish to set a higher minimum, perhaps 1000 + bits, for security reasons. (Since the United States National + Security Agency generally permits export of encryption systems using + an RSA modulus of up to 512 bits, use of that small a modulus, i.e. + n, must be considered weak.) + + For a key used only to secure data and not to secure other keys, 640 + bits should be adequate at this time. + + + +7.2 Key Storage + + It is recommended that zone private keys and the zone file master + copy be kept and used in off-line non-network connected physically + + +D. Eastlake, C. Kaufman [Page 37] + + +INTERNET-DRAFT DNS Protocol Security Extensions 5 August 1996 + + + secure machines only. Periodically an application can be run to add + authentication to a zone by adding SIG and NXT RRs and adding no-key + type KEY RRs for subzones where a real KEY RR is not provided. Then + the augmented file can be transferred, perhaps by sneaker-net, to the + networked zone primary server machine. + + The idea is to have a one way information flow to the network to + avoid the possibility of tampering from the network. Keeping the + zone master file on-line on the network and simply cycling it through + an off-line signer does not do this. The on-line version could still + be tampered with if the host it resides on is compromised. For + maximum security, the master copy of the zone file should be off net + and should not be updated based on an unsecured network mediated + communication. + + Note, however, that secure resolvers must be configured with some + trusted on-line public key information (or a secure path to such a + resolver) or they will be unable to authenticate. + + Non-zone private keys, such as host or user keys, generally have to + be kept on line to be used for real-time purposes such as DNS + transaction security, IPSEC session set-up, or secure mail. + + + +7.3 Key Generation + + Careful key generation is a sometimes overlooked but absolutely + essential element in any cryptographically secure system. The + strongest algorithms used with the longest keys are still of no use + if an adversary can guess enough to lower the size of the likely key + space so that it can be exhaustively searched. Suggestions will be + found in RFC 1750. + + It is strongly recommended that key generation also occur off-line, + perhaps on the machine used to sign zones (see Section 7.2). + + + +7.4 Key Lifetimes + + No key should be used forever. The longer a key is in use, the + greater the probability that it will have been compromised through + carelessness, accident, espionage, or cryptanalysis. Furthermore, if + key rollover is a rare event, there is an increased risk that, when + the time does come up change the key, no one at the site will + remember how to do it or other problems will have developed in the + procedures. + + While key lifetime is a matter of local policy, these considerations + + +D. Eastlake, C. Kaufman [Page 38] + + +INTERNET-DRAFT DNS Protocol Security Extensions 5 August 1996 + + + suggest that no zone key should have a lifetime significantly over + four years. A reasonable maximum lifetime for zone keys that are + kept off-line and carefully guarded is 13 months with the intent that + they be replaced every year. A reasonable maximum lifetime for end + entity and useer keys that are used for IP-security or the like and + are kept on line is 36 days with the intent that they be replaced + monthly or more often. In some cases, an entity key lifetime of + somewhat over a day may be reasonable. + + + +7.5 Signature Lifetime + + Signature expiration times must be set far enough in the future that + it is quite certain that new signatures can be generated before the + old ones expire. However, setting expiration too far into the future + could, if bad data or signatures were ever generated, mean a long + time to flush such badness. + + It is recommended that signature lifetime be a small multiple of the + TTL but not less than a reasonable re-signing interval. + + + +7.6 Root + + It should be noted that in DNS the root is a zone unto itself. Thus + the root zone key should only be seen signing itself or signing RRs + with names one level below root, such as .aq, .edu, or .arpa. + Implementations MAY reject as bogus any purported root signature of + records with a name more than one level below root. The root zone + contains the root KEY RR signed by a SIG RR under the root key + itself. + + + + + + + + + + + + + + + + + + + +D. Eastlake, C. Kaufman [Page 39] + + +INTERNET-DRAFT DNS Protocol Security Extensions 5 August 1996 + + +8. Conformance + + Levels of server and resolver conformance are defined. + + + +8.1 Server Conformance + + Two levels of server conformance are defined as follows: + + Minimal server compliance is the ability to store and retrieve + (including zone transfer) SIG, KEY, and NXT RRs. Any secondary, + caching, or other server for a secure zone MUST be at least minimally + compliant and even then some things, such as secure CNAMEs, will not + work without full compliance. + + Full server compliance adds the following to basic compliance: + (1) ability to read SIG, KEY, and NXT RRs in zone files and (2) + ability, given a zone file and private key, to add appropriate SIG + and NXT RRs, possibly via a separate application, (3) proper + automatic inclusion of SIG, KEY, and NXT RRs in responses, (4) + suppression of CNAME following on retrieval of the security type RRs, + (5) recognize the CD query header bit and set the AD query header + bit, as appropriate, and (6) proper handling of the two NXT RRs at + delegation points. Primary servers for secure zones MUST be fully + compliant and for completely successful secure operation, all + secondary, caching, and other servers handling the zone SHOULD be + fully compliant as well. + + + +8.2 Resolver Conformance + + Two levels of resolver compliance are defined: + + A basic compliance resolver can handle SIG, KEY, and NXT RRs + when they are explicitly requested. + + A fully compliant resolver (1) understands KEY, SIG, and NXT + RRs, (2) maintains appropriate information in its local caches and + database to indicate which RRs have been authenticated and to what + extent they have been authenticated, (3) performs additional queries + as necessary to attempt to obtain KEY, SIG, or NXT RRs from non- + security aware servers, (4) normally sets the CD query header bit on + its queries. + + + + + + + +D. Eastlake, C. Kaufman [Page 40] + + +INTERNET-DRAFT DNS Protocol Security Extensions 5 August 1996 + + +9. Security Considerations + + This document describes technical details of extensions to the Domain + Name System (DNS) protocol to provide data integrity and origin + authentication, public key distribution, and optional transaction and + request security. + + It should be noted that, at most, these extensions guarantee the + validity of resource records, including KEY resource records, + retrieved from the DNS. They do not magically solve other security + problems. For example, using secure DNS you can have high confidence + in the IP address you retrieve for a host name; however, this does + not stop someone for substituting an unauthorized host at that + address or capturing packets sent to that address and falsely + responding with packets apparently from that address. Any reasonably + complete security system will require the protection of many + additional facets of the Internet. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +D. Eastlake, C. Kaufman [Page 41] + + +INTERNET-DRAFT DNS Protocol Security Extensions 5 August 1996 + + +References + + [NETSEC] - Network Security: PRIVATE Communications in a PUBLIC + World, Charlie Kaufman, Radia Perlman, & Mike Speciner, Prentice Hall + Series in Computer Networking and Distributed Communications 1995. + + [PKCS1] - PKCS #1: RSA Encryption Standard, RSA Data Security, Inc., + 3 June 1991, Version 1.4. + + [RFC1032] - Domain Administrators Guide, M. Stahl, November 1987 + + [RFC1033] - Domain Administrators Operations Guide, M. Lottor, + November 1987 + + [RFC1034] - Domain Names - Concepts and Facilities, P. Mockapetris, + November 1987 + + [RFC1035] - Domain Names - Implementation and Specifications + + [RFC1305] - Network Time Protocol (v3), D. Mills, April 9 1992. + + [RFC1321] - The MD5 Message-Digest Algorithm, R. Rivest, April 16 + 1992. + + [RFC1530] - Principles of Operation for the TPC.INT Subdomain: + General Principles and Policy, C. Malamud, M. Rose, October 6 1993. + + [RFC1750] - Randomness Requirements for Security, D. Eastlake, S. + Crocker, J. Schiller, December 1994. + + [RFC1825] - Security Architecture for the Internet Protocol, R. + Atkinson, August 9 1995. + + [RSA FAQ] - RSADSI Frequently Asked Questions periodic posting. + + + + + + + + + + + + + + + + + + +D. Eastlake, C. Kaufman [Page 42] + + +INTERNET-DRAFT DNS Protocol Security Extensions 5 August 1996 + + +Authors Addresses + + Donald E. Eastlake 3rd + CyberCash, Inc. + 318 Acton Street + Carlisle, MA 01741 USA + + Telephone: +1 508-287-4877 + +1 508-371-7148(fax) + +1 703-620-4200(main office, Reston, Virginia, USA) + EMail: dee@cybercash.com + + + Charles W. Kaufman + Iris Associates + 1 Technology Park Drive + Westford, MA 01886 USA + + Telephone: +1 508-392-5276 + EMail: charlie_kaufman@iris.com + + + + +Expiration and File Name + + This draft expires 4 February 1997. + + Its file name is draft-ietf-dnssec-secext-10.txt. + + + + + + + + + + + + + + + + + + + + + + + +D. Eastlake, C. Kaufman [Page 43] + + +INTERNET-DRAFT DNS Protocol Security Extensions 5 August 1996 + + +Appendix: Base 64 Encoding + + The following encoding technique is taken from RFC 1521 by N. Borenstein + and N. Freed. It is reproduced here in an edited form for convenience. + + A 65-character subset of US-ASCII is used, enabling 6 bits to be + represented per printable character. (The extra 65th character, "=", + is used to signify a special processing function.) + + The encoding process represents 24-bit groups of input bits as output + strings of 4 encoded characters. Proceeding from left to right, a + 24-bit input group is formed by concatenating 3 8-bit input groups. + These 24 bits are then treated as 4 concatenated 6-bit groups, each + of which is translated into a single digit in the base 64 alphabet. + + Each 6-bit group is used as an index into an array of 64 printable + characters. The character referenced by the index is placed in the + output string. + + Table 1: The Base 64 Alphabet + + Value Encoding Value Encoding Value Encoding Value Encoding + 0 A 17 R 34 i 51 z + 1 B 18 S 35 j 52 0 + 2 C 19 T 36 k 53 1 + 3 D 20 U 37 l 54 2 + 4 E 21 V 38 m 55 3 + 5 F 22 W 39 n 56 4 + 6 G 23 X 40 o 57 5 + 7 H 24 Y 41 p 58 6 + 8 I 25 Z 42 q 59 7 + 9 J 26 a 43 r 60 8 + 10 K 27 b 44 s 61 9 + 11 L 28 c 45 t 62 + + 12 M 29 d 46 u 63 / + 13 N 30 e 47 v + 14 O 31 f 48 w (pad) = + 15 P 32 g 49 x + 16 Q 33 h 50 y + + Special processing is performed if fewer than 24 bits are available + at the end of the data being encoded. A full encoding quantum is + always completed at the end of a quantity. When fewer than 24 input + bits are available in an input group, zero bits are added (on the + right) to form an integral number of 6-bit groups. Padding at the + end of the data is performed using the '=' character. Since all base + 64 input is an integral number of octets, only the following cases + can arise: (1) the final quantum of encoding input is an integral + multiple of 24 bits; here, the final unit of encoded output will be + an integral multiple of 4 characters with no "=" padding, (2) the + + +D. Eastlake, C. Kaufman [Page 44] + + +INTERNET-DRAFT DNS Protocol Security Extensions 5 August 1996 + + + final quantum of encoding input is exactly 8 bits; here, the final + unit of encoded output will be two characters followed by two "=" + padding characters, or (3) the final quantum of encoding input is + exactly 16 bits; here, the final unit of encoded output will be three + characters followed by one "=" padding character. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +D. Eastlake, C. Kaufman [Page 45] diff --git a/usr.sbin/named/doc/i-d/draft-ietf-dnssec-update-00.txt b/usr.sbin/named/doc/i-d/draft-ietf-dnssec-update-00.txt new file mode 100644 index 000000000000..1b915772a8a6 --- /dev/null +++ b/usr.sbin/named/doc/i-d/draft-ietf-dnssec-update-00.txt @@ -0,0 +1,871 @@ + +INTERNET-DRAFT Donald E. Eastlake 3rd + CyberCash, Inc. +Expires: 27 August 1996 28 February 1996 + + + + Secure Domain Name System Dynamic Update + ------ ------ ---- ------ ------- ------ + + + + + +Status of This Document + + This draft, file name draft-ietf-dnssec-update-00.txt, is intended to + be become a Proposed Standard RFC. Distribution of this document is + unlimited. Comments should be sent to the DNS security mailing list + or the author. + + This document is an Internet-Draft. Internet-Drafts are working + documents of the Internet Engineering Task Force (IETF), its areas, + and its working groups. Note that other groups may also distribute + working documents as Internet-Drafts. + + Internet-Drafts are draft documents valid for a maximum of six + months. Internet-Drafts may be updated, replaced, or obsoleted by + other documents at any time. It is not appropriate to use Internet- + Drafts as reference material or to cite them other than as a + ``working draft'' or ``work in progress.'' + + To learn the current status of any Internet-Draft, please check the + 1id-abstracts.txt listing contained in the Internet-Drafts Shadow + Directories on ds.internic.net (East USA), ftp.isi.edu (West USA), + nic.nordu.net (North Europe), ftp.nis.garr.it (South Europe), + munnari.oz.au (Pacific Rim), or ftp.is.co.za (Africa). + + + + + + + + + + + + + + + + + + + +Eastlake [Page 1] + + +INTERNET-DRAFT Secure DNS Update 28 February 1996 + + +Abstract + + Domain Name System (DNS) protocol extensions have been defined to + authenticate the data in DNS and provide key distribution services + (draft-ietf-dnssec-secext-*.txt). DNS Dynamic Update operations have + also been defined (draft-ietf-dnsind-dynDNS-*.txt>, but without a + detailed description of strong security for the update operation. + This draft describes how to use DNS digital signatures covering + requests and data to secure updates and restrict them to those + authorized to perform them as indicated by the updater's possession + of cryptographic keys. + + + +Acknowledgements + + The contributions of the following person to this draft are + gratefully acknowledged: + + Charlie Kaufman + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Eastlake [Page 2] + + +INTERNET-DRAFT Secure DNS Update 28 February 1996 + + +Table of Contents + + Status of This Document....................................1 + + Abstract...................................................2 + Acknowledgements...........................................2 + + Table of Contents..........................................3 + + 1. Introduction............................................4 + 1.1 Overview of DNS Dynamic Update.........................4 + 1.2 Overview of DNS Security...............................4 + + 2. Two Basic Strategies....................................6 + + 3. Keys....................................................8 + 3.1 Update Keys............................................8 + 3.1.1 Update Key Name Scope................................8 + 3.1.2 Update Key Class Scope...............................8 + 3.1.3 Update Key Signatory Field...........................8 + 3.2 Zone Keys and Update Modes............................10 + 3.3 Wildcard Key Punch Through............................11 + + 4. Update Signatures......................................12 + 4.1 Update Request Signatures.............................12 + 4.2 Update Data Signatures................................12 + + 5. The in-key.int. Domain.................................13 + + 6. Security Considerations................................15 + References................................................15 + Author's Address..........................................15 + Expiration and File Name..................................15 + + + + + + + + + + + + + + + + + + + +Eastlake [Page 3] + + +INTERNET-DRAFT Secure DNS Update 28 February 1996 + + +1. Introduction + + Dynamic update operations have been defined for the Domain Name + System (DNS) in draft-ietf-dsnind-dynDNS-*.txt but without a detailed + description of strong security for those updates. Means of securing + the DNS and using it for key distribution have been defined in + draft-ietf-dnssec-sexect-*.txt. + + This draft proposes techniques based on the defined DNS security + mechanisms to authenticate DNS updates. In addition, a secure in- + key.int. domain is defined with special security policies. This in- + key domain permits access to entities by their key if the entity has + been registered in that domain. + + Familiarity with the DNS system [RFC 1034, 1035] is assumed. + Familiarity with the DNS security and dynamic update proposals will + be helpful. + + + +1.1 Overview of DNS Dynamic Update + + DNS dynamic update defines a new DNS opcode, new DNS request and + response structure if that opcode is used, and new error codes. An + update can specify complex combinations of deletion and insertion + (with or without pre-existence testing) of resource records (RRs) + with one or more owner names; however, all testing and changes for + any particular DNS update request are restricted to a single zone. + + The server for a secure dynamic zone must increment the zone SOA + serial number when an update occurs or the next time the SOA is + retrieved if one or more updates have occurred since the previous SOA + retrieval and the updates themselves did not update the SOA. + + + +1.2 Overview of DNS Security + + DNS security authenticates data in the DNS by also storing digital + signatures in the DNS as resource records (RRs). A SIG RR provides a + digital signature on the set of all RRs with the same owner name and + class as the SIG and whose type is the type covered by the SIG. The + SIG RR cryptographically binds the covered RR set to the signer, time + signed, signature expiration date, etc. There is a key associated + with every secure zone and all data in the secure zone is signed + either by this zone key or by a dynamic update key tracing its + authority to the zone key. + + DNS security also defines transaction SIGs and request SIGs. + Transaction SIGs appear at the end of a response. Transaction SIGs + + +Eastlake [Page 4] + + +INTERNET-DRAFT Secure DNS Update 28 February 1996 + + + authenticate the response and bind it to the corresponding request + with the key of the host that the responding DNS server is running + on. Request SIGs appear at the end of a request and authenticate the + request. Request SIGs are the primary means of authenticating update + requests. + + DNS security also permits the storage of public keys in the DNS via + KEY RRs. These KEY RRs are also, of course, authenticated by SIG + RRs. KEY RRs for zones are stored in their superzone and subzone + servers, if any, so that the secure DNS tree of zones can be + traversed by a security aware resolver. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Eastlake [Page 5] + + +INTERNET-DRAFT Secure DNS Update 28 February 1996 + + +2. Two Basic Strategies + + A dynamic secure zone is any secure DNS zone containing one or more + KEY RRs that can authorize dynamic updates, i.e., entity or user KEY + RRs with the signatory field non-zero and whose zone KEY RR signatory + field indicates that updates are implemented. There are two basic + modes of dynamic secure zone which relate to the update strategy, + mode A and mode B. A summary comparison table is given below and + then each mode is described. + + SUMMARY OF DYNAMIC SECURE ZONE MODES + + CRITERIA: | MODE A | MODE B + -------------------------+--------------------+------------------- + Zone Key | Off line | On line + -------------------------+--------------------+------------------- + Server Workload | Low | High + -------------------------+--------------------+------------------- + Static Data Security | Very High | Medium-High + -------------------------+--------------------+------------------- + Dynamic Data Security | Medium | Medium-High + -------------------------+--------------------+------------------- + Dynamic Key Rollover | No | Yes + -------------------------+--------------------+------------------- + Key Restrictions | Fine grain | Coarse grain + -------------------------+--------------------+------------------- + + For mode A, the zone owner key and static zone master file are always + kept off-line for maximum security of the static zone contents. Any + dynamicly added or changed RRs are signed in the secure zone by their + authorizing dynamic update key and they are backed up, along with + this SIG RR, in a separate online dynamic master file. In this type + of zone, server computation is minimized since the server need only + check signatures on the update data, which has already been signed by + the updater, generally a much faster operation than signing data. + However, the AXFR SIG and NXT RRs which covers the zone under the + zone key will not cover dynamically added data. Thus, for type A + dynamic secure zones, zone transfer security is not provided for + dynamically added RRs, where they could be omitted, and + authentication is not provided for the server denial of the existence + of a dynamically added type. Key rollover for an entity that can + authorize dynamic updates is more cumbersome since the authority of + their key must be traceable to a zone key and so, in general, they + must securely communicate a new key to the zone authority for manual + transfer to the off line static master file. Because the dynamicly + added RRs retain their update KEY signed SIG, finer grained control + control of updates can be implemented via bits in the KEY RR + signatory field. NOTE: for this mode the zone SOA must be signed by a + dynamic update key and that private key must be kept on line so that + the SOA can be changed for updates. + + +Eastlake [Page 6] + + +INTERNET-DRAFT Secure DNS Update 28 February 1996 + + + For mode B, the zone owner key and master file are kept on-line at + the zone primary server. When authenticated updates succeed, SIGs + under the zone key for the resulting data (including the possible NXT + type bit map changes) are calculated and these SIG (and possible NXT) + changes are entered into the zone and the unified on-line master + file. (The zone transfer AXFR SIG may be recalculated for each + update or on demand when a zone transfer is requested and it is out + of date.) This requires considerably more computational effort on + the part of the server as the public/private keys are generally + arranged so that signing (calculating a SIG) is more effort than + verifying a signature. The security on static data in the zone is + decreased because the ultimate state of the static date being served + and the ultimate zone authority private key are all on-line on the + net. This means that if the primary server is subverted, false data + could be authenticated to secondaries and other servers/resolvers. + On the other hand, this mode of operation means that data added + dynamically is more secure than in mode A. Dynamic data will be + covered by the AXFR SIG and thus fully protected during zone + transfers and will be included in NXT RRs so that it can be falsely + denied by a server only to the same extent that static data can + (i.e., if it is within a wild card scope). Maintaining the zone key + on-line also means that dynamic update keys which are signed by the + zone key can be dynamically updated since the zone key is available + to dynamically sign new values. Finally, because the zone key is used + to sign all the zone data, the information as to who originated the + current state of dynamic RR sets is lost making unavailable the + effects of some of the update control bits in the KEY RR signatory + field. + + NOTE: The Mode A / Mode B distinction only effects the validation + and performance of update requests. It has no effect on retrievals. + + [It might be possible to dream up additional modes but I think they + would be more complicated. A mode where things are temporarily + signed by the entity key but lated changed to being signed off line + by the zone key doesn't work well. You could also have a mode where + the zone key SIGs were added to and also covered the entity + signature. But the problem with any delayed addition of zone + signatures tends to be that you have to delay deletes of such + material until you can zone sign new NXT RRs, etc.] + + + + + + + + + + + + +Eastlake [Page 7] + + +INTERNET-DRAFT Secure DNS Update 28 February 1996 + + +3. Keys + + Dynamic update requests depend on update keys as described in section + 3.1 below. In addition, the zone secure dynamic update mode and + availability of some options is indicated in the zone key. Finally, + a special rule is used in searching for KEYs to validate updates as + described in section 3.3. + + + +3.1 Update Keys + + All update requests to a secure zone must include signatures by one + or more key(s) that together can authorize that update. In order for + the Domain Name System (DNS) server receiving the request to confirm + this, the key or keys must be available to and authenticated by that + server as a specially flagged KEY Resource Record. The one exception + is in the in-key.int. domain as described in section 5. + + The scope of authority of such keys is indicated by their KEY RR + owner name, class, and signatory field flags as described below. In + addition, such KEY RRs must be entity or user keys and not have the + authentication use prohibited bit on. All parts of the actual update + must be within the scope of at least one of the keys used for a + request SIG on the update request as described in section 4. + + + +3.1.1 Update Key Name Scope + + The owner name of any update authorizing KEY RR must (1) be the same + as the owner name of any RRs being added or deleted or (2) if the + owner name of the KEY is a wildcard, it must include within its + extended scope (see section 3.3) the name of any RRs being added or + deleted and those RRs must be in the same zone. + + + +3.1.2 Update Key Class Scope + + The class of any update authorizing KEY RR must be the same as the + class of any RR's being added or deleted. + + + +3.1.3 Update Key Signatory Field + + The four bit "signatory field" (see draft-ietf-dnssec-secext-*.txt) + of any update authorizing KEY RR must be non-zero. The bits have the + meanings described below for non-zone keys (see section 3.2 for zone + + +Eastlake [Page 8] + + +INTERNET-DRAFT Secure DNS Update 28 February 1996 + + + type keys). + + UPDATE KEY RR SIGNATORY FIELD BITS + + 0 1 2 3 + +-----------+-----------+-----------+-----------+ + | zone | strong | unique | general | + +-----------+-----------+-----------+-----------+ + + Bit 0, zone control - If nonzero, this key is authorized to attach, + detach, and move zones by creating and deleting NS, glue, and + zone KEY RR(s). If zero, the key can not authorize any update + that would effect such RRs. This bit is meaningful for both + type A and type B dynamic secure zones. + + NOTE: do not confuse the "zone" signatory field bit with the + "zone" key type bit. + + Bit 1, strong update - If nonzero, this key is authorized to add and + delete RRs even if there are other RRs with the same owner name + and class that are authenticated by a SIG signed with a + different dynamic update KEY. If zero, the key can only + authorize updates where any existing dynamic RRs of the same + owner and class are authenticated by a SIG using the same key. + This bit is meaningful only for type A dynamic zones and is + ignored in type B dynamic zones. + + Keeping this bit zero on multiple KEY RRs with the same or + nested wild card owner names permits multiple entities to exist + that can create and delete names but can not effect RRs with + different owner names from any they created. In effect, this + creates two levels of dynamic update key, strong and weak, where + weak keys are limited in interfering with each other but a + strong key can interfere with any weak keys or other strong + keys. + + Bit 2, unique name update - If nonzero, this key is authorized to add + and update RRs for only a single owner name. If there already + exist RRs with multiple names signed by this key, they may be + updated but no new name created until the number of existing + names is reduced to zero. This bit is meaningful only for mode + A dynamic zones and is ignored in mode B dynamic zones. This bit + is meaningful only if the owner name is a wildcard. (Any + dynamic update KEY with a non-wildcard name is, in effect, a + unique name update key.) + + This bit can be used to restrict a KEY from flooding a zone with + new names. In conjunction with a local administratively imposed + limit on the number of dynamic RRs with a particular name, it + can completely restrict a KEY from flooding a zone with RRs. + + +Eastlake [Page 9] + + +INTERNET-DRAFT Secure DNS Update 28 February 1996 + + + Bit 3, general update - The general update signatory field bit has no + special meaning. If the other three bits are all zero, it must + be one so that the field is non-zero in the update key. The + meaning of all values of the signatory field with the general + bit and one or more other signatory field bits on is reserved. + + All the signatory bit update authorizations described above only + apply if the update is within the name and class scope as per + sections 3.1.1 and 3.1.2. + + + +3.2 Zone Keys and Update Modes + + Zone type keys are automatically authorized to sign anything in their + zone, of course, regardless of the value of their signatory field. + For zone keys, the signatory field bits have different means than + they they do for update keys, as shown below: + + + ZONE KEY RR SIGNATORY FIELD BITS + + 0 1 2 3 + +-----------+-----------+-----------+-----------+ + | mode | strong | unique | general | + +-----------+-----------+-----------+-----------+ + + Bit 0, mode - This bit indicates the update mode for this zone. Zero + indicates mode A while a one indicates mode B. + + Bit 1, strong update - If nonzero, this indicates that the "strong" + key feature described in section 3.1.3 above is implemented and + enabled for this secure zone. If zero, the feature is not + available. Has no effect if the zone is a mode B secure update + zone. + + Bit 2, unique name update - If nonzero, this indicates that the + "unique name" feature described in section 3.1.3 above is + implemented and enabled for this secure zone. If zero, this + feature is not available. Has no effect if the zone is a mode B + secure update zone. + + Bit 3, general - This bit has no special meeting. If dynamic update + for a zone is supported and the other bits in the zone key + signatory field are zero, it must be a one. The meaning of zone + keys where the signatory field has the general bit and other + bits on is reserved. + + If there are multiple KEY RRs for a zone and zone policy is in + transition, they might have different signatory fields. In that + + +Eastlake [Page 10] + + +INTERNET-DRAFT Secure DNS Update 28 February 1996 + + + case, strong and unique name restrictions must be enforced as long as + there is a non-expired zone key being advertised that indicates node + A with the strong or unique name bit on respectively. Mode B updates + must be supported as long as there is a non-expired zone key that + indicates mode B. Mode A updates may be treated as mode B updates at + server option if non-expired zone keys indicate that both are + supported. + + A server that will be executing update operations on a zone, that is + the primary master server, MUST not advertize a zone key that will + attract requests for a mode or features that it can not support. + + + +3.3 Wildcard Key Punch Through + + Just as a zone key is valid throughout the entire zone, update keys + with wildcard names are valid throughout their extended scope, within + the zone. That is, they remain remain valid for any name that would + match them, even existing specific names within their apparent scope. + + If this were not so, then whenever a name within a wildcard scope was + created by dynamic update, it would be necessary to first create a + copy of the KEY RR with this name, because otherwise the existence of + the more specific name would hide the authorizing KEY RR and would + make later updates impossible. An updater could create such a KEY RR + but could not zone sign it. They would have to sign it with the same + key using the wildcard name as signer. Thus in creating, for example, + one hundred type A RRs authorized by a *.1.1.1.in-addr.arpa. KEY RR, + without key punch through 100 As, 100 KEYs, and 200 SIGs would have + to be created as opposed to merely 100 As and 100 SIGs with key punch + through. + + + + + + + + + + + + + + + + + + + + +Eastlake [Page 11] + + +INTERNET-DRAFT Secure DNS Update 28 February 1996 + + +4. Update Signatures + + Two kinds of signatures can appear in updates. Request signatures, + which are always required, cover the entire request and authenticate + the DNS header, including opcode, counts, etc., as well as the data. + Data signatures, on the other hand, appear only among the RRs to be + added and are only required for mode A operation. + + + +4.1 Update Request Signatures + + An update can effect multiple owner names in a zone. It may be that + these different names are covered by different dynamic update keys. + For every owner name and class effected, the updater must know a + private key valid for that name and class and must prove this by + appending request SIG RRs under each such key. + + As specified in draft-ietf-dnssec-secext-*.txt, a request signature + is a SIG RR occurring at the end of a request with a type covered + field of zero. For an update, request signatures occur in the + Additional section. The final "Reserved" section of update requests + in draft-ietf-dnsind-dynDNS-06.txt is hereby redefined as the + Additional section and its corresponding count field is relabeled + ARCOUNT. Each request SIG signs the entire request, including DNS + header, but excluding any other request SIG(s). + + + +4.2 Update Data Signatures + + Mode A dynamic secure zones require that the update requester provide + SIG RRs that will authenticate the after update state of all RR sets + that are changed by the update and are non-empty after the update. + These SIG RRs appear in the request as RRs to be added and the + request must delete any previous data SIG RRs that are invalidated by + the request. + + In Mode B dynamic secure zones, all zone data is authenticated by + zone key SIG RRs. In this case data signatures need not be included + with the update. A resolver can determine which mode an updatable + secure zone is using by examining the signatory field bits of the + zone KEY RR (see section 3.2). + + + + + + + + + +Eastlake [Page 12] + + +INTERNET-DRAFT Secure DNS Update 28 February 1996 + + +5. The in-key.int. Domain + + A special domain is defined, the in-key.int. domain, to permit + inverse lookup by key. DNS servers for zones that include any + updatable part of this domain have a special update policy and all + servers and resolvers have a special authentication policy for this + domain. Servers authenticate updates for this domain based on the + requesters knowledge of the private key corresponding to a public key + whose hash is encoded into the RR owner name. + + Normally the only RRs stored in this domain will be a KEY RR and an + authenticating SIG with the SIG signer field pointing to the normal + owner of the KEY. It is expected that an administrative restriction + may be placed on the number of RRs stored under any particular owner + name or charges imposed for additions to this domain. + + [It would be possible to just have a PTR and a SIG here but then you + would always have to actually retrieved the KEY(s) at where the PTR + points to to validate anything. Or you could have both a KEY and a + PTR and two SIGs but that would be twice as bulky.] + + The owner name associated with a key is + + ..algorithm.in-key.int. + + key-hash is the hex representation of the SHA1 [SHA1] hash of the + "public key" portion of the corresponding KEY RR (the portion of + the RDATA after the algorithm octet) with label separating dots + added every fourth hex digit. [should I go for decimal here and + for footprint?] [I'm afraid of hash collisions with MD5 so I + went for the longer SHA...] + + key-footprint is the hex representation of the key footprint field of + the KEY RR. [yet more bits to make collisions even less likely] + + [could add a key-length label instead of or in addition to the key- + footprint...] + + algorithm is the decimal number designating the public key algorithm + from the "algorithm" octet portion of the corresponding key. + Thus, at this time, algorithm will be either 1 or 254. Entries + for algorithm 253 are prohibited. + + For example, the RRs in this domain for a purported key with actual + owner name example.tld could be as follows: + + $ORIGIN xxxx.xxxx.xxxx.xxxx.xxxx.xxxx.xxxx.xxxx.xxxx.xxxx.xxxx.1.in-key.int. + + IN KEY 0 1 ( + 45IkskceFGgiWCn/GxHhai6VAuHAoNUz4YoUMxFcby9k/yvedMfQgKzhH5er0Mu/vILz + + +Eastlake [Page 13] + + +INTERNET-DRAFT Secure DNS Update 28 February 1996 + + + 80jEeC8aTrO+KKmCaY1tVfSCSqQYn6//11U6Nld= ;key + ) + IN SIG KEY 1 3 ( ;type-cov=PTR, alg=1, labels=3 + 19991202030405 ;signature expiration + 19951211100908 ;time signed + 2143658709 ;key footprint + example.tld. ;signer + MxFcby9k/yvedMfQgKzhH5er0Mu/vILz45IkskceFGgiWCn/GxHhai6VAuHAoNUz4YoU + 1tVfSCSqQYn6//11U6Nld80jEeC8aTrO+KKmCaY= ;signature + ) + + Retrievals from leaves of this zone are authenticated by validating + the SIG against the KEY with the same owner name and checking that + this owner name correctly reflects the hash and key footprint of the + key. Thus, for this type of validation only, the signer name is + ignored and the SIG is NOT traced back to a known trusted key. In + addition, entries in this domain are "eternal" in that the SIG time + signed and signature expiration are ignored. Note that entries in + this special zone, even when authenticated, give only a hint that the + KEY stored there is or was valid for the signer name. A separate + retrieval from the signer name must be done for confirmation that + they key is currently valid. + + Registration in the in-key.int. domain is voluntary. All servers + that include key storage leaves of the in-key.int. domain MUST + operate in mode A. + + + + + + + + + + + + + + + + + + + + + + + + + + +Eastlake [Page 14] + + +INTERNET-DRAFT Secure DNS Update 28 February 1996 + + +6. Security Considerations + + Any zone permitting dynamic updates is inherently less secure than a + static secure zone maintained off line as recommended in draft-ietf- + dnssec-secext-*.txt. If nothing else, secure dynamic update requires + on line change to and re-signing of the zone SOA resource record (RR) + to increase the SOA serial number. This means that compromise of the + primary server host could lead to arbitrary serial number changes. + + Isolation of dynamic RRs to separate zones from from holding most + static RRs can limit the damage that could occur from breach of a + dynamic zone's security. + + + +References + + draft-ietf-dnssec-secext-*.txt + + draft-ietf-dnsind-dynDNS-*.txt + + [RFC1034] - Domain Names - Concepts and Facilities, P. Mockapetris, + November 1987 + + [RFC1035] - Domain Names - Implementation and Specifications + + [SHA1] + + + +Author's Address + + Donald E. Eastlake, 3rd + CyberCash, Inc. + 318 Acton Street + Carlisle, MA 01741 USA + + Telephone: +1 508-287-4877 + +1 508-371-7148 (fax) + +1 703-620-4200 (main office, Reston, Virginia, USA) + email: dee@cybercash.com + + + +Expiration and File Name + + This draft expires 27 August 1996. + + Its file name is draft-ietf-dnssec-update-00.txt. + + + +Eastlake [Page 15] + + diff --git a/usr.sbin/named/doc/i-d/draft-manning-dnssvr-criteria-04.txt b/usr.sbin/named/doc/i-d/draft-manning-dnssvr-criteria-04.txt new file mode 100644 index 000000000000..492f1cf48e20 --- /dev/null +++ b/usr.sbin/named/doc/i-d/draft-manning-dnssvr-criteria-04.txt @@ -0,0 +1,367 @@ + + Operational Requirements Area Bill Manning (ISI) + INTERNET-DRAFT Paul Vixie (ISC) + Expires December 1996 June 1996 + + + Operational Criteria for Root Name Servers + + + + Status of this Memo + + This document is an Internet-Draft. Internet-Drafts are working + documents of the Internet Engineering Task Force (IETF), its areas, + and its working groups. Note that other groups may also distribute + working documents as Internet-Drafts. + + Internet-Drafts are draft documents valid for a maximum of six months + and may be updated, replaced, or obsoleted by other documents at any + time. It is inappropriate to use Internet-Drafts as reference + material or to cite them other than as ``work in progress.'' + + To learn the current status of any Internet-Draft, please check the + ``1id-abstracts.txt'' listing contained in the Internet-Drafts Shadow + Directories on ftp.is.co.za (Africa), nic.nordu.net (Europe), + munnari.oz.au (Pacific Rim), ds.internic.net (US East Coast), or + ftp.isi.edu (US West Coast). + + + Abstract + + This document specifies the operational requirements of root name + servers, including host hardware capacities, name server software + revisions, network connectivity, and physical environment. + + + + + + + + + + + + Expires November 1996 [Page 1] + + INTERNET-DRAFT DNSSVR CRITERIA May 1996 + + + 1 - Rationale and Scope + + 1.1. Historically, the name servers responsible for the root (``.'') + zone have also been responsible for all international top-level domains + (iTLD's, for example: COM, EDU, INT, ARPA). These name servers have + been operated by a cadre of highly capable volunteers, and their + administration has been loosely coordinated by the NIC (first SRI-NIC + and now InterNIC). Ultimate responsibility for the correct operation of + these servers and for the content of the DNS zones they served has + always rested with the IANA. + + 1.2. As described in [Postel96], many new TLD's may be created + shortly. Servers for all new and existing iTLD's will be subject to the + operational requirements given in [Postel96]. The set of servers for + the root (``.'') zone is likely to become disjoint from the set of + servers for any TLD or group of TLD's, including those maintained by + the InterNIC. + + 1.3. In spite of the similarities in operational requirements between + the servers for the iTLD's and the servers for the root (``.'') zone, + they are in fact different server sets with different administrators and + slightly different operational requirements. It is likely that many + contry code tld servers will have even more divergent operational + requirements. That said, the requirements set down in this document + could be successfully applied to any name server (whether root, top + level, or any other level), but may be more draconian than necessary + for servers other than those of the root (``.'') zone. + + Disclaimer: The selection of name server locations and administrators, + and the procedures for addressing noncompliance with these + stated operational requirements, are outside the scope of this + document. + + Definition: For the purpose of this document, the term ``zone master'' + shall be used to designate the administrative owner of the + content of a zone. This person is expected to have final + responsibility for the selection and correct operation of + all of the zone's servers. For the root (``.'') zone, this + is the IANA. + + + + + + + + + + + Expires November 1996 [Page 2] + + INTERNET-DRAFT DNSSVR CRITERIA May 1996 + + + 2 - Operational Requirements + + 2.1. Name server software. The zone master shall initially and + periodically choose a name server package to run on all of the zone's + servers. It is expected that the BIND server will be used, at least + initially, and that new versions or other servers will be specified from + time to time. + + Rationale: This requirement is based on the wide and free + availability of BIND's source code, and the active + analysis and development it constantly receives from + several members of the IETF. + + Name server software upgrades will be specified and scheduled by the + zone master, and must occur on all of a zone's servers within a + specified 96 hour window. + + Rationale: In some cases it has proven necessary to ``cold start'' a + zone's servers in order to clear out oscillating bad + data. By forcing all software upgrades to happen at + about the same time, it will be possible to coordinate a + software change with a zone content change. + + 2.2. UDP checksums. UDP checksums must be generated when sending + datagrams, and verified when receiving them. + + Rationale: Some vendors turn off UDP checksums for performance + reasons, citing the presence of MAC-level frame checks + (CRC, for example) as ``strong enough.'' This has been a + disaster in actual practice. + + 2.3. Dedicated host. A name server host should have no other function, + and no login accounts other than for system or network administrators. + No other network protocols should be served by a name server host (e.g., + SMTP, NNTP, FTP, et al). If login is permitted from other than the + system console, then the login service must be by encrypted channel + (e.g., Kerberized and encrypted rlogin/telnet, the secure shell (SSH), + or an equivilent). + + Rationale: Each additional service performed by a host makes it less + reliable and potentially less secure, as well as + complicating fault isolation procedures. While name + service does not consume very much in the way of system + resources, it is thought best that a host do a few things + well rather than many things poorly. + + + + Expires November 1996 [Page 3] + + INTERNET-DRAFT DNSSVR CRITERIA May 1996 + + + 2.4. Clock synchronization. A name server host should synchronize its + clock using the NTP protocol (currnet version) with authentication. At + least two NTP servers should be used. As an exception to section 2.3 + above, a name server host can be an NTP server as well. + + Rationale: For distributed fault isolation reasons, synchronized + time stamps in system event logs are quite helpful. NTP + is easily spoofed by UDP blast attacks, thus the + requirement for authentication between the name server + host and its NTP servers. A name server host is allowed + to be an NTP server because it has been observed that a + single host running both name service and stratum 1 NTP + is still quite reliable and secure. + + 2.5. Network interfaces. Name servers must send UDP responses with an + IP source address (and UDP source port number) equal to the IP + destination address (and UDP destination port number) of the request. + Also, a name server might have multiple real interfaces, but only one + will be advertised in the zone's NS RRset and associated glue A RRs. + The advertised address should be that of the ``best'' interface on the + host, in terms of network performance and reliability to the largest + number of destinations. + + Rationale: While not required by [RFC1035], many extant DNS + implementations require the source address and port of a + reply to match the destination address and port to which + the request was sent. The number of advertised addresses + is limited to one (1) so that DNS delegation responses + containing this name server can be as short as possible. + + 2.6. Physical environment. A name server host must be located in a + secure space such as a locked computer room or a data center with + restricted access. The power supply should be redundant, using + batteries, generators or some other means to protect against utility + power failures. Network connectivity should be redundant, so that a + single wide area line failure cannot completely isolate the name server + host from the rest of the network. + + 2.7. Network security. The system and network administrators should + educate themselves about potential threats, and stay current on CERT + bulletins regarding network breakins. The system staff should + periodically audit the name server host's activity logs and be able to + detect breakins during or after the fact. + + + + + + Expires November 1996 [Page 4] + + INTERNET-DRAFT DNSSVR CRITERIA May 1996 + + + 2.8. Host performance. As of the time of this writing, a name server + must be able to answer 1,200 UDP transactions per second with less than + 5 milliseconds of average latency. Because the network is still growing + at a high rate, the ability to grow to 2,000 transactions per second and + still support a 5 millisecond latency is highly desirable. Note that + this requirement affects both the host and the network infrastructure to + which that host is attached. + + 2.9. Response time. The administrators responsible for a name server + will respond to e-mail trouble reports within 24 hours. Personnel + issues such as vacations and illness will cause responsibilities to be + delegated and/or reassigned rather than ignored. After hours telephone + numbers must be made available to the zone master for nonpublished use + in emergencies. An escalation contact name, e-mail address, and + telephone number will also be made available to the zone master in the + event of nonresponse through the normal channel. + + 2.10. Zone transfer access control. The name server shall be configured + so that outbound zone transfers are permitted only to destinations on + the server's local networks, and to whichever networks the zone master + designates for remote debugging purposes. + + Rationale: Zone transfers can present a significant load on a name + server, especially if several transfers are started + simultaneously against the same server. There is no + operational reason to allow anyone outside the name + server's and zone's administrators to transfer the entire + zone. + + 2.11. Zone transfer protocol. DNS AXFR shall be used in preference to + FTP or any other non-DNS transfer protocol. DNS NOTIFY (see [NOTIFY]) + and DNS IXFR (see [IXFR]) shall be supported and enabled when available. + + Rationale: Historically, the common implementations of DNS (a.k.a., + BIND) did not support zone transfer of the root (``.'') + zone due to programming errors. Thus, FTP was used. In + the future, DNS implementations which do not support zone + transfer of all zones will not be considered suitable for + use as root name servers. The benefits of [IXFR] and + [NOTIFY] should be obvious. + + + + + + + + + Expires November 1996 [Page 5] + + INTERNET-DRAFT DNSSVR CRITERIA May 1996 + + + 2.12. Recursion shall be disabled for queries. + + Rationale: Recursion is a major source of cache pollution, and can + be a major drain on name server performance. An + organization's recursive DNS needs should be served by + some other host than its root name server(s). An + exception is made for missing glue since it's possible + that glue needed for some delegations will not be within + or beneath any zone for which the server is + authoritative. Such glue must be fetched via recursive + lookups to other servers. + + 2.13. Outages shall be reported. All outages, scheduled or not, shall + be reported to the zone master via e-mail. If an outage is unscheduled + or if an outage is scheduled less than 24 hours in advance, then an + additional notification of the zone master shall be made via telephone. + Extended or repeated outages may beget special handling by the zone + master. + + 2.14. Inverse name lookups. The PTR RR associated with a server's + primary interface address (that is, the address shown in in the zone's + delegation) shall have its target specified by the zone master. + + Rationale: Since each organization has local control of their + network's PTR RRs, and since it is necessary for the + correct operation of some software that the forward and + reverse lookups have symmetrical results, it is left up + to the zone master to select the name for each authority + server's primary address. + + 3 - Possible Selection Criteria + + 3.1. Host population. A server's location on the network should be such + that it has a low IP hop count to a high number of end hosts. + Duplication of service should be avoided, such that any given set of end + hosts needs to have a low IP hop count to at most one authority server + for any given zone. + + 3.2. Infrastructure diversity. A server's location on the network + should be such that most failures capable of isolating it from a large + number of end hosts are diverse from the failures capable of similarly + isolating other authority servers for the same zone(s). + + + + + + + Expires November 1996 [Page 6] + + INTERNET-DRAFT DNSSVR CRITERIA May 1996 + + + 4 - Security Considerations + + See section 2.7. + + 5 - References + + [RFC1035] + P. Mockapetris, ``Domain Names - Implementation and Specification,'' + RFC 1035, USC/Information Sciences Institute, November 1987. + + [Postel96] + J. Postel, "New Registries and the Delegation of International Top + Level Domains", , May 3, 1996. + + [IXFR] + M. Ohta, ``Incremental Zone Transfer,'' Internet Draft, February + 1996, . + + [NOTIFY] + P. Vixie, ``A Mechanism for Prompt Notification of Zone Changes,'' + Internet Draft, March 1996, . + + 6 - Acknowledgements + + Constructive comments have been received from: Jon Postel, Michael + Patton, Andrew Partan, Michael Dillon, Don Mitchell Steven Doyle, Owen + DeLong and other members of the internet community. + + 7 - Author's Address + + Bill Manning + USC/ISI + 4676 Admiralty Way + Marina del Rey, CA 90292 + +1 310 822 1511 + + + Paul Vixie + Internet Software Consortium + Star Route Box 159A + Woodside, CA 94062 + +1 415 747 0204 + + + + + + + Expires November 1996 [Page 7] + + diff --git a/usr.sbin/named/doc/info/49vs483 b/usr.sbin/named/doc/info/49vs483 new file mode 100644 index 000000000000..6903c8e65b35 --- /dev/null +++ b/usr.sbin/named/doc/info/49vs483 @@ -0,0 +1,37 @@ +Newsgroups: comp.protocols.tcp-ip.domains +From: marka@syd.dms.CSIRO.AU (Mark Andrews) +Subject: Re: BIND 4.9 bug?: Losing RRs at zone boundries +Message-ID: +Sender: news@syd.dms.CSIRO.AU +Organization: CSIRO Division of Mathematics and Statistics, Australia +References: <1993Jun24.191743.23086@cs.cornell.edu> +Date: Fri, 25 Jun 1993 02:03:27 GMT + +In article <1993Jun24.191743.23086@cs.cornell.edu> parmelee@cs.cornell.edu (Larry Parmelee) writes: +>We've just observed a problem today where our SECONDARY nameservers +>lost some critical MX and A records. The RRs in question were MX and A +>records for some of our subdomains, for example "CS.CORNELL.EDU" lost + +>Anyone else seen this problem? Anyone have a fix? +> +>-Larry Parmelee +>parmelee@cs.cornell.edu + +This is a side effect of the switch to 4.9. Older buggier nameservers +passed out MX and A records for the child zone. When the parent zone is +updated it no longer has theses bogus records transmitted and the +secondaries dutifully note that this has happend and cease to know about +then. + +This can be fixed by + 1. restart all the secondaries (the cached zones are ok) or + 2. update the serial numbers of all the child zones. + +As far as I can tell it only happens when a nameserver is secondaring +both the parent and child zone. + +When a primary nameserver switches to 4.9 I recommend updating all +serial numbers for the zone that it is a primary, and for all zones that +are children of those it in primary for. + +Mark. diff --git a/usr.sbin/named/doc/info/AIX b/usr.sbin/named/doc/info/AIX new file mode 100644 index 000000000000..4ae4ccb4b390 --- /dev/null +++ b/usr.sbin/named/doc/info/AIX @@ -0,0 +1,49 @@ +Return-Path: fuat@ans.net +Received: by cognition.pa.dec.com; id AA04201; Tue, 19 Jan 93 11:46:18 -0800 +Received: by inet-gw-1.pa.dec.com; id AA20795; Tue, 19 Jan 93 11:46:17 -0800 +Received: by interlock.ans.net id AA18502 + (InterLock SMTP Gateway 1.1 for vixie@pa.dec.com); + Tue, 19 Jan 1993 14:45:33 -0500 +Received: by interlock.ans.net (Internal Mail Agent-2); + Tue, 19 Jan 1993 14:45:33 -0500 +Received: by interlock.ans.net (Internal Mail Agent-1); + Tue, 19 Jan 1993 14:45:33 -0500 +Date: Tue, 19 Jan 93 14:45:38 EST +From: Fuat Baran +To: vixie (Paul A Vixie) +Cc: fuat@ans.net +Phone: 914-789-5328, Fax: 914-789-5310 +Subject: bind 4.9 beta instructions +Message-Id: + +Since it is almost time for the Beta announcement for BIND 4.9, I +thought I'd let you know how I compile BIND under AIX, in case you +want to add compilation instructions. (I'm assuming you'll resolve +the business of LIBC=/usr/lib/libc.a vs /lib/libc.a which cropped up +in the latest alpha.) + +1) Make sure you have bsdcc configured (see also: /usr/lpp/bos/bsdport): + a) link /bin/xlc to /bin/bsdcc + b) add the following stanza to near the end of /etc/xlc.cfg + before the DEFLT stanza: + +* BSD compatibility +bsdcc: use = DEFLT + crt = /lib/crt0.o + mcrt = /lib/mcrt0.o + gcrt = /lib/gcrt0.o + libraries = -lbsd, -lc + proflibs = -L/lib/profiled,-L/usr/lib/profiled + options = -H512,-T512,-qlanglvl=extended,-qnoro,-D_BSD,-D_NONSTD_TYPES,-D_NO_PROTO,-D_BSD_INCLUDES,-bnodelcsect,-U__STR__,-U__MATH__ + + +2) In the top level bind directory: + make CC="bsdcc -DBSD=43" all + +Note: If you prefer, you can either add a "-DBSD=43" to the bsdcc +stanza (in the options section), or create a similar stanza with it +(e.g. call it bsdcc43 and make the symlink to /bin/bsdcc43). Then you +can do a "make CC=bsdcc43" instead. + + --Fuat + diff --git a/usr.sbin/named/doc/info/AIX.bsdcc b/usr.sbin/named/doc/info/AIX.bsdcc new file mode 100644 index 000000000000..bfbe5ab52c34 --- /dev/null +++ b/usr.sbin/named/doc/info/AIX.bsdcc @@ -0,0 +1,66 @@ +Received: by gw.home.vix.com id AA20833; Sun, 3 Jul 94 23:08:01 -0700 +Received: by gate1.ks.se id AA06485 + (5.67b/IDA-1.5 for ); Mon, 4 Jul 1994 08:11:40 +0200 +Received: from patricia.ks.se(136.155.37.10) by gate1.ks.se via smap (V1.3mjr) + id sma006482; Mon Jul 4 08:11:07 1994 +Received: from grodan.data.ks.se by patricia.ks.se with SMTP id AA07920 + (5.67a/IDA-1.5 for ); Mon, 4 Jul 1994 08:15:49 +0200 +Received: by grodan.data.ks.se (AIX 3.2/UCB 5.64/4.03) + id AA73470; Mon, 4 Jul 1994 08:05:02 +0100 +Date: Mon, 4 Jul 1994 08:05:01 +0100 (NFT) +From: Urban Kaveus +Sender: Urban Kaveus +Reply-To: Urban Kaveus +Subject: Re: 4.9.3-beta4 private release (includes beta3-beta4 patch) +To: Paul A Vixie +Cc: Rikard Anderljung +In-Reply-To: <9407020153.AA21510@gw.home.vix.com> +Message-Id: +Mime-Version: 1.0 +Content-Type: TEXT/PLAIN; CHARSET=US-ASCII + + +On Fri, 1 Jul 1994, Paul A Vixie wrote: +> is supposed to include . i take it yours doesn't? + +Hi again ! + +Thanks a lot ! You gave me the clue to the AIX C compiler flags ! + +The top level Makefile says "Supid AIX" and defines "bsdcc" as the compiler +to use. Now, there is no such thing as a bsdcc compiler on a vanilla AIX +system. You have to create a link named bsdcc pointing at your +original C compiler named xlc and create a "flavour entry" in your xlc.cfg +file : + +* Berkeley style compiler. Added 931221 by Urban K. +bsdcc: use = DEFLT + crt = /lib/crt0.o + mcrt = /lib/mcrt0.o + gcrt = /lib/gcrt0.o + libraries = -lbsd, -lc + proflibs = -L/lib/profiled,-L/usr/lib/profiled + options = -H512,-T512, -qlanglvl=extended, -qnoro, + -D_BSD, -D_NONSTD_TYPES, -D_NO_PROTO, + -bnodelcsect, -U__STR__, -U__MATH__ + +Of course you are right, DO include if the +_BSD flag is set. +Our problem was that we broke the configuration entry in xlc.cfg into +several lines. That has been done in all other AIX configuration files so +why not in this one ? + +But it did not work, we did not get the _BSD flag set and we did not +even get warned about the configuration mistake. + +Your clue togheter with the inctree perl program lead us right. Thanks ! +Now, the BETA 6 compiles like a charm with no changes at all. + +Yours + +Urban Kaveus +dataavdelningen +Karolinska Hospital +S-171 76 Stockholm +Sweden + diff --git a/usr.sbin/named/doc/info/AIX.bsdcc.too b/usr.sbin/named/doc/info/AIX.bsdcc.too new file mode 100644 index 000000000000..87f0981f5327 --- /dev/null +++ b/usr.sbin/named/doc/info/AIX.bsdcc.too @@ -0,0 +1,73 @@ +Delivery-Date: Thu, 29 Jun 1995 06:31:21 -0700 +Return-Path: matthew@noc.ans.net +Received: by gw.home.vix.com id AA13055; Thu, 29 Jun 95 06:31:20 -0700 +Received: by bugsy.aa.ans.net id AA46918 + (5.65c/IDA-1.4.4 for paul@vix.com); Thu, 29 Jun 1995 09:31:18 -0400 +Message-Id: <199506291331.AA46918@bugsy.aa.ans.net> +From: Matthew Braun +Date: Thu, 29 Jun 1995 09:31:18 -0400 +X-Mailer: Mail User's Shell (7.2.5 10/14/92) +To: Paul A Vixie +Subject: Re: Matthew Braun: bind-4.9.3-BETA21 bug report +Cc: bind@uunet.uu.net + +Paul A Vixie on Thu, 29 Jun 1995 1:24 writes: +> this message will appear as doc/info/AIX.too in BIND 4.9.3-BETA22. +> +> ------- Forwarded Message +> +> From: matthew@ans.net (Matthew Braun) +> Subject: bind-4.9.3-BETA21 bug report +> Date: 28 Jun 1995 11:39:14 -0700 +> X-To: bind@uunet.uu.net +> +> Hi- +> +> When trying to compile bind on an AIX 3.2.5 box I had a technically easy +> but annoyingly tedious problem that I needed to fix to make the code +> compile. +> +> First of all, the Makefile has bsdcc in it for AIX, which I don't have +> and didn't really need. Note the Makefile patch probably won't work +> correctly cause I didn't have a virgin copy of the original Makefile, so +> you'll have to look at that manually. + +As pointed out by a few people, the problem I had with the headers went +away when I used bsdcc (which needed to be configured by changing a +config file). Although it would be nice if you didn't need to use bsdcc +and could just use cc on AIX. + +I already sent the source changes, and here are the instructions for +configuring bsdcc. + +make the link: ln /bin/xlc /bin/bsdcc. + +add this to /etc/xlc.cfg (see info in /usr/lpp/bos/bsdport): + +* BSD compatibility +bsdcc: use = DEFLT + crt = /lib/crt0.o + mcrt = /lib/mcrt0.o + gcrt = /lib/gcrt0.o + libraries = -lbsd, -lc + proflibs = -L/lib/profiled,-L/usr/lib/profiled + options = -H512,-T512,-qlanglvl=extended,-qnoro,-D_BSD,-D_NONSTD_TYPES,-D_NO_PROTO,-D_BSD_INCLUDES,-bnodelcsect,-U__STR__,-U__MATH__ + + +Thanks to Linda Leibengood and Daryl Jones +, both of who provided me with this information. + +I never consulted the doc/info/AIX* files, or I would have found out +this information too. But I guess when I get a package I like to just +run configure or edit the Makefile and type 'make' and have it work. On +a vanilla AIX machine this is not the case. I guess I'm just spoiled. +Since the changes to the source code are minimal it would be nice to +have them put in. Or at the very least have the Makefile comments refer +to the doc/info/AIX* files for bsdcc info. + +Anyway Paul, you decide what you want to do now knowing the both sides +of the story. I don't think including my long message with the patch is +that useful. + +Matthew. + diff --git a/usr.sbin/named/doc/info/AIX.makefile b/usr.sbin/named/doc/info/AIX.makefile new file mode 100644 index 000000000000..00e93583c908 --- /dev/null +++ b/usr.sbin/named/doc/info/AIX.makefile @@ -0,0 +1,52 @@ +Received: by gw.home.vix.com id AA16867; Tue, 12 Jul 94 06:57:41 -0700 +Received: (from ben@localhost) by mercure.inserm.fr (8.6.8/8.6.6) id PAA09612; Tue, 12 Jul 1994 15:57:09 +0200 +Date: Tue, 12 Jul 1994 15:57:09 +0200 +From: Benoit Grange +Message-Id: <199407121357.PAA09612@mercure.inserm.fr> +To: paul@vix.com +Subject: Re: Make fails building bind on AIX + + +> what do you mean "separate" the all and clean targets? + +In the Makefile, instead of : + +---- +all clean depend:: FRC + @for x in $(SUBDIRS); do \ + (cd $$x; pwd; $(MAKE) $(MARGS) $@); \ + done + +clean:: FRC + -test -d doc/bog && (cd doc/bog; pwd; $(MAKE) $(MARGS) $@) + (cd conf; rm -f *~ *.CKP *.BAK *.orig) + rm -f *~ *.CKP *.BAK *.orig +... +---- +I write : +---- + +all :: FRC + @for x in $(SUBDIRS); do \ + (cd $$x; pwd; $(MAKE) $(MARGS) $@); \ + done + +clean:: FRC + @for x in $(SUBDIRS); do \ + (cd $$x; pwd; $(MAKE) $(MARGS) $@); \ + done + -test -d doc/bog && (cd doc/bog; pwd; $(MAKE) $(MARGS) $@) + (cd conf; rm -f *~ *.CKP *.BAK *.orig) + rm -f *~ *.CKP *.BAK *.orig + +depend:: FRC + @for x in $(SUBDIRS); do \ + (cd $$x; pwd; $(MAKE) $(MARGS) $@); \ + done + +-------------------- + +Anyway, all this is because of the buggy make supplied +with AIX. + +Benoit Grange. diff --git a/usr.sbin/named/doc/info/AIX.mkdep b/usr.sbin/named/doc/info/AIX.mkdep new file mode 100644 index 000000000000..0c6e25e150d5 --- /dev/null +++ b/usr.sbin/named/doc/info/AIX.mkdep @@ -0,0 +1,87 @@ +Delivery-Date: Fri, 13 Jan 1995 15:25:29 -0800 +Received: by gw.home.vix.com id AA12815; Fri, 13 Jan 95 15:25:01 -0800 +Received: from handlebar.weeg.uiowa.edu by ns-mx.uiowa.edu (8.6.8.2/19940322) + on Fri, 13 Jan 1995 17:24:52 -0600 id RAA11266 with ESMTP +Received: from handlebar.weeg.uiowa.edu by handlebar.weeg.uiowa.edu (8.6.8.2/930730) + on Fri, 13 Jan 1995 17:24:43 -0600 id RAA13375 with SMTP +Message-Id: <199501132324.RAA13375@handlebar.weeg.uiowa.edu> +To: paul@vix.com (Paul A Vixie) +Reply-To: Jay Ford +Subject: problem building BIND 4.9.3 BETA17 for AIX +Date: Fri, 13 Jan 95 17:24:40 CST +From: Jay Ford + + +You wrote: +> From: paul@vix.com (Paul A Vixie) +> Subject: BIND 4.9.3 BETA17 is available for public testing +> Date: 12 Jan 95 15:35:27 +> Organization: Vixie Enterprises +> +> Please take a minute to make sure this thing still builds and runs on your +> offbrand backroom boxes. I want to rename it to "4.9.3-Rel" with no further +> patches, and I will, unless someone speaks up pretty quickly about a problem +> that is pretty serious. + +I tried building this on an RS/6000 running AIX 3.2.5, and had some trouble. + +First, the AIX compiler thinks -M means to generate a *.u file containing the +dependencies for each source file. I hacked mkdep to deal with this, but it +could probably be done in a nicer way. Anyway, the diffs are: + +============================================================================== +*** mkdep Sun May 2 19:34:57 1993 +--- mkdep.aix Fri Jan 13 16:39:23 1995 +*************** +*** 92,99 **** + + trap 'rm -f $TMP ; exit 1' 1 2 3 13 15 + +! cc -M $* | +! sed " + s; \./; ;g + /\.c:$/d + $SED" | +--- 92,99 ---- + + trap 'rm -f $TMP ; exit 1' 1 2 3 13 15 + +! bsdcc -M -P $* +! cat *.u | sed " + s; \./; ;g + /\.c:$/d + $SED" | +*************** +*** 116,121 **** +--- 116,122 ---- + END { + print rec + }' > $TMP ++ rm *.[iu] + + if [ $? != 0 ]; then + echo 'mkdep: compile failed.' +============================================================================== + +Second, the order of the directives on line 485 in the top-level make file +caused some strange behavior. The order of "all clean depend" caused the AIX +make to do exactly that: make all, make clean, make depend. Needless to say, +the results are less that ideal: built then deleted binaries, but updated +dependencies! Changing the order to "clean depend all" had the desired effect. +I don't know what this order change would do to other systems, but it seems to +be required for AIX. Use this information as you see fit. + +Other than those two AIX-specific problems I have had no trouble. + +Also, I noticed that the default for INVQ has changed back to "off". Is this +still a problem for the 2 packages which used to do inverse queries? + +Thanks. + +------------------------------------------------------------------------ +Jay Ford, Network Services Group, Information Networks +University of Iowa, Iowa City, IA 52242 +email: jay-ford@uiowa.edu, phone: 319-335-5555, fax: 319-335-5505 + +"I have a 900 MHz brain." -Pete Brokaw, Nov 4, 1994 + diff --git a/usr.sbin/named/doc/info/AIX.too b/usr.sbin/named/doc/info/AIX.too new file mode 100644 index 000000000000..104cb0b697b6 --- /dev/null +++ b/usr.sbin/named/doc/info/AIX.too @@ -0,0 +1,525 @@ +Path: vixie!pa.dec.com!bind-redist-request +From: matthew@ans.net (Matthew Braun) +Newsgroups: local.mail.dns.bind +Subject: bind-4.9.3-BETA21 bug report +Date: 28 Jun 1995 11:39:14 -0700 +Organization: Vixie Enterprises +Lines: 497 +Sender: daemon@vix.com +Distribution: local +Message-ID: <199506281639.AA182663@bugsy.aa.ans.net> +NNTP-Posting-Host: gw.home.vix.com +X-Received: by gw.home.vix.com id AA02727; Wed, 28 Jun 95 11:39:12 -0700 +X-Received: from pobox1.pa.dec.com by inet-gw-2.pa.dec.com (5.65/24Feb95) + id AA27581; Wed, 28 Jun 95 10:15:51 -0700 +X-Received: by pobox1.pa.dec.com; id AA06397; Wed, 28 Jun 95 10:15:43 -0700 +X-Received: by pobox1.pa.dec.com; id AA06393; Wed, 28 Jun 95 10:15:42 -0700 +X-Received: from relay3.UU.NET by inet-gw-1.pa.dec.com (5.65/24Feb95) + id AA25444; Wed, 28 Jun 95 10:06:01 -0700 +X-Received: by relay3.UU.NET + id QQywcg10382; Wed, 28 Jun 1995 12:39:36 -0400 +X-Received: from bugsy.aa.ans.net by relay3.UU.NET with SMTP + id QQywcg10353; Wed, 28 Jun 1995 12:39:32 -0400 +X-Received: by bugsy.aa.ans.net id AA182663 + (5.65c/IDA-1.4.4 for bind@uunet.uu.net); Wed, 28 Jun 1995 12:39:12 -0400 +X-Mailer: Mail User's Shell (7.2.5 10/14/92) +X-To: bind@uunet.uu.net +X-Cc: Bryan Beecher + +Hi- + +When trying to compile bind on an AIX 3.2.5 box I had a technically easy +but annoyingly tedious problem that I needed to fix to make the code +compile. + +First of all, the Makefile has bsdcc in it for AIX, which I don't have +and didn't really need. Note the Makefile patch probably won't work +correctly cause I didn't have a virgin copy of the original Makefile, so +you'll have to look at that manually. + +The tedious problem that I had to fix was adding a '#include +' to lots of *.c files and a few '#include + #include + #include + #include +diff -cr bind-4.9.3-BETA21/named/db_reload.c bind-4.9.3-BETA21.mod/named/db_reload.c +*** bind-4.9.3-BETA21/named/db_reload.c Thu Dec 15 01:24:16 1994 +--- bind-4.9.3-BETA21.mod/named/db_reload.c Mon Jun 26 11:22:45 1995 +*************** +*** 58,63 **** +--- 58,64 ---- + * --Copyright-- + */ + ++ #include + #include + #include + #include +diff -cr bind-4.9.3-BETA21/named/db_save.c bind-4.9.3-BETA21.mod/named/db_save.c +*** bind-4.9.3-BETA21/named/db_save.c Thu Dec 15 01:24:16 1994 +--- bind-4.9.3-BETA21.mod/named/db_save.c Mon Jun 26 11:23:12 1995 +*************** +*** 62,67 **** +--- 62,68 ---- + * Buffer allocation and deallocation routines. + */ + ++ #include + #include + #include + #include +diff -cr bind-4.9.3-BETA21/named/ns_forw.c bind-4.9.3-BETA21.mod/named/ns_forw.c +*** bind-4.9.3-BETA21/named/ns_forw.c Mon Jun 19 16:55:44 1995 +--- bind-4.9.3-BETA21.mod/named/ns_forw.c Mon Jun 26 11:24:20 1995 +*************** +*** 58,63 **** +--- 58,64 ---- + * --Copyright-- + */ + ++ #include + #include + #include + #include +diff -cr bind-4.9.3-BETA21/named/ns_init.c bind-4.9.3-BETA21.mod/named/ns_init.c +*** bind-4.9.3-BETA21/named/ns_init.c Tue Jun 20 19:34:47 1995 +--- bind-4.9.3-BETA21.mod/named/ns_init.c Mon Jun 26 11:24:36 1995 +*************** +*** 58,63 **** +--- 58,64 ---- + * --Copyright-- + */ + ++ #include + #include + #include + #include +diff -cr bind-4.9.3-BETA21/named/ns_main.c bind-4.9.3-BETA21.mod/named/ns_main.c +*** bind-4.9.3-BETA21/named/ns_main.c Tue Jun 20 19:58:53 1995 +--- bind-4.9.3-BETA21.mod/named/ns_main.c Mon Jun 26 11:26:48 1995 +*************** +*** 70,75 **** +--- 70,76 ---- + * Internet Name server (see rfc883 & others). + */ + ++ #include + #include + #include + #include +diff -cr bind-4.9.3-BETA21/named/ns_ncache.c bind-4.9.3-BETA21.mod/named/ns_ncache.c +*** bind-4.9.3-BETA21/named/ns_ncache.c Thu Jul 21 04:17:43 1994 +--- bind-4.9.3-BETA21.mod/named/ns_ncache.c Mon Jun 26 11:30:47 1995 +*************** +*** 6,11 **** +--- 6,12 ---- + * implements negative caching + */ + ++ #include + #include + #include + #include +diff -cr bind-4.9.3-BETA21/named/ns_req.c bind-4.9.3-BETA21.mod/named/ns_req.c +*** bind-4.9.3-BETA21/named/ns_req.c Tue Jun 20 19:58:55 1995 +--- bind-4.9.3-BETA21.mod/named/ns_req.c Mon Jun 26 11:28:48 1995 +*************** +*** 58,63 **** +--- 58,64 ---- + * --Copyright-- + */ + ++ #include + #include + #include + #include +diff -cr bind-4.9.3-BETA21/named/ns_resp.c bind-4.9.3-BETA21.mod/named/ns_resp.c +*** bind-4.9.3-BETA21/named/ns_resp.c Tue Jun 20 03:43:09 1995 +--- bind-4.9.3-BETA21.mod/named/ns_resp.c Mon Jun 26 11:29:09 1995 +*************** +*** 58,63 **** +--- 58,64 ---- + * --Copyright-- + */ + ++ #include + #include + #include + #include +diff -cr bind-4.9.3-BETA21/named/ns_stats.c bind-4.9.3-BETA21.mod/named/ns_stats.c +*** bind-4.9.3-BETA21/named/ns_stats.c Mon Jun 19 04:34:58 1995 +--- bind-4.9.3-BETA21.mod/named/ns_stats.c Mon Jun 26 11:29:38 1995 +*************** +*** 63,68 **** +--- 63,69 ---- + /* dumps a bunch of values into a well-known file */ + /**************************************************************************/ + ++ #include + #include + #include + #include +diff -cr bind-4.9.3-BETA21/named/ns_validate.c bind-4.9.3-BETA21.mod/named/ns_validate.c +*** bind-4.9.3-BETA21/named/ns_validate.c Mon Jun 19 02:48:07 1995 +--- bind-4.9.3-BETA21.mod/named/ns_validate.c Mon Jun 26 11:29:51 1995 +*************** +*** 7,12 **** +--- 7,13 ---- + * response to a query. + */ + ++ #include + #include + #include + #include +diff -cr bind-4.9.3-BETA21/res/gethnamaddr.c bind-4.9.3-BETA21.mod/res/gethnamaddr.c +*** bind-4.9.3-BETA21/res/gethnamaddr.c Tue Jun 20 19:58:57 1995 +--- bind-4.9.3-BETA21.mod/res/gethnamaddr.c Mon Jun 26 11:18:58 1995 +*************** +*** 58,63 **** +--- 58,64 ---- + static char rcsid[] = "$Id: AIX.too,v 1.1.1.1 1997/04/13 09:08:04 mrg Exp $"; + #endif /* LIBC_SCCS and not lint */ + ++ #include + #include + #include + #include +diff -cr bind-4.9.3-BETA21/res/getnetent.c bind-4.9.3-BETA21.mod/res/getnetent.c +*** bind-4.9.3-BETA21/res/getnetent.c Mon Jun 19 04:35:01 1995 +--- bind-4.9.3-BETA21.mod/res/getnetent.c Mon Jun 26 11:17:47 1995 +*************** +*** 46,51 **** +--- 46,52 ---- + static char rcsid[] = "$Id: AIX.too,v 1.1.1.1 1997/04/13 09:08:04 mrg Exp $"; + #endif /* LIBC_SCCS and not lint */ + ++ #include + #include + #include + #include +diff -cr bind-4.9.3-BETA21/res/getnetnamadr.c bind-4.9.3-BETA21.mod/res/getnetnamadr.c +*** bind-4.9.3-BETA21/res/getnetnamadr.c Tue Jun 20 03:43:10 1995 +--- bind-4.9.3-BETA21.mod/res/getnetnamadr.c Mon Jun 26 11:18:05 1995 +*************** +*** 44,49 **** +--- 44,50 ---- + static char rcsid[] = "$Id: AIX.too,v 1.1.1.1 1997/04/13 09:08:04 mrg Exp $"; + #endif /* LIBC_SCCS and not lint */ + ++ #include + #include + #include + #include +diff -cr bind-4.9.3-BETA21/res/herror.c bind-4.9.3-BETA21.mod/res/herror.c +*** bind-4.9.3-BETA21/res/herror.c Mon Jun 19 04:35:02 1995 +--- bind-4.9.3-BETA21.mod/res/herror.c Mon Jun 26 11:05:11 1995 +*************** +*** 58,63 **** +--- 58,64 ---- + static char rcsid[] = "$Id: AIX.too,v 1.1.1.1 1997/04/13 09:08:04 mrg Exp $"; + #endif /* LIBC_SCCS and not lint */ + ++ #include + #include + #include + #include +diff -cr bind-4.9.3-BETA21/res/inet_addr.c bind-4.9.3-BETA21.mod/res/inet_addr.c +*** bind-4.9.3-BETA21/res/inet_addr.c Mon Jun 19 16:55:50 1995 +--- bind-4.9.3-BETA21.mod/res/inet_addr.c Mon Jun 26 11:19:53 1995 +*************** +*** 58,63 **** +--- 58,64 ---- + static char rcsid[] = "$Id: AIX.too,v 1.1.1.1 1997/04/13 09:08:04 mrg Exp $"; + #endif /* LIBC_SCCS and not lint */ + ++ #include + #include + #include + #include +diff -cr bind-4.9.3-BETA21/res/nsap_addr.c bind-4.9.3-BETA21.mod/res/nsap_addr.c +*** bind-4.9.3-BETA21/res/nsap_addr.c Mon Jun 19 04:35:02 1995 +--- bind-4.9.3-BETA21.mod/res/nsap_addr.c Mon Jun 26 11:19:40 1995 +*************** +*** 2,7 **** +--- 2,8 ---- + static char rcsid[] = "$Id: AIX.too,v 1.1.1.1 1997/04/13 09:08:04 mrg Exp $"; + #endif /* LIBC_SCCS and not lint */ + ++ #include + #include + #include + #include +diff -cr bind-4.9.3-BETA21/res/res_comp.c bind-4.9.3-BETA21.mod/res/res_comp.c +*** bind-4.9.3-BETA21/res/res_comp.c Mon Jun 19 04:35:02 1995 +--- bind-4.9.3-BETA21.mod/res/res_comp.c Mon Jun 26 11:12:42 1995 +*************** +*** 58,63 **** +--- 58,64 ---- + static char rcsid[] = "$Id: AIX.too,v 1.1.1.1 1997/04/13 09:08:04 mrg Exp $"; + #endif /* LIBC_SCCS and not lint */ + ++ #include + #include + #include + #include +diff -cr bind-4.9.3-BETA21/res/res_debug.c bind-4.9.3-BETA21.mod/res/res_debug.c +*** bind-4.9.3-BETA21/res/res_debug.c Mon Jun 19 16:55:51 1995 +--- bind-4.9.3-BETA21.mod/res/res_debug.c Mon Jun 26 11:07:47 1995 +*************** +*** 58,63 **** +--- 58,64 ---- + static char rcsid[] = "$Id: AIX.too,v 1.1.1.1 1997/04/13 09:08:04 mrg Exp $"; + #endif /* LIBC_SCCS and not lint */ + ++ #include + #include + #include + #include +diff -cr bind-4.9.3-BETA21/res/res_init.c bind-4.9.3-BETA21.mod/res/res_init.c +*** bind-4.9.3-BETA21/res/res_init.c Mon Jun 19 04:35:03 1995 +--- bind-4.9.3-BETA21.mod/res/res_init.c Mon Jun 26 11:13:07 1995 +*************** +*** 58,63 **** +--- 58,64 ---- + static char rcsid[] = "$Id: AIX.too,v 1.1.1.1 1997/04/13 09:08:04 mrg Exp $"; + #endif /* LIBC_SCCS and not lint */ + ++ #include + #include + #include + #include +diff -cr bind-4.9.3-BETA21/res/res_mkquery.c bind-4.9.3-BETA21.mod/res/res_mkquery.c +*** bind-4.9.3-BETA21/res/res_mkquery.c Mon Jun 19 04:35:03 1995 +--- bind-4.9.3-BETA21.mod/res/res_mkquery.c Mon Jun 26 11:13:30 1995 +*************** +*** 58,63 **** +--- 58,64 ---- + static char rcsid[] = "$Id: AIX.too,v 1.1.1.1 1997/04/13 09:08:04 mrg Exp $"; + #endif /* LIBC_SCCS and not lint */ + ++ #include + #include + #include + #include +diff -cr bind-4.9.3-BETA21/res/res_query.c bind-4.9.3-BETA21.mod/res/res_query.c +*** bind-4.9.3-BETA21/res/res_query.c Tue Jun 20 03:43:10 1995 +--- bind-4.9.3-BETA21.mod/res/res_query.c Mon Jun 26 11:14:01 1995 +*************** +*** 58,63 **** +--- 58,64 ---- + static char rcsid[] = "$Id: AIX.too,v 1.1.1.1 1997/04/13 09:08:04 mrg Exp $"; + #endif /* LIBC_SCCS and not lint */ + ++ #include + #include + #include + #include +diff -cr bind-4.9.3-BETA21/res/res_send.c bind-4.9.3-BETA21.mod/res/res_send.c +*** bind-4.9.3-BETA21/res/res_send.c Mon Jun 19 16:55:52 1995 +--- bind-4.9.3-BETA21.mod/res/res_send.c Mon Jun 26 11:16:51 1995 +*************** +*** 69,74 **** +--- 69,75 ---- + * Send query to name server and wait for reply. + */ + ++ #include + #include + #include + #include +diff -cr bind-4.9.3-BETA21/res/sethostent.c bind-4.9.3-BETA21.mod/res/sethostent.c +*** bind-4.9.3-BETA21/res/sethostent.c Mon Jun 19 04:35:04 1995 +--- bind-4.9.3-BETA21.mod/res/sethostent.c Mon Jun 26 11:19:25 1995 +*************** +*** 36,41 **** +--- 36,42 ---- + static char rcsid[] = "$Id: AIX.too,v 1.1.1.1 1997/04/13 09:08:04 mrg Exp $"; + #endif /* LIBC_SCCS and not lint */ + ++ #include + #include + #include + #include +diff -cr bind-4.9.3-BETA21/tools/Makefile bind-4.9.3-BETA21.mod/tools/Makefile +*** bind-4.9.3-BETA21/tools/Makefile Tue Jun 20 19:58:58 1995 +--- bind-4.9.3-BETA21.mod/tools/Makefile Mon Jun 26 12:04:21 1995 +*************** +*** 60,66 **** + CC= cc + SHELL= /bin/sh + +! CDEBUG= -g + + INCL = ../include + RES= ../res/libresolv.a +--- 60,66 ---- + CC= cc + SHELL= /bin/sh + +! CDEBUG= -O + + INCL = ../include + RES= ../res/libresolv.a +diff -cr bind-4.9.3-BETA21/tools/nslookup/debug.c bind-4.9.3-BETA21.mod/tools/nslookup/debug.c +*** bind-4.9.3-BETA21/tools/nslookup/debug.c Thu Dec 15 01:24:31 1994 +--- bind-4.9.3-BETA21.mod/tools/nslookup/debug.c Mon Jun 26 11:40:00 1995 +*************** +*** 70,75 **** +--- 70,76 ---- + ******************************************************************************* + */ + ++ #include + #include + #include + #include +diff -cr bind-4.9.3-BETA21/tools/nslookup/getinfo.c bind-4.9.3-BETA21.mod/tools/nslookup/getinfo.c +*** bind-4.9.3-BETA21/tools/nslookup/getinfo.c Thu Dec 15 01:24:32 1994 +--- bind-4.9.3-BETA21.mod/tools/nslookup/getinfo.c Mon Jun 26 11:39:40 1995 +*************** +*** 71,76 **** +--- 71,77 ---- + ****************************************************************************** + */ + ++ #include + #include + #include + #include +diff -cr bind-4.9.3-BETA21/tools/nslookup/list.c bind-4.9.3-BETA21.mod/tools/nslookup/list.c +*** bind-4.9.3-BETA21/tools/nslookup/list.c Mon Dec 19 03:35:16 1994 +--- bind-4.9.3-BETA21.mod/tools/nslookup/list.c Mon Jun 26 11:42:47 1995 +*************** +*** 70,75 **** +--- 70,76 ---- + ******************************************************************************* + */ + ++ #include + #include + #include + #include +diff -cr bind-4.9.3-BETA21/tools/nslookup/main.c bind-4.9.3-BETA21.mod/tools/nslookup/main.c +*** bind-4.9.3-BETA21/tools/nslookup/main.c Thu Dec 15 01:24:32 1994 +--- bind-4.9.3-BETA21.mod/tools/nslookup/main.c Mon Jun 26 11:38:53 1995 +*************** +*** 79,84 **** +--- 79,85 ---- + ****************************************************************************** + */ + ++ #include + #include + #include + #include +diff -cr bind-4.9.3-BETA21/tools/nslookup/send.c bind-4.9.3-BETA21.mod/tools/nslookup/send.c +*** bind-4.9.3-BETA21/tools/nslookup/send.c Thu Dec 15 01:24:33 1994 +--- bind-4.9.3-BETA21.mod/tools/nslookup/send.c Mon Jun 26 11:41:46 1995 +*************** +*** 75,80 **** +--- 75,81 ---- + * Send query to name server and wait for reply. + */ + ++ #include + #include + #include + #include +diff -cr bind-4.9.3-BETA21/tools/nslookup/skip.c bind-4.9.3-BETA21.mod/tools/nslookup/skip.c +*** bind-4.9.3-BETA21/tools/nslookup/skip.c Thu Dec 15 01:24:33 1994 +--- bind-4.9.3-BETA21.mod/tools/nslookup/skip.c Mon Jun 26 11:42:34 1995 +*************** +*** 75,80 **** +--- 75,81 ---- + ******************************************************************************* + */ + ++ #include + #include + #include + #include diff --git a/usr.sbin/named/doc/info/AIX3.2-yp b/usr.sbin/named/doc/info/AIX3.2-yp new file mode 100644 index 000000000000..d9ff38591cb7 --- /dev/null +++ b/usr.sbin/named/doc/info/AIX3.2-yp @@ -0,0 +1,62 @@ +Return-Path: svpillay@berlioz.crs4.it +Received: by stuff.pa.dec.com; id AA23579; Wed, 26 May 93 10:51:09 -0700 +Received: by inet-gw-1.pa.dec.com; id AA02488; Wed, 26 May 93 10:51:08 -0700 +Received: by berlioz.crs4.it (AIX 3.2/UCB 5.64/4.03) + id AA95828; Wed, 26 May 1993 19:49:33 +0200 +Message-Id: <9305261749.AA95828@berlioz.crs4.it> +Subject: BIND 4.9 and AIX3.2 ypserv conflict +To: bind@ucbarpa.berkeley.edu, comp.unix.aix@crs4gw.crs4.it +Date: Wed, 26 May 1993 19:49:33 +22311259 (DST) +From: Kanthan Pillay +Cc: vixie +X-Mailer: ELM [version 2.4 PL11] +Mime-Version: 1.0 +Content-Type: text/plain; charset=US-ASCII +Content-Transfer-Encoding: 7bit +Content-Length: 1752 + +Greetings + +Configuration: +DNS server is Sparc 2 running SunOS 4.1.3, BIND 4.9 +ypserver is IBM RS/6000-550 running AIX 3.2.3 + +Description of problem: +BIND 4.9 documentation recommends removal of "domain" directive in +/etc/named.boot, and disables support for this by default. However, +"ypserv" under AIX does not appear to automatically append the domain +name specified in /etc/resolv.conf to unqualified (i.e. local) +hostnames. + +So, the following does work: + mozart# ypmatch schubert.crs4.it hosts + 156.148.3.24 schubert.crs4.it +while the following does not: + mozart# ypmatch schubert hosts + ypmatch: 1831-150 Cannot match key schubert in map hosts.byname. + Reason: no such key in map. + +Possible fixes: +1) Do not use AIX 3.2.x's ypserv. (This works correctly if a Sun is +the ypserver.) + or +2) Enable LOCALDOM in options.h, and add a domain directive to +named.boot. + +Of course, if you have your local hosts in the NIS hosts map, you should +not have a problem. For ease of administration, we only use DNS and +"/usr/etc/yp/makedbm -b". + + Kanthan Pillay + Unix Systems Administrator + C R S 4 + Sardinia + +* * * * *Centro di Ricerca, Sviluppo e Studi Superiori in Sardegna * * * * * * +* * +* Work: (39 70) 279-6264 Internet: svpillay@crs4.it * +* Home: (39 70) 89-2334 Bitnet: SVPILLAY@ICRS4VM * +* Fax: (39 70) 279-6220 uucp: princeton!crs4!svpillay * +* Snail: Via Nazario Sauro, 10 - 09123 Cagliari, Italy * +* * +* * * Centre for Advanced Studies, Research, and Development in Sardinia * * * diff --git a/usr.sbin/named/doc/info/AIX4 b/usr.sbin/named/doc/info/AIX4 new file mode 100644 index 000000000000..54abbcb3e335 --- /dev/null +++ b/usr.sbin/named/doc/info/AIX4 @@ -0,0 +1,60 @@ +Received: by gw.home.vix.com id AA10810; Thu, 28 Dec 95 13:22:40 -0800 +Received: by gw.home.vix.com id AA10806; Thu, 28 Dec 95 13:22:39 -0800 +Received: by wisdom.home.vix.com id AA07401; Thu, 28 Dec 1995 13:22:39 -0800 +Message-Id: <9512282122.AA07401@wisdom.home.vix.com> +To: bind-workers@vix.com +Subject: BIND on AIX 4 -- anybody got a problem with this? +Date: Thu, 28 Dec 1995 13:22:39 -0800 +From: Paul A Vixie + + +------- Forwarded Message + +... + +Here's what it took to build BIND on AIX Version 4. + +Beta bind 4.9.3 Patch level 32 +AIX 4.1.4 with most IBM patches applied +PowerPC C10 Hardware + +Building on AIX Version 4 + +top level Makefile + + line 328 add an addition library so that 'vfork' is available + LIBS = -ll -lbsd + +These files need to include select.h + res/res_send.c + named/ns_main.c + tools/nslookup/send.c + + #ifdef (_AIX) + #include + #endif + +These aix include files need to include or a bigger sweep +through the bind source needs to done so ensure that types.h is included +before these. + + include/netinet/in.h + include/sys/sockets.h + + #include + + +Resolver library Makefile + +I was surprised to find ld begin called directly in the makefile. + + ld should be replaced with $(LD) and LD should + be defined in the top level Makefile. The gnu ld fails on res_debug.o + so $(LD) should point to the AIX version in /usr/bin/ld. + + + +------- End of Forwarded Message + + diff --git a/usr.sbin/named/doc/info/AUX b/usr.sbin/named/doc/info/AUX new file mode 100644 index 000000000000..ecd6069324fa --- /dev/null +++ b/usr.sbin/named/doc/info/AUX @@ -0,0 +1,20 @@ +Date: Sun, 5 Mar 1995 21:50:45 -0600 (CST) +From: Phillip Porch +To: Paul Vixie +Subject: Re: Help! bind-4.9.3-BETA17 (fwd) +Message-Id: +Mime-Version: 1.0 +Content-Type: TEXT/PLAIN; charset=US-ASCII + +Paul, I had forgotten that a long time ago, I discovered that starting +named from the inittab under A/UX didn't work. I kept getting a message +that it was a "socket operation on a non-socket". Named works fine if +your start it from the /etc/rc file. Could you add a note for A/UX users +that they need to disable named starting from /etc/inittab and instead +start it from /etc/rc? + +Thanks. + +-- +Phillip P. Porch NIC:PP1573 +http://www.theporch.com UTM - 16 514548E 3994397N diff --git a/usr.sbin/named/doc/info/Cisco b/usr.sbin/named/doc/info/Cisco new file mode 100644 index 000000000000..428529725383 --- /dev/null +++ b/usr.sbin/named/doc/info/Cisco @@ -0,0 +1,4 @@ +|Also, are you interested in accepting T_NSAP and T_NSAP_PTR support +|patches? If so, I have placed them for anonymous FTP in +| +| ftp.cisco.com:/ftp/bind/4.9.2-beta5-nsap-diffs diff --git a/usr.sbin/named/doc/info/History b/usr.sbin/named/doc/info/History new file mode 100644 index 000000000000..4986c490b375 --- /dev/null +++ b/usr.sbin/named/doc/info/History @@ -0,0 +1,26 @@ +This feature was once OPTIONal: + +CRED (origin: Paul Vixie of Digital) + enables a system of "credibility checking" on all data in the memory- +resident database. every RR that comes in will be tagged with a credibility +index with zone files being highest, followed by authoritative answers, then +non-authoritative answers, then finally by additional data. when any RR is +being added to a node ("name") in the database, all RR's of that type with a +lower credibility index will be flushed. this tends to do away with additional +data, which is one of the greatest sources of database pollution in the DNS. +data that comes in with lower credibility than what we already have is ignored. + with CRED enabled, additional data is deprecated such that every +time an additional-data RR is used, its Time To Live (TTL) is multiplied by +0.95, effectively lowering it by 5% of its current value. this causes +additional data to be timed out rather quickly, and as soon as it times +out, a sysquery() will be sent to some authoritative server, which in turn +results in a real live answer which tends to lock out future additional +data on that tuple. + due to source dependencies, CRED also controls a bug fix that keeps +all sysquery() responses from being entered into the "root cache". you can +see the effect of this by dumping your database to disk with SIGINT and +looking at the bottom of the file. try it with and without CRED, letting a +few million queries through first. without CRED, you'll see a bunch of +non-root junk in the section of the dump that is reserved for the "hints". + you probably want this. + diff --git a/usr.sbin/named/doc/info/Linux b/usr.sbin/named/doc/info/Linux new file mode 100644 index 000000000000..c4941f0cac3a --- /dev/null +++ b/usr.sbin/named/doc/info/Linux @@ -0,0 +1,104 @@ +Date: Mon, 22 May 1995 10:19:51 -0700 (PDT) +>From: John Kennedy +Message-Id: <199505221719.KAA10941@menkure.net.CSUChico.EDU> +To: BIND workers +Subject: doc/info/linux* update + +05/22/95 @ 10:17:12 AM (Monday) + + Paul, this can supersede the current doc/info/Linux* files. It has +everything Matt and I noticed (Matt never did get in contact with me...) +but leaves out Charles Lopes's patches (which are horribly out of date +and unnecessary anyway). + --- john +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +05/22/95 @ 10:12:13 AM (Monday) + + This is my continuing summary of BIND/linux porting issues. As usual, +linux is a moving target and this information will be outdated as soon as +it gets included into the source, so some adaptation may be required by the +time you use it. + + BIND is known to compile well on linux with GCC since version 2.5.8 and +well through 2.6.4 (snapshot 950518), give or take a few warnings. It has +worked, for better or worse, on kernels 1.1.29 (and earlier) through the +current 1.2.8. The binutils used have gone from 2.5.2 through the current +ELF-enhanced 2.5.2l.15 (not released to the public yet, so you'll probably +see something newer when it comes out). + + Most of the BIND-related complications have been because of the libraries +and the header files distributed with them. Therefor this will be indexed +primarily by libc version and the problems with them: + + Jul `94, libc ~4.5.26, kernel ~1.1.29 + Delete/rename/compress compat/include/sys/cdefs.h header file. + The linux has been good enough for BIND for + all of the versions that I've ever tested it with. + The header needs to #include . It + does on a lot of other system types and BIND assumes that + it does on linux as well. There are a number of ways to + fix this: (A) modify the header file directly, (B) make + a local compat "param.h" file that has these lines: + + #include + #include_next + + (B) only fixes the problem for BIND, but it doesn't require + you to modify your system's include files. + Dec `94, libc 4.6.20, kernel ~1.1.70 + The header file is officially included in + . You still need to nuke BIND's "cdefs.h". + May `95, libc ~4.7.2 & 5.0.9, kernel ~1.2.8 + You still need to nuke BIND's "cdefs.h". I haven't tried to + compile it with the 4.7 libc since it's supposed to be + bug-fixes on top of the final a.out 4.6 series. The + 5.0 series is the ELF release and I haven't found any + complications caused by the libraries. + +If you have multiple architecures (e.g. used "make links"), you will need +to take care when disabling compat/include/sys/cdefs.h as compat/include is +a shared directory. You will need something like + for d in compat/include compat/include/sys + do rm $d && mkdir $d && ln -s SRC/$d/* $d/. + done + mv compat/include/sys/cdefs.h compat/include/sys/cdefs.h.dist + + If you want to make a dynamic resolv library with ELF, you can use a +Makefile like the one below (modifying the VER sting to match the version +you happen to be compiling at the time). The source files are from the res +directory but should include everything that goes into libresolv.a, so make +sure everything gets included in later versions of BIND before you complain +to the list (or at least complain to me first). When I made my ELF system +I crippled the default resolver library and remade the system using a +dynamic resolv library. No problems yet. Beware mixing the standard +header files with BIND's, which may get you in more or less trouble +depending on your version of libc and BIND. + --- john + +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +VER= 4.9.3.17 + +INC= -I../include -I../compat/include +DEF= -DUSE_OPTIONS_H +CFLAGS= -O -fPIC ${INC} ${DEF} + +LIB= libresolv.so.${VER} + +SRCS= herror.c res_debug.c \ + res_comp.c res_init.c res_mkquery.c res_query.c res_send.c \ + getnetbyaddr.c getnetbyname.c getnetent.c getnetnamadr.c \ + gethnamaddr.c sethostent.c nsap_addr.c +OBJS= ${SRCS:.c=.o} + +${LIB}: ${OBJS} + ${CC} -shared -o $@ -Wl,-soname,$@ ${OBJS} + +${OBJS}: + ${CC} ${CPPFLAGS} ${CFLAGS} -c ../res/$*.c + -${LDS} ld -x -r $*.o + ${LDS} mv a.out $*.o + +clean: + rm ${OBJS} libresolv* +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + diff --git a/usr.sbin/named/doc/info/Linux-elf b/usr.sbin/named/doc/info/Linux-elf new file mode 100644 index 000000000000..393876cdfcc1 --- /dev/null +++ b/usr.sbin/named/doc/info/Linux-elf @@ -0,0 +1,361 @@ + ----------------------------------------- + bind-4.9.4-P1.ELF.shared.patch.new.gz + ----------------------------------------- + + This is a corrected and revised release of the previous patch, + which should make bind-4.9.4-P1 to compile under Linux with + ELF/shared support. + + Mea Culpa! In the previous patch I simply forgot not to include + my "/h/src/" directory structure. I am sorry. + + This is one change (well, should be a big one...), but there are + others as well: + + Thanks to Manuel J. Galan Moreno (root@mgmux.step.es) some + adjustments has been made to it: + + - bind's specific header files moved to /usr/include/4.9.4/ + so this does not produce incompatibilities with the standard + (original) header files. + - GCC now called with "-O2 -fno-strength-reduce" because of a + known bug in gcc-2.7.2. + - h_errno is no longer redifined + - there is an explicit link for libresolv (for the new binutils) + - man pages are installed _unformatted /usr/man + + bind-4.9.4-P1 is compiled and tested with this patch on + Linux-2.0.12 with libc-5.2.18 and gcc-2.7.2. It is currently + running on my machine and seems to good so far. + + Good luck! + + + Tamas Nyitrai + defiant@mail.datanet.hu + +diff -urN bind-4.9.4-P1/Makefile bind-4.9.4-P1.ELF.shared.new/Makefile +--- bind-4.9.4-P1/Makefile Fri Aug 16 15:14:48 1996 ++++ bind-4.9.4-P1.ELF.shared.new/Makefile Sun Aug 25 12:20:00 1996 +@@ -56,13 +56,13 @@ + ## - + ## --Copyright-- + +-VER = 4.9.4-P1 ++VER = 4.9.4.2 + SHELL = /bin/sh + MAKE = make + DESTDIR = + + INCL = include +-RES = res/libresolv.a ++RES = res/libresolv.so.${VER} + COMPLIB = compat/lib/lib44bsd.a + + # The default build parameters are given for 4.4 BSD. They should +@@ -108,18 +108,22 @@ + #SHCC = cc + #PIC = -fpic + +-#(Linux - on modern systems, all you need to do is rename or remove +-# compat/include/sys/cdefs.h. See doc/info/Linux for more information.) +-#CC = gcc $(CPPFLAGS) +-#CDEBUG = -g +-#CPPFLAGS = -DSYSV +-#LIBS = -lfl +-#DESTEXEC = /usr/sbin +-#DESTMAN = /usr/man +-#DESTHELP = /usr/lib +-#CATEXT = $$$$N +-#PS = ps -p +-#IOT = IOT ++#(Linux) Look at the end of this Makefile for further patches for Linux. ++CC = gcc -DSYSV ++CDEBUG=-O2 -fomit-frame-pointer -pipe -fno-strength-reduce ++LEX=flex -8 -I ++LIBS = -Wl,-rpath,${DESTDIR}${DESTLIB} -lfl ++PIDDIR = /var/run ++DESTEXEC = /usr/sbin ++DESTMAN = /usr/man ++MANDIR = man ++MANROFF = cat ++DESTHELP = /usr/lib ++CATEXT = $$$$N ++DESTINC = /usr/include/4.9.4 ++INSTALL_COMPAT = install-compat ++PS = ps -p ++IOT = IOT + + #(CRAY) + #CDEBUG = -g +@@ -781,3 +785,8 @@ + 2>&1 | grep '\.[ch]:[0-9]' + + FRC: ++ # Enable the following lines for Linux. ++ if [ -f compat/include/sys/cdefs.h ]; then \ ++ mv compat/include/sys/cdefs.h compat/include/sys/cdefs.h.old; \ ++ fi ++ +diff -urN bind-4.9.4-P1/compat/Makefile bind-4.9.4-P1.ELF.shared.new/compat/Makefile +--- bind-4.9.4-P1/compat/Makefile Tue Dec 5 23:31:10 1995 ++++ bind-4.9.4-P1.ELF.shared.new/compat/Makefile Sun Aug 25 12:20:00 1996 +@@ -55,7 +55,7 @@ + + SHELL= /bin/sh + DESTDIR= +-DESTINC= /usr/include ++DESTINC= /usr/include/4.9.4 + INCL= ../include + COMPINCL= include + DESTLIB= /usr/lib +@@ -74,8 +74,7 @@ + "CPPFLAGS=${CPPFLAGS}" + + install: +- @-echo compat/ is not installed by default +- @-echo make install-compat if you really need this ++ @-echo compat/ is not installed in Linux + + all depend clean:: + @for x in ${SUBDIRS}; do \ +diff -urN bind-4.9.4-P1/compat/include/Makefile bind-4.9.4-P1.ELF.shared.new/compat/include/Makefile +--- bind-4.9.4-P1/compat/include/Makefile Tue Dec 5 23:32:02 1995 ++++ bind-4.9.4-P1.ELF.shared.new/compat/include/Makefile Sun Aug 25 12:20:01 1996 +@@ -55,7 +55,7 @@ + HFILES = + + DESTDIR= +-DESTINC= /usr/include ++DESTINC= /usr/include/4.9.4 + + MARGS= DESTDIR="${DESTDIR}" DESTINC="${DESTINC}" INSTALL="${INSTALL}" + +@@ -68,6 +68,7 @@ + rm -f *~ *.BAK *.CKP *.orig + + install:: ++ -mkdir -p ${DESTDIR}${DESTINC} + -for x in "" ${HFILES}; do \ + if [ -n "$$x" ]; then \ + ${INSTALL} -c -m 444 $$x ${DESTDIR}${DESTINC}/$$x; \ +diff -urN bind-4.9.4-P1/compat/include/sys/Makefile bind-4.9.4-P1.ELF.shared.new/compat/include/sys/Makefile +--- bind-4.9.4-P1/compat/include/sys/Makefile Thu Dec 15 07:23:50 1994 ++++ bind-4.9.4-P1.ELF.shared.new/compat/include/sys/Makefile Sun Aug 25 12:20:01 1996 +@@ -53,10 +53,10 @@ + # - + # --Copyright-- + +-HFILES = cdefs.h bitypes.h ++HFILES = bitypes.h + + DESTDIR= +-DESTINC= /usr/include ++DESTINC= /usr/include/4.9.4 + + all depend: + +@@ -64,6 +64,7 @@ + rm -f *~ *.BAK *.CKP *.orig + + install: ++ -mkdir -p ${DESTDIR}${DESTINC}/sys + for x in ${HFILES}; do \ + ${INSTALL} -c -m 444 $$x ${DESTDIR}${DESTINC}/sys/$$x; \ + done +diff -urN bind-4.9.4-P1/compat/include/sys/bitypes.h bind-4.9.4-P1.ELF.shared.new/compat/include/sys/bitypes.h +--- bind-4.9.4-P1/compat/include/sys/bitypes.h Thu Dec 15 07:23:50 1994 ++++ bind-4.9.4-P1.ELF.shared.new/compat/include/sys/bitypes.h Sun Aug 25 12:20:01 1996 +@@ -67,6 +67,11 @@ + #ifndef __BIT_TYPES_DEFINED__ + #define __BIT_TYPES_DEFINED__ + ++#ifdef __linux__ ++#include ++#endif ++ ++ + /* + * Basic integral types. Omit the typedef if + * not possible for a machine/compiler combination. +diff -urN bind-4.9.4-P1/compat/lib/Makefile bind-4.9.4-P1.ELF.shared.new/compat/lib/Makefile +--- bind-4.9.4-P1/compat/lib/Makefile Sun Jun 2 10:20:33 1996 ++++ bind-4.9.4-P1.ELF.shared.new/compat/lib/Makefile Sun Aug 25 12:20:01 1996 +@@ -75,8 +75,7 @@ + SRCS= mktemp.c strcasecmp.c strerror.c strpbrk.c strtoul.c strdup.c \ + putenv.c setenv.c setitimer.c writev.c ftruncate.c gettimeofday.c + +-OBJS= mktemp.o strcasecmp.o strerror.o strpbrk.o strtoul.o strdup.o \ +- putenv.o setenv.o setitimer.o writev.o ftruncate.o gettimeofday.o ++OBJS= foo.o + + all: lib44bsd.a + +diff -urN bind-4.9.4-P1/compat/lib/foo.c bind-4.9.4-P1.ELF.shared.new/compat/lib/foo.c +--- bind-4.9.4-P1/compat/lib/foo.c Thu Jan 1 01:00:00 1970 ++++ bind-4.9.4-P1.ELF.shared.new/compat/lib/foo.c Sun Aug 25 12:20:01 1996 +@@ -0,0 +1 @@ ++foo(){} +diff -urN bind-4.9.4-P1/doc/bog/Makefile bind-4.9.4-P1.ELF.shared.new/doc/bog/Makefile +--- bind-4.9.4-P1/doc/bog/Makefile Mon Aug 21 00:22:28 1995 ++++ bind-4.9.4-P1.ELF.shared.new/doc/bog/Makefile Sun Aug 25 12:20:01 1996 +@@ -60,8 +60,8 @@ + setup.me manage.me build.me ack.me + ME= -me + NROFF= nroff -rb3 +-PRINTER= -Pdp +-TBL= dtbl $(PRINTER) ++PRINTER= ++TBL= tbl $(PRINTER) + TROFF= ditroff $(PRINTER) + GROFF= groff -Tps -t $(ME) + +diff -urN bind-4.9.4-P1/include/Makefile bind-4.9.4-P1.ELF.shared.new/include/Makefile +--- bind-4.9.4-P1/include/Makefile Mon Aug 21 00:17:44 1995 ++++ bind-4.9.4-P1.ELF.shared.new/include/Makefile Sun Aug 25 12:20:01 1996 +@@ -55,7 +55,7 @@ + HFILES = netdb.h resolv.h + + DESTDIR= +-DESTINC= /usr/include ++DESTINC= /usr/include/4.9.4 + + MARGS= DESTDIR="${DESTDIR}" DESTINC="${DESTINC}" INSTALL="${INSTALL}" \ + MAKE="${MAKE}" +@@ -69,6 +69,7 @@ + rm -f *~ *.BAK *.CKP *.orig + + install:: ++ -mkdir -p ${DESTDIR}${DESTINC} + @set -x; for x in ${HFILES}; do \ + ${INSTALL} -c -m 444 $$x ${DESTDIR}${DESTINC}/$$x; \ + done +diff -urN bind-4.9.4-P1/include/arpa/Makefile bind-4.9.4-P1.ELF.shared.new/include/arpa/Makefile +--- bind-4.9.4-P1/include/arpa/Makefile Thu Jan 12 23:59:24 1995 ++++ bind-4.9.4-P1.ELF.shared.new/include/arpa/Makefile Sun Aug 25 12:20:01 1996 +@@ -54,7 +54,7 @@ + HFILES = inet.h nameser.h + + DESTDIR = +-DESTINC = /usr/include ++DESTINC = /usr/include/4.9.4 + + all depend: + +@@ -62,6 +62,7 @@ + rm -f *~ *.BAK *.CKP *.orig + + install: ++ -mkdir -p ${DESTDIR}${DESTINC}/arpa + set -x; for x in ${HFILES}; do \ + ${INSTALL} -c -m 444 $$x ${DESTDIR}${DESTINC}/arpa/$$x; \ + done +diff -urN bind-4.9.4-P1/man/Makefile bind-4.9.4-P1.ELF.shared.new/man/Makefile +--- bind-4.9.4-P1/man/Makefile Tue Jun 20 22:27:20 1995 ++++ bind-4.9.4-P1.ELF.shared.new/man/Makefile Sun Aug 25 12:20:01 1996 +@@ -31,7 +31,7 @@ + # entries on the fly, use + # MANDIR = man + # +-MANDIR = cat ++MANDIR = man + + # + # Default extension for manual entries. To install the manual entries under +@@ -298,7 +298,7 @@ + # + # Command used to produce manual entries + # +-MK_MANFILE = ( ${EXT_SED_CMD} | ${MANROFF} ) ++MK_MANFILE = ( ${EXT_SED_CMD} ) + + # + # Extensions for the generated manual entries +diff -urN bind-4.9.4-P1/res/Makefile bind-4.9.4-P1.ELF.shared.new/res/Makefile +--- bind-4.9.4-P1/res/Makefile Fri Aug 16 15:14:51 1996 ++++ bind-4.9.4-P1.ELF.shared.new/res/Makefile Sun Aug 25 12:20:01 1996 +@@ -56,22 +56,23 @@ + ## - + ## --Copyright-- + ++VER= 4.9.4.2 + DESTDIR = + DESTLIB = /usr/lib + CC= cc + SHELL= /bin/sh +-CDEBUG= -g ++CDEBUG= -O2 -fno-strength-reduce + INCL = ../include + COMPINCL = ../compat/include +-AR= ar cru +-RANLIB= ranlib ++AR_SH= gcc -shared -o ++RANLIB= : + DEFS= + LOCDEFS= -DUSE_OPTIONS_H + INSTALL= install + + AROBJS= ${ARPREF} ${OBJS} ${ARSUFF} + +-CFLAGS= ${CDEBUG} -I${INCL} -I${COMPINCL} ${DEFS} ${LOCDEFS} ++CFLAGS= -fPIC ${CDEBUG} -I${INCL} -I${COMPINCL} ${DEFS} ${LOCDEFS} + + SRCS= herror.c res_debug.c res_data.c \ + res_comp.c res_init.c res_mkquery.c res_query.c res_send.c \ +@@ -85,17 +86,18 @@ + gethnamaddr.o sethostent.o nsap_addr.o hostnamelen.o \ + inet_addr.o inet_ntop.o inet_pton.o + +-all: libresolv.a ++all: libresolv.so.${VER} + +-libresolv.a: ${OBJS} +- ${AR} libresolv.a ${AROBJS} +- $(RANLIB) libresolv.a ++libresolv.so.${VER}: ${OBJS} ++ ${AR_SH} libresolv.so.${VER} -Wl,-soname,libresolv.so.4 ${AROBJS} + +-install: ${DESTDIR}${DESTLIB}/libresolv.a + +-${DESTDIR}${DESTLIB}/libresolv.a: libresolv.a +- ${INSTALL} -c -o bin -g bin -m 644 libresolv.a ${DESTDIR}${DESTLIB}/ +- ( cd ${DESTDIR}${DESTLIB} ; $(RANLIB) libresolv.a ) ++install: ${DESTDIR}${DESTLIB}/libresolv.so.${VER} ++ ++${DESTDIR}${DESTLIB}/libresolv.so.${VER}: libresolv.so.${VER} ++ ${INSTALL} -c -o bin -g bin -m 755 libresolv.so.${VER} ${DESTDIR}${DESTLIB}/ ++ -(cd ${DESTDIR}${DESTLIB}; ln -sf libresolv.so.${VER} libresolv.so ) ++ -ldconfig + + .c.o: + ${CC} ${CPPFLAGS} ${CFLAGS} -c $*.c +@@ -103,7 +105,7 @@ + ${LDS} mv a.out $*.o + + clean: FRC +- rm -f errs a.out core libresolv.a tags .depend ++ rm -f errs a.out core libresolv.* tags + rm -f *.o *.BAK *.CKP *~ *.orig + + depend: FRC +diff -urN bind-4.9.4-P1/tools/dig.c bind-4.9.4-P1.ELF.shared.new/tools/dig.c +--- bind-4.9.4-P1/tools/dig.c Tue May 21 09:32:40 1996 ++++ bind-4.9.4-P1.ELF.shared.new/tools/dig.c Sun Aug 25 12:20:01 1996 +@@ -630,7 +630,7 @@ + inet_ntoa(_res.nsaddr_list[i] + .sin_addr)); + printf(";; WHEN: %s", +- ctime(&(exectime.tv_sec))); ++ ctime((time_t *)(&(exectime.tv_sec)))); + } + if (!x) + break; /* success */ +@@ -685,7 +685,7 @@ + printf(";; FROM: %s to SERVER: %s\n", + myhostname, srvmsg); + printf(";; WHEN: %s", +- ctime(&(exectime.tv_sec))); ++ ctime((time_t *)(&(exectime.tv_sec)))); + printf(";; MSG SIZE sent: %d rcvd: %d\n", + bytes_out, bytes_in); + } diff --git a/usr.sbin/named/doc/info/Linux-libc b/usr.sbin/named/doc/info/Linux-libc new file mode 100644 index 000000000000..38d220556014 --- /dev/null +++ b/usr.sbin/named/doc/info/Linux-libc @@ -0,0 +1,417 @@ +>>> 4.9.5:1 + +Date: Mon, 28 Oct 1996 06:59:15 EST +To: Paul Vixie (BIND), "H.J. Lu" (libc + ***) +cc: Craig Metz (netdev), bind-workers@vix.com (BIND) +From: Bradley Ward Allen +Subject: BIND shres/linux/README addition + Is&Qs + +Paul, + +Herein please find a patch that I'd like to make sure you somehow +incorporate into the latest BIND version before its final release. +It's all documentation, no code changes. + +diff -Nru bind-4.9.5b6/Makefile bind-4.9.5b6.new/Makefile +--- bind-4.9.5b6/Makefile Tue Oct 8 00:50:58 1996 ++++ bind-4.9.5b6.new/Makefile Mon Oct 28 05:29:16 1996 +@@ -125,9 +125,10 @@ + #CATEXT = $$$$N + #PS = ps -p + #IOT = IOT +-#uncomment next line to build a shared library version of libresolv ++# You probably don't want shared libresolv, read shres/linux/README to decide! +! ++# uncomment next line to build a shared library version of libresolv + #SHRES = shres/linux +-#uncomment next line to build tools and named with shared libresolv ++# uncomment next line to build tools and named with shared libresolv + #RES = $(SHRES)/libresolv.so + # ... and then (for shared) uncomment these lines too: + #SHCC = gcc $(CPPFLAGS) -fomit-frame-pointer -pipe +diff -Nru bind-4.9.5b6/shres/linux/README bind-4.9.5b6.new/shres/linux/README +--- bind-4.9.5b6/shres/linux/README Wed Dec 31 19:00:00 1969 ++++ bind-4.9.5b6.new/shres/linux/README Mon Oct 28 06:04:21 1996 +@@ -0,0 +1,37 @@ ++This is BIND's shres/linux/README file, specific to Linux. ++ ++According to someone who put a copyright on his email so I don't want ++to copy it verbatim (therefore I have to make the information original ++and I get to claim credit; don't you love how backwards copyright laws ++make things sometimes?) in Linux it's better to build an updated ++version of libc with the latest resolver rather than to use ++libresolv.so (shared libresolv), since if you do the latter you will ++have two versions of the resolver functions being used (one for apps ++not linked with -lresolv and one for those linked with -lresolv), ++which affects both memory usage (more) and application behavior (it ++was indicated that this is bad; I can see how it may be in an ++unpredictable way, which is enough to worry about!) In addition, ++there might be some (minor but relevant) compatibility porting that ++gets done when integrating the resolver into libc. ++ ++One approach for the future that I brought up could be to have the ++libc.so ELF library require the libresolv.so library (something my ++source said would require some "stupid libdl tricks"), thus ++eliminating duplicates and making upgrading components easier (as well ++as easier to set up incompatible combinations with unforeseen bad ++interactions). Since I'm an armchair OS theorist, take this paragraph ++as conjecture. My priority was getting this README out quickly to ++warn people of some of the issues (see next paragraph), not in making ++it perfect (in this case). ++ ++I just wanted to make this README before I opened a whole can of worms ++with everybody using different concepts of how to link resolver ++routines into their programs. So: for now (or until further notice) ++use libc unless you know what you're doing, especially package and OS ++distributors. ++ ++Someone make this README better. ++For now, by Bradley Allen ++"my source" in above is Craig Metz , in a thread ++about a test suite of IPv6 applications for Linux he put together I ++was trying. + +Is&Qs means Ideas and Questions. + +All, + + I've always been annoyed that libc's resolver is always ages behind +that of BIND's resolver, before Linus even took an OS class (although +back then I didn't know libc was called libc), and the fact that there +can be bad interactions between named and resolvers not upgraded, and +other problems with not upgrading the resolvers (bugs, etc.) Lately, +I've wanted to use a newer resolver with upcoming IPv6 features +integrated into it, mostly for testing, etc. + + In the Linux ELF environment (where source is generally available +for all components), is it good or bad to have libc require libresolv +and then move all libc resolver support functionality into libresolv? +How hard would this be? Would this work transparently without having +to link (or for that matter, relink) programs with -lresolv? Would it +also work (the same) with programs linked with -lresolv? Would this +be of benefit in other OSs where the (libc) source is not available? + + Would this require wrapper functions from libc to libresolv to +handle porting issues? Would such wrapper functions be possible? +Would they endanger those programs linked with -lresolv since those +programs will be using a different version of the functions than those +linked without -lresolv? If possible, how hard would it be to +eliminate the need for something like wrapper functions? + + + Also, according to Craig's comments on his work in progress (which +looks like a good approach to DNS), using his current getaddrinfo code +with BIND's inet_ntop will result in a core dump. Perhaps inet_ntop +could be made more robust (I don't have details; Craig?) + + In addition, in response to my posting gangly shell scripts to do +conversions between base 85 (RFC1924) and the other IPv6 notations +(mostly out of intrigue, not of dire function), Craig asserted his +opinion that base 85 is evil. I have no big opinion, only very small +ones: it's pretty looking giberish ([e108:724e:f104:e104:8:800:400C:417A] +becomes [%o%rjMA$@*TrQv?=(jE<]), and easier to format in debugging and +logging outputs. :) Other than that, I tend to agree with Craig that +it's kinda hard to make standard now as well as of questionable value, +but thought I'd give it more air. + +Bradley + +P.S. spam helped the proliferation of PGP more than anything else I've +seen. Now, it's become so familiar to use I use it for more mundane +things. Here though I keep it away from the patch. +-----BEGIN PGP SIGNED MESSAGE----- + +md5sum of body above pgp signed text: 3d1e3de216241adcf93fa8650e2cbf02 + +-----BEGIN PGP SIGNATURE----- +Version: 2.6.2 +Comment: Processed by Mailcrypt 3.4, an Emacs/PGP interface + +iQEVAwUBMnSfYJxWhFYc6x9VAQFjlwgAllFApf7jamAtFpLFVUob3lt9meCp+/uq +V2FZNENGg1q+hXmX6N9452FpD1fAYMJ3zyTGy9Lei+Kr3G9vYRQ5KxuEBXRT/Yrj +XjojarPxaOb6V9PYlT5tUVUgcuSRgKb9d3Pwe8oE6dsMUGF5iepllGXyliQA00Tp +7ouoiFWYvMNVZKWYZKjYgvzBmx2VQFzq5tZwsoI8TYBxGIsqOySJ7Lk2qh6IKozx +lTRyP7hxXNcgLEff2/Uv+LKobOXfhj6Cz8kKQRXqMIo0wVdxEUIO1Wyi0xcTHqp8 +EadZoZYCfNKOaE0piERTJiNTCre0aQQB6g1IdEA59JJScM2RYVVHqg== +=ML1B +-----END PGP SIGNATURE----- + + + + +>>> 4.9.5:2 + +Date: Tue, 05 Nov 1996 17:40:14 +0100 +To: ulmo@q.net +cc: paul@vix.com, hjl@gnu.ai.mit.edu, cmetz@inner.net, bind-workers@vix.co + ***m +From: Ulrich Drepper +Subject: Re: BIND shres/linux/README addition + Is&Qs + +From: Bradley Ward Allen +Subject: BIND shres/linux/README addition + Is&Qs +Date: Mon, 28 Oct 1996 06:59:15 -0500 + +> I've always been annoyed that libc's resolver is always ages behind +> that of BIND's resolver, + +This is not true. At most a few days after a new resolver version is +out I upgrade GNU libc. And the GNU libc the upcoming libc for Linux. + + +> In the Linux ELF environment (where source is generally available +> for all components), is it good or bad to have libc require libresolv +> and then move all libc resolver support functionality into libresolv? + +I don't know whether you missed a thread in the mailing +lists/newsgroups I recently participated. I explained why it is not +possible to use the resolver code directly. + +As the code comes in BIND it is not usable (sorry, Paul). The code +suffers from it's heritage. There is no separation between the +different ways to access name information. In the original code using +the file database and using DNS is happily mixed. In the Linux libc's +code there is yet another service (NIS) available. This all is only a +hack. + +For the GNU library I implemented a scheme similar to Solaris' NSS. +For this I needed clean separations. The file lookup, DNS, NIS, etc +are all in separate parts of the library (in fact, all are separate +shared objects). Beside this all functions in the GNU libc NSS +modules are reentrant. + + +Once I have a few more time available I want to make a proposal to +change the official BIND resolver library. The result could be used +with some additional glue code with the same interface as it is now +but systems which do not want to/can use the current code because it +is too restrictive will profit from the change. + + +> How hard would this be? Would this work transparently without having +> to link (or for that matter, relink) programs with -lresolv? Would it +> also work (the same) with programs linked with -lresolv? Would this +> be of benefit in other OSs where the (libc) source is not available? + +This is not possible even for the Linux libc. You would loose the NIS +code. + +-- Uli +--------------. drepper@cygnus.com ,-. Rubensstrasse 5 +Ulrich Drepper \ ,--------------------' \ 76149 Karlsruhe/Germany +Cygnus Support `--' drepper@gnu.ai.mit.edu `------------------------ + + + + +>>> 4.9.5:3 + +Date: Wed, 06 Nov 1996 04:28:04 EST +To: drepper@ipd.info.uni-karlsruhe.de (Ulrich Drepper) +cc: paul@vix.com, hjl@gnu.ai.mit.edu, cmetz@inner.net, bind-workers@vix.co + ***m, + Matthias Urlichs , + ULMO@Q.Net +From: Bradley Ward Allen +Subject: Re: BIND shres/linux/README addition + Is&Qs + +--==_Exmh_2051252028P +Content-Type: text/plain + +Matthias Urlichs +> The alternative to shared libresolv is static libresolv which is even +> worse. +> +> We have three choices... +> - Link statically. Ugly. +> - Link with our -lresolv. Workable. +> - Assume that the standard libc and include files already are up-to-date. +> +> The third option, IMHO, is the most preferable. All we need is a version +> number, for verification. + +Yes, now that I understand this situation better, I see that #2 and #3 +should be the BIND choices. This should go to the BIND README and +Makefile as well. Plus it should be obvious what one is selecting +while in the Makefile, and why. Mentioning both glibc and the HJL +libc and where they stand would be important. + +> The way the GNU libc (which works very well under Linux) does this is to +> delegate all the lookup functions to a sub-library which is +> dynamically-linked into the running program when needed, and which in turn +> uses -lresov. Problem solved (but it is NOT easy to make this work). + +Not easy for who? For the glibc programmers who supposedly already +finished the hard part, or is there more hard stuff to do or hard for +the administrators? + +> >[...] +> You can always port the GNU libc... + +It's about time I find out where GNU libc is. I'll pull the one from +rice-chex (er, what's it called now? ftp.gnu.ai.mit.edu). Is it ready +for public consumption (e.g., I read comp.os.linux.announce and it +doesn't regular there)? + + + +Ulrich Drepper +>> I've always been annoyed that libc's resolver is always ages behind +>> that of BIND's resolver, +> +>This is not true. At most a few days after a new resolver version is +>out I upgrade GNU libc. And the GNU libc the upcoming libc for Linux. + +Ahhh, on linux-kernel and in distributions the other libc is the one +being talked about. + +>For the GNU library I implemented a scheme similar to Solaris' NSS. +>For this I needed clean separations. The file lookup, DNS, NIS, etc +>are all in separate parts of the library (in fact, all are separate +>shared objects). Beside this all functions in the GNU libc NSS +>modules are reentrant. + +That's great. (File + NIS as well as DNS is useful for those who need +it, and the intent is supporting the possible combinations out there +that might happen, therefore File + NIS + DNS is useful. While one +can argue that File is unnecessary since one can just run DNS + named +(even without Internet connectivity), there are currently security +issues solved by using only File or File First (which I just learned +about); when and how is DNS security being implemented? As a part of +IPv[46] security or seperately? Also, NIS is useful for those stuck +with it or if its security is better. I'm babling now ...) + +>Once I have a few more time available I want to make a proposal to +>change the official BIND resolver library. The result could be used +>with some additional glue code with the same interface as it is now +>but systems which do not want to/can use the current code because it +>is too restrictive will profit from the change. + +Also threaded DNS lookups ... + +Alright, I'm sorry, I feel like I'm watching a whole lotta worms +squiggle around right now in front of me, but on the other hand +they're earth worms so I'm not afraid. + +--==_Exmh_2051252028P +Content-Type: application/pgp-signature + +-----BEGIN PGP MESSAGE----- +Version: 2.6.2 + +iQEVAwUBMoBaHpxWhFYc6x9VAQFKywf7BNyd7JfKjg/a8FszJJ4I669pCCV1I41D +iArTy5AVys8FYOXQZhZj5V/jpbwRBgdZiyz2GW/T80xRgscZxbqJiDxLcsx6slPT +QPpTFrSP6OFJyfWdG7jRziMhDMkVhIEruZwuUIoEUbC6iZbvLkqwnaJf7pcNpwqy +gJ5AtnarWU7pYfWgZxqoikq6G+rAqVyoVb7me/T1jEJ+Oa67+06dFDFLaWyybAi4 +15me6WIgzBZFM0iRxKnooc1VjcOiAI1hb0+/iLH3/YyzSexrXi3JgfW3ILpujfEm +Aw3qTy1nI0AmRexsKpKZQ4uiGUCXdQXBJAMwTsklWUhtkZfbGW10pw== +=aqKJ +-----END PGP MESSAGE----- + +--==_Exmh_2051252028P-- + + + +>>> 4.9.5:4 + +Date: Wed, 06 Nov 1996 11:55:05 +0100 +To: ulmo@Q.Net (Bradley Ward Allen) +cc: drepper@ipd.info.uni-karlsruhe.de, paul@vix.com, hjl@gnu.ai.mit.edu, + cmetz@inner.net, bind-workers@vix.com, smurf@smurf.noris.de, + ULMO@Q.Net +From: Matthias Urlichs +Subject: Re: BIND shres/linux/README addition + Is&Qs + +Hi, + +Bradley Ward Allen wrote: +> +>> The way the GNU libc (which works very well under Linux) does this is to +>> delegate all the lookup functions to a sub-library which is +>> dynamically-linked into the running program when needed, and which in turn +>> uses -lresov. Problem solved (but it is NOT easy to make this work). +> +>Not easy for who? For the glibc programmers who supposedly already +>finished the hard part, or is there more hard stuff to do or hard for +>the administrators? +> +The former. I should have said "it _was_ not easy", but I only see the +results... + +>> You can always port the GNU libc... +> +>It's about time I find out where GNU libc is. I'll pull the one from +>rice-chex (er, what's it called now? ftp.gnu.ai.mit.edu). Is it ready +>for public consumption (e.g., I read comp.os.linux.announce and it +>doesn't regular there)? +> +alpha.gnu.ai.mit.edu:/gnu/glibc. People who actually work on ports of glibc +(other than to Linux and The Hurd) don't seem to exist at the moment. If +you want to help change this sad fact, DO IT! + +>Ahhh, on linux-kernel and in distributions the other libc is the one +>being talked about. +> +Right. Linux libc once was a glibc clone, but cooperation between the +people involved didn't work very well... + +>Also threaded DNS lookups ... +> +(A) Find a sensible threading library. Surprise, linux-glibc already has + one. ;-) +(B) Replace all assignments to errno and h_errno with per-thread setter + functions (this is the only difference between the resolver library in + BIND and the one in glibc, as far as I can tell, ignoring for the moment + all code that's in one but not in the other). +(C) Now, if you want to do a DNS lookup in parallel, just spawn off a + thread and do it. Simplicity itself. ;-) + +-- +If some people didn't tell you, +you'd never know they'd been away on vacation. +-- +Matthias Urlichs \ noris network GmbH / Xlink-POP Nürnberg +Schleiermacherstraße 12 \ Linux+Internet / EMail: urlichs@noris.de +90491 Nürnberg (Germany) \ Consulting+Programming+Networking+etc'ing + PGP: 1024/4F578875 1B 89 E2 1C 43 EA 80 44 15 D2 29 CF C6 C7 E0 DE + Click here. 42 + + + +>>> 4.9.5:5 + +Date: Wed, 06 Nov 1996 12:18:13 +0100 +To: smurf@smurf.noris.de +cc: ulmo@q.net, paul@vix.com, hjl@gnu.ai.mit.edu, cmetz@inner.net, + bind-workers@vix.com +From: Ulrich Drepper +Subject: Re: BIND shres/linux/README addition + Is&Qs + +From: Matthias Urlichs +Subject: Re: BIND shres/linux/README addition + Is&Qs +Date: Wed, 6 Nov 1996 11:55:05 +0100 (MET) + +> (B) Replace all assignments to errno and h_errno with per-thread setter +> functions (this is the only difference between the resolver library in +> BIND and the one in glibc, as far as I can tell, ignoring for the moment +> all code that's in one but not in the other). +> (C) Now, if you want to do a DNS lookup in parallel, just spawn off a +> thread and do it. Simplicity itself. ;-) + +It's not that easy. While many of the original resolver files are +still available in the libresolv.so object they are *not* used. All +the DNS lookup functions are written new (based on the original +version) and are now in the libnss_dns.so objects. Substantial +changes had to be done since the original resolver code uses static +variables. + +The libresolv.so lib which comes which glibc is not really what it is +one other systems. It includes some helper functions which are not +used inthe libc itself and it includes the hostname lookup functions +but the names are changed. + +-- Uli +--------------. drepper@cygnus.com ,-. Rubensstrasse 5 +Ulrich Drepper \ ,--------------------' \ 76149 Karlsruhe/Germany +Cygnus Support `--' drepper@gnu.ai.mit.edu `------------------------ diff --git a/usr.sbin/named/doc/info/NCR b/usr.sbin/named/doc/info/NCR new file mode 100644 index 000000000000..251c1ba392f1 --- /dev/null +++ b/usr.sbin/named/doc/info/NCR @@ -0,0 +1,142 @@ +Delivery-Date: Mon, 10 Jul 1995 18:47:44 -0700 +Return-Path: bind-workers-request@vix.com +Received: by gw.home.vix.com id AA25952; Mon, 10 Jul 95 18:45:32 -0700 +Received: by gw.home.vix.com id AA25948; Mon, 10 Jul 95 18:45:31 -0700 +Received: from cfctech.UUCP by heifetz.msen.com with UUCP + (Smail3.1.28.1 #12) id m0sVU1P-0009kIC; Mon, 10 Jul 95 21:21 EDT +Received: from serve.tech.mis.cfc.com by cfctech.cfc.com with smtp + (Smail3.1.27.1 #3) id m0sVTTC-0002oyC; Mon, 10 Jul 95 20:46 EDT +Received: (from kevin@localhost) by serve.tech.mis.cfc.com (8.7.Beta.4/8.6.9) with UUCP id UAA23780; Mon, 10 Jul 1995 20:49:30 -0400 (EDT) +Message-Id: <199507110049.UAA23780@serve.tech.mis.cfc.com> +Subject: BIND 4.9.3-BETA24 Support for NCR (ne AT&T-GIS) 3000, MP-RAS 2.03.01, vendor-supplied "cc" +To: bind-workers@vix.com +Date: Mon, 10 Jul 1995 20:49:30 -0400 (EDT) +From: "Kevin Darcy" +X-Mailer: ELM [version 2.4 PL24alpha3] +Content-Type: text + +The only really squirrelly things about the NCR 3000 OS, as compared to other +i386 SRV4 platforms, are: + + a) the networking code can't tolerate the IP_OPTIONS stuff + (getsockopt() returns an error (EOPNOTSUPP), thereby triggering + closure of the fd). This diff hacks out the IP_OPTIONS code + + b) -D_INET_H_ is necessary to suppress certain function declarations + in arpa/inet.h, which on the NCR 3000 (as of release 2.03.01) are + incompatible with the corresponding declarations in the + subsequently-#included /usr/include/netinet/in.h + + c) unlike other SVR4's, NCR 3000's require a combination of + DESTSBIN = /usr/etc, DESTEXEC = /usr/etc, and XFER_INDOT = (null) + to be compatible with the vendor-supplied pathnames + +Please include this diff, either as a replacement for the old doc/info/NCR, or +as "doc/info/NCR.too" (the doc/info/RUNSON patch band can of course simply be +incorporated into the general release, if desired): the old doc/info/NCR (from +Anders Tjader) reports serious fuzzes and offsets when patched, and does not +result in a compilable BIND on MP-RAS version 2.03.01. + + - Kevin + +*** ../bind-4.9.3-BETA24.dist/doc/info/RUNSON Sun Jun 25 02:45:07 1995 +--- doc/info/RUNSON Mon Jul 10 20:15:50 1995 +*************** +*** 17,22 **** +--- 17,23 ---- + HP-UX B09.00 hp300 gcc2.5.7 piete brooks production primary + HP-UX A09.04 hp800 cc todd martin production secondary + IRIX 5 mips mips cc paul vixie courtesy of SGI ++ NCR MP-R2.03.01 i386 cc kevin darcy "compiles and runs" + NEXTSTEP3.0 m68k gcc1.39 artur romao "compiles and runs" + NEXTSTEP3.2 m68k cc scott mcintyre "compiles and runs" + NEXTSTEP3.3 hppa cc allan nathanson "compiles and runs" +*** ../bind-4.9.3-BETA24.dist/Makefile Fri Jul 7 03:33:32 1995 +--- Makefile Mon Jul 10 19:46:02 1995 +*************** +*** 477,498 **** + #set to empty. also, use 'make install' at your own risk. + #don't include sys/stream.h via netinet/in.h by defining _SYS_STREAM_H. + #CC = gcc $(CPPFLAGS) +! #CPPFLAGS = -DSVR4 -DBSD_COMP -DUSE_POSIX -D_SYS_STREAM_H +! #CDEBUG = -O +! #LEX = lex + #INDOT = in. +! #XFER_INDOT = +! #PIDDIR = /etc +! #INSTALL = /usr/ucb/install +! #LIBS = -ll -lsocket -lnsl +! #DESTSBIN = /usr/sbin +! #DESTEXEC = /usr/sbin +! #LDS = @: +! #RANLIB = @: +! #ARPREF = `lorder +! #ARSUFF = | tsort` +! #CATEXT = $$$$N +! #PS = ps -p + + #(ISC4.0 using GCC) + #CC = gcc -DISC -posix +--- 477,498 ---- + #set to empty. also, use 'make install' at your own risk. + #don't include sys/stream.h via netinet/in.h by defining _SYS_STREAM_H. + #CC = gcc $(CPPFLAGS) +! CPPFLAGS = -DSVR4 -DBSD_COMP -DUSE_POSIX -D_INET_H_ -D_SYS_STREAM_H +! CDEBUG = -O +! LEX = lex + #INDOT = in. +! XFER_INDOT = +! PIDDIR = /etc +! INSTALL = /usr/ucb/install +! LIBS = -ll -lsocket -lnsl +! DESTSBIN = /usr/etc +! DESTEXEC = /usr/etc +! LDS = @: +! RANLIB = @: +! ARPREF = `lorder +! ARSUFF = | tsort` +! CATEXT = $$$$N +! PS = ps -p + + #(ISC4.0 using GCC) + #CC = gcc -DISC -posix +*** ../bind-4.9.3-BETA24.dist/named/ns_main.c Thu Jun 29 05:26:22 1995 +--- named/ns_main.c Mon Jul 10 19:22:09 1995 +*************** +*** 742,775 **** + (void) my_close(rfd); + continue; + } +- #if defined(IP_OPTIONS) +- len = sizeof ip_opts; +- if (getsockopt(rfd, IPPROTO_IP, IP_OPTIONS, +- (char *)ip_opts, &len) < 0) { +- syslog(LOG_INFO, +- "getsockopt(rfd, IP_OPTIONS): %m"); +- (void) my_close(rfd); +- continue; +- } +- if (len != 0) { +- nameserIncr(from_addr.sin_addr, nssRcvdOpts); +- if (!haveComplained((char*) +- from_addr.sin_addr.s_addr, +- "rcvd ip options")) { +- syslog(LOG_INFO, +- "rcvd IP_OPTIONS from [%s].%d (ignored)", +- inet_ntoa(from_addr.sin_addr), +- ntohs(from_addr.sin_port)); +- } +- if (setsockopt(rfd, IPPROTO_IP, IP_OPTIONS, +- NULL, 0) < 0) { +- syslog(LOG_INFO, +- "setsockopt(!IP_OPTIONS): %m"); +- (void) my_close(rfd); +- continue; +- } +- } +- #endif + if (setsockopt(rfd, SOL_SOCKET, SO_SNDBUF, + (char*)&sbufsize, sizeof(sbufsize)) < 0){ + syslog(LOG_INFO, +--- 742,747 ---- + diff --git a/usr.sbin/named/doc/info/RFS b/usr.sbin/named/doc/info/RFS new file mode 100644 index 000000000000..d3399ac66cc0 --- /dev/null +++ b/usr.sbin/named/doc/info/RFS @@ -0,0 +1,26 @@ +Return-Path: vixie +Received: by gw.home.vix.com id AA18779; Tue, 7 Dec 93 16:51:00 -0800 +Message-Id: <9312080051.AA18779@gw.home.vix.com> +To: Nicholas_Briggs.PARC@xerox.com +Cc: paul +Subject: Re: nsquery in BIND release +In-Reply-To: Your message of Mon, 06 Dec 93 17:43:46. + <93Dec6.174359pst.14497(2)@alpha.xerox.com> +Date: Tue, 07 Dec 93 16:50:59 PST +From: Paul A Vixie + +i'll release-note this fact. thanks. + +> Date: Mon, 6 Dec 1993 17:43:46 PST +> From: Nicholas_Briggs.PARC@xerox.com +> Subject: nsquery in BIND release +> To: paul@vix.com +> Cc: Nicholas_Briggs.PARC@xerox.com +> Message-Id: <93Dec6.174359pst.14497(2)@alpha.xerox.com> +> +> Paul -- I didn't notice this before, but the "nsquery" tool in BIND conflicts +> with the SunOS (4.1.3) /usr/bin/nsquery, which is the RFS name server query +> tool. +> +> \nick + diff --git a/usr.sbin/named/doc/info/RUNSON b/usr.sbin/named/doc/info/RUNSON new file mode 100644 index 000000000000..09bdbaa73b2b --- /dev/null +++ b/usr.sbin/named/doc/info/RUNSON @@ -0,0 +1,44 @@ + Op. Sys. CPU Compilers Reported Other +Name Rev Arch Used By Notes +======= ======= ======= =============== =============== =============== +A/UX 3.1.1 m68k gcc2.6.3 phillip porch "compiles and runs" +AIX 3.2.3e power bsdcc c. wolfhugel production secondary +AIX 3.2.5 rs6000 bsdcc craig metz "compiles and runs" +BSD 4.4 hp300 gcc2.5.8 mark davies compiles and runs +BSD/386 1.0 i386 gcc1.41,2.5.8 paul vixie production primary +BSD/386 1.1 i386 gcc1.41,2.5.8 paul vixie production secondary +CnvxOS 10.2 c38 gcc2.6.3 jukka ukkonen production secondary +DomainO 10.3.5 m68k cc 6.8 don lewis production secondary +DomainO 10.4.0 m68k cc todd martin production secondary +HP-UX 7.0 hp300 cc alan barrett needs "struct linger" +HP-UX 9.00 hp800 cc,gcc2.5.8 m. corrigan "compiles and works" +HP-UX A09.01 hp700 cc don lewis "compiles and runs" +HP-UX A09.01 hp700 gcc2.5.7 piete brooks production secondary +HP-UX B09.00 hp300 gcc2.5.7 piete brooks production primary +HP-UX A09.04 hp800 cc todd martin production secondary +IRIX 5 mips mips cc paul vixie courtesy of SGI +NEXTSTEP3.0 m68k gcc1.39 artur romao "compiles and runs" +NEXTSTEP3.2 m68k cc scott mcintyre "compiles and runs" +NEXTSTEP3.3 hppa cc allan nathanson "compiles and runs" +NEXTSTEP3.3 i486 cc allan nathanson "compiles and runs" +NEXTSTEP3.3 m68k cc allan nathanson "compiles and runs" +NetBSD 1.0 i386 gcc2.4.5 alan barrett production primary +OSF/1 V1.3 axp gcc2.5.7 piete brooks production secondary +OSF/1 V2.0 axp cc c. wolfhugel production secondary +OSF/1 V3.0 axp cc c. wolfhugel production secondary +RISC/os 4.52 mips mips cc r. perini production primary +SCO ODT3.0 i386 gcc2.5.8 m. meiszl "compiles and runs" +Solaris 2.2 sparc gcc2.5.8 artur romao production primary +Solaris 2.3 sparc gcc2.5.8 ian dickinson production secondary +Solaris 2.4 sparc gcc2.6.3 ian dickinson production secondary +Solbrne 4.1A.1 sparc gcc2.5.8 ian dickinson "compiles and runs" +SunOS 4.1 m68k gcc2.5.8 ian dickinson production secondary +SunOS 4.1.1 m68k gcc2.4.5 piete brooks "compiles and clients" +SunOS 4.1.1 sparc cc alan barrett "compiles and works" +SunOS 4.1.3 sparc gcc2.5.8 ian dickinson production primary +SunOS 4.1.3 sparc sun c 2.0.1 tom limoncelli "works w/ jumbo patch" +SunOS 4.1.3U1 sparc cc alan barrett production primary +SunOS 4.1.3U1 sparc gcc2.4.5 craig leres "compiles and works" +SunOS 4.1.3U1 sparc gcc2.6.2 don lewis production primary +ULTRIX 4.2A mips mips cc paul vixie production secondary +ULTRIX 4.3 vax vax pcc paul vixie void* isn't anonymous diff --git a/usr.sbin/named/doc/info/SCO b/usr.sbin/named/doc/info/SCO new file mode 100644 index 000000000000..bcf87b807541 --- /dev/null +++ b/usr.sbin/named/doc/info/SCO @@ -0,0 +1,110 @@ +Most of the work on SCO port of BIND 4.9.3 has been done by Michael A Meiszl. + +The following represents my experience from building various BETA versions +on SCO 3.2v4.2. + +The following procedure is known to build and install BIND 4.9.3 (as of +BETA11 patch 3) on SCO 3.2v4.2, using gcc 2.5.8. + + 0) Backup old named and zone files. cd to named distribution's + root directory. + 1) make links + 2) cd native.b + mkdir include/sys + cat >include/sys/param.h < + #include "/usr/include/sys/param.h" + EOF + 3) Edit Makefile, search for string SCO and uncomment SCO specific + lines. Based on my personal experience (building perl on SCO + system after the BIND's compat library and include files have + been installed), I *strongly* suggest to leave the INSTALL_COMPAT + line commented out. + 4) make + 5) su + 6) kill -9 `cat /etc/named.pid` + 7) If you are secondary server, I suggest to always remove all + secondary zone files. + 8) make install + You need the scoinst (BSD style install emulation) script. There + are various such scripts on the net. + 9) /etc/named + 10) Be your CMOS battery with you. + +You also probably need to update /usr/lib/libsocket.a with the new +resolver routines. This task is a bit difficult and I am currently +(7-Nov-94) trying to write shell script to automate this job. +Alternatively, you can stay with separate libresolv.a and change each +occurence of -lsocket in Makefiles to -lresolv -lsocket. Anyway, you +must relink your applications to take the advantage of new resolver +routines (if nothing else, sendmail is good candidate). Personally, +I am preferring libsocket.a update. + +Eduard Vopicka, + +On Dec 8, 2:38am, Paul A Vixie wrote: +} Subject: Re: b11p3 on SCO - problems and fixes +} thanks, this will all be in b11p4 +}-- End of excerpt from Paul A Vixie + +Thanks! + +And another SCO specific one: SCO's kill executable requires *numeric* +specification of signal (!!!). This causes the ndc shell script to fail +miserably - things like `kill -HUP 12345' on SCO simply do nothing w/o +any error message. Maybe this results to kill(0,pid)???. So it would be +essential to have the following patch included in conf/Info.SCO. + +Brgds, + +Ed + +*** named/ndc~ Thu Dec 8 11:29:10 1994 +--- named/ndc Thu Dec 8 11:31:27 1994 +*************** +*** 26,37 **** + echo $ARG + case $ARG in + status) echo "$PS";; +! dumpdb) kill -INT $PID && echo Dumping Database;; +! reload) kill -HUP $PID && echo Reloading Database;; +! stats) kill -IOT $PID && echo Dumping Statistics;; +! trace) kill -USR1 $PID && echo Trace Level Incremented;; +! notrace) kill -USR2 $PID && echo Tracing Cleared;; +! querylog|qrylog) kill -WINCH $PID && echo Query Logging Toggled;; + start) + [ $RUNNING -eq 1 ] && { + echo "$0: start: named (pid $PID) already running" +--- 26,37 ---- + echo $ARG + case $ARG in + status) echo "$PS";; +! dumpdb) kill -2 $PID && echo Dumping Database;; +! reload) kill -1 $PID && echo Reloading Database;; +! stats) kill -6 $PID && echo Dumping Statistics;; +! trace) kill -16 $PID && echo Trace Level Incremented;; +! notrace) kill -17 $PID && echo Tracing Cleared;; +! querylog|qrylog) kill -20 $PID && echo Query Logging Toggled;; + start) + [ $RUNNING -eq 1 ] && { + echo "$0: start: named (pid $PID) already running" + +-- +"Eduard Vopicka, Computing Centre, Prague University of Economics, +W. Churchill Square 4, CZ 130 67 Prague 3" + +Also from Eduard Vopicka , Fri, 7 Jun 1996 15:01:39 +0200: + +The build procedure for SCO OSE 5 is basically the same as for 3.2v4.2 +(described at the top of this document), except for that the hack in +step 2) is a bit different for SCO OSE5: + +cd native.b +[ -d include/sys ] || mkdir include/sys +cat >include/sys/param.h < +# include +#endif +EOF +ln -sf /usr/include/sys/param.h include/sys/sys.param.h diff --git a/usr.sbin/named/doc/info/SCO-2 b/usr.sbin/named/doc/info/SCO-2 new file mode 100644 index 000000000000..0ec44009955b --- /dev/null +++ b/usr.sbin/named/doc/info/SCO-2 @@ -0,0 +1,84 @@ +Received: by gw.home.vix.com id AA04543; Sat, 30 Dec 95 17:22:47 -0800 +Received: by birdy.ico.net (5.65/940922.1-mjl) + id AA07605; Sat, 30 Dec 95 17:22:44 -0800 +Return-Path: +Message-Id: <9512310122.AA07605@birdy.ico.net> +From: martin@ico.net (Martin J. Levy - ICOnetworks) +X-Mailer: SCO System V Mail (version 3.2) +To: paul@vix.com +Subject: bind release 4.9.3 BETA 34 +Date: Sat, 30 Dec 95 17:22:43 PST + +Paul, + +I'v been using bind on SCO Open Desktop 3.0 and you like to throw these +build/make issues your way. + +1) I know the notes for SCO are in "..../doc/info/SCO", but I wanted to bring + to your attention the fact that the "param.h" hack noted there is, well, + a hack. I have include here the list of files that have been edited to + specificly include "types.h". This is not needed on any other OS, but + would not hurt to have in the code. + + Ah.. Wait a second. If an OS does not protect the types.h file with a + unique "#ifdef/#endif" then this will not be a good edit to do. + + You decide. Here in the list of files I edited. I added the include of + "sys/types.h" as the first include. + + res/gethnamaddr.c + res/getnetent.c + res/getnetnamadr.c + res/herror.c + res/inet_addr.c + res/nsap_addr.c + res/res_comp.c + res/res_data.c + res/res_debug.c + res/res_init.c + res/res_mkquery.c + res/res_query.c + res/res_send.c + res/sethostent.c + + named/db_lookup.c + named/db_reload.c + named/db_save.c + named/db_update.c + named/named-xfer.c + named/ns_forw.c + named/ns_init.c + named/ns_main.c + named/ns_ncache.c + named/ns_req.c + named/ns_resp.c + named/ns_stats.c + named/ns_validate.c + + tools/nslookup/debug.c + tools/nslookup/getinfo.c + tools/nslookup/list.c + tools/nslookup/main.c + tools/nslookup/send.c + tools/nslookup/skip.c + +2) I used the standard "cc" compiler from SCO and got the following errors... + + cc -DSYSV -DSYSV3 -O -I../include -I../compat/include -D_PATH_XFER=\"/etc/named-xfer\" -D_PATH_PIDFILE=\"/etc/named.pid\" -c ns_forw.c + ns_forw.c + ns_forw.c(406) : warning C4203: '.' : expected left operand to be lvalue + ns_forw.c(422) : warning C4203: '.' : expected left operand to be lvalue + ns_forw.c(431) : warning C4203: '.' : expected left operand to be lvalue + + The offending lines look like this.... + + if (data_inaddr(dp->d_data).s_addr == INADDR_ANY) { + + I could recommend that you change this code to use a local variable, but + when I checked the assembly code, All looked ok. + +Thats all for now. Thanks for the good work!. + +Martin Levy +ICOnetworks + diff --git a/usr.sbin/named/doc/info/Solaris b/usr.sbin/named/doc/info/Solaris new file mode 100644 index 000000000000..aaef29686210 --- /dev/null +++ b/usr.sbin/named/doc/info/Solaris @@ -0,0 +1,85 @@ +Replied: Thu, 28 Dec 1995 21:00:45 -0800 +Replied: "dupuy@smarts.com (Alexander Dupuy) " +Received: by gw.home.vix.com id AA26157; Tue, 26 Dec 95 14:42:31 -0800 +Received: by gw.home.vix.com id AA26153; Tue, 26 Dec 95 14:42:29 -0800 +Received: from just.smarts.com by mail.smarts.com (4.1/SMI-4.1) + id AA11178; Tue, 26 Dec 95 17:42:30 EST +Organization: System Management ARTS - "Minds Over Networks" +Received: by just.smarts.com (5.x/SMI-SVR4) + id AA29347; Tue, 26 Dec 1995 17:42:30 -0500 +Date: Tue, 26 Dec 1995 17:42:30 -0500 +From: dupuy@smarts.com (Alexander Dupuy) +Message-Id: <9512262242.AA29347@just.smarts.com> +To: bind-workers@vix.com +Subject: BIND and Solaris shared library +X-Sun-Charset: US-ASCII + +Sun has released a patch for Solaris 2.4 which addresses a security hole in +their implementation of name/address resolution using DNS. Anyone who is +running Solaris 2.4 with DNS specified in their /etc/nsswitch.conf file should +apply this patch. This is true whether you are using the BIND 4.9.3 beta +supplied version of the resolver shared library or the stock Solaris version. + +A note should be added to the shres/solaris ISSUES file telling users that +they should get and apply patch 102165-02 to their Solaris system if they want +to use DNS as a hostname resolution method. + +The relevant portion of the README file from the patch is included below. +Note that this patch is only available for the SPARC architecture, although +the security hole applies to x86 architecture as well. + +@alex + + +Patch-ID# 102165-02 +Keywords: DNS spoofing security nss_dns.so.1 +Synopsis: SunOS 5.4: nss_dns.so.1 fixes +Date: Dec/13/95 + +Solaris Release: 2.4 + +SunOS Release: 5.4 + +Unbundled Product: + +Unbundled Release: + +Topic: SunOS 5.4: nss_dns.so.1 fixes + +BugId's fixed with this patch: 1174876 1207777 + +Changes incorporated in this version: 1207777 + +Relevant Architectures: sparc + +Files included with this patch: + +/usr/lib/nss_dns.so.1 + +Problem Description: + +1207777 adding the 102167 patch adds a new security hole and increases traffic/delays + +(from 102165-01) + +1174876 DNS spoofing possible in 5.3 when using DNS via /usr/lib/nss_dns.so.1 + +This patch protects the Name Service Switch (DNS Domain Name Service) backend +from DNS spoofing. I.e. a hacker maps an IP address they own to a hostname +that someone trusts (ex. 10.1.0.35 owned by Hacker.COM, to Trusted-host.my.com) +allowing them to perhaps rlogin to another machine. The solution done in 4.x +and the resolver library is after doing a gethostbyaddr() to do a gethostbyname() and check that the IP address given is one that belongs to +the returned hostname. + +If IP address passed into gethostbyaddr() does not match an IP address returned +from the gethostbyname() call a SPOOFING error message is syslog-ed and the gethostbyaddr() call returns failure (NOTFOUND). If the gethostbyname() call +FAILS, then the hostname is returned. This is because some people like to register IP addresses BUT not the hostnames in DNS (don't ask why, security through obscurity I guess). + +(We will ignore the entire question of basing "security" on IP addresses) + +-- +inet: dupuy@smarts.com +Member of the League for Programming Freedom -- write to lpf@uunet.uu.net +GCS d?@ H s++: !g p? !au a w v US+++$ C++$ P+ 3 L E++ N+(!N) K- W M V- po- Y+ + t+ !5 j R G? tv-- b++ !D B- e>* u+(**)@ h--- f+ r++ n+ y+* + diff --git a/usr.sbin/named/doc/info/SunOS b/usr.sbin/named/doc/info/SunOS new file mode 100644 index 000000000000..2324cda8f4eb --- /dev/null +++ b/usr.sbin/named/doc/info/SunOS @@ -0,0 +1,4 @@ +Installation on SunOS 4.1.x is covered in shres/sunos/{INSTALL,ISSUES,PROBLEMS}. + +(Even if you're not changing the shared library, there are SunOS issues +such as UDP checksums that you should read about in shres/sunos/ISSUES.) diff --git a/usr.sbin/named/doc/info/SunSecurity b/usr.sbin/named/doc/info/SunSecurity new file mode 100644 index 000000000000..15e6180c1c29 --- /dev/null +++ b/usr.sbin/named/doc/info/SunSecurity @@ -0,0 +1,33 @@ +Return-Path: bryan@notorious.rs.itd.umich.edu +Received: by gw.home.vix.com; id AA16267; Tue, 12 Oct 93 12:38:33 -0700 +Received: from notorious.rs.itd.umich.edu by notorious.rs.itd.umich.edu (5.67/2.25) + with SMTP id AA08439; Tue, 12 Oct 93 15:38:31 -0400 +Message-Id: <9310121938.AA08439@notorious.rs.itd.umich.edu> +To: ken@uunet.uu.net (Ken Dahl) +Cc: Paul A Vixie +From: Bryan Beecher +Subject: bind 4.9.2 question +Date: Tue, 12 Oct 93 15:38:30 -0400 +Sender: bryan@notorious.rs.itd.umich.edu + +> I was rebuilding libc.so on our suns to include the bind 4.9.2 +> code, and wanted to disable the SUNSECURITY. However, I noticed that in +> conf/options.h where it forces SUNSECURITY to be defined on suns, it +> claims that it is "mandatory on suns and rlogin etc. depend on this". +> We've disabled this is previous versions of the bind code without +> noticable problems. What are the implications of disabling SUNSECURITY +> on suns? + +The C library shipped with SunOS 4.1.3 (and perhaps earlier and later +versions) has some added "security code" inside of gethostbyaddr(). This +code consists of doing a gethostbyname() on the result of a +gethostbyaddr(), and then checking to see if one of the addresses returned +by gethostbyname() matches the original argument to gethostbyaddr(). In +other words, it checks to see that a host has both a PTR record, and a +matching A record. + +If you remove the Sun-supplied gethostbyaddr(), and replace it with the one +provided by BIND 4.9.2, and you want the same behavior, then I believe the +SUNSECURITY #ifdef is necessary. If you want a less "fussy" +gethostbyaddr(), then leaving it out is OK. + -- bryan diff --git a/usr.sbin/named/doc/info/SunSecurity-too b/usr.sbin/named/doc/info/SunSecurity-too new file mode 100644 index 000000000000..fbd7af49bf1c --- /dev/null +++ b/usr.sbin/named/doc/info/SunSecurity-too @@ -0,0 +1,58 @@ +Received: by gw.home.vix.com id AA13091; Fri, 5 Aug 94 12:57:18 -0700 +Received: by gw.home.vix.com id AA13087; Fri, 5 Aug 94 12:57:16 -0700 +Message-Id: <9408051957.AA13087@gw.home.vix.com> +Received: from duke.CS.UNLV.EDU by JIMI.CS.UNLV.EDU id aa14838; + 5 Aug 94 12:42 PDT +To: bind-workers@vix.com +Subject: SUNSECURITY +Date: Fri, 05 Aug 1994 12:42:40 -0700 +From: Greg Wohletz + +[ Steve Bellovin's comment on this: + the advice in conf/Info.SunSecurity-too is wrong and dangerous. Sun + systems have at least one daemon (rpc.mountd) that can't be protected + by Wietse's code but rely on SUNSECURITY for protection. + --vix, 08dec94 ] + +We don't use SUNSECURITY on our suns, we use a package called log_tcp, +which consists of a program called tcpd which is invoked by inetd and +does some checking (one of the things it checks (if you define +PARANOID) is the very thing that the SUNSECURITY code checks. It will +also log your connections if you want it to. + +Anyway I was thinking that the SUNSECURITY code could potentially be +ripped out of the resolver library and just include the tcpd code in +the contrib section and direct the sun folks to use it. + +Certainly this would be a less messy solution. + +We've been using this code for a couple of years and have not had any +problems with it. I've included a blurb below if anyone is +interested. + + --Greg +@(#) BLURB 1.4 91/10/02 23:02:02 + +This package provides a couple of tiny programs that log requests for +internet services (examples: TFTP, EXEC, FTP, RSH, TELNET, RLOGIN, +FINGER, SYSTAT). Optional features are: access control based on pattern +matching, and protection against rsh and rlogin attacks from hosts that +pretend to have someone elses host name. + +The programs are nothing but small network daemon front ends. By +default, they just log the remote host name and then invoke the real +network daemon daemon, without requiring any changes to existing +software or configuration files. + +Connections are reported through the syslog(3) facility. Each record +contains a time stamp, the remote host name and the name of the service +requested. The information can be useful to detect unwanted activities, +especially when logfile information from several hosts is merged. + +Enhancements over the previous release are: support for datagram (UDP +and RPC) services, and execution of shell commands when a (remote host, +requested service) pair matches a pattern in the access control tables. + + Wietse Venema (wietse@wzv.win.tue.nl), + Eindhoven University of Technology, + The Netherlands. diff --git a/usr.sbin/named/doc/info/Ultrix b/usr.sbin/named/doc/info/Ultrix new file mode 100644 index 000000000000..90b1c933babd --- /dev/null +++ b/usr.sbin/named/doc/info/Ultrix @@ -0,0 +1,108 @@ +-------- Message 1 of 2 + +Return-Path: bind-workers-request +Received: by gw.home.vix.com id AA15469; Wed, 15 Dec 93 06:29:03 -0800 +Received: by gw.home.vix.com id AA15463; Wed, 15 Dec 93 06:29:00 -0800 +Received: from monkeyboy.WPI.EDU (gshapiro@monkeyboy.WPI.EDU [130.215.24.62]) by bigboote.WPI.EDU (8.6.5.Beta3/8.6) with ESMTP id JAA09389; Wed, 15 Dec 1993 09:28:50 -0500 +Date: Wed, 15 Dec 93 09:08:10 +0000 (GMT) +From: "Nigel Metheringham" +To: Gregory Neil Shapiro +Subject: Re: sendmail 8 and name resolution +Cc: Paul A Vixie , bind-workers@vix.com, aej@WPI.EDU + +} [on compilation of things linked with bind 4.9.2 libresolv] +} I tried to do this but ran into problems. When compiling sendmail +} using libresolv.a from the BIND 4.9.2, the compilation fails since +} things are multiply defined: +} + +} [compilation] +} ld: +} /lib/libc.a(gethostent.o): sethostent: multiply defined +} /lib/libc.a(gethostent.o): endhostent: multiply defined +} /lib/libc.a(gethostent.o): gethostbyname: multiply defined +} /lib/libc.a(gethostent.o): gethostbyaddr: multiply defined +} *** Error code 1 +} + + +This must be a bug in the MIPs compiler set - we see very much the +same problem on a MIPs system running 4.52. I put in a bug report +about this a couple of years back (slightly different version of the +OS, but same symptoms). Its relatively complex in that you cannot +reproduce it in a small file (well I can't!). + +My hack to get round it was to make a new libresolv.a (actually for +me its libresolv2.a) with the following defines on the cc command +line + -Dgethostbyname=Gethostbyname + -Dgethostbyaddr=Gethostbyaddr +and compile sendmail (or other package with same problems) with the +same defines. Its messy but it works. + +[To complicate matters some programs of similar complexity and +network functionality to sendmail do suffer from this problem when +compiling, and some don't!] + + Nigel. +--- +# Nigel Metheringham -- (NeXT) EMail: nigelm@ohm.york.ac.uk # +# System Administrator, Electronics Dept, University of York # +# York YO1 5DD. Phone: +44 904 432374, Fax: +44 904 432335 # + +-------- Message 2 of 2 + +From: Gregory Neil Shapiro +Received: from localhost (gshapiro@localhost) by monkeyboy.WPI.EDU (8.6.5.Beta3/8.6) id JAA05398; Wed, 15 Dec 1993 09:28:49 -0500 +Date: Wed, 15 Dec 1993 09:28:49 -0500 +Message-Id: <199312151428.JAA05398@monkeyboy.WPI.EDU> +To: Paul A Vixie +Cc: aej@WPI.EDU, bind-workers@vix.com +Subject: Re: sendmail 8 and name resolution +In-Reply-To: +References: + +We think we have figured out what local_hostname_length does by trying it +with different inputs. We can't be sure this is its only purpose. It +seems to return the length of a local (in domain) hostname (without domain) +if the hostname has the domain name appended. For example, our domain name +is WPI.EDU. If we called local_hostname_length("manyjars.wpi.edu"), it +returns 8. Other examples: + +Host name Length returned +--------- --------------- +manyjars.wpi.edu 8 +manyjars 0 +nic.near.net 0 + +With this in mind, we wrote this function: + +#include +#include +#include +#include +#include +#include +#include +#include + +int local_hostname_length(hostname) + char *hostname; +{ + int len_host, len_domain; + + if (!*_res.defdname) res_init(); + if (((len_host = strlen(hostname)) > (len_domain = strlen(_res.defdname))) && + (strcasecmp(hostname + len_host - len_domain,_res.defdname) == 0) && + hostname[len_host - len_domain - 1] == '.') + return(len_host - len_domain - 1); + else + return(0); +} + +Maybe this can be included in 4.9.2's libresolv.a so it will work properly +under Ultrix without pulling in libc.a's gethostent.o. If anyone has more +information on Ultrix's local_hostname_length, please let me know so we can +come up with a more complete replacement. + +-------- End 2 Messages diff --git a/usr.sbin/named/doc/info/Ultrix-VAX b/usr.sbin/named/doc/info/Ultrix-VAX new file mode 100644 index 000000000000..90ae65bcf71d --- /dev/null +++ b/usr.sbin/named/doc/info/Ultrix-VAX @@ -0,0 +1,83 @@ +Received: by gw.home.vix.com id AA21040; Tue, 19 Jul 94 15:20:16 -0700 +Received: from localhost (mailer@localhost) by gatekeeper.ray.com (8.6.4/8.6.5) id SAA15612 for ; Tue, 19 Jul 1994 18:17:16 -0400 +Received: from sccux1.msd.ray.com by gatekeeper.ray.com; Tue Jul 19 18:18:31 1994 +Received: (from wag@localhost) by sccux1.msd.ray.com (8.6.9/8.6.9) id SAA29713 for ; Tue, 19 Jul 1994 18:18:05 -0400 +From: Bill Gianopoulos +Message-Id: <199407192218.SAA29713@sccux1.msd.ray.com> +Subject: Info.Ultrix.VAX +To: (Paul A Vixie) +Date: Tue, 19 Jul 1994 18:18:04 -0400 (EDT) +X-Mailer: ELM [version 2.4 PL23] +Mime-Version: 1.0 +Content-Type: text/plain; charset=US-ASCII +Content-Transfer-Encoding: 7bit +Content-Length: 2793 + +This is the stuff I promised you about linking on a ULTRIX VAX platform. + +There is a problem in the Ultrix VAX version of the ld command which +causes problems when linking modules using the bind-4.9.3 resolver +library. The ld command is not working according to the documentation +on its man page which states "If the argument is a library, it is +searched only once at the point it is encountered in the argument list. +Only those routines defining an unresolved external reference are loaded." +In fact, if the library has been processed by ranlib, and a routine +is loaded to resolve an unsatisfied external reference, any other modules +which contain any entry point referenced by that module will be loaded +even if the reference has already been resolved by a previously loaded +module. This causes duplicate entry points to be loaded and results in +ld errors when you try to link. + +The approach I use to get around this problem is to split the standard +Ultrix libc.a into 2 libraries, one called liboldres.a which contains +the resolver routines from the Ultrix release libc.a, and a libc.a which +contains everything except the resolver routines. + +It is then possible to link using the released Ultrix resolver by specifying +"-loldres" on the ld (or cc) command, or using the new resolver by specifying +"-lresolv -l44bsd". + +the shell script I use to create the 2 libraries follows: + +#!/bin/sh +# +# Split the released Ultrix libc.a into 2 libraries. The resultant +# libc.a will not contain the resolver routines which are present +# in the new libresolv.a which will be built by the bind install. +# The resolver routines from the released Ultrix libc.a will be +# put in a new liboldres.a library. The original libc.a will be saved +# as libcold.a. +# +if [ -f /usr/lib/libcold.a ] +then + echo "/usr/lib/libcold.a already exists." + exit 1 +fi +if [ -f /usr/lib/liboldres.a ] +then + echo "/usr/lib/liboldres.a already exists." + exit 1 +fi +rm -r /tmp/libres$$ +mkdir /tmp/libres$$ +cd /tmp/libres$$ +ar x /usr/lib/libc.a gethostent.o getnetent.o herror.o res_comp.o \ + res_debug.o res_init.o res_mkquery.o res_query.o \ + res_send.o +ar r /usr/lib/liboldres.a *.o +ranlib /usr/lib/liboldres.a +cd /tmp +rm -r libres$$ +cp /usr/lib/libc.a /usr/lib/libcold.a +ar d /usr/lib/libc.a gethostent.o getnetent.o herror.o res_comp.o \ + res_debug.o res_init.o res_mkquery.o res_query.o \ + res_send.o +ranlib /usr/lib/libc.a + +-- +William A. Gianopoulos; Raytheon Missile Systems Division +wag@sccux1.msd.ray.com +------------------------------------------------------------------------- +My opinions are my own and do not in any way represent the opinions of my +employer. +------------------------------------------------------------------------- diff --git a/usr.sbin/named/doc/info/Ultrix-hesiod b/usr.sbin/named/doc/info/Ultrix-hesiod new file mode 100644 index 000000000000..8d952656539b --- /dev/null +++ b/usr.sbin/named/doc/info/Ultrix-hesiod @@ -0,0 +1,78 @@ +Return-Path: bind-workers-request +Received: by gw.home.vix.com id AA04567; Fri, 28 Jan 94 13:20:51 -0800 +Received: by gw.home.vix.com id AA04555; Fri, 28 Jan 94 13:20:48 -0800 +Received: from monkeyboy.WPI.EDU (gshapiro@monkeyboy.WPI.EDU [130.215.24.62]) by bigboote.WPI.EDU (8.6.6.Beta0/8.6) with ESMTP id QAA02114; Fri, 28 Jan 1994 16:20:44 -0500 +From: Gregory Neil Shapiro +Received: from localhost (gshapiro@localhost) by monkeyboy.WPI.EDU (8.6.6.Beta0/8.6) id QAA14847; Fri, 28 Jan 1994 16:20:42 -0500 +Date: Fri, 28 Jan 1994 16:20:42 -0500 +Message-Id: <199401282120.QAA14847@monkeyboy.WPI.EDU> +To: bind-workers@vix.com +Cc: aej@WPI.EDU +Subject: BIND 4.9.2 BETA05 resolver problem + +We have a major problem with replacing Ultrix's resolver routines with +those in 4.9.2 Beta 5. + +Here at WPI we used Hesiod to serve our passwords. 4.9.2's resolver +doesn't go to secondaries for the information if the first nameserver +listed in /etc/resolv.conf isn't responding (i.e. if it dies, the host is +down, or the nameserver is reloading) on any getpw*() call. + +Here is my /etc/resolv.conf: + +; +; BIND data file. +; +domain WPI.EDU +nameserver 130.215.24.62 +nameserver 130.215.24.56 +nameserver 130.215.56.45 +nameserver 130.215.8.125 + +Here is a program to show the broken behavior: + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +main() +{ + printf("res.options = %x\n", _res.options); + if (getpwnam("gshapiro")) + printf("Ok\n"); + else + printf("No\n"); + if (gethostbyname("wpi")) + printf("Ok\n"); + else + printf("No\n"); +} + +If I compile with 4.9.2's resolver: + +> cc -I/usr/local/include -I/usr0/CCCtools/BIND/4.9.2/include -I/usr0/CCCtools/BIND/4.9.2/compat/include try.c -o try -lresolv -l44bsd + +And run it: + +> ./try +res.options = 2c0 +No +Ok + +If I compile with Ultrix's resolver (built-in to libc.a): + +> cc try.c -o try +> ./try +res.options = 2c0 +Ok +Ok + +4.9.2's resolver doesn't go on to secondaries on the getpw*() call. +However, gethostbyname() calls do properly go to secondaries, it's only the +Hesiod getpw*() calls that fail. diff --git a/usr.sbin/named/doc/info/Ultrix-ncache b/usr.sbin/named/doc/info/Ultrix-ncache new file mode 100644 index 000000000000..de8e72ac2e85 --- /dev/null +++ b/usr.sbin/named/doc/info/Ultrix-ncache @@ -0,0 +1,73 @@ +Path: vixie!Pa.dec.com!bind-redist-request +From: hubert@cac.washington.edu (Steve Hubert) +Newsgroups: local.mail.dns.bind +Subject: Negative caching problem +Date: 28 Jan 1994 11:10:29 -0800 +Organization: A blearily-installed InterNetNews site +Lines: 45 +Sender: daemon@vix.com +Distribution: local +Message-ID: +NNTP-Posting-Host: gw.home.vix.com +X-Received: by gw.home.vix.com id AA01707; Fri, 28 Jan 94 11:10:20 -0800 +X-Received: by inet-gw-2.pa.dec.com (5.65/13Jan94) + id AA12608; Fri, 28 Jan 94 11:09:05 -0800 +X-Received: from relay1.UU.NET by inet-gw-2.pa.dec.com (5.65/13Jan94) + id AA11016; Fri, 28 Jan 94 10:33:56 -0800 +X-Received: by relay1.UU.NET (5.61/UUNET-internet-primary) + id AAwavg00600; Fri, 28 Jan 94 13:11:19 -0500 +X-Received: from shiva2.cac.washington.edu by relay1 with SMTP + (5.61/UUNET-internet-primary) id AAwavg00573; Fri, 28 Jan 94 13:11:12 -0500 +X-Received: by shiva2.cac.washington.edu + (5.65/UW-NDC Revision: 2.29 ) id AA18978; Fri, 28 Jan 94 10:09:31 -0800 +X-To: BIND list +X-Cc: Namedroppers list +X-Mime-Version: 1.0 +X-Content-Type: TEXT/PLAIN; charset=US-ASCII +X-Status: seems like an ultrix bug to me + +We've been experimenting a little with negative caching and have run into +a problem. The problem is with the Ultrix4.2a gethostbyname() resolver +algorithm. We wonder how widespread this problem is, since I believe this +is based on some old version of BIND. + +We have a host carson.u.washington.edu. Suppose I am on a host called +host.cac.washington.edu. I have searching turned on in the resolver +options and a search list of "cac.washington.edu" "washington.edu". If I +try something like "telnet carson.u" here's what can happen. The first +question my resolver asks is for the A record for +carson.u.cac.washington.edu. If it isn't in the negative cache, the answer +may be fetched from an auth. server and an auth. NXDOMAIN returned. If +the answer is in the negative cache the same NXDOMAIN answer will be +returned but it will be non-authoritative. The non-authoritative NXDOMAIN +answer causes the Ultrix search algorithm to terminate the search and not +try the next element which would be carson.u.washington.edu. So "telnet +carson.u" fails with a no such host error. Typically, it works the first +time and then fails the second (when it has been cached). The offending +code is in res_query(). There they have something like: + + switch (hp->rcode) { + case NXDOMAIN: + if (hp->aa) + h_errno = HOST_NOT_FOUND; + else + h_errno = TRY_AGAIN; + ... + +The TRY_AGAIN answer causes the search to terminate early in res_search(). + +The 4.9.2 version of this same piece of code is simply: + + switch (hp->rcode) { + case NXDOMAIN: + h_errno = HOST_NOT_FOUND; + ... + +So, the question is, is this just an Ultrix bug in gethostent.c, or did +it originate with some old BIND and might it therefore be much more +widespread? + + +Thanks, +Steve Hubert +Networks and Distributed Computing, Univ. of Washington, Seattle diff --git a/usr.sbin/named/doc/info/glue b/usr.sbin/named/doc/info/glue new file mode 100644 index 000000000000..7375718505d7 --- /dev/null +++ b/usr.sbin/named/doc/info/glue @@ -0,0 +1,49 @@ +Path: vixie!Pa.dec.com!bind-redist-request +From: bryan@notorious.rs.itd.umich.edu (Bryan Beecher) +Newsgroups: local.mail.dns.bind +Subject: When and why to use glue (was glue) +Date: 2 Mar 1994 07:37:27 -0800 +Organization: University of Michigan +Lines: 32 +Sender: daemon@vix.com +Distribution: local +Message-ID: <2l2b0j$463@lastactionhero.rs.itd.umich.edu> +X-To: info-bind@uunet.uu.net +X-Path: notorious.rs.itd.umich.edu!bryan +X-Newsgroups: info.bind +X-Lines: 32 +X-References: +X-Nntp-Posting-Host: notorious.rs.itd.umich.edu + +hamjavar@unm.edu (Farid Hamjavar) asks: +> +>What's the rule [ for glue ] ? + +A glue record is an A record for a name that appears on the right-hand side +of a NS record. So, if I have this: + + itd.umich.edu. IN NS dns2.itd.umich.edu. + dns2.itd.umich.edu. IN A 141.211.164.3 + +then the second record is a glue record (for the NS record above it). + +You need glue records when -- and only when -- you are delegating authority +to a nameserver that "lives" in the domain you are delegating. In other +words, in the example above, I need to add an A record for dns2.itd.umich.edu +since it "lives" in the domain it serves. This boot-strapping information +is necessary: How am I supposed to find out the IP address of the nameserver +for domain FOO if the nameserver for FOO "lives" in FOO? + +If I have this NS record: + + itd.umich.edu. IN NS dns.cs.wisc.edu. + +I do NOT need a glue record, and, in fact, adding one is a very bad idea. +If I add one, and then the folks at U Wisconsin change the address, then I am +passing out incorrect data. + +Also, unless you actually have a machine called something.IN-ADDR.ARPA, you +will never have any glue records present in any of your "reverse" files. +-- +Bryan Beecher, U-M Information Technology Division (+1 313 747 4050) +Domain: Bryan.Beecher@umich.edu Path: ..!uunet!destroyer!bryan diff --git a/usr.sbin/named/doc/info/glue.2 b/usr.sbin/named/doc/info/glue.2 new file mode 100644 index 000000000000..b854a9e56c21 --- /dev/null +++ b/usr.sbin/named/doc/info/glue.2 @@ -0,0 +1,57 @@ +Path: vixie!Pa.dec.com!bind-redist-request +From: hubert@cac.washington.edu (Steve Hubert) +Newsgroups: local.mail.dns.bind +Subject: Re: When and why to use glue (was glue) +Date: 2 Mar 1994 10:52:01 -0800 +Organization: A blearily-installed InterNetNews site +Lines: 43 +Sender: daemon@vix.com +Distribution: local +Message-ID: +X-To: info-bind@uunet.uu.net +X-In-Reply-To: <2l2b0j$463@lastactionhero.rs.itd.umich.edu> +X-Content-Type: TEXT/PLAIN; charset=US-ASCII + +On 2 Mar 1994, Bryan Beecher wrote: + +> hamjavar@unm.edu (Farid Hamjavar) asks: +> > +> >What's the rule [ for glue ] ? +> +> A glue record is an A record for a name that appears on the right-hand side +> of a NS record. So, if I have this: +> +> itd.umich.edu. IN NS dns2.itd.umich.edu. +> dns2.itd.umich.edu. IN A 141.211.164.3 +> +> then the second record is a glue record (for the NS record above it). +> +> You need glue records when -- and only when -- you are delegating authority +> to a nameserver that "lives" in the domain you are delegating. In other +> words, in the example above, I need to add an A record for dns2.itd.umich.edu +> since it "lives" in the domain it serves. This boot-strapping information +> is necessary: How am I supposed to find out the IP address of the nameserver +> for domain FOO if the nameserver for FOO "lives" in FOO? + +Bryan's analysis is right on the mark as always. I hope I'm not just +muddying the waters by mentioning this, but I've found the information +useful. There is also a sort of implicit glue record that can be useful +(or confusing). If the parent server (itd.umich.edu domain in example +above) is a secondary server for the child, then the A record will be +fetched from the child server when the zone transfer is done. The glue is +still there but it's a little different, it's in the ip address in the +named.boot line instead of explicitly in the data. In this case (common +for us) you can leave out the explicit glue A record and leave the +manually configured "glue" in just the one place in the named.boot file. + +So, a slightly revised rule for when you need a glue record is: + +You need glue records when -- and only when -- you are delegating +authority to a nameserver that "lives" in the domain you are delegating +*and* you aren't a secondary server for that domain. + +(Hope this helps more than hurts.) + +Steve Hubert +Networks and Distributed Computing, Univ. of Washington, Seattle + diff --git a/usr.sbin/named/doc/info/ibm-dyndns b/usr.sbin/named/doc/info/ibm-dyndns new file mode 100644 index 000000000000..3e3555cd0dac --- /dev/null +++ b/usr.sbin/named/doc/info/ibm-dyndns @@ -0,0 +1,76 @@ +Delivery-Date: Tue, 12 Sep 1995 19:35:04 -0700 +Return-Path: edie@watson.ibm.com +Received: by gw.home.vix.com id AA26254; Tue, 12 Sep 95 19:35:03 -0700 +Received: from WATSON by watson.ibm.com (IBM VM SMTP V2R3) with BSMTP id 6121; + Tue, 12 Sep 95 22:34:27 EDT +Received: from YKTVMV by watson.vnet.ibm.com with "VAGENT.V1.02 on VAGENT2" + id 2126; Tue, 12 Sep 1995 22:34:26 EDT +Received: from edisto.watson.ibm.com by yktvmv.watson.ibm.com (IBM VM SMTP V2Rx) + with TCP; Tue, 12 Sep 95 22:34:26 EDT +Received: by edisto.watson.ibm.com (AIX 3.2/UCB 5.64/900524) + id AA20787; Tue, 12 Sep 1995 22:31:40 -0400 +Message-Id: <9509130231.AA20787@edisto.watson.ibm.com> +X-External-Networks: yes +To: paul@vix.com +Cc: bind-workers@vix.com +Subject: IBM's Dynamic DNS implementation +Date: Tue, 12 Sep 95 22:31:35 -0500 +From: "Edie E. Gunter" + + +Hi Paul, + +I've just ftp'd the file ibmddns.tar.gz to ftp.vix.com and +put it in your /incoming directory. This is the dynamic +DNS implementation IBM said it would donate to the public +domain at the IETF in Stockholm in July. + +The changes were made against the 4.9.3 BETA26 version of +BIND. The ibmddns.tar file has a patch list and another tar file +with several new files. + +The implementation of dynamic updates is based +on the August 1995 draft-ieft-dnsind-dynDNS-03.txt file. + +Also included is implementation of KEY and SIG RR's as per +the June 25, 1995 draft-ietf-dnssec-secext-04.txt file. This +implementation uses the BSAFE Cryptographic Toolkit for +RSA security. This toolkit is not included, but is +available for purchase from RSA Data Security, Inc. +(email: info@rsa.com) Additionally, the code can be +compiled without security (see conf/options.h), but this +probably isn't a good idea. + +There are also appropriate #ifdefs and makefiles and other +minor changes necessary to make this code build on OS/2. + +There is a file dyndns.setup that will lead you through +the steps necessary to set everything up and use a new +test tool we've provided to actually perform an update. + +I should mention here a few caveats: + + - The ZoneName update type was not implemented. + + - On completion of an update, the master file for the + zone is rewritten. + + - On an error, to return the database to the state it was in + prior to the start of processing this update, the master file + for this zone is re-read. + + - The secondary can only forward updates to the primary using + UDP. (The TCP code was not implemented.) + + - There is no code in the resolver to search the universe for + an authoritative server to handle an update. The resolver + API we implemented requires that the primary name be known + and specified in the API calls. + +If you have any questions or problems with this code, please +don't hesitate to call (or email). We hope you (and the rest +of the BIND community) will be able to make some good use of this +work. + +Edie Gunter + diff --git a/usr.sbin/named/doc/info/interactive b/usr.sbin/named/doc/info/interactive new file mode 100644 index 000000000000..687b53e29918 --- /dev/null +++ b/usr.sbin/named/doc/info/interactive @@ -0,0 +1,574 @@ +Delivery-Date: Tue, 22 Aug 1995 21:19:12 -0700 +Return-Path: jjb@jagware.bcc.com +Received: by gw.home.vix.com id AA29584; Tue, 22 Aug 95 21:19:06 -0700 +Received: by jagware.bcc.com (/\oo/\ Smail3.1.29.1 #29.3) + id ; Tue, 22 Aug 95 21:18 PDT +Message-Id: +From: jjb@jagware.bcc.com (J.J.Bailey) +Subject: ISC UNIX patches for bind-4.9.3-BETA26 +To: paul@vix.com +Date: Tue, 22 Aug 1995 21:18:36 -0700 (PDT) +X-Mailer: ELM [version 2.4 PL24] +Mime-Version: 1.0 +Content-Type: text/plain; charset=US-ASCII +Content-Transfer-Encoding: 7bit +Content-Length: 12688 + +The following patches are required to get bind-4.9.3-BETA26 to compile +in ISC UNIX version 4.1. + +1) Almost every patch is because sys/types.h needs to be included: the + defines in conf/portability.h are too late + +2) ns_main.c needs the include files to be included in a different order, so + I used an include guard to include sys/stream.h earlier + +3) M_UNIX and _SYSV3 need to be defined on the command line + +4) The makefile in the nslookup directory needs the .c to .o rule modified + or the .o files are placed into the current directory, causing linking + to fail + +5) There is no libbsd.a + +-Jack + +-- +J.J.Bailey +Consultant +jjb@jagware.bcc.com + + + +*** Makefile- Tue Aug 22 21:08:31 1995 +--- Makefile Tue Aug 22 21:09:29 1995 +*************** +*** 540,551 **** + #PS = ps -p + #IOT = IOT + +! #(ISC4.0 using GCC) +! #CC = gcc -DISC -posix + #CPPFLAGS = + #CDEBUG = -g + #LEX = flex -I +! #LIBS = -lbsd + #PIDDIR = /etc + #DESTBIN = /usr/bin + #DESTSBIN = /etc +--- 540,551 ---- + #PS = ps -p + #IOT = IOT + +! #(ISC4.1 using GCC) +! #CC = gcc -DISC -posix -DM_UNIX -D_SYSV3 + #CPPFLAGS = + #CDEBUG = -g + #LEX = flex -I +! #LIBS = -linet -ll + #PIDDIR = /etc + #DESTBIN = /usr/bin + #DESTSBIN = /etc +*** conf/portability.h- Thu Jun 29 02:25:57 1995 +--- conf/portability.h Tue Aug 22 21:00:05 1995 +*************** +*** 75,87 **** + # endif + # define SYSV + # define SVR3 +! # define _SYSV3 + # define NEED_STRTOUL + # define NEED_FTRUNCATE + # define USE_POSIX + # include + # include +! # include + # include + #endif + +--- 75,91 ---- + # endif + # define SYSV + # define SVR3 +! # if #defined(_SYSV3) +! # define _SYSV3 +! # endif + # define NEED_STRTOUL + # define NEED_FTRUNCATE + # define USE_POSIX + # include + # include +! # if !defined(_H_STREAM) +! # include +! # endif + # include + #endif + +*** named/db_lookup.c- Thu Jun 29 02:26:19 1995 +--- named/db_lookup.c Tue Aug 22 20:53:12 1995 +*************** +*** 64,69 **** +--- 64,72 ---- + + #include + #include ++ #if defined(ISC) ++ #include ++ #endif + #include + #include + #include +*** named/db_reload.c- Wed Dec 14 22:24:16 1994 +--- named/db_reload.c Tue Aug 22 20:53:12 1995 +*************** +*** 59,64 **** +--- 59,67 ---- + */ + + #include ++ #if defined(ISC) ++ #include ++ #endif + #include + #include + #include +*** named/db_save.c- Thu Jun 29 02:26:19 1995 +--- named/db_save.c Tue Aug 22 20:53:12 1995 +*************** +*** 63,68 **** +--- 63,71 ---- + */ + + #include ++ #if defined(ISC) ++ #include ++ #endif + #include + #include + #include +*** named/db_update.c- Thu Jun 29 02:26:19 1995 +--- named/db_update.c Tue Aug 22 20:53:12 1995 +*************** +*** 62,67 **** +--- 62,70 ---- + #include + + #include ++ #if defined(ISC) ++ #include ++ #endif + #include + #include + #include +*** named/named-xfer.c- Thu Jun 29 02:26:20 1995 +--- named/named-xfer.c Tue Aug 22 20:53:13 1995 +*************** +*** 74,79 **** +--- 74,84 ---- + #endif /* not lint */ + + #include ++ #if defined(ISC) ++ #include ++ #include ++ #define _H_STREAM /* include guard for portability.h */ ++ #endif + #include + #include + #include +*** named/ns_forw.c- Mon Aug 21 22:01:45 1995 +--- named/ns_forw.c Tue Aug 22 20:53:13 1995 +*************** +*** 59,64 **** +--- 59,67 ---- + */ + + #include ++ #if defined(ISC) ++ #include ++ #endif + #include + #include + #include +*** named/ns_init.c- Sun Aug 20 18:27:18 1995 +--- named/ns_init.c Tue Aug 22 20:53:13 1995 +*************** +*** 59,64 **** +--- 59,67 ---- + */ + + #include ++ #if defined(ISC) ++ #include ++ #endif + #include + #include + #include +*** named/ns_main.c- Sun Aug 20 18:27:19 1995 +--- named/ns_main.c Tue Aug 22 20:53:13 1995 +*************** +*** 71,76 **** +--- 71,81 ---- + */ + + #include ++ #if defined(ISC) ++ #include ++ #include ++ #define _H_STREAM /* include guard for portability.h */ ++ #endif + #include + #include + #if !defined(SYSV) && defined(XXX) +*** named/ns_ncache.c- Wed Jun 28 14:00:34 1995 +--- named/ns_ncache.c Tue Aug 22 20:53:14 1995 +*************** +*** 7,12 **** +--- 7,15 ---- + */ + + #include ++ #if defined(ISC) ++ #include ++ #endif + #include + #include + #include +*** named/ns_req.c- Mon Aug 21 22:01:46 1995 +--- named/ns_req.c Tue Aug 22 20:53:14 1995 +*************** +*** 59,64 **** +--- 59,67 ---- + */ + + #include ++ #if defined(ISC) ++ #include ++ #endif + #include + #include + #include +*** named/ns_resp.c- Sun Aug 20 18:27:21 1995 +--- named/ns_resp.c Tue Aug 22 20:53:14 1995 +*************** +*** 59,64 **** +--- 59,67 ---- + */ + + #include ++ #if defined(ISC) ++ #include ++ #endif + #include + #include + #include +*** named/ns_stats.c- Thu Jun 29 02:26:25 1995 +--- named/ns_stats.c Tue Aug 22 20:53:15 1995 +*************** +*** 64,69 **** +--- 64,72 ---- + /**************************************************************************/ + + #include ++ #if defined(ISC) ++ #include ++ #endif + #include + #include + #include +*** named/ns_validate.c- Wed Jun 28 14:17:31 1995 +--- named/ns_validate.c Tue Aug 22 20:53:15 1995 +*************** +*** 8,13 **** +--- 8,16 ---- + */ + + #include ++ #if defined(ISC) ++ #include ++ #endif + #include + #include + #include +*** res/gethnamaddr.c- Mon Aug 21 22:01:48 1995 +--- res/gethnamaddr.c Tue Aug 22 20:53:15 1995 +*************** +*** 59,64 **** +--- 59,67 ---- + #endif /* LIBC_SCCS and not lint */ + + #include ++ #if defined(ISC) ++ #include ++ #endif + #include + #include + #include +*** res/getnetent.c- Mon Jun 19 01:35:01 1995 +--- res/getnetent.c Tue Aug 22 20:53:15 1995 +*************** +*** 47,52 **** +--- 47,55 ---- + #endif /* LIBC_SCCS and not lint */ + + #include ++ #if defined(ISC) ++ #include ++ #endif + #include + #include + #include +*** res/getnetnamadr.c- Thu Jun 29 02:26:28 1995 +--- res/getnetnamadr.c Tue Aug 22 20:53:15 1995 +*************** +*** 45,50 **** +--- 45,54 ---- + #endif /* LIBC_SCCS and not lint */ + + #include ++ #if defined(ISC) ++ #include ++ #include ++ #endif + #include + #include + #include +*** res/herror.c- Mon Jun 19 01:35:02 1995 +--- res/herror.c Tue Aug 22 20:53:15 1995 +*************** +*** 59,64 **** +--- 59,67 ---- + #endif /* LIBC_SCCS and not lint */ + + #include ++ #if defined(ISC) ++ #include ++ #endif + #include + #include + #if defined(BSD) && (BSD >= 199103) +*** res/inet_addr.c- Sun Aug 20 18:27:23 1995 +--- res/inet_addr.c Tue Aug 22 20:53:15 1995 +*************** +*** 59,64 **** +--- 59,67 ---- + #endif /* LIBC_SCCS and not lint */ + + #include ++ #if defined(ISC) ++ #include ++ #endif + #include + #include + #include +*** res/nsap_addr.c- Thu Jun 29 02:26:28 1995 +--- res/nsap_addr.c Tue Aug 22 20:53:15 1995 +*************** +*** 3,8 **** +--- 3,11 ---- + #endif /* LIBC_SCCS and not lint */ + + #include ++ #if defined(ISC) ++ #include ++ #endif + #include + #include + #include +*** res/res_comp.c- Mon Jun 19 01:35:02 1995 +--- res/res_comp.c Tue Aug 22 20:53:16 1995 +*************** +*** 59,64 **** +--- 59,67 ---- + #endif /* LIBC_SCCS and not lint */ + + #include ++ #if defined(ISC) ++ #include ++ #endif + #include + #include + +*** res/res_debug.c- Mon Aug 21 00:22:22 1995 +--- res/res_debug.c Tue Aug 22 20:53:16 1995 +*************** +*** 59,64 **** +--- 59,67 ---- + #endif /* LIBC_SCCS and not lint */ + + #include ++ #if defined(ISC) ++ #include ++ #endif + #include + #include + #include +*** res/res_init.c- Thu Jun 29 02:26:29 1995 +--- res/res_init.c Tue Aug 22 20:53:16 1995 +*************** +*** 59,64 **** +--- 59,67 ---- + #endif /* LIBC_SCCS and not lint */ + + #include ++ #if defined(ISC) ++ #include ++ #endif + #include + #include + #include +*** res/res_mkquery.c- Thu Jun 29 02:26:30 1995 +--- res/res_mkquery.c Tue Aug 22 20:53:16 1995 +*************** +*** 59,64 **** +--- 59,67 ---- + #endif /* LIBC_SCCS and not lint */ + + #include ++ #if defined(ISC) ++ #include ++ #endif + #include + #include + +*** res/res_query.c- Thu Jun 29 02:26:30 1995 +--- res/res_query.c Tue Aug 22 20:53:16 1995 +*************** +*** 59,64 **** +--- 59,67 ---- + #endif /* LIBC_SCCS and not lint */ + + #include ++ #if defined(ISC) ++ #include ++ #endif + #include + #include + #include +*** res/res_send.c- Sun Aug 20 18:27:24 1995 +--- res/res_send.c Tue Aug 22 20:53:16 1995 +*************** +*** 71,76 **** +--- 71,79 ---- + + #include + #include ++ #if defined(ISC) ++ #include ++ #endif + #include + #include + #include +*** res/sethostent.c- Thu Jun 29 02:26:31 1995 +--- res/sethostent.c Tue Aug 22 20:53:16 1995 +*************** +*** 37,42 **** +--- 37,45 ---- + #endif /* LIBC_SCCS and not lint */ + + #include ++ #if defined(ISC) ++ #include ++ #endif + #include + #include + #include +*** tools/Makefile- Mon Aug 21 22:01:49 1995 +--- tools/Makefile Tue Aug 22 20:53:17 1995 +*************** +*** 152,157 **** +--- 152,160 ---- + cd nslookup; ${MAKE} ${MARGS} tags + ctags ${SRCS} + ++ .c.o: ++ $(CC) -c $(CFLAGS) $*.c -o $*.o ++ + FRC: + + # DO NOT DELETE THIS LINE -- mkdep uses it. +*** tools/nslookup/debug.c- Thu Jun 29 02:26:35 1995 +--- tools/nslookup/debug.c Tue Aug 22 20:53:17 1995 +*************** +*** 71,76 **** +--- 71,79 ---- + */ + + #include ++ #if defined(ISC) ++ #include ++ #endif + #include + #include + #include +*** tools/nslookup/getinfo.c- Wed Dec 14 22:24:32 1994 +--- tools/nslookup/getinfo.c Tue Aug 22 20:53:17 1995 +*************** +*** 72,77 **** +--- 72,80 ---- + */ + + #include ++ #if defined(ISC) ++ #include ++ #endif + #include + #include + #include +*** tools/nslookup/list.c- Mon Dec 19 00:35:16 1994 +--- tools/nslookup/list.c Tue Aug 22 20:53:17 1995 +*************** +*** 71,76 **** +--- 71,79 ---- + */ + + #include ++ #if defined(ISC) ++ #include ++ #endif + #include + #include + #include +*** tools/nslookup/main.c- Wed Dec 14 22:24:32 1994 +--- tools/nslookup/main.c Tue Aug 22 20:53:17 1995 +*************** +*** 81,86 **** +--- 81,89 ---- + + #include + #include ++ #if defined(ISC) ++ #include ++ #endif + #include + #include + #include +*** tools/nslookup/send.c- Wed Dec 14 22:24:33 1994 +--- tools/nslookup/send.c Tue Aug 22 20:53:17 1995 +*************** +*** 77,82 **** +--- 77,85 ---- + + #include + #include ++ #if defined(ISC) ++ #include ++ #endif + #include + #include + #include +*** tools/nslookup/skip.c- Wed Dec 14 22:24:33 1994 +--- tools/nslookup/skip.c Tue Aug 22 20:53:18 1995 +*************** +*** 76,81 **** +--- 76,84 ---- + */ + + #include ++ #if defined(ISC) ++ #include ++ #endif + #include + #include + #include + diff --git a/usr.sbin/named/doc/info/interactive-2 b/usr.sbin/named/doc/info/interactive-2 new file mode 100644 index 000000000000..ae519fb87fad --- /dev/null +++ b/usr.sbin/named/doc/info/interactive-2 @@ -0,0 +1,138 @@ +Replied: Sun, 31 Dec 1995 12:41:34 -0800 +Replied: "kuriyama@unix.cpf.navy.mil (Kent Kuriyama) " +Received: by gw.home.vix.com id AA10367; Sun, 31 Dec 95 11:00:28 -0800 +Received: by unix.cpf.navy.mil (5.65/1.35) + id AA28534; Sun, 31 Dec 95 09:01:34 -1000 +From: kuriyama@unix.cpf.navy.mil (Kent Kuriyama) +Message-Id: <9512311901.AA28534@unix.cpf.navy.mil> +Subject: ISC 4.1 changes to bind beta 34 +To: paul@vix.com +Date: Sun, 31 Dec 1995 09:01:33 -1000 (HST) +Cc: kuriyama@unix.cpf.navy.mil (Kent Kuriyama) +X-Mailer: ELM [version 2.4 PL23] +Mime-Version: 1.0 +Content-Type: text/plain; charset=US-ASCII +Content-Transfer-Encoding: 7bit +Content-Length: 3419 + +Paul, + +Enclosed is a 'diff' file that contains the changes necessary to port +bind BETA34 under ISC 4.1 (using gcc 2.7.2). In the diff file below +the sub-directory 'beta34' contained the modified sources. + +I have the software up and running - no problems so far. Thank you +for your efforts. + +Kent Kuriyama +--------------- +Common subdirectories: beta34.orig/BSD and beta34/BSD +diff --unif=2 beta34.orig/Makefile beta34/Makefile +--- beta34.orig/Makefile Fri Dec 29 11:08:15 1995 ++++ beta34/Makefile Sun Dec 31 08:27:12 1995 +@@ -582,23 +582,32 @@ + #IOT = IOT + +-#(ISC4.0 using GCC) +-#CC = gcc -DISC -posix +-#CPPFLAGS = +-#CDEBUG = -g +-#LEX = flex -I +-#LIBS = -lbsd +-#PIDDIR = /etc +-#DESTBIN = /usr/bin +-#DESTSBIN = /etc +-#DESTEXEC = /etc +-#DESTHELP = /etc +-#DESTMAN = /usr/catman/l_man +-#CATEXT = $$$$N +-#RANLIB = @: +-#LDS = @: +-#PS = ps -p +-#ARPREF = `lorder +-#ARSUFF = | tsort` +-#IOT = IOT ++#(ISC4.1 using GCC 2.7.2) ++# ++# Notes: ++# ++# 1) The 'gettimeofday' routine seems to be broken on ISC. ++# Using the one supplied in 'compat/lib'. ++# 2) Needed to modify some ISC supplied include files so that ++# they would automatically include other files. ++# ++CC = gcc -DISC -posix ++CPPFLAGS = ++CDEBUG = -g ++LEX = flex -I ++LIBS = -ll -linet ++PIDDIR = /etc ++DESTBIN = /usr/bin ++DESTLIB = /usr/local/lib ++DESTSBIN = /etc ++DESTEXEC = /etc ++DESTHELP = /etc ++DESTMAN = /usr/catman/l_man ++CATEXT = $$$$N ++RANLIB = @: ++LDS = @: ++PS = ps -p ++ARPREF = ++ARSUFF = ++IOT = IOT + + # AUX 3.x (I used 3.1.1) +Common subdirectories: beta34.orig/bin and beta34/bin +Common subdirectories: beta34.orig/compat and beta34/compat +Common subdirectories: beta34.orig/conf and beta34/conf +Common subdirectories: beta34.orig/contrib and beta34/contrib +Common subdirectories: beta34.orig/doc and beta34/doc +Common subdirectories: beta34.orig/include and beta34/include +Common subdirectories: beta34.orig/man and beta34/man +Common subdirectories: beta34.orig/named and beta34/named +Common subdirectories: beta34.orig/res and beta34/res +Common subdirectories: beta34.orig/shres and beta34/shres +Common subdirectories: beta34.orig/tools and beta34/tools +diff -r --unif=2 beta34.orig/res/getnetnamadr.c beta34/res/getnetnamadr.c +--- beta34.orig/res/getnetnamadr.c Wed Jun 28 23:26:28 1995 ++++ beta34/res/getnetnamadr.c Sat Dec 30 22:34:53 1995 +@@ -45,4 +45,8 @@ + #endif /* LIBC_SCCS and not lint */ + ++#ifdef ISC ++#include ++#endif ++ + #include + #include +diff -r --unif=2 beta34.orig/compat/lib/ftruncate.c beta34/compat/lib/ftruncate.c +--- beta34.orig/compat/lib/ftruncate.c Wed Dec 14 20:23:51 1994 ++++ beta34/compat/lib/ftruncate.c Sat Dec 30 22:39:24 1995 +@@ -11,5 +11,5 @@ + #endif + +-#if defined(M_UNIX) ++#if defined(M_UNIX) || defined(ISC) + #define OWN_FTRUNCATE + #include +diff -r --unif=2 beta34.orig/conf/portability.h beta34/conf/portability.h +--- beta34.orig/conf/portability.h Fri Dec 22 00:20:20 1995 ++++ beta34/conf/portability.h Sun Dec 31 07:58:01 1995 +@@ -80,4 +80,5 @@ + # define NEED_STRTOUL + # define NEED_FTRUNCATE ++# define NEED_GETTIMEOFDAY + # define USE_POSIX + # include +diff -r --unif=2 beta34.orig/tools/dig.c beta34/tools/dig.c +--- beta34.orig/tools/dig.c Fri Dec 29 11:08:18 1995 ++++ beta34/tools/dig.c Sat Dec 30 22:37:54 1995 +@@ -144,4 +144,7 @@ + #define VSTRING "2.1" + ++#ifdef ISC ++#define _SYSV3 ++#endif + #include + #include + diff --git a/usr.sbin/named/doc/info/local-hosts-file b/usr.sbin/named/doc/info/local-hosts-file new file mode 100644 index 000000000000..19cf92f90acb --- /dev/null +++ b/usr.sbin/named/doc/info/local-hosts-file @@ -0,0 +1,59 @@ +Path: vixie!pa.dec.com!bind-redist-request +From: gdonl@gv.ssi1.com (Don Lewis) +Newsgroups: local.mail.dns.bind +Subject: Re: Shared Libraries +Date: 12 Apr 1995 17:11:49 -0700 +Organization: Vixie Enterprises +Lines: 31 +Sender: daemon@vix.com +Distribution: local +Message-ID: <199504122344.QAA29009@sunrise.gv.ssi1.com> +NNTP-Posting-Host: gw.home.vix.com +X-Received: by gw.home.vix.com id AA24343; Wed, 12 Apr 95 17:11:47 -0700 +X-Received: from pobox1.pa.dec.com by inet-gw-1.pa.dec.com (5.65/24Feb95) + id AA13489; Wed, 12 Apr 95 17:06:00 -0700 +X-Received: by pobox1.pa.dec.com; id AA01975; Wed, 12 Apr 95 17:05:50 -0700 +X-Received: by pobox1.pa.dec.com; id AA01971; Wed, 12 Apr 95 17:05:49 -0700 +X-Received: from relay3.UU.NET by inet-gw-1.pa.dec.com (5.65/24Feb95) + id AA13261; Wed, 12 Apr 95 17:00:31 -0700 +X-Received: by relay3.UU.NET + id QQylfb12065; Wed, 12 Apr 1995 19:45:03 -0400 +X-Received: from sunrise.gv.ssi1.com by relay3.UU.NET with SMTP + id QQylfb12054; Wed, 12 Apr 1995 19:45:01 -0400 +X-Received: (from gdonl@localhost) by sunrise.gv.ssi1.com (8.6.11/8.6.11) id QAA29009; Wed, 12 Apr 1995 16:44:51 -0700 +X-In-Reply-To: Yvon.Bori@pt.nce.sita.int (Yvon Bori (+33) 92.96.63.19) + "Shared Libraries" (Apr 12, 10:52am) +X-Mailer: Mail User's Shell (7.2.5 10/14/92) +X-To: Yvon.Bori@pt.nce.sita.int (Yvon Bori (+33) 92.96.63.19), bind@uunet.uu.net + +On Apr 12, 10:52am, Yvon Bori (+33) 92.96.63.19 wrote: +} Subject: Shared Libraries +} Here is my new fight in Bind 4.9.3 B17 installation : + +} All could have been clean, but at reboot time I get the message : + +} Starting system logger +} Starting local daemons: auditdApr 12 11:19:40 ns2 syslogd: line 36: unknown host +} +} ns2 is the name of the machine. +} loghost is well defined in the /etc/hosts file but it looks like this file wasn't +} read. + +} Is there a way to specify that the hosts file has to be read or does loghost must be +} specified in the DNS database? This error don't seems to be fixed in the Bind package? + +With this resolver, there is no way to reference /etc/hosts. You can either +put loghost in the DNS database, or another possibility is to do what I've +done here. I changed the invokation of syslogd in /etc/rc.local to: + + HOSTALIASES=/etc/hostaliases syslogd + +and I created the file /etc/hostaliases and put the following in it: + +loghost localhost.gv.ssi1.com + +You'll have to modify this with your local domain. If you use localhost +instead of a central log host, you'll need the localhost entry in DNS. + + + --- Truck diff --git a/usr.sbin/named/doc/info/nsmaint b/usr.sbin/named/doc/info/nsmaint new file mode 100644 index 000000000000..e73657c6baa9 --- /dev/null +++ b/usr.sbin/named/doc/info/nsmaint @@ -0,0 +1,28 @@ +Date: Mon, 26 Apr 1993 18:06:39 -0400 +From: Andy Poling +Subject: Re: Long Running Dream (was Re: send me your to-do lists) +To: Mohamed Ellozy +Cc: bind@uunet.UU.NET, bind-4.9@inet-gw-2.pa.dec.com +Mime-Version: 1.0 +Content-Type: TEXT/PLAIN; charset=US-ASCII + +On Mon, 26 Apr 1993, Andy Poling writes + +>I'm afraid I removed it from my anonymous FTP archive a few months ago. +>It seemed out-of-date enough that it just might be dangerous if someone +>actually expected it to still be useful. :-) +> +>I didn't even keep the source around - it just didn't really seem useful +>anymore. + +I have it! I took Dennis Ferguson's nsmaint code and added Andy's +check_boot code and bundled it up into a inhanced nsmaint. Together +with Theodore Ts'o ninit, these programs pretty much run the show +here. Our staff can reload the server by typing "nsmaint hup" which +does a check on the boot files before reloading. Some of my recoding +is dreadful :), but it works very well. I'm sure someone out there +could grab it, cover my sins, and make it better. I stuck in the ftp +area on indiana.edu as nsmaint.tar.Z which includes the ninit stuff too. + +Regards, +Steve Mosier @ Indiana University diff --git a/usr.sbin/named/doc/info/sVr4 b/usr.sbin/named/doc/info/sVr4 new file mode 100644 index 000000000000..27349d70ad23 --- /dev/null +++ b/usr.sbin/named/doc/info/sVr4 @@ -0,0 +1,39 @@ +(Message inbox:59) +Date: Wed, 17 Mar 93 17:08:36 CST +From: sblair@upurbmw.dell.com +Subject: bind 4.9 porting to SVR4.. +To: vixie +Cc: cwg@dell.com + +[ I can't remember if it's 4.9, or 5.0 ] + +If one defines the following in the top of the opt-level makefile, it does +indeed build, and work on SVR4 Intel boxes: + + +CC = cc-bsd -DBSD -DPOSIX + +Also, one has to change the cd $x(for dir's) Makefiles' install to +be /usr/ucb/install as the SVR4 one don't have the options BSD +does. + + +It seems to deal real well with authorative as well as non-authorative +answers. Speed is much better than stock USL SVR4 nslookup, and nstest. + +I made NO code changes after figuring out the compiler options. I setup +a rogue secondary on my machine here, upurbmw.dell.com and will keep +you and cwg advised as to what's up. + +-- +Steve Blair DELL NETWORK SERVICES sblair@dell.com hostmaster@dell.com +============================================================================== +If every american puts $ 29,999 as salary, and takes the remainder and +puts it into a 401K(or other deferment plan), then TAXES WON'T HELP !!!!!!!!! + +Addendum: + +The above notes are out of date and no longer work with this version of +BIND. Look for the SVR4.0.4 makefile entry and start working from that. +It should compile out of the box with those settings on just about every +i386 SVR4.0 and SVR4.2 (including Novell's Unixware) diff --git a/usr.sbin/named/doc/info/sequent b/usr.sbin/named/doc/info/sequent new file mode 100644 index 000000000000..780ddff16502 --- /dev/null +++ b/usr.sbin/named/doc/info/sequent @@ -0,0 +1,99 @@ +Delivery-Date: Mon, 19 Jun 1995 18:58:27 -0700 +Return-Path: bind-workers-request@vix.com +Received: by gw.home.vix.com id AA22025; Mon, 19 Jun 95 18:54:03 -0700 +Received: by gw.home.vix.com id AA22021; Mon, 19 Jun 95 18:54:03 -0700 +Received: from oracle.us.oracle.com by inet-smtp-gw-1.us.oracle.com with ESMTP (8.6.12/37.7) + id SAA24186; Mon, 19 Jun 1995 18:54:02 -0700 +Received: from borogove.us.oracle.com by oracle.us.oracle.com with SMTP (8.6.9/37.7) + id SAA24364; Mon, 19 Jun 1995 18:53:58 -0700 +Received: by borogove.us.oracle.com (5.0/SMI-SVR4) + id AA12459; Mon, 19 Jun 1995 18:53:53 -0700 +Date: Mon, 19 Jun 1995 18:53:53 -0700 +From: jhanley@us.oracle.com (John Hanley) +Message-Id: <9506200153.AA12459@borogove.us.oracle.com> +To: bind-workers@vix.com +Phone: +1 415 506 2360 +Subject: BIND on ptx V4.0.2 (svr4) +Content-Length: 3248 + +This is not so much a cry for help as a comment on what I've seen, in case +it is useful to anyone. Otherwise, just ignore it, as Sequent will eventually +support 4.9.3 so the libraries will agree on the the size of _res. I only +have ptx 2.x primary nameservers putting protocol violations out on the wire, +and ptx 4.x hasn't become widely enough deployed to be a support issue for me. + +The length mismatch caused by adding new fields to _res produces the +following on ptx 4.x: + + ld: libinet.so: fatal error: attempt to override defined size of symbol `_res` + from file ../res/libresolv.a(res_init.o) with size of tentative definition + +To get around this, make sure that the shared library reference, "-linet", +precedes the resolver library. For example, compile a vanilla 4.9.3b17 +with "-DSVR4" and use a link command like: + + cc -g -o nslookup main.o getinfo.o debug.o send.o skip.o list.o subr.o commands.o -linet ../../res/libresolv.a ../../compat/lib/lib44bsd.a -ll -lsocket -lnsl -lseq + +This links cleanly against /usr/lib/libinet.so and friends. + +Unfortunately, we easily core dump: + +% debug ./nslookup +New program nslookup (process p1) created +debug> run +Default Server: dcsun2.us.oracle.com +Address: 139.185.20.52 + +> dcsun1.us.oracle.com. +Server: dcsun2.us.oracle.com +Address: 139.185.20.52 + +Name: dcsun1.us.oracle.com +Address: 139.185.20.51 + +> dcsun1.us.oracle.com +Server: dcsun2.us.oracle.com +Address: 139.185.20.52 + +SIGNALED 11 (segv) in p1 [_doprnt()] + 0xbffd6a78 (_doprnt+13368:) movb (%ecx),%al +debug> +debug> stack +Stack Trace for p1, Program nslookup +[8] _doprnt(0x8055b65,0x80469cc,0x8046994) [0xbffd6a78] +[7] sprintf(0x80469d2,0x8055b5c,0x100,0x8047460,0x100,0x61726f2e) [0xbffe7510] +[6] GetHostDomain(nsAddrPtr=0x805c54c,queryClass=1,queryType=1,name="dcsun1.us.oracle.com",domain=Read at address 0x61726f2e failed +,hostPtr=0x805b4f8,isServer=0) [getinfo.c@676] +[5] GetHostInfoByName(nsAddrPtr=0x805c54c,queryClass=1,queryType=1,name="dcsun1.us.oracle.com",hostPtr=0x805b4f8,isServer=0) [getinfo.c@610] +[4] DoLookup(host="dcsun1.us.oracle.com",servPtr=0x805c48c,serverName="dcsun2.us.oracle.com") [main.c@594] +[3] LookupHost(string="dcsun1.us.oracle.com",putToFile=0) [main.c@688] +[2] yylex() [commands.c@0x8050d7f] +[1] main(argc=0,argv=0x80475c0,0x80475c4) [main.c@349] +[0] _start() [0x8049315] +debug> + + +The problem, as has been noted on this list before, is that dnsrch[] +and defdname[] were inadvertently swapped. This is Bad Karma for +shared libs. Applying the following yields a robust ``nslookup''. + + +--- include/resolv.h~ Wed Dec 14 22:24:07 1994 ++++ include/resolv.h Mon Jun 19 18:38:52 1995 +@@ -111,8 +111,8 @@ + nsaddr_list[MAXNS]; /* address of name server */ + #define nsaddr nsaddr_list[0] /* for backward compatibility */ + u_short id; /* current packet id */ +- char *dnsrch[MAXDNSRCH+1]; /* components of domain to search */ + char defdname[MAXDNAME]; /* default domain */ ++ char *dnsrch[MAXDNSRCH+1]; /* components of domain to search */ + u_long pfcode; /* RES_PRF_ flags - see below. */ + unsigned ndots:4; /* threshold for initial abs. query */ + unsigned nsort:4; /* number of elements in sort_list[] */ + + + + + Cheers, + JH + diff --git a/usr.sbin/named/doc/info/sequent-too b/usr.sbin/named/doc/info/sequent-too new file mode 100644 index 000000000000..ef7fd5fac4dd --- /dev/null +++ b/usr.sbin/named/doc/info/sequent-too @@ -0,0 +1,289 @@ +Delivery-Date: Mon, 19 Jun 1995 18:24:21 -0700 +Return-Path: bind-workers-request@vix.com +Received: by gw.home.vix.com id AA19673; Mon, 19 Jun 95 18:19:54 -0700 +Received: by gw.home.vix.com id AA19669; Mon, 19 Jun 95 18:19:53 -0700 +Received: from oracle.us.oracle.com by inet-smtp-gw-1.us.oracle.com with ESMTP (8.6.12/37.7) + id SAA23597; Mon, 19 Jun 1995 18:19:53 -0700 +Received: from borogove.us.oracle.com by oracle.us.oracle.com with SMTP (8.6.9/37.7) + id SAA23784; Mon, 19 Jun 1995 18:19:50 -0700 +Received: by borogove.us.oracle.com (5.0/SMI-SVR4) + id AA12444; Mon, 19 Jun 1995 18:19:40 -0700 +Date: Mon, 19 Jun 1995 18:19:40 -0700 +From: jhanley@us.oracle.com (John Hanley) +Message-Id: <9506200119.AA12444@borogove.us.oracle.com> +To: bind-workers@vix.com +Phone: +1 415 506 2360 +In-Reply-To: <9506180802.AA23945@gw.home.vix.com> (message from Paul A Vixie on Sun, 18 Jun 1995 01:02:27 -0700) +Subject: BIND vs. ptx +Content-Length: 8817 + +I'm going to risk dredging up SYSV debates. +Here are some patches that I have found useful. + +Recently I had the pleasure of porting beta17 to Dynix/ptx, in order +to cope with the unresolved Sequent mailbug 209395. Most SVR3 compilations +choke until you notice the following things: + + (1) a new header file, "conf/u_types.h" should typedef u_int, since + no system headers define it, other than + (2) should typedef u_{char,short,long}, since no other + system headers define them + (3) MUST precede (for caddr_t) + (4) MUST precede (for ulong) + +I didn't want to use . Perhaps it would be simpler to use it, +as it defines all four, u_{int,char,short,long}, but I feared conflicts with +the sytem headers that _do_ define some of those. In an initial attempt I +tried typedef'ing u_int in "portability.h", but found that a seperate header +file was necessary to accommodate multiple inclusion from various callers. Any +random pathname would work well, in case "conf" was a poor directory choice. + +Note that under recent ptx revs, such as version V4.0.2 (SysV release 4.0), +the command + + % egrep 'u_(char|short|int|long)' /usr/include/sys/types.h + +returns 4 lines, while under older revs, such as version V2.1.5 +(SysV release 3.2.0), the same ``egrep'' command returns nothing. +SVR4 hosts definitely should not define NEED_SVR3_U_TYPES. + +This patch has no effect on the + ld: libinet.so: fatal error: attempt to override defined size of symbol `_res` + from file ../res/libresolv.a(res_init.o) with size of tentative definition +error that beta17 + ptx SVR4 runs into. Same diagnostic patched and unpatched. +I'll send a few details on that in a separate note. + +Strictly speaking, /*comments*/ don't belong on #include lines. +Feel free to strip them out, and to move command line defines (``cc -D'') +into a header file. I didn't touch the unusual /usr/local destinations +in the Makefile. + +So, the first six chunks of the patch relate to typedef'ing unsigned +quantities in an environment that arguably has a header +that is (permanently) broken. I believe the implementation is fairly +clean. If this addition falls victim to the old SYSV portability +controversy and is relegated to SVR3-specific instructions with a +patch file under "contrib", so be it. This first half of the patch +is fully conditionalized on NEED_SVR3_U_TYPES, so it has no effect +until you explicitly ask for it. + +The remaining chunks, from "herror.c" through "skip.c", simply add a +call to , and I request that these #include's become part of the +BIND distribution. My plea is based on the belief that the +call is a significant porting aid in some environments, and that no +environment should be missing or be caused grief by its +inclusion. Certainly, Solaris {1,2}.x experiences no difference. The +second half of the patch is not conditionally included, but it should be safe. +If it proves to be unsafe, it could obviously be conditionalized. + +For what it's worth, on a ptx host where ``uname -rv'' returns "3.2.0 V2.1.5", +the build script below will compile the tree cleanly. + + + Cheers, + JH + + + +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +rm -rf 4.9.3 +mkdir 4.9.3 +cd 4.9.3 +gunzip < ../bind-4.9.3-BETA17.tar.gz | tar xf - +patch -p < ../bind-patches +# Strip leading comment character ('#') from relevant Sequent defines +(echo '/Sequent/+2,/Sequent/+11 s/^.//'; echo 'x') | ex Makefile +make > make.out + +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +--- conf/u_types.h Tue May 16 00:00:00 1995 ++++ conf/u_types.h Tue May 16 18:38:06 1995 +@@ -0,0 +1,14 @@ ++/* Various unsigned types that SVR3 does not supply. ++ * (You might be able to find them in , but with opportunity ++ * for conflicts.) ++ */ ++ ++#ifndef _CONF_U_TYPES_H ++#define _CONF_U_TYPES_H ++ ++/* pull in SVR3 typedefs for u_{char,short,long} */ ++#include ++ ++typedef unsigned long u_int; ++ ++#endif +--- Makefile~ Thu Jan 12 21:54:04 1995 ++++ Makefile Tue May 16 18:28:11 1995 +@@ -359,8 +359,9 @@ + #PS = ps -p + + #(Sequent Dynix/PTX) ++# tested with SysV release "3.2.0", version "V2.1.5" + #CC = cc $(CPPFLAGS) -Wc,-pw +-#CPPFLAGS = -Du_int="unsigned int" -DSYSV ++#CPPFLAGS = -DSYSV -DNEED_SVR3_U_TYPES + #RANLIB = : + #LIBS = -ll -lsocket -linet -lnsl -lseq + #PIDDIR = /etc +--- include/resolv.h~ Thu Dec 15 06:24:07 1994 ++++ include/resolv.h Tue May 16 18:42:13 1995 +@@ -69,6 +69,9 @@ + #endif + #include + #include ++#ifdef NEED_SVR3_U_TYPES ++#include "../conf/u_types.h" /* pull in the typedef for u_int */ ++#endif + + /* + * revision information. this is the release date in YYYYMMDD format. +--- conf/portability.h~ Thu Jan 12 21:44:30 1995 ++++ conf/portability.h Tue May 16 18:20:51 1995 +@@ -63,6 +63,9 @@ + + #include + #include ++#ifdef NEED_SVR3_U_TYPES ++#include "../conf/u_types.h" /* pull in SVR3 typedefs for u_{char,short,long} */ ++#endif + #include + #ifndef TIME_H_INCLUDED + # include +--- include/arpa/inet.h Wed Dec 14 22:24:08 1994 ++++ include/arpa/inet.h Mon Jun 19 12:18:17 1995 +@@ -70,6 +70,9 @@ + # include + #endif + #include ++#ifdef NEED_SVR3_U_TYPES ++#include "../../conf/u_types.h" /* pull in SVR3 typedefs for u_{char,short,long} */ ++#endif + + __BEGIN_DECLS + unsigned long inet_addr __P((const char *)); +--- include/arpa/nameser.h~ Thu Dec 15 06:24:09 1994 ++++ include/arpa/nameser.h Tue May 16 19:02:39 1995 +@@ -68,6 +68,9 @@ + # include + #endif + #include ++#ifdef NEED_SVR3_U_TYPES ++#include "../../conf/u_types.h" /* pull in SVR3 typedefs for u_{char,short,long} */ ++#endif + + #ifdef _AUX_SOURCE + #include /* ech for A/UX */ +--- res/herror.c~ Thu Dec 15 06:24:24 1994 ++++ res/herror.c Tue May 16 16:37:13 1995 +@@ -59,6 +59,7 @@ + #endif /* LIBC_SCCS and not lint */ + + #include ++#include + #include + #include + #if defined(BSD) && (BSD >= 199103) +--- res/res_comp.c~ Thu Dec 15 06:24:24 1994 ++++ res/res_comp.c Tue May 16 17:28:59 1995 +@@ -59,6 +59,7 @@ + #endif /* LIBC_SCCS and not lint */ + + #include ++#include + #include + #include + +--- res/res_debug.c~ Mon Dec 19 08:35:11 1994 ++++ res/res_debug.c Tue May 16 16:59:54 1995 +@@ -59,6 +59,7 @@ + #endif /* LIBC_SCCS and not lint */ + + #include ++#include + #include + #include + #include +--- res/res_mkquery.c~ Thu Dec 15 06:24:25 1994 ++++ res/res_mkquery.c Tue May 16 18:46:59 1995 +@@ -59,6 +59,7 @@ + #endif /* LIBC_SCCS and not lint */ + + #include ++#include + #include + #include + +--- res/res_query.c~ Wed Jan 11 08:58:07 1995 ++++ res/res_query.c Tue May 16 17:54:10 1995 +@@ -59,6 +59,7 @@ + #endif /* LIBC_SCCS and not lint */ + + #include ++#include + #include + #include + #include +--- res/sethostent.c~ Thu Dec 15 06:24:26 1994 ++++ res/sethostent.c Tue May 16 17:55:34 1995 +@@ -37,6 +37,7 @@ + #endif /* LIBC_SCCS and not lint */ + + #include ++#include + #include + #include + #include +--- compat/lib/inet_addr.c~ Thu Dec 15 06:23:51 1994 ++++ compat/lib/inet_addr.c Tue May 16 18:30:54 1995 +@@ -59,6 +59,7 @@ + #endif /* LIBC_SCCS and not lint */ + + #include ++#include + #include + #include + #include +--- named/ns_req.c~ Tue Dec 20 02:16:25 1994 ++++ named/ns_req.c Tue May 16 18:24:04 1995 +@@ -59,6 +59,7 @@ + */ + + #include ++#include + #include + #include + #include +--- named/ns_stats.c~ Wed Jan 11 08:58:05 1995 ++++ named/ns_stats.c Tue May 16 18:25:58 1995 +@@ -64,6 +64,7 @@ + /**************************************************************************/ + + #include ++#include + #include + #include + #include +--- tools/nslookup/debug.c~ Thu Dec 15 07:24:31 1994 ++++ tools/nslookup/debug.c Tue May 16 18:27:12 1995 +@@ -71,6 +71,7 @@ + */ + + #include ++#include + #include + #include + #include +--- tools/nslookup/skip.c~ Thu Dec 15 07:24:33 1994 ++++ tools/nslookup/skip.c Tue May 16 18:28:47 1995 +@@ -76,6 +76,7 @@ + */ + + #include ++#include + #include + #include + #include + diff --git a/usr.sbin/named/doc/info/soa-trouble b/usr.sbin/named/doc/info/soa-trouble new file mode 100644 index 000000000000..773a36efff6e --- /dev/null +++ b/usr.sbin/named/doc/info/soa-trouble @@ -0,0 +1,39 @@ +Return-Path: bind-workers-request +Received: by gw.home.vix.com id AA13481; Tue, 15 Feb 94 14:40:33 -0800 +Received: by gw.home.vix.com id AA13469; Tue, 15 Feb 94 14:40:25 -0800 +Received: from mundamutti.cs.mu.OZ.AU by munnari.oz.au with SMTP (5.83--+1.3.1+0.50) + id AA21318; Wed, 16 Feb 1994 06:54:09 +1100 (from kre@munnari.OZ.AU) +To: Piete Brooks +Cc: bind-workers@vix.com, M Graham Dineley +Subject: Re: Suggested HACK to allow recovery after SOA typo ... +In-Reply-To: Your message of "Tue, 15 Feb 1994 18:57:53 -0000." + <"swan.cl.cam.:051210:940215185815"@cl.cam.ac.uk> +Date: Wed, 16 Feb 1994 06:54:09 +1100 +Message-Id: <5765.761342049@munnari.OZ.AU> +From: Robert Elz + +This is unnecessary with 4.9.2 (and beyond). It would take +two steps to do - one to set the serial number to 0, then +another to set the serial number back to its proper value. + +In two steps its always possible to reset the serial number +to a sane value with 4.9.2, and if you really messed it up +it may be possible to do it in one. This uses the (finally RFC +compliant) wrapping serial numbers, you simply increment the +bad serial number by the lesser of 2^31 - 1 and the difference +between what you want it to be and the current value. + +If that didn't give you the value you want, you increment one +more time by the difference between what you want it to be and +what it then is (which will be less than 2^31 - 1 except in the +one pathological case where the "fix" you wanted was to +decrement the serial number by one - which isn't worth doing, +but could be done in one extra step). + +Of course this only works where yyour secondaries are running +4.9.2, but so would any other hack scheme invented. + +It is true that this involves some mod 2^32 arithmetic, but +its not that difficult. + +kre diff --git a/usr.sbin/named/doc/info/solaris b/usr.sbin/named/doc/info/solaris new file mode 100644 index 000000000000..bcda6da62771 --- /dev/null +++ b/usr.sbin/named/doc/info/solaris @@ -0,0 +1,60 @@ +Path: vixie!pa.dec.com!bind-redist-request +From: pauls@locust.cic.net (Paul Southworth) +Newsgroups: local.mail.dns.bind +Subject: Re: resolv.conf on Solaris 2.3 +Date: 4 Oct 1994 08:45:51 -0700 +Organization: CICNet, Inc. +Lines: 25 +Sender: daemon@vix.com +Distribution: local +Message-ID: <36rq3h$58b@spruce.cic.net> +NNTP-Posting-Host: gw.home.vix.com +X-Received: by gw.home.vix.com id AA06704; Tue, 4 Oct 94 08:45:42 -0700 +X-Received: from pobox1.pa.dec.com by inet-gw-1.pa.dec.com (5.65/10Aug94) + id AA12132; Tue, 4 Oct 94 08:22:30 -0700 +X-Received: by pobox1.pa.dec.com; id AA08901; Tue, 4 Oct 94 08:22:02 -0700 +X-Received: by pobox1.pa.dec.com; id AA08897; Tue, 4 Oct 94 08:22:01 -0700 +X-Received: from relay1.UU.NET by inet-gw-2.pa.dec.com (5.65/10Aug94) + id AA23996; Tue, 4 Oct 94 08:14:35 -0700 +X-Received: by relay1.UU.NET + id QQxked01471; Tue, 4 Oct 1994 10:51:01 -0400 +X-Received: from hofmann.CS.Berkeley.EDU by relay1.UU.NET with SMTP + id QQxked01432; Tue, 4 Oct 1994 10:50:55 -0400 +X-Received: from rodan.UU.NET (rodan.UU.NET [153.39.128.10]) by hofmann.CS.Berkeley.EDU (8.6.9/8.6.6.Beta11) with ESMTP id HAA27381 for ; Tue, 4 Oct 1994 07:50:42 -0700 +X-Received: from relay1.UU.NET by rodan.UU.NET with SMTP + id QQxked23527; Tue, 4 Oct 1994 10:50:31 -0400 +X-Received: from spruce.cic.net by relay1.UU.NET with SMTP + id QQxked01268; Tue, 4 Oct 1994 10:50:28 -0400 +X-Received: (from news@localhost) by spruce.cic.net (8.6.7/8.6.6) id KAA05389; Tue, 4 Oct 1994 10:50:27 -0400 +X-To: info-bind@uunet.uu.net +X-Path: locust.cic.net!pauls +X-Newsgroups: info.bind +X-Lines: 25 +X-References: +X-Nntp-Posting-Host: locust.cic.net + +In article , +Simon Townsend wrote: +>*All* I want to do is set up resolv.conf on a Sun SparcStation LX to use our +>network DNS server. +> +>The Sun configuration seems to require me to set a flag in the NIS master to +>indicate that DNS should be used. We do not use NIS. I can not find any +>information on how I should set it up to work otherwise. + +Your maxim for the day is: + +"The virtue of an NIS implementation is a function of how easily you can +turn it off" + +In the case of Solaris 2.x, I must say the NIS implementation is outstanding. + +1. Edit /etc/nsswitch.conf. Make the "hosts:" line read "hosts: dns". +2. Create /etc/resolv.conf + +You're done! + +-- +Paul Southworth +CICNet, Inc. +pauls@cic.net diff --git a/usr.sbin/named/doc/info/solaris.too b/usr.sbin/named/doc/info/solaris.too new file mode 100644 index 000000000000..1145c980c5c5 --- /dev/null +++ b/usr.sbin/named/doc/info/solaris.too @@ -0,0 +1,50 @@ +Delivery-Date: Fri, 24 Feb 1995 09:15:19 -0800 +Received: by gw.home.vix.com id AA05776; Fri, 24 Feb 95 09:15:11 -0800 +Received: (from auclair@localhost) by jade.jouy.inra.fr (8.6.9/8.6.9) id RAA13441; Fri, 24 Feb 1995 17:45:43 +0100 +Date: Fri, 24 Feb 1995 17:45:43 +0100 +From: Philippe Auclair +Message-Id: <199502241645.RAA13441@jade.jouy.inra.fr> +To: Paul A Vixie +Subject: Remarks on bind-4.9.3-BETA17 on Solaris 2.4 + + +Hi, + +Just a few remarks on some slght difficulties I have had with Solaris 2.4. + +BIND-4.9.3 on Solaris 2.4 + +mkdep : +set PATH to use the right compiler +/opt/SUNWspro/bin/cc requires -xM argument, not -M + +I would recommend : +PIDDIR = /etc as for SunOS instead of /var/run +DESTHELP = /usr/lib as for SunOS instead of /usr/share/misc + +Sun's nslookup is in /usr/sbin, not /usr/bin. + +The Makefile says : "under solaris2.x, use 'make install' at your own risk." +I would say : "under solaris2.x, DON'T use 'make install'." + +Syntax of command "install" : + -c dir destination dir + -u user not -o user +You can't rename the file. + +-> needs a specific install procedure. + +Otherwise, it seems fine... + +Yours, +Philippe Auclair + +************************************************************** +* Institut National de la Recherche Agronomique * +* * +* Philippe Auclair Philippe.Auclair@jouy.inra.fr * +* Unite Informatique de Jouy tel +33 1-34-65-26-95 * +* Domaine de Vilvert fax +33 1-39-56-49-67 * +* 78352 Jouy-en-Josas Cedex * +************************************************************** + diff --git a/usr.sbin/named/doc/info/upgrade b/usr.sbin/named/doc/info/upgrade new file mode 100644 index 000000000000..8b4979f6e121 --- /dev/null +++ b/usr.sbin/named/doc/info/upgrade @@ -0,0 +1,56 @@ +Return-Path: bind-workers-request +Received: by gw.home.vix.com id AA12038; Tue, 11 Jan 94 14:51:12 -0800 +Received: by gw.home.vix.com id AA12026; Tue, 11 Jan 94 14:50:57 -0800 +Received: from drugs.syd.dms.CSIRO.AU + by dmssyd.syd.dms.CSIRO.AU (4.1/5.17) + id AA27838; Wed, 12 Jan 94 09:48:50 EST + (from marka@syd.dms.csiro.au (Mark Andrews)) +Message-Id: <9401112248.AA27838@dmssyd.syd.dms.CSIRO.AU> +To: clauberg@rrz.uni-koeln.de (Axel Clauberg) +Cc: bind-workers@vix.com +Subject: Re: 4.9.2-931205 primary NS on HP-UX 9.01 loosing own A records +In-Reply-To: Your message of "Tue, 11 Jan 1994 09:04:19 BST." + <199401110804.AA10185@noc.rrz.Uni-Koeln.DE> +Date: Wed, 12 Jan 1994 09:48:38 +1100 +From: Mark Andrews + + +> Hi all, +> I seem to have a strange problem with 4.9.2-931205+patch01 running on our +> primary nameserver. This is an HP 9000/720 under HP-UX 9.01. +> This machine is running primary for our 4 zones, secondary for around +> 170 other german zones. +> After running properly for around two days, named suddenly lost the two addre +> ss +> records for its own machine. The HINFO was still present. This happened +> for the second time within a week now. +> +> Before I start a long debugging named session: did anyone else running +> it on HP machines see this problem ? We've been running it for about a +> month on all our secondaries (AIX 3.2.5, SunOS 4.1.3, Solaris 2.3) without +> this strangeness. +> +> Best regards, Axel +> +> + From this message I would assume that the following events + occured. + + This is the first installation of 4.9{.X} on this machine. + The old cache files were NOT removed prior to starting the new + nameserver. + + What has happened here in the glue A records in the old cache + files were read into the internal cache with a higher clev than + the real A records. A zone transfer then occured for the zone + from which they were loaded and the A records were `lost'. + + 4.9.2 depends on the cache files having been made with a 4.9.2 + named-xfer. + + Mark. +-- +Mark Andrews, CSIRO Div Maths & Stats +Locked Bag 17, North Ryde, NSW 2113, Australia. +PHONE: +61 2 325 3148 INTERNET: marka@syd.dms.csiro.au +UUCP: ....!uunet!syd.dms.csiro.au!marka diff --git a/usr.sbin/named/doc/misc/DynamicUpdate b/usr.sbin/named/doc/misc/DynamicUpdate new file mode 100644 index 000000000000..4cd43a12bb34 --- /dev/null +++ b/usr.sbin/named/doc/misc/DynamicUpdate @@ -0,0 +1,286 @@ +[ Deprecated, unsupported, nonfunctional, but not yet completely excised. ] + + + + Description of Dynamic Update and T_UNSPEC Code + + + + + Added by Mike Schwartz + University of Washington Computer Science Department + 11/86 + schwartz@cs.washington.edu + + + + +I have incorporated 2 new features into BIND: + 1. Code to allow (unauthenticated) dynamic updates: surrounded by + #ifdef ALLOW_UPDATES + 2. Code to allow data of unspecified type: surrounded by + #ifdef ALLOW_T_UNSPEC + +Note that you can have one or the other or both (or neither) of these +modifications running, by appropriately modifying the makefiles. Also, +the external interface isn't changed (other than being extended), i.e., +a BIND server that allows dynamic updates and/or T_UNSPEC data can +still talk to a 'vanilla' server using the 'vanilla' operations. + +The description that follows is broken into 3 parts: a functional +description of the dynamic update facility, a functional description of +the T_UNSPEC facility, and a discussion of the implementation of +dynamic updates. The implementation description is mostly intended for +those who want to make future enhancements (especially the addition of +a good authentication mechanism). If you make enhancements, I would be +interested in hearing about them. + + + + + + 1. Dynamic Update Facility + +I added this code in conjunction with my research into naming in large +heterogeneous systems. For the purposes of this research, I ignored +security issues. In other words, no authentication/authorization +mechanism exists to control updates. Authentication will hopefully be +addressed at some future point (although probably not by me). In the +mean time, BIND Internet name servers (as opposed to "private" name +server networks operating with their own port numbers, as I use in my +research) should be compiled *without* -DALLOW_UPDATES, so that the +integrity of the Internet name database won't be compromised by this +code. + + +There are 5 different dynamic update interfaces: + UPDATEA - add a resource record + UPDATED - delete a specific resource record + UPDATEDA - delete all named resource records + UPDATEM - modify a specific resource record + UPDATEMA - modify all named resource records + +These all work through the normal resolver interface, i.e., these +interfaces are opcodes, and the data in the buffers passed to +res_mkquery must conform to what is expected for the particular +operation (see the #ifdef ALLOW_UPDATES extensions to nstest.c for +example usage). + +UPDATEM is logically equivalent to an UPDATED followed by an UPDATEA, +except that the updates occur atomically at the primary server (as +usual with Domain servers, secondaries may become temporarily +inconsistent). The difference between UPDATED and UPDATEDA is that the +latter allows you to delete all RRs associated with a name; similarly +for UPDATEM and UPDATEMA. The reason for the UPDATE{D,M}A interfaces +is two-fold: + + 1. Sometimes you want to delete/modify some data, but you know you'll + only have a single RR for that data; in such a case, it's more + convenient to delete/modify the RR by just giving the name; + otherwise, you would have to first look it up, and then + delete/modify it. + + 2. It is sometimes useful to be able to delete/modify multiple RRs + this way, since one can then perform the operation atomically. + Otherwise, one would have to delete/modify the RRs one-by-one. + +One additional point to note about UPDATEMA is that it will return a +success status if there were *zero* or more RRs associated with the given +name (and the RR add succeeds), whereas UPDATEM, UPDATED, and UPDATEDA +will return a success status if there were *one* or more RRs associated +with the given name. The reason for the difference is to handle the +(probably common) case where what you want to do is set a particular +name to contain a single RR, irrespective of whether or not it was +already set. + + + + + 2. T_UNSPEC Facility + +Type T_UNSPEC allows you to store data whose layout BIND doesn't +understand. Data of this type is not marshalled (i.e., converted +between host and network representation, as is done, for example, with +Internet addresses) by BIND, so it is up to the client to make sure +things work out ok w.r.t. heterogeneous data representations. The way +I use this type is to have the client marshal data, store it, retrieve +it, and demarshal it. This way I can store arbitrary data in BIND +without having to add new code for each specific type. + +T_UNSPEC data is dumped in an ASCII-encoded, checksummed format so +that, although it's not human-readable, it at least doesn't fill the +dump file with unprintable characters. + +Type T_UNSPEC is important for my research environment, where +potentially lots of people want to store data in the name service, and +each person's data looks different. Instead of having BIND understand +the format of each of their data types, the clients define marshaling +routines and pass buffers of marshalled data to BIND; BIND never tries +to demarshal the data...it just holds on to it, and gives it back to +the client when the client requests it, and the client must then +demarshal it. + +The Xerox Network System's name service (the Clearinghouse) works this +way. The reason 'vanilla' BIND understands the format of all the data +it holds is probably that BIND is tailored for a very specific +application, and wants to make sure the data it holds makes sense (and, +for some types, BIND needs to take additional action depending on the +data's semantics). For more general purpose name services (like the +Clearinghouse and my usage of BIND), this approach is less tractable. + +See the #ifdef ALLOW_T_UNSPEC extensions to nstest.c for example usage of +this type. + + + + + + + 3. Dynamic Update Implementation Description + +This section is divided into 3 subsections: General Discussion, +Miscellaneous Points, and Known Defects. + + + + + 3.1 General Discussion + +The basic scheme is this: When an update message arrives, a call is +made to InitDynUpdate, which first looks up the SOA record for the zone +the update affects. If this is the primary server for that zone, we do +the update and then update the zone serial number (so that secondaries +will refresh later). If this is a secondary server, we forward the +update to the primary, and if that's successful, we update our copy +afterwards. If it's neither, we refuse the update. (One might think +to try to propagate the update to an authoritative server; I figured +that updates will probably be most likely within an administrative +domain anyway; this could be changed if someone has strong feelings +about it). + +Note that this mechanism disallows updates when the primary is +down, preserving the Domain scheme's consistency requirements, +but making the primary a critical point for updates. This seemed +reasonable to me because + 1. Alternative schemes must deal with potentially complex + situations involving merging of inconsistent secondary + updates + 2. Updates are presumed to be rare relative to read accesses, + so this increased restrictiveness for updates over reads is + probably not critical + +I have placed comments through out the code, so it shouldn't be +too hard to see what I did. The majority of the processing is in +doupdate() and InitDynUpdate(). Also, I added a field to the zone +struct, to keep track of when zones get updated, so that only changed +zones get checkpointed. + + + + + + 3.2 Miscellaneous Points + +I use ns_maint to call zonedump() if the database changes, to +provide a checkpointing mechanism. I use the zone refresh times to +set up ns_maint interrupts if there are either secondaries or +primaries. Hence, if there is a secondary, this interrupt can cause +zoneref (as before), and if there is a primary, this interrupt can +cause doadump. I also checkpoint if needed before shutting down. + +You can force a server to checkpoint any changed zones by sending the +maint signal (SIGALRM) to the process. Otherwise it just checkpoints +during maint. interrupts, or when being shutdown (with SIGTERM). +Sending it the dump signal causes the database to be dumped into the +(single) dump file, but doesn't checkpoint (i.e., update the boot +files). Note that the boot files will be overwritten with checkpoint +files, so if you want to preserve the comments, you should keep copies +of the original boot files separate from the versions that are actually +used. + +I disallow T_SOA updates, for several reasons: + - T_SOA deletes at the primary wont be discovered by the secondaries + until they try to request them at maint time, which will cause + a failure + - the corresponding NS record would have to be deleted at the same + time (atomically) to avoid various problems + - T_SOA updates would have to be done in the right order, or else + the primary and secondaries will be out-of-sync for that zone. +My feeling is that changing the zone topology is a weighty enough thing +to do that it should involve changing the load file and reloading all +affected servers. + +There are alot of places where bind exits due to catastrophic failures +(mainly malloc failures). I don't try to dump the database in these +places because it's probably inconsistent anyway. It's probably better +to depend on the most recent dump. + + + + + + 3.2 Known Defects + +1. I put the following comment in nlookup (db_lookup.c): + + Note: at this point, if np->n_data is NULL, we could be in one + of two situations: Either we have come across a name for which + all the RRs have been (dynamically) deleted, or else we have + come across a name which has no RRs associated with it because + it is just a place holder (e.g., EDU). In the former case, we + would like to delete the namebuf, since it is no longer of use, + but in the latter case we need to hold on to it, so future + lookups that depend on it don't fail. The only way I can see + of doing this is to always leave the namebufs around (although + then the memory usage continues to grow whenever names are + added, and can never shrink back down completely when all their + associated RRs are deleted). + + Thus, there is a problem that the memory usage will keep growing for + the situation described. You might just choose to ignore this + problem (since I don't see any good way out), since things probably + wont grow fast anyway (how many names are created and then deleted + during a single server incarnation, after all?) + + The problem is that one can't delete old namebufs because one would + want to do it from db_update, but db_update calls nlookup to do the + actual work, and can't do it there, since we need to maintain place + holders. One could make db_update not call nlookup, so we know it's + ok to delete the namebuf (since we know the call is part of a delete + call); but then there is code with alot of overlapping functionality + in the 2 routines. + + This also causes another problem: If you create a name and then do + UPDATEDA, all it's RRs get deleted, but the name remains; then, if you + do a lookup on that name later, the name is found in the hash table, + but no RRs are found for it. It then forwards the query to itself (for + some reason), and then somehow decides there is no such domain, and then + returns (with the correct answer, but after going through extra work). + But the name remains, and each time it is looked up, we go through + these same steps. This should be fixed, but I don't have time right + now (and the right answer seems to come back anyway, so it's good + enough for now). + +2. There are 2 problems that crop up when you store data (other than + T_SOA and T_NS records) in the root: + a. Can't get primary to doaxfr RRs other than SOA and NS to + secondary. + b. Upon checkpoint (zonedump), this data sometimes comes out after other + data in the root, so that (since the SOA and NS records have null + names), they will get interpreted as being records under the + other names upon the next boot up. For example, if you have a + T_A record called ABC, the checkpoint may look like: + $ORIGIN . + ABC IN A 128.95.1.3 + 99999999 IN NS UW-BORNEO. + IN SOA UW-BORNEO. SCHWARTZ.CS.WASHINGTON.EDU. + ( 50 3600 300 3600000 3600 ) + Then when booting up the next time, the SOA and NS records get + interpreted as being called "ABC" rather than the null root + name. + +3. The secondary server caches the T_A RR for the primary, and hence when + it tries to ns_forw an update, it won't find the address of the primary + using nslookup unless that T_A RR is *also* stored in the main hashtable + (by putting it in a named.db file as well as the named.ca file). + diff --git a/usr.sbin/named/doc/misc/FAQ.1of2 b/usr.sbin/named/doc/misc/FAQ.1of2 new file mode 100644 index 000000000000..0b941f198e38 --- /dev/null +++ b/usr.sbin/named/doc/misc/FAQ.1of2 @@ -0,0 +1,1602 @@ +Newsgroups: comp.protocols.tcp-ip.domains,comp.answers,news.answers +Path: vixie!news1.digital.com!su-news-hub1.bbnplanet.com!cpk-news-hub1.bbnplanet.com!news.bbnplanet.com!cam-news-hub1.bbnplanet.com!news.mathworks.com!news.kei.com!uhog.mit.edu!rutgers!njitgw.njit.edu!hertz.njit.edu!cdp2582 +From: cdp2582@hertz.njit.edu (Chris Peckham) +Subject: comp.protocols.tcp-ip.domains Frequently Asked Questions (FAQ) (Part 1 of 2) +Message-ID: +Followup-To: comp.protocols.tcp-ip.domains +Originator: cdp2582@hertz.njit.edu +Keywords: BIND,DOMAIN,DNS +Sender: news@njit.edu +Supersedes: +Nntp-Posting-Host: hertz.njit.edu +X-Posting-Frequency: posted during the first week of each month +Reply-To: domain-faq@njit.edu (comp.protocols.tcp-ip.domains FAQ comments) +Organization: NJIT.EDU - New Jersey Institute of Technology, Newark, NJ, USA +Date: Sat, 7 Dec 1996 06:42:36 GMT +Approved: news-answers-request@MIT.EDU +Expires: Sat 11 Jan 97 02:42:29 EDT +Lines: 1582 +Xref: vixie comp.protocols.tcp-ip.domains:12904 comp.answers:22440 news.answers:85682 + +Posted-By: auto-faq 3.1.1.2 +Archive-name: internet/tcp-ip/domains-faq/part1 +Revision: 1.14 1996/12/07 06:42:05 + + +Note that this posting has been split into two parts because of its size. + +$Id: FAQ.1of2,v 1.1.1.1 1997/04/13 09:07:59 mrg Exp $ + +A new version of this document appears monthly. If this copy is more +than a month old it may be out of date. + +This FAQ is edited and maintained by Chris Peckham, . The +most recently posted version may be found for anonymous ftp from + +rtfm.mit.edu : /pub/usenet/news.answers/internet/tcp-ip/domains-faq + +It is also available in HTML from +http://www.users.pfmc.net/~cdp/cptd-faq/. + +If you can contribute any answers for items in the TODO section, please do +so by sending e-mail to ! If you know of any items +that are not included and you feel that they should be, send the +relevant information to . + +=============================================================================== + +Index + + Section 1. TO DO / UPDATES + Q1.1 Contributions needed + Q1.2 UPDATES / Changes since last posting + + Section 2. INTRODUCTION / MISCELLANEOUS + Q2.1 What is this newsgroup ? + Q2.2 More information + Q2.3 What is BIND ? + Q2.4 What is the difference between BIND and DNS ? + Q2.5 Where is the latest version of BIND located ? + Q2.6 How can I find the path taken between two systems/domains ? + Q2.7 How do you find the hostname given the TCP-IP address ? + Q2.8 How do I register a domain ? + Q2.9 How can I change the IP address of our server ? + Q2.10 Issues when changing your domain name + Q2.11 How memory and CPU does DNS use ? + Q2.12 Other things to consider when planning your servers + Q2.13 Proper way to get NS and reverse IP records into DNS + Q2.14 How do I get my address assigned from the NIC ? + Q2.15 Is there a block of private IP addresses I can use? + Q2.16 Does BIND cache negative answers (failed DNS lookups) ? + Q2.17 What does an NS record really do ? + Q2.18 DNS ports + Q2.19 What is the cache file + Q2.20 Obtaining the latest cache file + Q2.21 Selecting a nameserver/root cache + Q2.22 InterNIC and domain names + + Section 3. UTILITIES + Q3.1 Utilities to administer DNS zone files + Q3.2 DIG - Domain Internet Groper + Q3.3 DNS packet analyser + Q3.4 host + Q3.5 How can I use DNS information in my program? + Q3.6 A source of information relating to DNS + + Section 4. DEFINITIONS + Q4.1 TCP/IP Host Naming Conventions + Q4.2 What are slaves and forwarders ? + Q4.3 When is a server authoritative? + Q4.4 My server does not consider itself authoritative ! + Q4.5 NS records don't configure servers as authoritative ? + Q4.6 underscore in host-/domainnames + Q4.7 What is lame delegation ? + Q4.8 How can I see if the server is "lame" ? + Q4.9 What does opt-class field in a zone file do? + Q4.10 Top level domains + Q4.11 Classes of networks + Q4.12 What is CIDR ? + Q4.13 What is the rule for glue ? + + Section 5. CONFIGURATION + Q5.1 Changing a Secondary server to a Primary server ? + Q5.2 Moving a Primary server to another server + Q5.3 How do I subnet a Class B Address ? + Q5.4 Subnetted domain name service + Q5.5 Recommended format/style of DNS files + Q5.6 DNS on a system not connected to the Internet + Q5.7 Multiple Domain configuration + Q5.8 wildcard MX records + Q5.9 How do you identify a wildcard MX record ? + Q5.10 Why are fully qualified domain names recommended ? + Q5.11 Distributing load using named + Q5.12 Order of returned records + Q5.13 resolv.conf + Q5.14 How do I delegate authority for sub-domains ? + Q5.15 DNS instead of NIS on a Sun OS 4.1.x system + Q5.16 Patches to add functionality to BIND + Q5.17 How to serve multiple domains from one server + + Section 6. PROBLEMS + Q6.1 No address for root server + Q6.2 Error - No Root Nameservers for Class XX + Q6.3 Bind 4.9.x and MX querying? + Q6.4 Do I need to define an A record for localhost ? + Q6.5 MX records, CNAMES and A records for MX targets + Q6.6 Can an NS record point to a CNAME ? + Q6.7 Nameserver forgets own A record + Q6.8 General problems (core dumps !) + Q6.9 malloc and DECstations + Q6.10 Can't resolve names without a "." + Q6.11 Err/TO errors being reported + Q6.12 Why does swapping kill BIND ? + + Section 7. ACKNOWLEDGEMENTS + Q7.1 How is this FAQ generated ? + Q7.2 What formats are available ? + Q7.3 Contributors + +=============================================================================== + +Section 1. TO DO / UPDATES + + Q1.1 Contributions needed + Q1.2 UPDATES / Changes since last posting + +----------------------------------------------------------------------------- + +Question 1.1. Contributions needed + +Date: Fri Dec 6 00:40:00 EST 1996 + +* Expand the slave/forward section + +----------------------------------------------------------------------------- + +Question 1.2. UPDATES / Changes since last posting + +Date: Fri Dec 6 00:40:00 EST 1996 + +* The FAQ is now maintained in BFNN (Bizzare format with No Name). This + allows me to create ASCII, HTML, and GNU info (postscript coming soon) + from one source file. +* References to 4.9.4 changed to 4.9.5. +* memory/CPU usage question - removed uunet map reference. Not there... +* Minor edits of information and questions for new format. +* How do I delegate authority for sub-domains ? - edited answer + +=============================================================================== + +Section 2. INTRODUCTION / MISCELLANEOUS + + Q2.1 What is this newsgroup ? + Q2.2 More information + Q2.3 What is BIND ? + Q2.4 What is the difference between BIND and DNS ? + Q2.5 Where is the latest version of BIND located ? + Q2.6 How can I find the path taken between two systems/domains ? + Q2.7 How do you find the hostname given the TCP-IP address ? + Q2.8 How do I register a domain ? + Q2.9 How can I change the IP address of our server ? + Q2.10 Issues when changing your domain name + Q2.11 How memory and CPU does DNS use ? + Q2.12 Other things to consider when planning your servers + Q2.13 Proper way to get NS and reverse IP records into DNS + Q2.14 How do I get my address assigned from the NIC ? + Q2.15 Is there a block of private IP addresses I can use? + Q2.16 Does BIND cache negative answers (failed DNS lookups) ? + Q2.17 What does an NS record really do ? + Q2.18 DNS ports + Q2.19 What is the cache file + Q2.20 Obtaining the latest cache file + Q2.21 Selecting a nameserver/root cache + Q2.22 InterNIC and domain names + +----------------------------------------------------------------------------- + +Question 2.1. What is this newsgroup ? + +Date: Thu Dec 1 11:08:28 EST 1994 + +comp.protocols.tcp-ip.domains is the usenet newsgroup for discussion on +issues relating to the Domain Name System (DNS). + +This newsgroup is not for issues directly relating to IP routing and +addressing. Issues of that nature should be directed towards +comp.protocols.tcp-ip. + +----------------------------------------------------------------------------- + +Question 2.2. More information + +Date: Fri Dec 6 00:41:03 EST 1996 + +You can find more information concerning DNS in the following places: + +* The BOG (BIND Operations Guide) - in the BIND distribution +* The FAQ included with BIND 4.9.5 in doc/misc/FAQ +* DNS and BIND by Albitz and Liu (an O'Reilly & Associates Nutshell + handbook) +* A number of RFCs (920, 974, 1032, 1034, 1101, 1123, 1178, 1183, 1348, + 1535, 1536, 1537, 1591, 1706, 1712, 1713, 1912, 1918) +* The DNS Resources Directory (DNSRD) http://www.dns.net/dnsrd/ +* If you are having troubles relating to sendmail and DNS, you may wish to + refer to the USEnet newsgroup comp.mail.sendmail and/or the FAQ for that + newsgroup which may be found for anonymous ftp at rtfm.mit.edu : + /pub/usenet/news.answers/mail/sendmail-faq +* Information concerning some frequently asked questions relating to the + Internet (i.e., what is the InterNIC, what is an RFC, what is the IETF, + etc) may be found for anonymous ftp from ds.internic.net : /fyi/fyi4.txt + A version may also be obtained with the URL + gopher://ds.internic.net/00/fyi/fyi4.txt. +* Information on performing an initial installation of BIND may be found + using the DNS Resources Directory at + http://www.dns.net/dnsrd/docs/basic.txt +* Three other USEnet newsgroups: + + * comp.protocols.dns.bind + * comp.protocols.dns.ops + * comp.protocols.dns.std + +----------------------------------------------------------------------------- + +Question 2.3. What is BIND ? + +Date: Tue Sep 10 23:15:58 EDT 1996 + +From the BOG Introduction - + +The Berkeley Internet Name Domain (BIND) implements an Internet name +server for the BSD operating system. The BIND consists of a server (or +``daemon'') and a resolver library. A name server is a network +service that enables clients to name resources or objects and share this +information with other objects in the network. This in effect is a +distributed data base system for objects in a computer network. BIND +is fully integrated into BSD (4.3 and later releases) network programs +for use in storing and retrieving host names and address. The system +administrator can configure the system to use BIND as a replacement to +the older host table lookup of information in the network hosts file +/etc/hosts. The default configuration for BSD uses BIND. + +----------------------------------------------------------------------------- + +Question 2.4. What is the difference between BIND and DNS ? + +Date: Tue Sep 10 23:15:58 EDT 1996 + +(text provided by Andras Salamon) DNS is the Domain Name System, a set of +protocols for a distributed database that was originally designed to +replace /etc/hosts files. DNS is most commonly used by applications to +translate domain names of hosts to IP addresses. A client of the DNS is +called a resolver; resolvers are typically located in the application +layer of the networking software of each TCP/IP capable machine. Users +typically do not interact directly with the resolver. Resolvers query the +DNS by directing queries at name servers that contain parts of the +distributed database that is accessed by using the DNS protocols. In +common usage, `the DNS' usually refers just to the data in the database. + +BIND (Berkeley Internet Name Domain) is an implementation of DNS, both +server and client. Development of BIND is funded by the Internet Software +Consortium and is coordinated by Paul Vixie. BIND has been ported to +Windows NT and VMS, but is most often found on Unix. BIND source code is +freely available and very complex; most of the development on the DNS +protocols is based on this code; and most Unix vendors ship BIND-derived +DNS implementations. As a result, the BIND name server is the most widely +used name server on the Internet. In common usage, `BIND' usually refers +to the name server that is part of the BIND distribution, and sometimes to +name servers in general (whether BIND-derived or not). + +----------------------------------------------------------------------------- + +Question 2.5. Where is the latest version of BIND located ? + +Fri Dec 6 00:23:19 EST 1996 + +This information may be found at http://www.vix.com/isc/bind.html + +At this time, BIND version of 4.9.5 may be found for anonymous ftp from + +ftp.vix.com : /pub/bind/release/4.9.5/bind-4.9.5-REL.tar.gz + +Other sites that officially mirror the BIND distribution are + +* bind.fit.qut.edu.au : /pub/bind +* ftp.funet.fi : /pub/unix/tcpip/dns/bind +* ftp.univ-lyon1.fr : /pub/mirrors/unix/bind +* ftp.oleane.net : /pub/mirrors/unix/bind +* ftp.ucr.ac.cr : /pub/Unix/dns/bind +* ftp.luth.se : /pub/unix/dns/bind/beta + +You may need GNU zip, Larry Wall's patch program (if there are any patch +files), and a C compiler to get BIND running from the above mentioned +source. + +GNU zip is available for anonymous ftp from + +prep.ai.mit.edu : /pub/gnu/gzip-1.2.4.tar + +patch is available for anonymous ftp from + +prep.ai.mit.edu : /pub/gnu/patch-2.1.tar.gz + +A version of BIND for Windows NT is available for anonymous ftp from + +ftp.vix.com : /pub/bind/release/4.9.5/contrib/ntdns495relbin.zip + +and + +ftp.vix.com : /pub/bind/release/4.9.5/contrib/ntbind495rel.zip + +----------------------------------------------------------------------------- + +Question 2.6. How can I find the path taken between two systems/domains ? + +Date: Fri Dec 6 00:10:31 EST 1996 + +On a Unix system, use traceroute. If it is not available to you, you may +obtain the source source for 'traceroute', compile it and install it on +your system. + +One version of this program with additional functionality may be found for +anonymous ftp from + +ftp.nikhef.nl : /pub/network/traceroute.tar.Z + +Another version may be found for anonymous ftp from + +ftp.psc.edu : /pub/net_tools/traceroute.tar + +----------------------------------------------------------------------------- + +Question 2.7. How do you find the hostname given the TCP-IP address ? + +Date: Thu Dec 1 09:55:24 EST 1994 + +For an address a.b.c.d you can always do: + + % nslookup + > set q=ptr + > d.c.b.a.in-addr.arpa. + +Most newer version of nslookup (since 4.8.3) will recognize an address, so +you can just say: + + % nslookup a.b.c.d + +DiG will work like this also: + + % dig -x a.b.c.d + +host from the contrib/host from the bind distribution may also be used. + +----------------------------------------------------------------------------- + +Question 2.8. How do I register a domain ? + +Date: Wed Sep 4 23:59:42 EDT 1996 + +You can talk to your Internet Service Provider (ISP). They can submit the +registration for you. If you are not going to be directly connected, they +should be able to offer MX records for your domain for mail delivery (so +that mail sent to the new domain will be sent to your "standard" account). +In the case where the registration is done by the organization itself, it +still makes the whole process much easier if the ISP is approached for +secondary servers _before_ the InterNIC is approached for registration. + +For information about making the registration yourself, look to the +InterNIC (or other similar organization). + +* anonymout ftp from internic.net : /templates +* gopher://rs.internic.net/ +* http://rs.internic.net/reg/reg-forms.html +* http://www.ripe.net/ + +You will need at least two domain name servers when you register your +domain. Many ISP's are willing to provide primary and/or secondary name +service for their customers. + +Please note that the InterNIC is now charging a fee for domain names in +the "COM", "ORG", and "NET". More information may be found from the +Internic at + +http://rs.internic.net/domain-info/fee-policy.html + +Many times, registration of a domain name can be initiated by sending +e-mail to the zone contact. You can obtain the contact in the SOA record +for the country, or in a whois server: + + $ nslookup -type=SOA fr. + origin = ns1.nic.fr + mail addr = nic.nic.fr + ... + +The mail address to contact in this case is 'nic@nic.fr' (you must +substitute an '@' for the first dot in the mail addr field). + +An alternate method to obtain the e-mail address of the national NIC is +the 'whois' server at InterNIC. + +You may be requested to make your request to another email address or +using a certain information template/application. + +----------------------------------------------------------------------------- + +Question 2.9. How can I change the IP address of our server ? + +Date: Sun May 5 22:46:28 EDT 1996 + +(From Mark Andrews) Before the move. + +* Ensure you are running a modern nameserver. BIND 4.9.3-REL + Patch1 is a + good choice. +* Inform all your secondaries that you are going to change. Have them + install both the current and new addresses in their named.boot's. +* Drop the ttl of the A's associated with the nameserver to something + small (5 min is usually good). +* Drop the refesh and retry times of the zone containing the forward + records for the server. +* Configure the new reverse zone before the move and make sure it is + operational. +* On the day of the move add the new A record(s) for the server. Don't + forget to have these added to parent domains. You will look like you are + multihomed with one interface dead. + +Move the machine after gracefully terminating any other services it is +offering. Then, + +* Fixup the A's, ttl, refresh and retry counters. (If you are running an + all server EDIT out all references to the old addresses in the cache + files). +* Inform all the secondaries the move is complete. +* Inform the parents of all zones you are primary of the new NS/A pairs + for the relevent zones. +* Inform all the administators of zones you are secondaring that the + machine has moved. +* For good measure update the serial no for all zones you are primary for. + This will flush out old A's. + +----------------------------------------------------------------------------- + +Question 2.10. Issues when changing your domain name + +Date: Sun Nov 27 23:32:41 EST 1994 + +If you are changing your domain name from abc.foobar.com to foobar.net, +the forward zones are easy and there are a number of ways to do it. One +way is the following: + +Have a single db file for the 2 domains, and have a single machine be the +primary server for both abc.foobar.com and foobar.net. + +To resolve the host foo in both domains, use a single zone file which +merely uses this for the host: + +foo IN A 1.2.3.4 + +Use a "@" wherever the domain would be used ie for the SOA: + +@ IN SOA (... + +Then use this pair of lines in your named.boot: + +primary abc.foobar.com db.foobar +primary foobar.net db.foobar + +The reverse zones should either contain PTRs to both names, or to +whichever name you believe to be canonical currently. + +----------------------------------------------------------------------------- + +Question 2.11. How memory and CPU does DNS use ? + +Date: Fri Dec 6 01:07:56 EST 1996 + +It can use quite a bit ! The main thing that BIND needs is memory. It +uses very little CPU or network bandwidth. The main considerations to +keep in mind when planning are: + +* How many zones do you have and how large are they ? +* How many clients do you expect to serve and how active are they ? + +As an example, here is a snapshot of memory usage from CSIRO Division of +Mathematics and Statistics, Australia + + Named takes several days to stabalize its memory usage. + + Our main server stabalises at ~10Mb. It takes about 3 days to + reach this size from 6 M at startup. This is under Sun OS 4.1.3U1. + +As another example, here is the configuration of ns.uu.net (from late +1994): + + ns.uu.net only does nameservice. It is running a version of BIND + 4.9.3 on a Sun Classic with 96 MB of RAM, 220 MB of swap (remember + that Sun OS will reserve swap for each fork, even if it is not needed) + running Sun OS 4.1.3_U1. + + Joseph Malcolm, of Alternet, states that named generally hovers at + 5-10% of the CPU, except after a reload, when it eats it all. + +----------------------------------------------------------------------------- + +Question 2.12. Other things to consider when planning your servers + +Date: Mon Jan 2 14:24:51 EST 1995 + +When making the plans to set up your servers, you may want to also +consider the following issues: + + A) Server O/S limitations/capacities (which tend to be widely + divergent from vendor to vendor) + B) Client resolver behavior (even more widely divergent) + C) Expected query response time + D) Redundancy + E) Desired speed of change propagation + F) Network bandwidth availability + G) Number of zones/subdomain-levels desired + H) Richness of data stored (redundant MX records? HINFO records?) + I) Ease of administration desired + J) Network topology (impacts reverse-zone volume) + + Assuming a best-possible case for the factors above, particularly (A), (B), + (C), (F), (G) & (H), it would be possible to run a 1000-node domain + using a single lowly 25 or 40 MHz 386 PC with a fairly modest amount of RAM + by today's standards, e.g. 4 or 8 Meg. However, this configuration would + be slow, unreliable, and would provide no functionality beyond your basic + address-to-name and name-to-address mappings. + + Beyond that baseline case, depending on what factors listed above, + you may want look at other strategies, such splitting up the DNS + traffic among several machines strategically located, possibly larger ones, + and/or subdividing your domain itself. There are many options, tradeoffs, + and DNS architectural paradigms from which to choose. +----------------------------------------------------------------------------- + +Question 2.13. Proper way to get NS and reverse IP records into DNS + +Date: Mon Jan 2 13:03:53 EST 1995 + +Reverse domain registration is separate from forward domain registration. +Blocks of network addresses have been delegated by the InterNIC. Check if +your network a.b.c.0 is in such a block by using nslookup: + + nslookup -type=soa c.b.a.in-addr.arpa. + nslookup -type=soa b.a.in-addr.arpa. + nslookup -type=soa a.in-addr.arpa. + +One of the above should give you the information you are looking for (the +others will return with an error something like `*** No start of authority +(SOA) records available for ...') This will give you the email address of +the person to whom you should address your change request. + +If none of these works, your network probably has not been delegated by +the InterNIC and you need to contact them directly. + +CIDR has meant that the registration is delegated, but registration of +in-addr.arpa has always been separate from forward zones - and for good +reason - in that the forward and reverse zones may have different +policies, contents etc, may be served by a different set of nameservers, +and exist at different times (usually only at point of creation). There +isn't a one-to-one mapping between the two, so merging the registration +would probably cause more problems than people forgetting/not-knowing that +they had to register in-addr.arpa zones separately. For example, there +are organizations that have hundreds of networks and two or more domains, +with a sprinkling of machines from each network in each of the domains. + +----------------------------------------------------------------------------- + +Question 2.14. How do I get my address assigned from the NIC ? + +Date: Fri Dec 6 01:11:34 EST 1996 + +You should probably ask your Internet provider to give you an address. +These days, addresses are being distributed through the providers, so that +they can assign adjacent blocks of addresses to sites that go through the +same provider, to permit more efficient routing on the backbones. + +Unless you have thousands of hosts, you probably won't be able to get a +class B these days. Instead, you can get a series of class C networks. +Large requests will be queried, so be ready to provide a network plan if +you ask for more than 16 class C networks. + +If you can't do this through your Internet provider, you can look for a +subnet registration form on rs.internic.net. See the answer in this FAQ +to the question "How do I register a domain" for a URL to these forms. + +----------------------------------------------------------------------------- + +Question 2.15. Is there a block of private IP addresses I can use? + +Date: Sun May 5 23:02:49 EDT 1996 + +Yes there is. Please refer to RFC 1918: + + 1918 Address Allocation for Private Internets. Y. Rekhter, B. + Moskowitz, D. Karrenberg, G. de Groot, & E. Lear. February 1996. + (Format: TXT=22270 bytes) + +RFC 1918 documents the allocation of the following addresses for use by +``private internets'': + + 10.0.0.0 - 10.255.255.255 + 172.16.0.0 - 172.31.255.255 + 192.168.0.0 - 192.168.255.255 + +----------------------------------------------------------------------------- + +Question 2.16. Does BIND cache negative answers (failed DNS lookups) ? + +Date: Mon Jan 2 13:55:50 EST 1995 + +Yes, BIND 4.9.3 and more recent versions will cache negative answers. + +----------------------------------------------------------------------------- + +Question 2.17. What does an NS record really do ? + +Date: Wed Sep 4 22:52:18 EDT 1996 + +The NS records in your zone data file pointing to the zone's name servers +(as opposed to the servers of delegated subdomains) don't do much. +They're essentially unused, though they are returned in the authority +section of reply packets from your name servers. + +However, the NS records in the zone file of the parent domain are used to +find the right servers to query for the zone in question. These records +are more important than the records in the zone itself. + +----------------------------------------------------------------------------- + +Question 2.18. DNS ports + +Date: Fri Feb 10 15:40:10 EST 1995 + +The following table shows what TCP/UDP ports DNS uses to send and receive +queries: + + Prot Src Dst Use + udp 53 53 Queries between servers (eg, recursive queries) + Replies to above + tcp 53 53 Queries with long replies between servers, zone + transfers Replies to above + udp >1023 53 Client queries (sendmail, nslookup, etc ...) + udp 53 >1023 Replies to above + tcp >1023 53 Client queries with long replies + tcp 53 >1023 Replies to above + + Note: >1023 is for non-priv ports on Un*x clients. On other client + types, the limit may be more or less. + +Another point to keep in mind when designing filters for DNS is that a DNS +server uses port 53 both as the source and destination for it's queries. +So, a client queries an initial server from an unreserved port number to +UDP port 53. If the server needs to query another server to get the +required info, it sends a UDP query to that server with both source and +destination ports set to 53. The response is then sent with the same +src=53 dest=53 to the first server which then responds to the original +client from port 53 to the original source port number. + +The point of all this is that putting in filters to only allow UDP between +a high port and port 53 will not work correctly, you must also allow the +port 53 to port 53 UDP to get through. + +Also, ALL versions of BIND use TCP for queries in some cases. The +original query is tried using UDP. If the response is longer than the +allocated buffer, the resolver will retry the query using a TCP +connection. If you block access to TCP port 53 as suggested above, you +may find that some things don't work. + +Newer version of BIND allow you to configure a list of IP addresses from +which to allow zone transfers. This mechanism can be used to prevent +people from outside downloading your entire namespace. + +----------------------------------------------------------------------------- + +Question 2.19. What is the cache file + +Date: Fri Dec 6 01:15:22 EST 1996 + +From the "Name Server Operations Guide" + + 6.3. Cache Initialization + + 6.3.1. root.cache + + The name server needs to know the servers that + are the authoritative name servers for the root + domain of the network. To do this we have to prime + the name server's cache with the addresses of these + higher authorities. The location of this file is + specified in the boot file. ... + +----------------------------------------------------------------------------- + +Question 2.20. Obtaining the latest cache file + +Date: Fri Dec 6 01:15:22 EST 1996 + +If you have a version of dig running, you may obtain the information with +the command + + dig @a.root-servers.net. . ns + +A perl script to handle some possible problems when using this method +from behind a firewall and that can also be used to periodically obtain +the latest cache file was posted to comp.protocols.tcp-ip.domains during +early October, 1996. It was posted with the subject "Keeping db.cache +current". It is available at +http://www.users.pfmc.net/~cdp/cptd-faq/current_db_cache.txt. + +The latest cache file may also be obtained from the InterNIC via ftp or +gopher: + + ; This file is made available by InterNIC registration services + ; under anonymous FTP as + ; file /domain/named.root + ; on server FTP.RS.INTERNIC.NET + ; -OR- under Gopher at RS.INTERNIC.NET + ; under menu InterNIC Registration Services (NSI) + ; submenu InterNIC Registration Archives + ; file named.root + +----------------------------------------------------------------------------- + +Question 2.21. Selecting a nameserver/root cache + +Date: Mon Aug 5 22:54:11 EDT 1996 + +Exactly how is the a root server selected from the root cache? Does the +resolver attempt to pick the closest host or is it random or is it via +sortlist-type workings? If the root server selected is not available (for +whatever reason), will the the query fail instead of attempting another +root server in the list ? + +Every recursive BIND name server (that is, one which is willing to go out +and find something for you if you ask it something it doesn't know) will +remember the measured round trip time to each server it sends queries to. +If it has a choice of several servers for some domain (like "." for +example) it will use the one whose measured RTT is lowest. + +Since the measured RTT of all NS RRs starts at zero (0), every one gets +tried one time. Once all have responded, all RTT's will be nonzero, and +the "fastest server" will get all queries henceforth, until it slows down +for some reason. + +To promote dispersion and good recordkeeping, BIND will penalize the RTT +by a little bit each time a server is reused, and it will penalize the RTT +a _lot_ if it ever has to retransmit a query. For a server to stay "#1", +it has to keep on answering quickly and consistently. + +Note that this is something BIND does that the DNS Specification does not +mention at all. So other servers, those not based on BIND, might behave +very differently. + +----------------------------------------------------------------------------- + +Question 2.22. InterNIC and domain names + +Date: Sun Jun 2 11:23:49 EDT 1996 + +The current InterNIC policy on what to do if someone wants to use a domain +name that is already in use may be found at + +rs.internic.net : /policy/internic/internic-domain-4.txt + +or + +http://rs.internic.net/domain-info/internic-domain-4.html. + +The following information was submitted by Carl Oppedahl + : + +If the jealous party happens to have a trademark registration, it is quite +likely that the domain name owner will lose the domain name, even if they +aren't infringing the trademark. This presents a substantial risk of loss +of a domain name on only 30 days' notice. Anyone who is the manager of an +Internet-connected site should be aware of this risk and should plan for +it. + +See "How do I protect myself from loss of my domain name?" at +http://www.patents.com/weblaw.sht#domloss. + +For an example of an ISP's battle to keep its domain name, see +http://www.patents.com/nsi.sht. + +A compendium of information on the subject may be found at +http://www.law.georgetown.edu/lc/internic/domain1.html. + +=============================================================================== + +Section 3. UTILITIES + + Q3.1 Utilities to administer DNS zone files + Q3.2 DIG - Domain Internet Groper + Q3.3 DNS packet analyser + Q3.4 host + Q3.5 How can I use DNS information in my program? + Q3.6 A source of information relating to DNS + +----------------------------------------------------------------------------- + +Question 3.1. Utilities to administer DNS zone files + +Date: Wed Sep 4 22:53:53 EDT 1996 + +There are a few utilities available to ease the administration of zone +files in the DNS. + +Two common ones are h2n and makezones. Both are perl scripts. h2n is +used to convert host tables into zone data files. It is available for +anonymous ftp from + +ftp.uu.net : /published/oreilly/nutshell/dnsbind/dns.tar.Z + +makezones works from a single file that looks like a forward zone file, +with some additional syntax for special cases. It is included in the +current BIND distribution. The newest version is always available for +anonymous ftp from + +ftp.cus.cam.ac.uk : /pub/software/programs/DNS/makezones + +More information may be found using the DNS Resources Directory + +http://www.dns.net/dnsrd/. + +----------------------------------------------------------------------------- + +Question 3.2. DIG - Domain Internet Groper + +Date: Thu Dec 1 11:09:11 EST 1994 + +The latest and greatest, official, accept-no-substitutes version of the +Domain Internet Groper (DiG) is the one that comes with BIND. Get the +latest kit. + +----------------------------------------------------------------------------- + +Question 3.3. DNS packet analyser + +Date: Wed Sep 4 23:43:57 EDT 1996 + +There is a free ethernet analyser called Ethload available for PC's +running DOS. The latest filename is ETHLD104.ZIP. It understands lots of +protocols including TCP/UDP. It'll look inside there and display +DNS/BOOTP/ICMP packets etc. (Ed. note: something nice for someone to add +to tcpdump ;^) ). Depending on the ethernet controller it's given it'll +perform slightly differently. It handles NDIS/Novell/Packet drivers. It +works best with Novell's promiscuous mode drivers. A SimTel mirror site +should have the program available for anonymous ftp. One is + +ftp.coast.net : /SimTel/msdos/lan/ethld104.zip + +----------------------------------------------------------------------------- + +Question 3.4. host + +Date: Sun Dec 4 21:15:38 EST 1994 + +A section from the host man page: + + host looks for information about Internet hosts and domain + names. It gets this information from a set of intercon- + nected servers that are spread across the world. The infor- + mation is stored in the form of "resource records" belonging + to hierarchically organized "zones". + + By default, the program simply converts between host names + and Internet addresses. However, with the -t, -a and -v + options, it can be used to find all of the information about + domain names that is maintained by the domain nameserver + system. The information printed consists of various fields + of the associated resource records that were retrieved. + + The arguments can be either host names (domain names) or + numeric Internet addresses. + +'host' is compatible with both BIND 4.9 and BIND 4.8 + +'host' may be found in contrib/host in the BIND distribution. The latest +version always available for anonymous ftp from + +ftp.nikhef.nl : /pub/network/host.tar.Z + +It may also be found for anonymous ftp from + +ftp.uu.net : /networking/ip/dns/host.tar.Z + +----------------------------------------------------------------------------- + +Question 3.5. How can I use DNS information in my program? + +Date: Fri Feb 10 15:25:11 EST 1995 + +It depends on precisely what you want to do: + +* Consider whether you need to write a program at all. It may well be + easier to write a shell program (e.g. using awk or perl) to parse the + output of dig, host or nslookup. +* If all you need is names and addresses, there will probably be system + routines 'gethostbyname' and 'gethostbyaddr' to provide this + information. +* If you need more details, then there are system routines (res_query and + res_search) to assist with making and sending DNS queries. However, + these do not include a routine to parse the resulting answer (although + routines to assist in this task are provided). There is a separate + library available that will take a DNS response and unpick it into its + constituent parts, returning a C structure that can be used by the + program. The source for this library is available for anonymous ftp at + + hpux.csc.liv.ac.uk : /hpux/Networking/Admin/resparse-1.2 + +----------------------------------------------------------------------------- + +Question 3.6. A source of information relating to DNS + +Date: Tue Nov 5 23:42:21 EST 1996 + +You may find utilities and tools to help you manage your zone files +(including WWW front-ends) in the "tools" section of the DNS resources +directory: + +http://www.dns.net/dnsrd/tools.html + +There are also a number of IP management tools available. Data +Communications had an article on the subject in Sept/Oct of 1996. The +tools mentioned in the article and a few others may be found at the +following sites: + +* IP Address management, http://www.accugraph.com +* IP-Track, http://www.on.com +* NetID, http://www.isotro.com +* QIP, http://www.quadritek.com +* UName-It, http://www.esm.com + +=============================================================================== + +Section 4. DEFINITIONS + + Q4.1 TCP/IP Host Naming Conventions + Q4.2 What are slaves and forwarders ? + Q4.3 When is a server authoritative? + Q4.4 My server does not consider itself authoritative ! + Q4.5 NS records don't configure servers as authoritative ? + Q4.6 underscore in host-/domainnames + Q4.7 What is lame delegation ? + Q4.8 How can I see if the server is "lame" ? + Q4.9 What does opt-class field in a zone file do? + Q4.10 Top level domains + Q4.11 Classes of networks + Q4.12 What is CIDR ? + Q4.13 What is the rule for glue ? + +----------------------------------------------------------------------------- + +Question 4.1. TCP/IP Host Naming Conventions + +Date: Mon Aug 5 22:49:46 EDT 1996 + +One guide that may be used when naming hosts is RFC 1178, "Choosing a Name +for Your Computer", which is available via anonymous FTP from + +ftp.internic.net : /rfc/rfc1178.txt + +RFCs (Request For Comments) are specifications and guidelines for how many +aspects of TCP/IP and the Internet (should) work. Most RFCs are fairly +technical documents, and some have semantics that are hotly contested in +the newsgroups. But a few, like RFC 1178, are actually good to read for +someone who's just starting along a TCP/IP path. + +----------------------------------------------------------------------------- + +Question 4.2. What are slaves and forwarders ? + +Date: Thu Dec 1 10:32:43 EST 1994 + +"forwarders" is a list of NS records that are _prepended_ to a list of NS +records to query if the data is not available locally. This allows a rich +cache of records to be built up at a centralized location. This is good +for sites that have sporadic or very slow connections to the Internet. +(demand dial-up, for example) It's also just a good idea for very large +distributed sites to increase the chance that you don't have to go off to +the Internet to get an IP address. (sometimes for addresses across the +street!) + +"slave" modifies this to say to replace the list of NS records with the +forwarders entry, instead of prepending to it. This is for firewalled +environments, where the nameserver can't directly get out to the Internet +at all. + +"slave" is meaningless (and invalid, in late-model BINDs) without +"forwarders". "forwarders" is an entry in named.boot, and therefore +applies only to the nameserver (not to resolvers). + +----------------------------------------------------------------------------- + +Question 4.3. When is a server authoritative? + +Date: Mon Jan 2 13:15:13 EST 1995 + +In the case of BIND: + +* The server contains current data in files for the zone in question (Data + must be current for secondaries, as defined in the SOA) +* The server is told that it is authoritative for the zone, by a 'primary' + or 'secondary' keyword in /etc/named.boot. +* The server does an error-free load of the zone. + +----------------------------------------------------------------------------- + +Question 4.4. My server does not consider itself authoritative ! + +Date: Mon Jan 2 13:15:13 EST 1995 + +The question was: + + What if I have set up a DNS where there is an SOA record for + the domain, but the server still does not consider itself + authoritative. (when using nslookup and set server=the correct machine.) + It seems that something is not matching up somewhere. I suspect + that this is because the service provider has not given us control + over the IP numbers in our own domain, and so while the machine listed + has an A record for an address, there is no corresponding PTR record. +With the answer: + + That's possible too, but is unrelated to the first question. + You need to be delegated a zone before outside people will start + talking to your server. However, a server can still be authoritative + for a zone even though it hasn't been delegated authority (it's just + that only the people who use that as their server will see the data). + + A server may consider itself non-authoritative even though it's a + primary if there is a syntax error in the zone (see the list in the + previous question). +----------------------------------------------------------------------------- + +Question 4.5. NS records don't configure servers as authoritative ? + +Date: Fri Dec 6 16:13:34 EST 1996 + +Nope, delegation is a separate issue from authoritativeness. You can +still be authoritative, but not delegated. (you can also be delegated, +but not authoritative -- that's a "lame delegation") + +----------------------------------------------------------------------------- + +Question 4.6. underscore in host-/domainnames + +Date: Mon Aug 5 22:39:02 EDT 1996 + +The question is "Are underscores are allowed in host- or domainnames" ? + RFC 1033 allows them. + RFC 1035 doesn't. + RFC 1123 doesn't. + dnswalk complains about them. + + +Which RFC is the final authority these days? + +Actually RFC 1035 deals with names of machines or names of mail domains. +i.e "_" is not permitted in a hostname or on the RHS of the "@" in +local@domain. + +Underscore is permitted where ever the domain is NOT one of these types +of addresses. + +In general the DNS mostly contains hostnames and mail domainnames. This +will change as new resource record types for authenticating DNS queries +start to appear. + +The latest version of 'host' checks for illegal characters in A/MX record +names and the NS/MX target names. + +After saying all of that, remember that RFC 1123 is a Required Internet +Standard (per RFC 1720), and RFC 1033 isn't. Even RFC 1035 isn't a +required standard. Therefore, RFC 1123 wins, no contest. + +From RFC 1123, Section 2.1 + + 2.1 Host Names and Numbers + + The syntax of a legal Internet host name was specified in RFC-952 + [DNS:4]. One aspect of host name syntax is hereby changed: the + restriction on the first character is relaxed to allow either a + letter or a digit. Host software MUST support this more liberal + syntax. + + And described by Dave Barr in RFC1912: + + Allowable characters in a label for a host name are only ASCII + letters, digits, and the `-' character. Labels may not be all + numbers, but may have a leading digit (e.g., 3com.com). Labels must + end and begin only with a letter or digit. See [RFC 1035] and [RFC + 1123]. (Labels were initially restricted in [RFC 1035] to start with + a letter, and some older hosts still reportedly have problems with + the relaxation in [RFC 1123].) Note there are some Internet + hostnames which violate this rule (411.org, 1776.com). + +Finally, one more piece of information (From Paul Vixie): + + RFC 1034 says only that domain names have characters in them, though it + says so with enough fancy and indirection that it's hard to tell exactly. + + Generally, for second level domains (i.e., something you would get from + InterNIC or from the US Domain Registrar and probably other ISO 3166 + country code TLDs), RFC 952 is thought to apply. RFC 952 was about host + names rather than domain names, but the rules seemed good enough. + + ::= + + ::= *["."] + ::= [*[]] + +There has been a recent update on this subject which may be found in + +ftp.internic.net : /internet-drafts/draft-andrews-dns-hostnames-03.txt. + +----------------------------------------------------------------------------- + +Question 4.7. What is lame delegation ? + +Date: Mon Aug 5 22:45:02 EDT 1996 + +Two things are required for a lame delegation: + +* A nameserver X is delegated as authoritative for a zone. +* Nameserver X is not performing nameservice for that zone. + +Try to think of a lame delegation as a long-term condition, brought about +by a misconfiguration somewhere. Bryan Beecher's 1992 LISA paper on lame +delegations is good to read on this. The problem really lies in +misconfigured nameservers, not "lameness" brought about by transient +outages. The latter is common on the Internet and hard to avoid, while +the former is correctable. + +In order to be performing nameservice for a zone, it must have (presumed +correct) data for that zone, and it must be answering authoritatively to +resolver queries for that zone. (The AA bit is set in the flags section) + +The "classic" lame delegation case is when nameserver X is delegated as +authoritative for domain Y, yet when you ask Y about X, it returns +non-authoritative data. + +Here's an example that shows what happens most often (using dig, dnswalk, +and doc to find). + +Let's say the domain bogus.com gets registered at the NIC and they have +listed 2 primary name servers, both from their *upstream* provider: + + bogus.com IN NS ns.bogus.com + bogus.com IN NS upstream.com + bogus.com IN NS upstream1.com + +So the root servers have this info. But when the admins at bogus.com +actually set up their zone files they put something like: + + bogus.com IN NS upstream.com + bogus.com IN NS upstream1.com + +So your name server may have the nameserver info cached (which it may have +gotten from the root). The root says "go ask ns.bogus.com" since they are +authoritative + +This is usually from stuff being registered at the NIC (either nic.ddn.mil +or rs.internic.net), and then updated later, but the folks who make the +updates later never let the folks at the NIC know about it. + +----------------------------------------------------------------------------- + +Question 4.8. How can I see if the server is "lame" ? + +Date: Mon Aug 5 22:45:02 EDT 1996 + +Go to the authoritative servers one level up, and ask them who they think +is authoritative, and then go ask each one of those delegees if they think +that they themselves are authoritative. If any responds "no", then you +know who the lame delegation is, and who is delegating lamely to them. +You can then send off a message to the administrators of the level above. + +The 'lamers' script from Byran Beecher really takes care of all this for +you. It parses the lame delegation notices from BIND's syslog and +summarizes them for you. It may be found in the contrib section of the +latest BIND distribution. The latest version is available for anonymous +ftp from + +terminator.cc.umich.edu : /dns/lame-delegations/ + + If you want to actively check for lame delegations, you can use 'doc' +and 'dnswalk'. You can check things manually with 'dig'. + +The InterNIC recently announced a new lame delegation that will be in +effect on 01 October, 1996. Here is a summary: + +* After receipt/processing of a name registration template, and at random + intervals thereafter, the InterNIC will perform a DNS query via UDP + Port 53 on domain names for an SOA response for the name being + registered. +* If the query of the domain name returns a non-authoritative response + from all the listed name servers, the query will be repeated four times + over the next 30 days at random intervals approximately 7 days apart, + with notification to all listed whois and nameserver contacts of the + possible pending deletion. If at least one server answers correctly, + but one or more are lame, FYI notifications will be sent to all contacts + and checking will be discontinued. Additionally, e-mail notices will be + provided to the contact for the name servers holding the delegation to + alert them to the "lame" condition. Notifications will state explicitly + the consequences of not correcting the "lame" condition and will be + assigned a descriptive subject as follows: + + Subject: Lame Delegation Notice: DOMAIN_NAME + + The notification will include a timestamp for when the query was + performed. +* If, following 30 days, the name servers still provide no SOA response, + the name will be placed in a "hold" status and the DNS information will + no longer be propagated. The administrative contact will be notified by + postal mail and all whois contacts will be notified by e-mail, with + instructions for taking corrective action. +* Following 60 days in a "hold" status, the name will be deleted and made + available for reregistration. Notification of the final deletion will + be sent to the name server and domain name contacts listed in the NIC + database. + +----------------------------------------------------------------------------- + +Question 4.9. What does opt-class field in a zone file do? + +Date: Thu Dec 1 11:10:39 EST 1994 + +This field is the address class. From the BOG - + + ...is the address class; currently, only one class + is supported: IN for internet addresses and other + internet information. Limited support is included for + the HS class, which is for MIT/Athena ``Hesiod'' + information. +----------------------------------------------------------------------------- + +Question 4.10. Top level domains + +Date: Fri Dec 6 15:13:35 EST 1996 + +A section from RFC 1591: + + 2. The Top Level Structure of the Domain Names + + In the Domain Name System (DNS) naming of computers there is a + hierarchy of names. The root of system is unnamed. There are a set + of what are called "top-level domain names" (TLDs). These are the + generic TLDs (EDU, COM, NET, ORG, GOV, MIL, and INT), and the two + letter country codes from ISO-3166. It is extremely unlikely that + any other TLDs will be created. + +----- + +[ Ed note: the ISO-3166 country codes may be found for anonymous ftp +from: + +* ftp.isi.edu : /in-notes/iana/assignments/country-codes +* ftp.ripe.net : /iso3166-codes + +] + +[ Ed note: Since the Internic started charging for registration services, +(and for other reasons) there are a number of groups that want to offer +an alternative to registering a domain under a "standard" TLD. More +information on some of these options may be found at: + +* http://www.alternic.net/ +* http://www.eu.org/ +* http://www.ml.org/mljoin.html + +You may participate in one of the discussions on iTLD proposals at + +* To sign up: http://www.newdom.com/lists +* Old postings: http://www.newdom.com/archive + +] + +----- + + ... + Under each TLD may be created a hierarchy of names. Generally, under + the generic TLDs the structure is very flat. That is, many + organizations are registered directly under the TLD, and any further + structure is up to the individual organizations. + + In the country TLDs, there is a wide variation in the structure, in + some countries the structure is very flat, in others there is + substantial structural organization. In some country domains the + second levels are generic categories (such as, AC, CO, GO, and RE), + in others they are based on political geography, and in still others, + organization names are listed directly under the country code. The + organization for the US country domain is described in RFC 1480. + + Each of the generic TLDs was created for a general category of + organizations. The country code domains (for example, FR, NL, KR, + US) are each organized by an administrator for that country. These + administrators may further delegate the management of portions of the + naming tree. These administrators are performing a public service on + behalf of the Internet community. Descriptions of the generic + domains and the US country domain follow. + + Of these generic domains, five are international in nature, and two + are restricted to use by entities in the United States. + + World Wide Generic Domains: + + COM - This domain is intended for commercial entities, that is + companies. This domain has grown very large and there is + concern about the administrative load and system performance if + the current growth pattern is continued. Consideration is + being taken to subdivide the COM domain and only allow future + commercial registrations in the subdomains. + + EDU - This domain was originally intended for all educational + institutions. Many Universities, colleges, schools, + educational service organizations, and educational consortia + have registered here. More recently a decision has been taken + to limit further registrations to 4 year colleges and + universities. Schools and 2-year colleges will be registered + in the country domains (see US Domain, especially K12 and CC, + below). + + NET - This domain is intended to hold only the computers of network + providers, that is the NIC and NOC computers, the + administrative computers, and the network node computers. The + customers of the network provider would have domain names of + their own (not in the NET TLD). + + ORG - This domain is intended as the miscellaneous TLD for + organizations that didn't fit anywhere else. Some non- + government organizations may fit here. + + INT - This domain is for organizations established by international + treaties, or international databases. + + United States Only Generic Domains: + + GOV - This domain was originally intended for any kind of government + office or agency. More recently a decision was taken to + register only agencies of the US Federal government in this + domain. State and local agencies are registered in the country + domains (see US Domain, below). + + MIL - This domain is used by the US military. + + Example country code Domain: + + US - As an example of a country domain, the US domain provides for + the registration of all kinds of entities in the United States + on the basis of political geography, that is, a hierarchy of + ...US. For example, + "IBM.Armonk.NY.US". In addition, branches of the US domain are + provided within each state for schools (K12), community + colleges (CC), technical schools (TEC), state government + agencies (STATE), councils of governments (COG),libraries + (LIB), museums (MUS), and several other generic types of + entities (see RFC 1480 for details). + + +A section from RFC 1480: + + 2. NAMING STRUCTURE + + The US Domain hierarchy is based on political geography. The + basic name space under US is the state name space, then the + "locality" name space, (like a city, or county) then + organization or computer name and so on. + + For example: + + BERKELEY.CA.US + PORTLAND.WA.US + + There is of course no problem with running out of names. + + The things that are named are individual computers. + + If you register now in one city and then move, the database can + be updated with a new name in your new city, and a pointer can + be set up from your old name to your new name. This type of + pointer is called a CNAME record. + + The use of unregistered names is not effective and causes problems + for other users. Inventing your own name and using it without + registering is not a good idea. + + In addition to strictly geographically names, some special names + are used, such as FED, STATE, AGENCY, DISTRICT, K12, LIB, CC, + CITY, and COUNTY. Several new name spaces have been created, + DNI, GEN, and TEC, and a minor change under the "locality" name + space was made to the existing CITY and COUNTY subdomains by + abbreviating them to CI and CO. A detailed description + follows. + + Below US, Parallel to States: + ----------------------------- + + "FED" - This branch may be used for agencies of the federal + government. For example: ..FED.US + + "DNI" - DISTRIBUTED NATIONAL INSTITUTES - The "DNI" branch was + created directly under the top-level US. This branch is to be used + for distributed national institutes; organizations that span state, + regional, and other organizational boundaries; that are national in + scope, and have distributed facilities. For example: + .DNI.US. + + Name Space Within States: + ------------------------ + + "locality" - cities, counties, parishes, and townships. Subdomains + under the "locality" would be like CI...US, + CO...US, or businesses. For example: + Petville.Marvista.CA.US. + + "CI" - This branch is used for city government agencies and is a + subdomain under the "locality" name (like Los Angeles). For example: + Fire-Dept.CI.Los-Angeles.CA.US. + + "CO" - This branch is used for county government agencies and is a + subdomain under the "locality" name (like Los Angeles). For example: + Fire-Dept.CO.San-Diego.CA.US. + + "K12" - This branch may be used for public school districts. A + special name "PVT" can be used in the place of a school district name + for private schools. For example: .K12..US and + .PVT.K12..US. + + "CC" - COMMUNITY COLLEGES - This branch was established for all state + wide community colleges. For example: .CC..US. + + "TEC" - TECHNICAL AND VOCATIONAL SCHOOLS - The branch "TEC" was + established for technical and vocational schools and colleges. For + example: .TEC..US. + + "LIB" - LIBRARIES (STATE, REGIONAL, CITY, COUNTY) - This branch may + be used for libraries only. For example: .LIB..US. + + "STATE" - This branch may be used for state government agencies. For + example: .STATE..US. + + "GEN" - GENERAL INDEPENDENT ENTITY - This branch is for the things + that don't fit easily into any other structure listed -- things that + might fit in to something like ORG at the top-level. It is best not + to use the same keywords (ORG, EDU, COM, etc.) that are used at the + top-level to avoid confusion. GEN would be used for such things as, + state-wide organizations, clubs, or domain parks. For example: + .GEN..US. + +The application form for the US domain may be found: + +* for anonymous ftp from internic.net : /templates/us-domain-template.txt +* http://www.isi.edu/us-domain/ + +The application form for the EDU, COM, NET, ORG, and GOV domains may be +found for anonymous ftp from: + +internic.net : /templates/domain-template.txt + +----------------------------------------------------------------------------- + +Question 4.11. Classes of networks + +Date: Wed Sep 4 22:59:27 EDT 1996 + +The usage of 'classes of networks' (class A, B, C) are historical and have +been replaced by CIDR blocks on the Internet. That being said... + +An Internet Protocol (IP) address is 32 bit in length, divided into two +or three parts (the network address, the subnet address (if present), and +the host address. The subnet addresses are only present if the network +has been divided into subnetworks. The length of the network, subnet, and +host field are all variable. + +There are five different network classes. The leftmost bits indicate the +class of the network. + + # of # of + bits in bits in + network host +Class field field Internet Protocol address in binary Ranges +============================================================================ + A 7 24 0NNNNNNN.HHHHHHHH.HHHHHHHH.HHHHHHHH 1-127.x.x.x + B 14 16 10NNNNNN.NNNNNNNN.HHHHHHHH.HHHHHHHH 128-191.x.x.x + C 22 8 110NNNNN.NNNNNNNN.NNNNNNNN.HHHHHHHH 192-223.x.x.x + D NOTE 1 1110xxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx 224-239.x.x.x + E NOTE 2 11110xxx.xxxxxxxx.xxxxxxxx.xxxxxxxx 240-247.x.x.x + + where N represents part of the network address and H represents part of + the host address. When the subnet address is defined, the needed bits + are assigned from the host address space. + + NOTE 1: Reserved for multicast groups - RFC 1112 + NOTE 2: Reserved for future use + + 127.0.0.1 is reserved for local loopback. + +----------------------------------------------------------------------------- + +Question 4.12. What is CIDR ? + +Date: Tue Nov 5 23:47:29 EST 1996 + +CIDR is "Classless Inter-Domain Routing (CIDR). From RFC 1517: + + ...Classless Inter-Domain Routing (CIDR) attempts to deal with + these problems by defining a mechanism to slow the growth of + routing tables and reduce the need to allocate new IP network + numbers. + +Much more information may be obtained in RFCs 1467, 1517, 1518, 1520; +with primary reference 1519. + +Also please see the CIDR FAQ at + +* http://www.ibm.net.il/~hank/cidr.html +* http://www.rain.net/faqs/cidr.faq.html +* http://www.lab.unisource.ch/services/internet/direct/cidr.html + +----------------------------------------------------------------------------- + +Question 4.13. What is the rule for glue ? + +Date: Fri Apr 28 13:31:24 EDT 1995 + +A glue record is an A record for a name that appears on the right-hand +side of a NS record. So, if you have this: + + + sub.foobar.com. IN NS dns.sub.foobar.com. + dns.sub.foobar.com. IN A 1.2.3.4 + +then the second record is a glue record (for the NS record above it). + +You need glue records when -- and only when -- you are delegating +authority to a nameserver that "lives" in the domain you are delegating +*and* you aren't a secondary server for that domain. + +In other words, in the example above, you need to add an A record for +dns.sub.foobar.com since it "lives" in the domain it serves. This boot +strapping information is necessary: How are you supposed to find out the +IP address of the nameserver for domain FOO if the nameserver for FOO +"lives" in FOO? + +If you have this NS record: + + sub.foobar.com. IN NS dns.xyz123.com. + +you do NOT need a glue record, and, in fact, adding one is a very bad +idea. If you add one, and then the folks at xyz123.com change the +address, then you will be passing out incorrect data. + +Also, unless you actually have a machine called something.IN-ADDR.ARPA, +you will never have any glue records present in any of your "reverse" +files. + +There is also a sort of implicit glue record that can be useful (or +confusing :^) ). If the parent server (abc.foobar.com domain in example +above) is a secondary server for the child, then the A record will be +fetched from the child server when the zone transfer is done. The glue is +still there but it's a little different, it's in the ip address in the +named.boot line instead of explicitly in the data. In this case you can +leave out the explicit glue A record and leave the manually configured +"glue" in just the one place in the named.boot file. + +RFC 1537 says it quite nicely: + + 2. Glue records + + Quite often, people put unnecessary glue (A) records in their + zone files. Even worse is that I've even seen *wrong* glue records + for an external host in a primary zone file! Glue records need only + be in a zone file if the server host is within the zone and there + is no A record for that host elsewhere in the zone file. + + Old BIND versions ("native" 4.8.3 and older versions) showed the + problem that wrong glue records could enter secondary servers in + a zone transfer. + + +The remainder of the FAQ is in the next part (Part 2 of 2). + diff --git a/usr.sbin/named/doc/misc/FAQ.2of2 b/usr.sbin/named/doc/misc/FAQ.2of2 new file mode 100644 index 000000000000..40e16494b5bf --- /dev/null +++ b/usr.sbin/named/doc/misc/FAQ.2of2 @@ -0,0 +1,1298 @@ +Newsgroups: comp.protocols.tcp-ip.domains,comp.answers,news.answers +Path: vixie!news1.digital.com!su-news-hub1.bbnplanet.com!news.bbnplanet.com!cam-news-hub1.bbnplanet.com!news.mathworks.com!news.kei.com!uhog.mit.edu!rutgers!njitgw.njit.edu!hertz.njit.edu!cdp2582 +From: cdp2582@hertz.njit.edu (Chris Peckham) +Subject: comp.protocols.tcp-ip.domains Frequently Asked Questions (FAQ) (Part 2 of 2) +Message-ID: +Followup-To: comp.protocols.tcp-ip.domains +Originator: cdp2582@hertz.njit.edu +Keywords: BIND,DOMAIN,DNS +Sender: news@njit.edu +Supersedes: +Nntp-Posting-Host: hertz.njit.edu +X-Posting-Frequency: posted during the first week of each month +Reply-To: domain-faq@njit.edu (comp.protocols.tcp-ip.domains FAQ comments) +Organization: NJIT.EDU - New Jersey Institute of Technology, Newark, NJ, USA +References: +Date: Sat, 7 Dec 1996 06:42:49 GMT +Approved: news-answers-request@MIT.EDU +Expires: Sat 11 Jan 97 02:42:29 EDT +Lines: 1277 +Xref: vixie comp.protocols.tcp-ip.domains:12905 comp.answers:22441 news.answers:85683 + +Posted-By: auto-faq 3.1.1.2 +Archive-name: internet/tcp-ip/domains-faq/part2 +Revision: 1.13 1996/12/07 06:42:15 + + +(Continued from Part 1, where you'll find the introduction and +table of contents.) + + +=============================================================================== + +Section 5. CONFIGURATION + + Q5.1 Changing a Secondary server to a Primary server ? + Q5.2 Moving a Primary server to another server + Q5.3 How do I subnet a Class B Address ? + Q5.4 Subnetted domain name service + Q5.5 Recommended format/style of DNS files + Q5.6 DNS on a system not connected to the Internet + Q5.7 Multiple Domain configuration + Q5.8 wildcard MX records + Q5.9 How do you identify a wildcard MX record ? + Q5.10 Why are fully qualified domain names recommended ? + Q5.11 Distributing load using named + Q5.12 Order of returned records + Q5.13 resolv.conf + Q5.14 How do I delegate authority for sub-domains ? + Q5.15 DNS instead of NIS on a Sun OS 4.1.x system + Q5.16 Patches to add functionality to BIND + Q5.17 How to serve multiple domains from one server + +----------------------------------------------------------------------------- + +Question 5.1. Changing a Secondary server to a Primary server ? + +Date: Fri Jul 5 23:54:35 EDT 1996 + +For 4.8.3, it's prudent to kill and restart following any changes to +named.boot. + +In BIND 4.9.3, you only have to kill and restart named if you change a +primary zone to a secondary or v-v, or if you delete a zone and remain +authoritative for its parent. Every other case should be taken care of by +a HUP. (Ed. note: 4.9.3b9 may still require you to kill and restart the +server due to some bugs in the HUP code). + +You will also need to update the server information on the root servers. +You can do this by filing a new domain registration form to inform +InterNIC of the change. They will then update the root server's SOA +records. This process usually takes 10-12 business days after they +receive the request. + +----------------------------------------------------------------------------- + +Question 5.2. Moving a Primary server to another server + +Date: Fri Jul 5 23:54:35 EDT 1996 + +The usual solution is to move the primary to ns.newserver.com, and have +ns.oldserver.com be configured as a secondary server until the change to +the root servers takes place after the request has been made to the +InterNIC. + +If you are moving to a different ISP which will change your IP's, the +recommened setting for the SOA that would minimize problems for your name +servers using the old settings can be done as follows: + +Gradually lower the TTL value in your SOA (that's the last one of the five +numbers) to always be equal to the time left until you change over. +(assuming that none of your resource records have individual TTL's set, if +so, do likewise witht them.) So, the day before, lower to 43200 seconds +(12 hours). Then lower every few hours to be the time remaining until +the change-over. So, an hour before the change, you may just want to +lower it all the way to 60 seconds or so. That way no one can cache +information past the change-over. + +After the change, start gradually incrementing the TTL value, because +you'll probably be making changes to work out problems. Once everything +stabilizes, move the TTL up to whatever your normal values are. + +To minimize name servers from using the "old settings", you can do the +same thing with the "refresh" interval in the SOA (the second number of +the SOA). That will tell the secondaries to refresh every X seconds. +Lower that value as you approach the changeover date. You probably don't +want to go much below an hour or you'll start the primary thrashing as all +the secondaries perpetually refresh. + +Also see the answer to the "How can I change the IP address of our server +?" in the INTRODUCTION section. + +----------------------------------------------------------------------------- + +Question 5.3. How do I subnet a Class B Address ? + +Date: Fri Apr 28 13:34:52 EDT 1995 + +That you need to subnet at all is something of a misconception. You can +also think of a class B network as giving you 65,534 individual hosts, and +such a network will work. You can also configure your class B as 16,384 +networks of 2 hosts each. That's obviously not very practical, but it +needs to be made clear that you are not constrained by the size of an +octet (remember that many older devices would not work in a network +configured in this manner). + +So, the question is: why do you need to subnet? One reason is that it is +easier to manage a subnetted network, and in fact, you can delegate the +responsibility for address space management to local administrators on the +various subnets. Also, IP based problems will end up localized rather +than affecting your entire network. + +If your network is a large backbone with numerous segments individually +branching off the backbone, that too suggests subnetting. + +Subnetting can also be used to improve routing conditions. + +You may wish to partition your network to disallow certain protocols on +certain segments of your net. You can, for example, restrict IP or IPX to +certain segments only by adding a router routing high level protocols, +and across the router you may have to subnet. + +Finally, as far as how many subnets you need depends on the answer to the +above question. As far as subnet masks are concerned, the mask can be +anything from 255.0.0.0 to 255.255.255.252. You'll probably be looking at +9 or 10 bits for the subnet (last octet 128 or 192 respectively). RFC +1219 discusses the issue of subnetting very well and leaves the network +administrator with a large amount of flexibility for future growth. + +----------------------------------------------------------------------------- + +Question 5.4. Subnetted domain name service + +Date: Mon Aug 5 23:00:16 EDT 1996 + +If you are looking for some examples of handling subnetted class C +networks as separate DNS domains, see the Internet Draft + +draft-ietf-cidrd-classless-inaddr-02.txt + +for more information. This file is available for anonymous ftp at + +ds.internic.net : +/internet-drafts/draft-ietf-cidrd-classless-inaddr-02.txt + +or other IETF mirror sites (ftp.is.ca.za [Africa], nic.nordu.net [Europe], +munnari.oz.au [Pacific Rim], ds.internic.net [US East Coast], or +ftp.isi.edu [US West Coast]). + +Details follow- You need to delegate down to the fourth octet, so you will +have one domain per IP address ! Here is how you can subdelegate a +in-addr.arpa address for non-byte aligned subnet masks: + +Take as an example the net 192.1.1.x, and example subnet mask +255.255.255.240. + +We first define the domain for the class C net, + + $origin 1.1.192.in-addr.arpa + @ SOA (usual stuff) + @ ns some.nameserver + ns some.other.nameserver + ; delegate a subdomain + one ns one.nameserver + ns some.nameserver + ; delegate another + two ns two.nameserver + ns some.nameserver + ; CNAME pointers to subdomain one + 0 CNAME 0.one + 1 CNAME 1.one + ; through + 15 CNAME 15.one + ; CNAME pointers to subdomain two + 16 CNAME 16.two + 17 CNAME 17.two + 31 CNAME 31.two + ; CNAME as many as required. + +Now, in the delegated nameserver, one.nameserver + + $origin one.1.1.192.in-addr.arpa + @ SOA (usual stuff) + NS one.nameserver + NS some.nameserver ; secondary for us + 0 PTR onenet.one.domain + 1 PTR onehost.one.domain + ; through + 15 PTR lasthost.one.domain + +And similar for the two.1.1.192.in-addr.arpa delegated domain. + +There is additional documentation and a perl script that may be used for +this purpose available for anonymous ftp from: + +ftp.vix.com : /pub/bind/contrib/gencidrzone + +----------------------------------------------------------------------------- + +Question 5.5. Recommended format/style of DNS files + +Date: Sun Nov 27 23:32:41 EST 1994 + +This answer is quoted from an article posted by Paul Vixie: + + I've gone back and forth on the question of whether the BOG should + include a section on this topic. I know what I myself prefer, but + I'm wary of ramming my own stylistic preferences down the throat of + every BOG reader. But since you ask :-)... + + Create /var/named. If your system is too old to have a /var, either + create one or use /usr/local/adm/named instead. Put your named.boot + in it, and make /etc/named.boot a symlink to it. If your system + doesn't have symlinks, you're S-O-L (but you knew that). In + named.boot, put a "directory" directive that specifies your actual + BIND working directory: + + directory /var/named + + All relative pathnames used in "primary", "secondary", and "cache" + directives will be evaluated relative to this directory. Create two + subdirectories, /var/named/pri and /var/named/sec. Whenever you add + a "primary" directive to your named.boot, use "pri/WHATEVER" as the + path name. And then put the primary zone file into "pri/WHATEVER". + Likewise when you add "secondary" directives, use "sec/WHATEVER" and + BIND (really named-xfer) will create the files in that + subdirectory. + + (Variations: (1) make a midlevel directory "zones" and put "pri" and + "sec" into it; (2) if you tend to pick up a lot of secondaries from + a few hosts, group them together in their own subdirectories -- + something like /var/named/zones/uucp if you're a UUCP Project name + server.) + + For your forward files, name them after the zone. dec.com becomes + "/var/named/zones/pri/dec.com". For your reverse files, name them + after the network number. 0.1.16.in-addr.arpa becomes + "/var/named/zones/pri/16.1.0". + + When creating or maintaining primary zone files, try to use the same + SOA values everywhere, except for the serial number which varies per + zone. Put a $ORIGIN directive at the top of the primary zone file, + not because its needed (it's not since the default origin is the + zone named in the "primary" directive) but because it make it easier + to remember what you're working on when you have a lot of primary + zones. Put some comments up there indicating contact information + for the real owner if you're proxying. Use RCS and put the "Id" + in a ";" comment near the top of the zone file. + + The SOA and other top level information should all be listed + together. But don't put IN on every line, it defaults nicely. For + example: + +============== +@ IN SOA gw.home.vix.com. postmaster.vix.com. ( + 1994082501 ; serial + 3600 ; refresh (1 hour) + 1800 ; retry (30 mins) + 604800 ; expire (7 days) + 3600 ) ; minimum (1 hour) + + NS gw.home.vix.com. + NS ns.uu.net. + NS uucp-gw-1.pa.dec.com. + NS uucp-gw-2.pa.dec.com. + + MX 10 gw.home.vix.com. + MX 20 uucp-gw-1.pa.dec.com. + MX 20 uucp-gw-1.pa.dec.com. +============== + + I don't necessarily recommend those SOA values. Not every zone is + as volatile as the example shown. I do recommend that serial number + format; it's in date format with a 2-digit per-day revision number. + This format will last us until 2147 A.D. at which point I expect a + better solution will have been found :-). (Note that it would last + until 4294 A.D. except that there are some old BINDs out there that + use a signed quantity for representing serial number interally; I + suppose that as long as none of these are still running after 2047 + A.D., that we can use the above serial number format until 4294 + A.D., at which point a better solution will HAVE to be found.) + + You'll note that I use a tab stop for "IN" even though I never again + specify it. This leaves room for names longer than 7 bytes without + messing up the columns. You might also note that I've put the MX + priority and destination in the same tab stop; this is because both + are part of the RRdata and both are very different from MX which is + an RRtype. Some folks seem to prefer to group "MX" and the priority + together in one tab stop. While this looks neat it's very confusing + to newcomers and for them it violates the law of least + astonishment. + + If you have a multi-level zone (one which contains names that have + dots in them), you can use additional $ORIGIN statements but I + recommend against it since there is no "back" operator. That is, + given the above example you can add: + +============= +$ORIGIN home +gw A 192.5.5.1 +============= + + The problem with this is that subsequent RR's had better be + somewhere under the "home.vix.com" name or else the $ORIGIN that + introduces them will have to use a fully qualified name. FQDN + $ORIGIN's aren't bad and I won't be mad if you use them. + Unqualified ones as shown above are real trouble. I usually stay + away from them and just put the whole name in: + +============= +gw.home A 192.5.5.1 +============= + + In your reverse zones, you're usually in some good luck because the + owner name is usually a single short token or sometimes two. + +============= +$ORIGIN 5.5.192.in-addr.arpa. +@ IN SOA ... + NS ... +1 PTR gw.home.vix.com. +========================================= +$ORIGIN 1.16.in-addr.arpa. +@ IN SOA ... + NS ... +2.0 PTR gatekeeper.dec.com. +============= + + It is usually pretty hard to keep your forward and reverse zones in + synch. You can avoid that whole problem by just using "h2n" (see + the ORA book, DNS and BIND, and its sample toolkit, included in the + BIND distribution or on ftp.uu.net (use the QUOTE SITE EXEC INDEX + command there to find this -- I never can remember where it's at). + "h2n" and many tools like it can just read your old /etc/hosts file + and churn it into DNS zone files. (May I recommend + contrib/decwrl/mkdb.pl from the BIND distribution?) However, if you + (like me) prefer to edit these things by hand, you need to follow + the simple convention of making all of your holes consistent. If + you use 192.5.5.1 and 192.5.5.3 but not (yet) 192.5.5.2, then in + your forward file you will have something like + +============= +... +gw.home A 192.5.5.1 +;avail A 192.5.5.2 +pc.home A 192.5.5.3 +============= + + and in your reverse file you will have something like + +============= +... +1 PTR gw.home.vix.com. +;2 PTR avail +3 PTR pc.home.vix.com. +============= + + This convention will allow you to keep your sanity and make fewer + errors. Any kind of automation (h2n, mkdb, or your own + perl/tcl/awk/python tools) will help you maintain a consistent + universe even if it's also a complex one. Editing by hand doesn't + have to be deadly but you MUST take care. + +----------------------------------------------------------------------------- + +Question 5.6. DNS on a system not connected to the Internet + +Date: Sun Nov 27 23:32:41 EST 1994 + +You need to create your own root domain name server until you connect to +the internet. Your roots need to delegate to mydomain.com and any +in-addr.arpa subdomains you might have, and that's about it. As soon as +you're connected, rip out the fake roots and use the real ones. + +It does not actually have to be another server pretending to be the root. +You can set up the name server so that it is primary for each domain above +you and leave them empty (i.e. you are foo.bar.com - claim to be primary +for bar.com and com) + +If you connect intermittently and want DNS to work when you are connected, +and "fail" when you are not, you can point the resolver at the name server +at the remote site and if the connection (SLIP/PPP) isn't up, the resolver +doesn't have a route to the remote server and since there's only one name +server in resolv.conf, the resolver quickly backs off the using +/etc/hosts. No problem. You could do the same with multiple name server +and a resolver that did configurable /etc/hosts fallback. + +----------------------------------------------------------------------------- + +Question 5.7. Multiple Domain configuration + +Date: Fri Dec 2 15:40:49 EST 1994 + +If you want to have multiple domain names pointing to the same +destination, such as: + + ftp ftp.biff.com connects user to -> ftp.biff.com + ftp ftp.fred.com connects user to -> ftp.biff.com + ftp ftp.bowser.com connects user to -> ftp.biff.com + +You may do this by using CNAMEs: + + ftp.bowser.com. IN CNAME ftp.biff.com. + +You can also do the same thing with multiple A records. + +----------------------------------------------------------------------------- + +Question 5.8. wildcard MX records + +Date: Sun Nov 27 23:32:41 EST 1994 + +Does BIND not understand wildcard MX records such as the following? + + *.foo.com MX 0 mail.foo.com. + +No. It just doesn't work. + +Explicit RR's at one level of specificity will, by design, "block" a +wildcard at a lesser level of specificity. I suspect that you have an RR +(an A RR, perhaps?) for "bar.foo.com" which is blocking the application of +your "*.foo.com" wildcard. The initial MX query is thus failing (NOERROR +but an answer count of 0), and the backup query finds the A RR for +"bar.foo.com" and uses it to deliver the mail directly (which is what you +DIDN'T want it to do). Adding an explicit MX RR for the host is therefore +the right way to handle this situation. + +See RFC 1034, Section 4.3.3 ("Wildcards") for more information on this +"blocking" behavior, along with an illustrative example. See also RFC 974 +for an explanation of standard mailer behavior in the face of an "empty" +response to one's MX query. + +Basically, what it boils down to is, there is no point in trying to use a +wildcard MX for a host which is otherwise listed in the DNS. + +It just doesn't work. + +----------------------------------------------------------------------------- + +Question 5.9. How do you identify a wildcard MX record ? + +Date: Thu Dec 1 11:10:39 EST 1994 + +You don't really need to "identify" a wildcard MX RR. The precedence for +u@dom is: + + exact match MX + exact match A + wildcard MX + +One way to implement this is to query for ("dom",IN,MX) and if the answer +name that comes back is "*." something, you know it's a wildcard, +therefore you know there is no exact match MX, and you therefore query for +("dom",IN,A) and if you get something, use it. if you don't, use the +previous wildcard response. + +RFC 974 explains this pretty well. + +----------------------------------------------------------------------------- + +Question 5.10. Why are fully qualified domain names recommended ? + +Date: Sun Nov 27 23:32:41 EST 1994 + +The documentation for BIND 4.9.2 says that the hostname should be set to +the full domain style name (i.e host.our.domain rather than host). What +advantages are there in this, and are there any adverse consequences if we +don't? + +Paul Vixie likes to do it :-) He lists a few reasons - + +* Sendmail can be configured to just use Dj$w rather than Dj$w.mumble + where "mumble" is something you have to edit in by hand. Granted, most + people use "mumble" elsewhere in their config files ("tack on local + domain", etc) but why should it be a requirement ? +* The real reason is that not doing it violates a very useful invariant: + gethostbyname(gethostname) == gethostbyaddr(primary_interface_address) + + If you take an address and go "backwards" through the PTR's with it, + you'll get a FQDN, and if you push that back through the A RR's, you get + the same address. Or you should. Many multi-homed hosts violate this + uncaringly. + + If you take a non-FQDN hostname and push it "forwards" through the A + RR's, you get an address which, if you push it through the PTR's, comes + back as a FQDN which is not the same as the hostname you started with. + Consider the fact that, absent NIS/YP, there is no "domainname" command + analogous to the "hostname" command. (NIS/YP's doesn't count, of + course, since it's sometimes-but-only-rarely the same as the Internet + domain or subdomain above a given host's name.) The "domain" keyword in + resolv.conf doesn't specify the parent domain of the current host; it + specifies the default domain of queries initiated on the current host, + which can be a very different thing. (As of RFC 1535 and BIND 4.9.2's + compliance with it, most people use "search" in resolv.conf, which + overrides "domain", anyway.) + + What this means is that there is NO authoritative way to + programmatically discover your host's FQDN unless it is set in the + hostname, or unless every application is willing to grovel the "netstat + -in" tables, find what it hopes is the primary address, and do a PTR + query on it. + + FQDN /bin/hostnames are, intuitively or not, the simplest way to go. + +----------------------------------------------------------------------------- + +Question 5.11. Distributing load using named + +Date: Wed Mar 1 11:04:43 EST 1995 + +When you attempt to distribute the load on a system using named, the first +response be cached, and then later queries use the cached value (This +would be for requests that come through the same server). Therefore, it +can be useful to use a lower TTL on records where this is important. You +can use values like 300 or 500 seconds. + +If your local caching server has ROUND_ROBIN, it does not matter what the +authoritative servers have -- every response from the cache is rotated. + +But if it doesn't, and the authoritative server site is depending on this +feature (or the old "shuffle-A") to do load balancing, then if one doesn't +use small TTLs, one could conceivably end up with a really nasty +situation, e.g., hundreds of workstations at a branch campus pounding on +the same front end at the authoritative server's site during class +registration. + +Not nice. + +Paul Vixie has an example of the ROUND_ROBIN code in action. Here is +something that he wrote regarding his example: + + >I want users to be distributed evenly among those 3 hosts. + + Believe it or not :-), BIND offers an ugly way to do this. I offer + for your collective amusement the following snippet from the + ugly.vix.com zone file: + + hydra cname hydra1 + cname hydra2 + cname hydra3 + hydra1 a 10.1.0.1 + a 10.1.0.2 + a 10.1.0.3 + hydra2 a 10.2.0.1 + a 10.2.0.2 + a 10.2.0.3 + hydra3 a 10.3.0.1 + a 10.3.0.2 + a 10.3.0.3 + + Note that having multiple CNAME RR's at a given name is + meaningless according to the DNS RFCs but BIND doesn't mind (in + fact it doesn't even complain). If you call + gethostbyname("hydra.ugly.vix.com") (try it!) you will get + results like the following. Note that there are two round robin + rotations going on: one at ("hydra",CNAME) and one at each + ("hydra1",A) et al. I used a layer of CNAME's above the layer of + A's to keep the response size down. If you don't have nine + addresses you probably don't care and would just use a pile of + CNAME's pointing directly at real host names. + + {hydra.ugly.vix.com + name: hydra2.ugly.vix.com + aliases: hydra.ugly.vix.com + addresses: 10.2.0.2 10.2.0.3 10.2.0.1 + + {hydra.ugly.vix.com + name: hydra3.ugly.vix.com + aliases: hydra.ugly.vix.com + addresses: 10.3.0.2 10.3.0.3 10.3.0.1 + + {hydra.ugly.vix.com + name: hydra1.ugly.vix.com + aliases: hydra.ugly.vix.com + addresses: 10.1.0.2 10.1.0.3 10.1.0.1 + + {hydra.ugly.vix.com + name: hydra2.ugly.vix.com + aliases: hydra.ugly.vix.com + addresses: 10.2.0.3 10.2.0.1 10.2.0.2 + + {hydra.ugly.vix.com + name: hydra3.ugly.vix.com + aliases: hydra.ugly.vix.com + addresses: 10.3.0.3 10.3.0.1 10.3.0.2 + +----------------------------------------------------------------------------- + +Question 5.12. Order of returned records + +Sorting, is the *resolver's* responsibility. RFC 1123: + + + 6.1.3.4 Multihomed Hosts + + When the host name-to-address function encounters a host + with multiple addresses, it SHOULD rank or sort the + addresses using knowledge of the immediately connected + network number(s) and any other applicable performance or + history information. + + DISCUSSION: + The different addresses of a multihomed host generally + imply different Internet paths, and some paths may be + preferable to others in performance, reliability, or + administrative restrictions. There is no general way + for the domain system to determine the best path. A + recommended approach is to base this decision on local + configuration information set by the system + administrator. + +In BIND 4.9.x's resolver code, the "sortlist" directive in resolv.conf +can be used to configure this. + +----------------------------------------------------------------------------- + +Question 5.13. resolv.conf + +Date: Fri Feb 10 15:46:17 EST 1995 + +The question was asked one time, "Why should I use 'real' IP addresses in +/etc/resolv.conf and not 0.0.0.0 or 127.0.0.1" ? + +Paul Vixie writes on the issue of the contents of resolv.conf: + + It's historical. Some kernels can't unbind a UDP socket's source + address, and some resolver versions (notably not including BIND + 4.9.2 or 4.9.3's) try to do this. The result can be wide area + network traffic with 127.0.0.1 as the source address. Rather than + giving out a long and detailed map of version/vendor combinations of + kernels/BINDs that have/don't this problem, I just tell folks not to + use 127.0.0.1 at all. + + 0.0.0.0 is just an alias for the first interface address assigned + after a system boot, and if that interface is a up-and-down point to + point link (PPP, SLIP, whatever), there's no guarantee that you'll + be able to reach yourself via 0.0.0.0 during the entire lifetime of + any system instance. On most kernels you can finesse this by adding + static routes to 127.0.0.1 for each of your interface addresses, but + some kernels don't like that trick and rather than give a detailed + map of which ones work and which ones don't, I just globally + recommend against 0.0.0.0. + + If you know enough to know that 127.0.0.1 or 0.0.0.0 is safe on your + kernel and resolver, then feel free to use them. If you don't know + for sure that it is safe, don't use them. I never use them (except + on my laptop, whose hostname is "localhost" and whose 0.0.0.0 is + 127.0.0.1 since I ifconfig my lo0 before any other interface). The + operational advantage to using a real IP address rather than an + wormhole like 0.0.0.0 or 127.0.0.1, is that you can then "rdist" or + otherwise share identical copies of your resolv.conf on all the + systems on any given subnet, not all of which will be servers. + +The problem was with older versions of the resolver (4.8.X). If you +listed 127.0.0.1 as the first entry in resolv.conf, and for whatever +reason the local name server wasn't running and the resolver fell back to +the second name server listed, it would send queries to the name server +with the source IP address set to 127.0.0.1 (as it was set when the +resolver was trying to send to 127.0.0.1--you use the loopback address to +send to the loopback address). + +----------------------------------------------------------------------------- + +Question 5.14. How do I delegate authority for sub-domains ? + +Date: Sat Dec 7 02:04:17 EST 1996 + +When you start having a very big domain that can be broken into logical +and separate entities that can look after their own DNS information, you +will probably want to do this. Maintain a central area for the things +that everyone needs to see and delegate the authority for the other parts +of the organization so that they can manage themselves. + +Another essential piece of information is that every domain that exists +must have it NS records associated with it. These NS records denote the +name servers that are queried for information about that zone. For your +zone to be recognized by the outside world, the server responsible for the +zone above you must have created a NS record for your your new servers +(NOTE that the new servers DO NOT have to be in the new domain). For +example, putting the computer club onto the network and giving them +control over their own part of the domain space we have the following. + +The machine authorative for gu.uwa.edu.au is mackerel and the machine +authorative for ucc.gu.uwa.edu.au is marlin. + +in mackerel's data for gu.uwa.edu.au we have the following + + @ IN SOA ... + IN A 130.95.100.3 + IN MX mackerel.gu.uwa.edu.au. + IN MX uniwa.uwa.edu.au. + + marlin IN A 130.95.100.4 + + ucc IN NS marlin.gu.uwa.edu.au. + IN NS mackerel.gu.uwa.edu.au. + +Marlin is also given an IP in our domain as a convenience. If they blow +up their name serving there is less that can go wrong because people can +still see that machine which is a start. You could place "marlin.ucc" in +the first column and leave the machine totally inside the ucc domain as +well. + +The second NS line is because mackerel will be acting as secondary name +server for the ucc.gu domain. Do not include this line if you are not +authorative for the information included in the sub-domain. + +----------------------------------------------------------------------------- + +Question 5.15. DNS instead of NIS on a Sun OS 4.1.x system + +Date: Sat Dec 7 01:14:17 EST 1996 + +Comments relating to running bind 4.9.x on a Sun OS 4.1.x system and the +effect on sendmail, ftp, telnet and other TCP/IP services bypassing NIS +and directly using named is documented quite well in the +comp.sys.sun.admin FAQ in questions one and two. You can get them from: + +* ftp.ece.uc.edu : /pub/sun-faq/FAQs/sun-faq.general +* http://www.cis.ohio-state.edu/hypertext/faq/usenet/comp-sys-sun-faq + +as well as from rtfm.mit.edu in the usual place, etc. + +----------------------------------------------------------------------------- + +Question 5.16. Patches to add functionality to BIND + +Date: Tue Nov 5 23:53:47 EST 1996 + +There are others, but these are listed here: + +* When using the round robin DNS and assigning 3 IPs to a host (for + example), a process to guarantee that all 3 IPs are reachable may be + found at + http://www-leland.stanford.edu/~schemers/docs/lbnamed/lbnamed.html + +* Patches for 4.9.3-REL that will support the IPv6 AAAA record format may + be found at ftp.inria.fr : /network/ipv6/ + +* A patch for 4.9.3-REL that will allow you to turn off forwarding of + information from my server may be found at ftp.vix.com : + /pub/bind/release/4.9.3/contrib/noforward.tar.gz + +* How do I tell a server to listen to a particular interface to listen and + respond to DNS queries on ? + + Mark Andrews has a patch that will tell a 4.9.4 server to listen to a + particular interface and respond to DNS queries. It may be found at an + unofficial location: http://www.ultra.net/~jzp/andrews.patch.txt + +----------------------------------------------------------------------------- + +Question 5.17. How to serve multiple domains from one server + +Date: Tue Nov 5 23:44:02 EST 1996 + +Most name server implementations allow information about multiple domains +to be kept on one server, and questions about those domains to be +answered by that one server. For instance, there are many large servers +on the Internet that each serve information about more than 1000 +different domains. + +To be completely accurate, a server contains information about zones, +which are parts of domains that are kept as a single unit. [Ed note: for +a definition of zones and domains, see Section 2: The Name Service in the +"Name Server Operations Guide" included with the BIND 4.9.5 distribution.] + +In the configuration of the name server, the additional zones need to be +specified. An important consideration is whether a particular server is +primary or secondary for any specific zone--a secondary server maintains +only a copy of the zone, periodically refreshing its copy from another, +specified, server. In BIND, to set up a server as a secondary server for +the x.y.z zone, to the configuration file /etc/named.boot add the line + + secondary x.y.z 10.0.0.1 db.x.y.z + +where 10.0.0.1 is the IP address of the server that the zone will be +copied from, and db.x.y.z is a local filename that will contain the copy +of the zone. + +If this is a question related to how to set up multiple IP numbers on one +system, which you do not need to do to act as a domain server for +multiple domains, see + +http://www.thesphere.com/%7Edlp/TwoServers/. + +=============================================================================== + +Section 6. PROBLEMS + + Q6.1 No address for root server + Q6.2 Error - No Root Nameservers for Class XX + Q6.3 Bind 4.9.x and MX querying? + Q6.4 Do I need to define an A record for localhost ? + Q6.5 MX records, CNAMES and A records for MX targets + Q6.6 Can an NS record point to a CNAME ? + Q6.7 Nameserver forgets own A record + Q6.8 General problems (core dumps !) + Q6.9 malloc and DECstations + Q6.10 Can't resolve names without a "." + Q6.11 Err/TO errors being reported + Q6.12 Why does swapping kill BIND ? + +----------------------------------------------------------------------------- + +Question 6.1. No address for root server + +Date: Mon Jan 2 13:49:43 EST 1995 + +Q: I've been getting the following messages lately from bind-4.9.2.. + ns_req: no address for root server + +We are behind a firewall and have the following for our named.cache file - + + ; list of servers + . 99999999 IN NS POBOX.FOOBAR.COM. + 99999999 IN NS FOOHOST.FOOBAR.COM. + foobar.com. 99999999 IN NS pobox.foobar.com. +You can't do that. Your nameserver contacts POBOX.FOOBAR.COM, gets the +correct list of root servers from it, then tries again and fails because +of your firewall. + +You will need a 'forwarder' definition, to ensure that all requests are +forwarded to a host which can penetrate the firewall. And it is unwise to +put phony data into 'named.cache'. + +----------------------------------------------------------------------------- + +Question 6.2. Error - No Root Nameservers for Class XX + +Date: Sun Nov 27 23:32:41 EST 1994 + +Q: I've received errors before about "No root nameservers for class XX" + but they've been because of network connectivity problems. + I believe that Class 1 is Internet Class data. + And I think I heard someone say that Class 4 is Hesiod?? + Does anyone know what the various Class numbers are? +From RFC 1700: + + DOMAIN NAME SYSTEM PARAMETERS + The Internet Domain Naming System (DOMAIN) includes several + parameters. These are documented in [RFC1034] and [RFC1035]. The + CLASS parameter is listed here. The per CLASS parameters are + defined in separate RFCs as indicated. + + Domain System Parameters: + + Decimal Name References + -------- ---- ---------- + 0 Reserved [PM1] + 1 Internet (IN) [RFC1034,PM1] + 2 Unassigned [PM1] + 3 Chaos (CH) [PM1] + 4 Hesoid (HS) [PM1] + 5-65534 Unassigned [PM1] + 65535 Reserved [PM1] + +DNS information for RFC 1700 was taken from +ftp.isi.edu : /in-notes/iana/assignments/dns-parameters + +Hesiod is class 4, and there are no official root nameservers for class 4, +so you can safely declare yourself one if you like. You might want to +put up a packet filter so that no one outside your network is capable of +making Hesiod queries of your machines, if you define yourself to be a +root nameserver for class 4. + +----------------------------------------------------------------------------- + +Question 6.3. Bind 4.9.x and MX querying? + +Date: Sun Nov 27 23:32:41 EST 1994 + +If you query a 4.9.x DNS server for MX records, a list of the MX records +as well as a list of the authorative nameservers is returned. This +happens because bind 4.9.2 returns the list of nameserver that are +authorative for a domain in the response packet, along with their IP +addresses in the additional section. + +----------------------------------------------------------------------------- + +Question 6.4. Do I need to define an A record for localhost ? + +Date: Sat Sep 9 00:36:01 EDT 1995 + +Somewhere deep in the BOG (BIND Operations Guide) that came with 4.9.3 +(section 5.4.3), it says that you define this yourself (if need be) in +the same zone files as your "real" IP addresses for your domain. Quoting +the BOG: + + + ... As implied by this PTR + record, there should be a ``localhost.my.dom.ain'' + A record (with address 127.0.0.1) in every domain + that contains hosts. ``localhost.'' will lose its + trailing dot when 1.0.0.127.in-addr.arpa is queried + for;... + +The sample files in the BIND distribution show you what needs to be done +(see the BOG). + +Some HP boxen (especially those running HP OpenView) will also need +"loopback" defined with this IP address. You may set it as a CNAME +record pointing to the "localhost." record. + +----------------------------------------------------------------------------- + +Question 6.5. MX records, CNAMES and A records for MX targets + +Date: Sun Nov 27 23:32:41 EST 1994 + +The O'Reilly "DNS and Bind" book warns against using non-canonical names +in MX records, however, this warning is given in the context of mail hubs +that MX to each other for backup purposes. How does this apply to mail +spokes. RFC 974 has a similar warning, but where is it specifically +prohibited to us an alias in an MX record ? + +Without the restrictions in the RFC, a MTA must request the A records for +every MX listed to determine if it is in the MX list then reduce the list. +This introduces many more lookups than would other wise be required. If +you are behind a 1200 bps link YOU DON'T WANT TO DO THIS. The addresses +associated with CNAMES are not passed as additional data so you will force +additional traffic to result even if you are running a caching server +locally. + +There is also the problem of how does the MTA find all of it's IP +addresses. This is not straight forward. You have to be able to do this is +you allow CNAMEs (or extra A's) as MX targets. + +The letter of the law is that an MX record should point to an A record. + +There is no "real" reason to use CNAMEs for MX targets or separate As for +nameservers any more. CNAMEs for services other than mail should be used +because there is no specified method for locating the desired server yet. + +People don't care what the names of MX targets are. They're invisible to +the process anyway. If you have mail for "mary" redirected to "sue" is +totally irrelevant. Having CNAMEs as the targets of MX's just needlessly +complicates things, and is more work for the resolver. + +Having separate A's for nameservers like "ns.your.domain" is pointless +too, since again nobody cares what the name of your nameserver is, since +that too is invisible to the process. If you move your nameserver from +"mary.your.domain" to "sue.your.domain" nobody need care except you and +your parent domain administrator (and the InterNIC). Even less so for +mail servers, since only you are affected. + +Q: Given the example - + + hello in cname realname + mailx in mx 0 hello + + Now, while reading the operating manual of bind it clearly states + that this is *not* valid. These two statements clearly contradict + each other. Is there some later rfc than 974 that overrides what is + said in there with respect to MX and CNAMEs? Anyone have the + reference handy? + +A: This isn't what the BOG says at all. See below. You can have a CNAME + that points to some other RR type; in fact, all CNAMEs have to point + to other names (Canonical ones, hence the C in CNAME). What you + can't have is an MX that points to a CNAME. MX RR's that point to + names which have only CNAME RR's will not work in many cases, and + RFC 974 intimates that it's a bad idea: + + Note that the algorithm to delete irrelevant RRs breaks if LOCAL has + a alias and the alias is listed in the MX records for REMOTE. (E.g. + REMOTE has an MX of ALIAS, where ALIAS has a CNAME of LOCAL). This + can be avoided if aliases are never used in the data section of MX + RRs. + + Here's the relevant BOG snippet: + + aliases {ttl addr-class CNAME Canonical name + ucbmonet IN CNAME monet + + The Canonical Name resource record, CNAME, speci- + fies an alias or nickname for the official, or + canonical, host name. This record should be the + only one associated with the alias name. All other + resource records should be associated with the + canonical name, not with the nickname. Any + resource records that include a domain name as + their value (e.g., NS or MX) must list the canoni- + cal name, not the nickname. + +----------------------------------------------------------------------------- + +Question 6.6. Can an NS record point to a CNAME ? + +Date: Wed Mar 1 11:14:10 EST 1995 + +Can I do this ? Is it legal ? + + + @ SOA (.........) + NS ns.host.this.domain. + NS second.host.another.domain. + ns CNAME third + third IN A xxx.xxx.xxx.xxx + +No. Only one RR type is allowed to refer, in its data field, to a CNAME, +and that's CNAME itself. So CNAMEs can refer to CNAMEs but NSs and MXs +cannot. + +BIND 4.9.3 (Beta11 and later) explicitly syslogs this case rather than +simply failing as pre-4.9 servers did. Here's a current example: + + Dec 7 00:52:18 gw named[17561]: "foobar.com IN NS" \ + points to a CNAME (foobar.foobar.com) + +Here is the reason why: + +Nameservers are not required to include CNAME records in the Additional +Info section returned after a query. It's partly an implementation +decision and partly a part of the spec. The algorithm described in RFC +1034 (pp24,25; info also in RFC 1035, section 3.3.11, p 18) says 'Put +whatever addresses are available into the additional section, using glue +RRs [if necessary]'. Since NS records are speced to contain only primary +names of hosts, not CNAMEs, then there's no reason for algorithm to +mention them. If, on the other hand, it's decided to allow CNAMEs in NS +records (and indeed in other records) then there's no reason that CNAME +records might not be included along with A records. The Additional Info +section is intended for any information that might be useful but which +isn't strictly the answer to the DNS query processed. It's an +implementation decision in as much as some servers used to follow CNAMEs +in NS references. + +----------------------------------------------------------------------------- + +Question 6.7. Nameserver forgets own A record + +Date: Fri Dec 2 16:17:31 EST 1994 + +Q: Lately, I've been having trouble with named 4.9.2 and 4.9.3. + Periodically, the nameserver will seem to "forget" its own A record, + although the other information stays intact. One theory I had was + that somehow a site that the nameserver was secondary for was + "corrupting" the A record somehow. + +A: This is invariably due to not removing ALL of the cached zones + when you moved to 4.9.X. Remove ALL cached zones and restart + your nameservers. + + You get "ignoreds" because the primaries for the relevant zones are + running old versions of BIND which pass out more glue than is + required. named-xfer trims off this extra glue. + +----------------------------------------------------------------------------- + +Question 6.8. General problems (core dumps !) + +Date: Sun Dec 4 22:21:22 EST 1994 + +Paul Vixie says: + + I'm always interested in hearing about cases where BIND dumps core. + However, I need a stack trace. Compile with -g and not -O (unless + you are using gcc and know what you are doing) and then when it + dumps core, get into dbx or gdb using the executable and the core + file and use "bt" to get a stack trace. Send it to me + along with specific circumstances leading to or + surrounding the crash (test data, tail of the debug log, tail of the + syslog... whatever matters) and ideally you should save your core + dump for a day or so in case I have questions you can answer via + gdb/dbx. + +----------------------------------------------------------------------------- + +Question 6.9. malloc and DECstations + +Date: Mon Jan 2 14:19:22 EST 1995 + +We have replaced malloc on our DECstations with a malloc that is more +compact in memory usage, and this helped the operation of bind a lot. The +source is now available for anonymous ftp from + +ftp.cs.wisc.edu : /pub/misc/malloc.tar.gz + +----------------------------------------------------------------------------- + +Question 6.10. Can't resolve names without a "." + +(Answer written by Mark Andrews) You are not using a RFC 1535 aware +resolver. Depending upon the age of your resolver you could try adding a +search directive to resolv.conf. + + e.g. + domain + search [ ...] + +If that doesn't work you can configure you server to serve the parent and +grandparent domains as this is the default search list. + +"domain langley.af.mil" has an implicit "search langley.af.mil af.mil mil" +in the old resolvers, and you are timing out trying to resolve the +address with one of these domains tacked on. + +When resolving internic.net the following will be tried in order. + internic.net.langley.af.mil + internic.net.af.mil + internic.net.mil + internic.net. + +RFC 1535 aware resolvers try qualified address first. + + internic.net. + internic.net.langley.af.mil + internic.net.af.mil + internic.net.mil +RFC 1535 documents the problems associated with the old search +algorithim, including security issues, and how to alleviate some of the +problems. + +----------------------------------------------------------------------------- + +Question 6.11. Err/TO errors being reported + +Date: Sun May 5 23:46:32 EDT 1996 + +Why are errors like + + Apr 2 20:41:58 nameserver named[25846]: Err/TO getting serial# for + "foobar.domain1.com" + Apr 2 20:41:59 nameserver named[25846]: Err/TO getting serial# for + "foobar.domain2.com" + +reported ? These generally indicate that there is one of the following +problems: + +* A network problem between you and the primary, +* A bad IP address in named.boot, +* The primary is Lame for the zone. + +An external check to see if you can retrieve the SOA is the best way to +work out which it is. + +----------------------------------------------------------------------------- + +Question 6.12. Why does swapping kill BIND ? + +Date: Thu Jul 4 23:20:20 EDT 1996 + +The question was: + + I've been diagnosing a problem with BIND 4.9.x (where x is usually 3BETA9 + or 3REL) for several months now. I finally tracked it down to swap space + utilization on the unix boxes. + + This happens under (at least) under Linux 1.2.9 & 1.2.13, SunOS 4.1.3U1, + 4.1.1, and Solaris 2.5. The symptom is that if these machines get into + swap at all bind quits resolving most, if not all queries. Mind you that + these machines are not "swapping hard", but rather we're talking about a + several hundred K TEMPORARY deficiency. I have noticed while digging + through various archives that there is some referral to "bind thrashing + itself to death". Is this what is happening ? + +And the answer is: + + Yes it is. Bind can't tolerate having even a few pages swapped out. + The time required to send responses climbs to several seconds/request, + and the request queue fills and overflows. + + It's possible to shrink memory consumption a lot by undefining STATS + and XSTATS, and recompiling. You could nuke DEBUG too, which will + cut the code size down some, but probably not the data size. If that + doesn't do the job then it sounds like you'll need to move DNS onto a + separate box. + + BIND tends to touch all of its resident pages all of the time with + normal activity... if you look at the RSS verses the total process + size, you will always see the RSS within, usually, 90% of the total + size of the process. This means that *any* paging of named-owned + pages will stall named. Thus, a machine running a heavily accessed + named process cannot afford to swap *at all*. + + (Paul Vixie continues on this subject): + I plan to try to get BIND to exhibit slightly better locality of + reference in some future release. Of course, I can only do this if + the query names also exhibit some kind of hot spots. If someone + queries all your names often, BIND will have to touch all of its VM + pool that often. (Right now, BIND touches everything pretty often + even if you're just hammering on some hot spots -- that's the part + I'd like to fix. Malloc isn't cooperating.) + +=============================================================================== + +Section 7. ACKNOWLEDGEMENTS + + Q7.1 How is this FAQ generated ? + Q7.2 What formats are available ? + Q7.3 Contributors + +----------------------------------------------------------------------------- + +Question 7.1. How is this FAQ generated ? + +Date: Fri Dec 6 16:51:31 EST 1996 + +This FAQ is maintained in BFNN (Bizzarre Format with No Name). This +allows me to create ASCII, HTML, and GNU info (postscript coming soon) +from one source file. + +The perl script "bfnnconv.pl" that is available with the linux FAQ is used +to generate the various output files from the BFNN source. + +----------------------------------------------------------------------------- + +Question 7.2. What formats are available ? + +Date: Fri Dec 6 16:51:31 EST 1996 + +You may obtain one of the following formats for this document: + +* ASCII: http://www.users.pfmc.net/~cdp/cptd-faq/cptd-faq.ascii +* BFNN: http://www.users.pfmc.net/~cdp/cptd-faq/cptd-faq.bfnn +* GNU info: http://www.users.pfmc.net/~cdp/cptd-faq/cptd-faq.info +* HTML: http://www.users.pfmc.net/~cdp/cptd-faq/index.html + +----------------------------------------------------------------------------- + +Question 7.3. Contributors + +Date: Sat Dec 7 01:29:29 EST 1996 + +Many people have helped put this list together. Listed in e-mail address +alphabetical order, the following people have contributed to this FAQ: + +* (Benoit.Grange) +* (Dave Shield) +* +* (Adam Goodfellow) +* (Andras Salamon) +* (Barry Margolin) +* (David Barr) +* (B.J. Herbison) +* (Ben Elliston) +* (Brad Knowles) +* (Christopher Davis) +* (Chris Peckham) +* (Cricket Liu) +* (Ian 'Vato' Dickinson [ID17]) +* (Matthew Dillon) +* (David Parter) +* (Eric Wassenaar) +* (Tom Fitzgerald) +* (Frank Peters) +* (Glen A. Herrmannsfeldt) +* (Glenn Fleishman) +* (James Harvey) +* (Steve Hubert) +* (Ivan Leong) +* (John Hawkinson) +* (Joseph Malcolm) +* (Joe Provo) +* (Kevin Darcy) +* (Sean T. Lamont) +* (Michel Lavondes) +* (Mark Powell) +* (Mark Andrews) +* (Mathias Koerber) +* (Mike O'Connor) +* (Nick Hilliard) +* (Carl Oppedahl) +* (Patrick J. Horgan) +* (Paul Wren) +* (Pierre Beyssac) +* (Philip Hazel) +* (Phil Trubey) +* (R. Bernstein) +* (Ruediger Volk) +* (Michael Shields) +* (Rob Tanner) +* (Paul A Vixie) +* (William Gianopoulos {84718) +* (Bill Gray) +* (Christophe Wolfhugel) + +Thank you ! + diff --git a/usr.sbin/named/doc/misc/IPv6 b/usr.sbin/named/doc/misc/IPv6 new file mode 100644 index 000000000000..49fc3f5ec37c --- /dev/null +++ b/usr.sbin/named/doc/misc/IPv6 @@ -0,0 +1,72 @@ +IPv6 notes for BIND 4.9.3 Patch 2 Candidate 5 (and later?) +Paul Vixie, May 20, 1996 +doc/misc/IPv6 + + *** Introduction *** + +The IPv6 support in this release is latent, in that its presence is not +documented. The support is not optional, since its presence ought not to +affect anyone who does not go looking for it. The support includes: + + inet_ntop() new function. + inet_pton() new function. + RES_USE_INET6 causes gethostby*() to return either real IPv6 + addresses (if available) or mapped (::FFFF:a.b.c.d) + addresses if only IPv4 address records are found. + gethostbyname() can search for T_AAAA in preference to T_A. + gethostbyaddr() can search in IP6.INT for PTR RR's. + named can load, transfer, cache, and dump T_AAAA RRs. + + *** Some notes on the new functions *** + +The inet_pton() and inet_ntop() functions differ from the current (as of +this writing) IPv6 BSD API draft. Discussions were held, primarily between +myself and Rich Stevens, on the ipng@sunroof.eng.sun.com mailing list, and +the BIND definitions of these functions are likely to go into the next draft. +(If not, and BIND has to change its definitions of these functions, then you +will know why I chose not to document them yet!) + +These functions can return error values, and as such the process of porting +code that used inet_aton() to use inet_pton() is not just syntactic. Not all +nonzero values indicate success; consider "-1". Likewise, inet_ntoa() is not +just smaller than inet_ntop() -- it's a whole new approach. Inet_ntop() does +not return a static pointer, the caller has to supply a sized buffer. Also, +inet_ntop() can return NULL, so you should only printf() the result if you +have verified that your arguments will be seen as error free. + +The inet_pton() function is much pickier about its input format than the old +inet_aton() function has been. You can't abbreviate 10.0.0.53 as 10.53 any +more. Hexadecimal isn't accepted. You have to supply four decimal numeric +strings, each of whose value is within the range from 0 to 255. No spaces +are allowed either before, after, or within an address. If you need the older +functionality with all the shortcuts and exceptions, continue using inet_aton() +for your IPv4 address parsing needs. + + *** Some notes on RES_USE_INET6 *** + +You can set this by modifying _res.options after calling res_init(), or you +can turn it on globally by setting "options inet6" in /etc/resolv.conf. This +latter option ought to be used carefully, since _all_ applications will then +receive IPv6 style h_addr_list's from their gethostby*() calls. Once you know +that every application on your system can cope with IPv6 addressing, it is safe +and reasonable to turn on the global option. Otherwise, don't do it. + + *** Some notes on mapped IPv4 addresses *** + +There are two IPv6 prefixes set aside for IPv4 address encapsulation. See +RFC 1884 for a detailed explaination. The ::a.b.c.d form is used for +tunnelling, which means wrapping an IPv4 header around IPv6 packets and using +the existing IPv4 routing infrastructure to reach what are actually IPv6 +endpoints. The ::FFFF:a.b.c.d form can be used on dual-stack (IPv4 and IPv6) +hosts to signal a predominantly IPv6 stack that it should use ``native'' IPv4 +to reach a given destination, even though the socket's address family is +AF_INET6. + +BIND supports both of these address forms, to the extent that inet_pton() will +parse them, inet_ntop() will generate them, gethostby*() will map IPv4 into +IPv6 if the RES_USE_INET6 option is set, and gethostbyaddr() will search the +IN-ADDR.ARPA domain rather than the IP6.INT domain when it needs a PTR RR. +This last bit of behaviour is still under discussion and it's not clear that +tunnelled addresses should be mapped using IN-ADDR.ARPA. In other words, this +bit of behaviour may change in a subsequent BIND release. So now you know +another reason why none of this stuff is ``officially'' documented. diff --git a/usr.sbin/named/doc/misc/dns-setup b/usr.sbin/named/doc/misc/dns-setup new file mode 100644 index 000000000000..19f0197f7e81 --- /dev/null +++ b/usr.sbin/named/doc/misc/dns-setup @@ -0,0 +1,1081 @@ + Setting up a basic DNS server for a domain + Revision 1.1.1 + + Craig Richmond + craig@ecel.uwa.edu.au + 15th August 1993 + + +About this document + +I have written this file because it seems that the same questions seem to +pop up time and time again and when I had to install DNS from scratch the +first time, we found very little to help us. + +This document covers setting up a Domain Name Server with authority over +your domain and using a few of the more useful but less well known +(hopefully this document will take care of that) features of nslookup to +get information about the DNS and to work out why yours isn't working. + +If you are using a Sun Workstation and you want to make NIS interact with +the DNS, then this is not the FAQ for you (but it may well be when you try +to set up the DNS). Mark J. McIntosh points +out that it is included in the comp.sys.sun.admin FAQ and for the benefit +of those of you who can't get that (it is posted in comp.sys.sun.admin, +comp.sys.sun.misc, comp.unix.solaris, comp.answers and news.answers) I have +included the relevant parts at the bottom in appendix C. + +Contents: + + Contents + An Overview of the DNS + Installing the DNS + *The Boot File + *The Cache File + *The Forward Mapping File + *The Reverse Mapping File + Delegating authority for domains within your domain + Troubleshooting your named + *Named doesn't work! What is wrong? + *I changed my named database and my local machine has noticed, + but nobody else has the new information? + *My local machine knows about all the name server information, + but no other sites know about me? + *My forward domain names work, but the backward names do not? + How to get useful information from nslookup + *Getting number to name mappings. + *Finding where mail goes when a machine has no IP number. + *Getting a list of machines in a domain from nslookup. + Appendicies + *Appendix A sample root.cache file + *Appendix B Excerpt from RFC 1340 - Assigned Numbers - July 1992 + *Appendix C Installing DNS on a Sun when running NIS + + +An Overview of the DNS: + +The Domain Name System is the software that lets you have name to number +mappings on your computers. The name decel.ecel.uwa.edu.au is the number +130.95.4.2 and vice versa. This is achieved through the DNS. The DNS is a +heirarchy. There are a small number of root domain name servers that are +responsible for tracking the top level domains and who is under them. The +root domain servers between them know about all the people who have name +servers that are authoritive for domains under the root. + +Being authoritive means that if a server is asked about something in that +domain, it can say with no ambiguity whether or not a given piece of +information is true. For example. We have domains x.z and y.z. There are +by definition authoritive name servers for both of these domains and we +shall assume that the name server in both of these cases is a machine +called nic.x.z and nic.y.z but that really makes no difference. + +If someone asks nic.x.z whether there is a machine called a.x.z, then +nic.x.z can authoritively say, yes or no because it is the authoritive name +server for that domain. If someone asks nic.x.z whether there is a machine +called a.y.z then nic.x.z asks nic.y.z whether such a machine exists (and +caches this for future requests). It asks nic.y.z because nic.y.z is the +authoritive name server for the domain y.z. The information about +authoritive name servers is stored in the DNS itself and as long as you +have a pointer to a name server who is more knowledgable than yourself then +you are set. + +When a change is made, it propogates slowly out through the internet to +eventually reach all machines. The following was supplied by Mark Andrews +Mark.Andrews@syd.dms.csiro.au. + + If both the primary and all secondaries are up and talking when + a zone update occurs and for the refresh period after the + update the old data will live for max(refresh + mininum) + average (refresh/2 +mininum) for the zone. New information will + be available from all servers after refresh. + +So with a refresh of 3 hours and a minimum of a day, you can expect +everything to be working a day after it is changed. If you have a longer +minimum, it may take a couple of days before things return to normal. + +There is also a difference between a zone and a domain. The domain is the +entire set of machines that are contained within an organisational domain +name. For example, the domain uwa.edu.au contains all the machines at the +University of Western Australia. A Zone is the area of the DNS for which a +server is responsible. The University of Western Australia is a large +organisation and trying to track all changes to machines at a central +location would be difficult. The authoritive name server for the zone +uwa.edu.au delegates the authority for the zone ecel.uwa.edu.au to +decel.ecel.uwa.edu.au. Machine foo.ecel.uwa.edu.au is in the zone that +decel is authoritive for. Machine bar.uwa.edu.au is in the zone that +uniwa.uwa.edu.au is authoritive for. + +Installing the DNS: + +First I'll assume you already have a copy of the Domain Name Server +software. It is probably called named or in.named depending on your +flavour of unix. I never had to get a copy, but if anyone thinks that +information should be here then by all means tell me and I'll put it in. +If you intend on using the package called Bind, then you should be sure +that you get version 4.9, which is the most recent version at this point in +time. + +The Boot File: + +First step is to create the file named.boot. This describes to named +(we'll dispense with the in.named. Take them to be the same) where the +information that it requires can be found. This file is normally found in +/etc/named.boot and I personally tend to leave it there because then I know +where to find it. If you don't want to leave it there but place it in a +directory with the rest of your named files, then there is usually an +option on named to specify the location of the boot file. + +Your typical boot file will look like this if you are an unimportant leaf +node and there are other name servers at your site. + +directory /etc/namedfiles + +cache . root.cache +primary ecel.uwa.edu.au ecel.uwa.domain +primary 0.0.127.in-addr.arpa 0.0.127.domain +primary 4.95.130.in-addr.arpa 4.95.130.domain +forwarders 130.95.128.1 + +Here is an alternative layout used by Christophe Wolfhugel + He finds this easier because of +the large number of domains he has. The structure is essentially the same, +but the file names use the domain name rather than the IP subnet to +describe the contents. + +directory /usr/local/etc/bind +cache . p/root +; +; Primary servers +; +primary fr.net p/fr.net +primary frmug.fr.net p/frmug.fr.net +primary 127.in-addr.arpa p/127 +; +; Secondary servers +; +secondary ensta.fr 147.250.1.1 s/ensta.fr +secondary gatelink.fr.net 134.214.100.1 s/gatelink.fr.net +secondary insa-lyon.fr 134.214.100.1 s/insa-lyon.fr +secondary loesje.org 145.18.226.21 s/loesje.org +secondary nl.loesje.org 145.18.226.21 s/nl.loesje.org +secondary pcl.ac.uk 161.74.160.5 s/pcl.ac.uk +secondary univ-lyon1.fr 134.214.100.1 s/univ-lyon1.fr +secondary wmin.ac.uk 161.74.160.5 s/wmin.ac.uk +secondary westminster.ac.uk 161.74.160.5 s/westminster.ac.uk +; +; +; Secondary for addresses +; +secondary 74.161.in-addr.arpa 161.74.160.5 s/161.74 +secondary 214.134.in-addr.arpa 134.214.100.1 s/134.214 +secondary 250.147.in-addr.arpa 147.250.1.1 s/147.250 +; +; Classes C +; +secondary 56.44.192.in-addr.arpa 147.250.1.1 s/192.44.56 +secondary 57.44.192.in-addr.arpa 147.250.1.1 s/192.44.57 + +The lines in the named.boot file have the following meanings. + +directory + +This is the path that named will place in front of all file names +referenced from here on. If no directory is specified, it looks for files +relative to /etc. + +cache + +This is the information that named uses to get started. Named must know +the IP number of some other name servers at least to get started. +Information in the cache is treated differently depending on your version +of named. Some versions of named use the information included in the cache +permenantly and others retain but ignore the cache information once up and +running. + +primary + +This is one of the domains for which this machine is authorative for. You +put the entire domain name in. You need forwards and reverse lookups. The +first value is the domain to append to every name included in that file. +(There are some exceptions, but they will be explained later) The name at +the end of the line is the name of the file (relative to /etc of the +directory if you specified one). The filename can have slashes in it to +refer to subdirectories so if you have a lot of domains you may want to +split it up. + +BE VERY CAREFUL TO PUT THE NUMBERS BACK TO FRONT FOR THE REVERSE LOOK UP +FILE. The example given above is for the subnet ecel.uwa.edu.au whose IP +address is 130.95.4.*. The reverse name must be 4.95.130.in-addr.arpa. +It must be backwards and it must end with .in-addr.arpa. If your reverse +name lookups don't work, check this. If they still don't work, check this +again. + +forwarders + +This is a list of IP numbers for forward requests for sites about which we +are unsure. A good choice here is the name server which is authoritive for +the zone above you. + +secondary (This line is not in the example, but is worth mentioning.) + +A secondary line indicates that you wish to be a secondary name server for +this domain. You do not need to do this usually. All it does is help make +the DNS more robust. You should have at least one secondary server for +your site, but you do not need to be a secondary server for anyone else. +You can by all means, but you don't need to be. If you want to be a +secondary server for another domain, then place the line + +secondary gu.uwa.edu.au 130.95.100.3 130.95.128.1 + +in your named.boot. This will make your named try the servers on both of +the machines specified to see if it can obtain the information about those +domains. You can specify a number of IP addresses for the machines to +query that probably depends on your machine. Your copy of named will upon +startup go and query all the information it can get about the domain in +question and remember it and act as though it were authoritive for that +domain. + +Next you will want to start creating the data files that contain the name +definitions. + +The cache file: + +You can get a copy of the cache file from FTP.RS.INTERNIC.NET. The current +copy can be found in Appendix A. + +The Forward Mapping file: +The file ecel.uwa.edu.au. will be used for the example with a couple of +machines left in for the purpose of the exercise. Here is a copy of what +the file looks like with explanations following. + +; Authoritative data for ecel.uwa.edu.au +; +@ IN SOA decel.ecel.uwa.edu.au. postmaster.ecel.uwa.edu.au. ( + 93071200 ; Serial (yymmddxx) + 10800 ; Refresh 3 hours + 3600 ; Retry 1 hour + 3600000 ; Expire 1000 hours + 86400 ) ; Minimum 24 hours + IN A 130.95.4.2 + IN MX 100 decel + IN MX 150 uniwa.uwa.edu.au. + IN MX 200 relay1.uu.net. + IN MX 200 relay2.uu.net. + +localhost IN A 127.0.0.1 + +decel IN A 130.95.4.2 + IN HINFO SUN4/110 UNIX + IN MX 100 decel + IN MX 150 uniwa.uwa.edu.au. + IN MX 200 relay1.uu.net + IN MX 200 relay2.uu.net + +gopher IN CNAME decel.ecel.uwa.edu.au. + +accfin IN A 130.95.4.3 + IN HINFO SUN4/110 UNIX + IN MX 100 decel + IN MX 150 uniwa.uwa.edu.au. + IN MX 200 relay1.uu.net + IN MX 200 relay2.uu.net + +chris-mac IN A 130.95.4.5 + IN HINFO MAC-II MACOS + +The comment character is ';' so the first two lines are just comments +indicating the contents of the file. + +All values from here on have IN in them. This indicates that the value is +an InterNet record. There are a couple of other types, but all you need +concern yourself with is internet ones. + +The SOA record is the Start Of Authority record. It contains the +information that other nameservers will learn about this domain and how to +treat the information they are given about it. The '@' as the first +character in the line indicates that you wish to define things about the +domain for which this file is responsible. The domain name is found in the +named.boot file in the corresponding line to this filename. All +information listed refers to the most recent machine/domain name so all +records from the '@' until 'localhost' refer to the '@'. The SOA record +has 5 magic numbers. First magic number is the serial number. If you +change the file, change the serial number. If you don't, no other name +servers will update their information. The old information will sit around +for a very long time. + +Refresh is the time between refreshing information about the SOA (correct +me if I am wrong). Retry is the frequency of retrying if an authorative +server cannot be contacted. Expire is how long a secondary name server +will keep information about a zone without successfully updating it or +confirming that the data is up to date. This is to help the information +withstand fairly lengthy downtimes of machines or connections in the +network without having to recollect all the information. Minimum is the +default time to live value handed out by a nameserver for all records in +a zone without an explicit TTL value. This is how long the data will live +after being handed out. The two pieces of information before the 5 magic +numbers are the machine that is considered the origin of all of this +information. Generally the machine that is running your named is a good +one for here. The second is an email address for someone who can fix any +problems that may occur with the DNS. Good ones here are postmaster, +hostmaster or root. NOTE: You use dots and not '@' for the email address. + +eg root.decel.ecel.uwa.edu.au is correct + and + root@decel.ecel.uwa.edu.au is incorrect. + +We now have an address to map ecel.uwa.edu.au to. The address is +130.95.4.2 which happens to be decel, our main machine. If you try to find +an IP number for the domain ecel.uwa.edu.au it will get you the machine +decel.ecel.uwa.edu.au's IP number. This is a nicety which means that +people who have non-MX record mailers can still mail fred@ecel.uwa.edu.au +and don't have to find the name of a machine name under the domain to mail. + +Now we have a couple of MX records for the domain itself. The MX records +specify where to send mail destined for the machine/domain that the MX +record is for. In this case we would prefer if all mail for +fred@ecel.uwa.edu.au is sent to decel.ecel.uwa.edu.au. If that does not +work, we would like it to go to uniwa.uwa.edu.au because there are a number +of machines that might have no idea how to get to us, but may be able to get +to uniwa. And failing that, try the site relay1.uu.net. A small number +indicates that this site should be tried first. The larget the number the +further down the list of sites to try the site is. NOTE: Not all machines +have mailers that pay attention to MX records. Some only pay attention to +IP numbers, which is really stupid. All machines are required to have +MX-capable Mail Transfer Agents (MTA) as there are many addresses that can +only be reached via this means. + +There is an entry for localhost now. Note that this is somewhat of a +kludge and should probably be handled far more elegantly. By placing +localhost here, a machine comes into existance called +localhost.ecel.uwa.edu.au. If you finger it, or telnet to it, you get your +own machine, because the name lookup returns 127.0.0.1 which is the special +case for your own machine. I have used a couple of different DNS packages. +The old BSD one let you put things into the cache which would always work, +but would not be exported to other nameservers. In the newer Sun one, they +are left in the cache and are mostly ignored once named is up and running. +This isn't a bad solution, its just not a good one. + +Decel is the main machine in our domain. It has the IP number 130.95.4.2 +and that is what this next line shows. It also has a HINFO entry. HINFO +is Host Info which is meant to be some sort of an indication of what the +machine is and what it runs. The values are two white space seperated +values. First being the hardware and second being the software. HINFO is +not compulsory, its just nice to have sometimes. We also have some MX +records so that mail destined for decel has some other avenues before it +bounces back to the sender if undeliverable. + +It is a good idea to give all machines capable of handling mail an MX +record because this can be cached on remote machines and will help to +reduce the load on the network. + +gopher.ecel.uwa.edu.au is the gopher server in our division. Now because +we are cheapskates and don't want to go and splurge on a seperate machine +just for handling gopher requests we have made it a CNAME to our main +machine. While it may seem pointless it does have one main advantage. +When we discover that our placing terrabytes of popular quicktime movies +on our gopher server (no we haven't and we don't intend to) causes an +unbearable load on our main machine, we can quickly move the CNAME to +point at a new machine by changing the name mentioned in the CNAME. Then +the slime of the world can continue to get their essential movies with a +minimal interuption to the network. Other good CNAMEs to maintain are +things like ftp, mailhost, netfind, archie, whois, and even dns (though the +most obvious use for this fails). It also makes it easier for people to +find these services in your domain. + +We should probably start using WKS records for things like gopher and whois +rather than making DNS names for them. The tools are not in wide +circulation for this to work though. (Plus all those comments in many DNS +implementation of "Not implemented" next to the WKS record) + +Finally we have a macintosh which belongs to my boss. All it needs is an +IP number, and we have included the HINFO so that you can see that it is in +fact a macII running a Mac System. To get the list of preferred values, +you should get a copy of RFC 1340. It lists lots of useful information +such as /etc/services values, ethernet manufacturer hardware addresses, +HINFO defualts and many others. I will include the list as it stands at +the moment, but if any RFC superceeds 1340, then it will have a more +complete list. See Appendix B for that list. + +NOTE: If Chris had a very high profile and wanted his mac to appear like a +fully connected unix machine as far as internet services were concerned, he +could simply place an MX record such as + + IN MX 100 decel + +after his machine and any mail sent to chris@chris-mac.ecel.uwa.edu.au +would be automatically rerouted to decel. + +The Reverse Mapping File + +The reverse name lookup is handled in a most bizarre fashion. Well it all +makes sense, but it is not immediately obvious. + +All of the reverse name lookups are done by finding the PTR record +associated with the name w.x.y.z.in-addr.arpa. So to find the name +associated with the IP number 1.2.3.4, we look for information stored in +the DNS under the name 4.3.2.1.in-addr.arpa. They are organised this way +so that when you are allocated a B class subnet for example, you get all of +the IP numbers in the domain 130.95. Now to turn that into a reverse name +lookup domain, you have to invert the numbers or your registered domains +will be spread all over the place. It is a mess and you need not understand +the finer points of it all. All you need to know is that you put the +reverse name lookup files back to front. + +Here is the sample reverse name lookup files to go with our example. + +0.0.127.in-addr.arpa +-- +; Reverse mapping of domain names 0.0.127.in-addr.arpa +; Nobody pays attention to this, it is only so 127.0.0.1 -> localhost. +@ IN SOA decel.ecel.uwa.edu.au. postmaster.ecel.uwa.edu.au. ( + 91061801 ; Serial (yymmddxx) + 10800 ; Refresh 3 hours + 3600 ; Retry 1 hour + 3600000 ; Expire 1000 hours + 86400 ) ; Minimum 24 hours +; +1 IN PTR localhost.ecel.uwa.edu.au. +-- + +4.95.130.in-addr.arpa +-- +; reverse mapping of domain names 4.95.130.in-addr.arpa +; +@ IN SOA decel.ecel.uwa.edu.au. postmaster.ecel.uwa.edu.au. ( + 92050300 ; Serial (yymmddxx format) + 10800 ; Refresh 3hHours + 3600 ; Retry 1 hour + 3600000 ; Expire 1000 hours + 86400 ) ; Minimum 24 hours +2 IN PTR decel.ecel.uwa.edu.au. +3 IN PTR accfin.ecel.uwa.edu.au. +5 IN PTR chris-mac.ecel.uwa.edu.au. +-- + +It is important to remember that you must have a second start of authority +record for the reverse name lookups. Each reverse name lookup file must +have its own SOA record. The reverse name lookup on the 127 domain is +debatable seeing as there is likely to be only one number in the file and +it is blatantly obvious what it is going to map to. + +The SOA details are the same as in the forward mapping. + +Each of the numbers listed down the left hand side indicates that the line +contains information for that number of the subnet. Each of the subnets +must be the more significant digits. eg the 130.95.4 of an IP number +130.95.4.2 is implicit for all numbers mentioned in the file. + +The PTR must point to a machine that can be found in the DNS. If the name +is not in the DNS, some versions of named just bomb out at this point. + +Reverse name lookups are not compulsory, but nice to have. It means that +when people log into machines, they get names indicating where they are +logged in from. It makes it easier for you to spot things that are wrong +and it is far less cryptic than having lots of numbers everywhere. Also if +you do not have a name for your machine, some brain dead protocols such as +talk will not allow you to connect. + +Since I had this I had one suggestion of an alternative way to do the +localhost entry. I think it is a matter of personal opinion so I'll +include it here in case anyone things that this is a more appropriate +method. + +The following is courtesy of jep@convex.nl (JEP de Bie) + + The way I did it was: + + 1) add in /etc/named.boot: + + primary . localhost + primary 127.in-addr.ARPA. IP127 + +(Craig: It has been suggested by Mark Andrews that this is a bad practice + particularly if you have upgraded to Bind 4.9. You also run the risk of + polluting the root name servers. This comes down to a battle of idealogy + and practicality. Think twice before declaring yourself authorative for + the root domain.) + + So I not only declare myself (falsely? - probably, but nobody is going to + listen anyway most likely [CPR]:-) athorative in the 127.in-addr.ARPA domain + but also in the . (root) domain. + + 2) the file localhost has: + + $ORIGIN . + localhost IN A 127.0.0.1 + + 3) and the file IP127: + + $ORIGIN 127.in-addr.ARPA. + 1.0.0 IN PTR localhost. + + 4) and I have in my own domain file (convex.nl) the line: + + $ORIGIN convex.nl. + localhost IN CNAME localhost. + + The advantage (elegancy?) is that a query (A) of localhost. gives the + reverse of the query of 1.0.0.127.in-addr.ARPA. And it also shows that + localhost.convex.nl is only a nickname to something more absolute. + (While the notion of localhost is of course relative :-)). + + And I also think there is a subtle difference between the lines + + primary 127.in-addr.ARPA. IP127 + and + primary 0.0.127.in-addr.ARPA. 4.95.130.domain + ============= + JEP de Bie + jep@convex.nl + ============= + + + +Delegating authority for domains within your domain: + +When you start having a very big domain that can be broken into logical and +seperate entities that can look after their own DNS information, you will +probably want to do this. Maintain a central area for the things that +everyone needs to see and delegate the authority for the other parts of the +organisation so that they can manage themselves. + +Another essential piece of information is that every domain that exists +must have it NS records associated with it. These NS records denote the +name servers that are queried for information about that zone. For your +zone to be recognised by the outside world, the server responsible for the +zone above you must have created a NS record for your machine in your +domain. For example, putting the computer club onto the network and giving +them control over their own part of the domain space we have the following. + +The machine authorative for gu.uwa.edu.au is mackerel and the machine +authorative for ucc.gu.uwa.edu.au is marlin. + +in mackerel's data for gu.uwa.edu.au we have the following + +@ IN SOA ... + IN A 130.95.100.3 + IN MX mackerel.gu.uwa.edu.au. + IN MX uniwa.uwa.edu.au. + +marlin IN A 130.95.100.4 + +ucc IN NS marlin.gu.uwa.edu.au. + IN NS mackerel.gu.uwa.edu.au. + +Marlin is also given an IP in our domain as a convenience. If they blow up +their name serving there is less that can go wrong because people can still +see that machine which is a start. You could place "marlin.ucc" in the +first column and leave the machine totally inside the ucc domain as well. + +The second NS line is because mackerel will be acting as secondary name +server for the ucc.gu domain. Do not include this line if you are not +authorative for the information included in the sub-domain. + + +Troubleshooting your named: + +Named doesn't work! What is wrong? + +Step 1: Run nslookup and see what nameserver it tries to connect you to. +If nslookup connects you to the wrong nameserver, create a /etc/resolv.conf +file that points your machine at the correct nameserver. If there is no +resolv.conf file, the the resolver uses the nameserver on the local +machine. + +Step 2: Make sure that named is actually running. + +Step 3: Restart named and see if you get any error messages on the +console and in also check /usr/adm/messages. + +Step 4: If named is running, nslookup connects to the appropriate +nameserver and nslookup can answer simple questions, but other programs +such as 'ping' do not work with names, then you need to install resolv+ +most likely. + + +I changed my named database and my local machine has noticed, but nobody +else has the new information? + +Change the serial number in the SOA for any domains that you modified and +restart named. Wait an hour and check again. The information propogates +out. It won't change immediately. + + +My local machine knows about all the name server information, but no other +sites know about me? + +Find an upstream nameserver (one that has an SOA for something in your +domain) and ask them to be a secondary name server for you. eg if you are +ecel.uwa.edu.au, ask someone who has an SOA for the domain uwa.edu.au. +Get NS records (and glue) added to your parent zone for your zone. This is +called delegating. It should be done formally like this or you will get +inconsistant answers out of the DNS. ALL NAMSERVERS FOR YOUR ZONE SHOULD +BE LISTED IN THIS MANNER. + + +My forward domain names work, but the backward names do not? + +Make sure the numbers are back to front and have the in-addr.arpa on the +end. +Make sure you reverse zone is registered. For Class C nets this can be done +by mailing to hostmaster@internic.net. For class A & B nets make sure that +you are registeres with the primary for your net and that the net itself +is registered with hostmaster@internic.net. + + +How to get useful information from nslookup: + +Nslookup is a very useful program but I'm sure there are less than 20 +people worldwide who know how to use it to its full usefulness. I'm most +certainly not one of them. If you don't like using nslookup, there is at +least one other program called dig, that has most/all(?) of the +functionality of nslookup and is a hell of a lot easier to use. + +I won't go into dig much here except to say that it is a lot easier to get +this information out of. I won't bother because nslookup ships with almost +all machines that come with network software. + +To run nslookup, you usually just type nslookup. It will tell you the +server it connects to. You can specify a different server if you want. +This is useful when you want to tell if your named information is +consistent with other servers. + +Getting name to number mappings. + +Type the name of the machine. Typing 'decel' is enough if the machine is +local. + +(Once you have run nslookup successfully) +> decel +Server: ecel.uwa.edu.au +Address: 130.95.4.2 + +Name: decel.ecel.uwa.edu.au +Address: 130.95.4.2 + +> + +One curious quirk of some name resolvers is that if you type a +machine name, they will try a number of permutations. For example if my +machine is in the domain ecel.uwa.edu.au and I try to find a machine +called fred, the resolver will try the following. + + fred.ecel.uwa.edu.au. + fred.uwa.edu.au. + fred.edu.au. + fred.au. + fred. + +This can be useful, but more often than not, you would simply prefer a good +way to make aliases for machines that are commonly referenced. If you are +running resolv+, you should just be able to put common machines into the +host file. + +DIG: dig + +Getting number to name mappings. + +Nslookup defaults to finding you the Address of the name specified. For +reverse lookups you already have the address and you want to find the +name that goes with it. If you read and understood the bit above where it +describes how to create the number to name mapping file, you would guess +that you need to find the PTR record instead of the A record. So you do +the following. + +> set type=ptr +> 2.4.95.130.in-addr.arpa +Server: decel.ecel.uwa.edu.au +Address: 130.95.4.2 + +2.4.95.130.in-addr.arpa host name = decel.ecel.uwa.edu.au +> + +nslookup tells you that the ptr for the machine name +2.4.95.130.in-addr.arpa points to the host decel.ecel.uwa.edu.au. + +DIG: dig -x + +Finding where mail goes when a machine has no IP number. + +When a machine is not IP connected, it needs to specify to the world, where +to send the mail so that it can dial up and collect it every now and then. +This is accomplished by setting up an MX record for the site and not giving +it an IP number. To get the information out of nslookup as to where the +mail goes, do the following. + +> set type=mx +> dialix.oz.au +Server: decel.ecel.uwa.oz.au +Address: 130.95.4.2 + +Non-authoritative answer: +dialix.oz.au preference = 100, mail exchanger = uniwa.uwa.OZ.AU +dialix.oz.au preference = 200, mail exchanger = munnari.OZ.AU +Authoritative answers can be found from: +uniwa.uwa.OZ.AU inet address = 130.95.128.1 +munnari.OZ.AU inet address = 128.250.1.21 +munnari.OZ.AU inet address = 192.43.207.1 +mulga.cs.mu.OZ.AU inet address = 128.250.35.21 +mulga.cs.mu.OZ.AU inet address = 192.43.207.2 +dmssyd.syd.dms.CSIRO.AU inet address = 130.155.16.1 +ns.UU.NET inet address = 137.39.1.3 + +You tell nslookup that you want to search for mx records and then you give +it the name of the machine. It tells you the preference for the mail +(small means more preferable), and who the mail should be sent to. It also +includes sites that are authorative (have this name in their named database +files) for this MX record. There are multiple sites as a backup. As can +be seen, our local public internet access company dialix would like all of +their mail to be sent to uniwa, where they collect it from. If uniwa is +not up, send it to munnari and munnari will get it to uniwa eventually. + +NOTE: For historical reasons Australia used to be .oz which was changed to +.oz.au to move to the ISO standard extensions upon the advent of IP. We +are now moving to a more normal heirarchy which is where the .edu.au comes +from. Pity, I liked having oz. + +DIG: dig mx + +Getting a list of machines in a domain from nslookup. + +Find a server that is authorative for the domain or just generally all +knowing. To find a good server, find all the soa records for a given +domain. To do this, you set type=soa and enter the domain just like in the +two previous examples. + +Once you have a server type + +> ls gu.uwa.edu.au. +[uniwa.uwa.edu.au] +Host or domain name Internet address + gu server = mackerel.gu.uwa.edu.au + gu server = uniwa.uwa.edu.au + gu 130.95.100.3 + snuffle-upagus 130.95.100.131 + mullet 130.95.100.2 + mackerel 130.95.100.3 + marlin 130.95.100.4 + gugate 130.95.100.1 + gugate 130.95.100.129 + helpdesk 130.95.100.180 + lan 130.95.100.0 + big-bird 130.95.100.130 + +To get a list of all the machines in the domain. + +If you wanted to find a list of all of the MX records for the domain, you +can put a -m flag in the ls command. + +> ls -m gu.uwa.edu.au. +[uniwa.uwa.edu.au] +Host or domain name Metric Host + gu 100 mackerel.gu.uwa.edu.au + gu 200 uniwa.uwa.edu.au + +This only works for a limited selection of the different types. + +DIG: dig axfr @ + + + +Appendix A + + +; +; This file holds the information on root name servers needed to +; initialize cache of Internet domain name servers +; (e.g. reference this file in the "cache . " +; configuration file of BIND domain name servers). +; +; This file is made available by InterNIC registration services +; under anonymous FTP as +; file /domain/named.root +; on server FTP.RS.INTERNIC.NET +; -OR- under Gopher at RS.INTERNIC.NET +; under menu InterNIC Registration Services (NSI) +; submenu InterNIC Registration Archives +; file named.root +; +; last update: April 21, 1993 +; related version of root zone: 930421 +; +. 99999999 IN NS NS.INTERNIC.NET. +NS.INTERNIC.NET. 99999999 A 198.41.0.4 +. 99999999 NS KAVA.NISC.SRI.COM. +KAVA.NISC.SRI.COM. 99999999 A 192.33.33.24 +. 99999999 NS C.NYSER.NET. +C.NYSER.NET. 99999999 A 192.33.4.12 +. 99999999 NS TERP.UMD.EDU. +TERP.UMD.EDU. 99999999 A 128.8.10.90 +. 99999999 NS NS.NASA.GOV. +NS.NASA.GOV. 99999999 A 128.102.16.10 + 99999999 A 192.52.195.10 +. 99999999 NS NS.NIC.DDN.MIL. +NS.NIC.DDN.MIL. 99999999 A 192.112.36.4 +. 99999999 NS AOS.ARL.ARMY.MIL. +AOS.ARL.ARMY.MIL. 99999999 A 128.63.4.82 + 99999999 A 192.5.25.82 +. 99999999 NS NIC.NORDU.NET. +NIC.NORDU.NET. 99999999 A 192.36.148.17 +; End of File + + +Appendix B + +An Excerpt from +RFC 1340 Assigned Numbers July 1992 + + + MACHINE NAMES + + These are the Official Machine Names as they appear in the Domain Name + System HINFO records and the NIC Host Table. Their use is described in + RFC-952 [53]. + + A machine name or CPU type may be up to 40 characters taken from the + set of uppercase letters, digits, and the two punctuation characters + hyphen and slash. It must start with a letter, and end with a letter + or digit. + + ALTO DEC-1080 + ALTOS-6800 DEC-1090 + AMDAHL-V7 DEC-1090B + APOLLO DEC-1090T + ATARI-104ST DEC-2020T + ATT-3B1 DEC-2040 + ATT-3B2 DEC-2040T + ATT-3B20 DEC-2050T + ATT-7300 DEC-2060 + BBN-C/60 DEC-2060T + BURROUGHS-B/29 DEC-2065 + BURROUGHS-B/4800 DEC-FALCON + BUTTERFLY DEC-KS10 + C/30 DEC-VAX-11730 + C/70 DORADO + CADLINC DPS8/70M + CADR ELXSI-6400 + CDC-170 EVEREX-386 + CDC-170/750 FOONLY-F2 + CDC-173 FOONLY-F3 + CELERITY-1200 FOONLY-F4 + CLUB-386 GOULD + COMPAQ-386/20 GOULD-6050 + COMTEN-3690 GOULD-6080 + CP8040 GOULD-9050 + CRAY-1 GOULD-9080 + CRAY-X/MP H-316 + CRAY-2 H-60/68 + CTIWS-117 H-68 + DANDELION H-68/80 + DEC-10 H-89 + DEC-1050 HONEYWELL-DPS-6 + DEC-1077 HONEYWELL-DPS-8/70 + HP3000 ONYX-Z8000 + HP3000/64 PDP-11 + IBM-158 PDP-11/3 + IBM-360/67 PDP-11/23 + IBM-370/3033 PDP-11/24 + IBM-3081 PDP-11/34 + IBM-3084QX PDP-11/40 + IBM-3101 PDP-11/44 + IBM-4331 PDP-11/45 + IBM-4341 PDP-11/50 + IBM-4361 PDP-11/70 + IBM-4381 PDP-11/73 + IBM-4956 PE-7/32 + IBM-6152 PE-3205 + IBM-PC PERQ + IBM-PC/AT PLEXUS-P/60 + IBM-PC/RT PLI + IBM-PC/XT PLURIBUS + IBM-SERIES/1 PRIME-2350 + IMAGEN PRIME-2450 + IMAGEN-8/300 PRIME-2755 + IMSAI PRIME-9655 + INTEGRATED-SOLUTIONS PRIME-9755 + INTEGRATED-SOLUTIONS-68K PRIME-9955II + INTEGRATED-SOLUTIONS-CREATOR PRIME-2250 + INTEGRATED-SOLUTIONS-CREATOR-8 PRIME-2655 + INTEL-386 PRIME-9955 + INTEL-IPSC PRIME-9950 + IS-1 PRIME-9650 + IS-68010 PRIME-9750 + LMI PRIME-2250 + LSI-11 PRIME-750 + LSI-11/2 PRIME-850 + LSI-11/23 PRIME-550II + LSI-11/73 PYRAMID-90 + M68000 PYRAMID-90MX + MAC-II PYRAMID-90X + MASSCOMP RIDGE + MC500 RIDGE-32 + MC68000 RIDGE-32C + MICROPORT ROLM-1666 + MICROVAX S1-MKIIA + MICROVAX-I SMI + MV/8000 SEQUENT-BALANCE-8000 + NAS3-5 SIEMENS + NCR-COMTEN-3690 SILICON-GRAPHICS + NEXT/N1000-316 SILICON-GRAPHICS-IRIS + NOW SGI-IRIS-2400 + SGI-IRIS-2500 SUN-3/50 + SGI-IRIS-3010 SUN-3/60 + SGI-IRIS-3020 SUN-3/75 + SGI-IRIS-3030 SUN-3/80 + SGI-IRIS-3110 SUN-3/110 + SGI-IRIS-3115 SUN-3/140 + SGI-IRIS-3120 SUN-3/150 + SGI-IRIS-3130 SUN-3/160 + SGI-IRIS-4D/20 SUN-3/180 + SGI-IRIS-4D/20G SUN-3/200 + SGI-IRIS-4D/25 SUN-3/260 + SGI-IRIS-4D/25G SUN-3/280 + SGI-IRIS-4D/25S SUN-3/470 + SGI-IRIS-4D/50 SUN-3/480 + SGI-IRIS-4D/50G SUN-4/60 + SGI-IRIS-4D/50GT SUN-4/110 + SGI-IRIS-4D/60 SUN-4/150 + SGI-IRIS-4D/60G SUN-4/200 + SGI-IRIS-4D/60T SUN-4/260 + SGI-IRIS-4D/60GT SUN-4/280 + SGI-IRIS-4D/70 SUN-4/330 + SGI-IRIS-4D/70G SUN-4/370 + SGI-IRIS-4D/70GT SUN-4/390 + SGI-IRIS-4D/80GT SUN-50 + SGI-IRIS-4D/80S SUN-100 + SGI-IRIS-4D/120GTX SUN-120 + SGI-IRIS-4D/120S SUN-130 + SGI-IRIS-4D/210GTX SUN-150 + SGI-IRIS-4D/210S SUN-170 + SGI-IRIS-4D/220GTX SUN-386i/250 + SGI-IRIS-4D/220S SUN-68000 + SGI-IRIS-4D/240GTX SYMBOLICS-3600 + SGI-IRIS-4D/240S SYMBOLICS-3670 + SGI-IRIS-4D/280GTX SYMMETRIC-375 + SGI-IRIS-4D/280S SYMULT + SGI-IRIS-CS/12 TANDEM-TXP + SGI-IRIS-4SERVER-8 TANDY-6000 + SPERRY-DCP/10 TEK-6130 + SUN TI-EXPLORER + SUN-2 TP-4000 + SUN-2/50 TRS-80 + SUN-2/100 UNIVAC-1100 + SUN-2/120 UNIVAC-1100/60 + SUN-2/130 UNIVAC-1100/62 + SUN-2/140 UNIVAC-1100/63 + SUN-2/150 UNIVAC-1100/64 + SUN-2/160 UNIVAC-1100/70 + SUN-2/170 UNIVAC-1160 + UNKNOWN + VAX-11/725 + VAX-11/730 + VAX-11/750 + VAX-11/780 + VAX-11/785 + VAX-11/790 + VAX-11/8600 + VAX-8600 + WANG-PC002 + WANG-VS100 + WANG-VS400 + WYSE-386 + XEROX-1108 + XEROX-8010 + ZENITH-148 + + SYSTEM NAMES + + These are the Official System Names as they appear in the Domain Name + System HINFO records and the NIC Host Table. Their use is described + in RFC-952 [53]. + + A system name may be up to 40 characters taken from the set of upper- + case letters, digits, and the three punctuation characters hyphen, + period, and slash. It must start with a letter, and end with a + letter or digit. + + AEGIS LISP SUN OS 3.5 + APOLLO LISPM SUN OS 4.0 + AIX/370 LOCUS SWIFT + AIX-PS/2 MACOS TAC + BS-2000 MINOS TANDEM + CEDAR MOS TENEX + CGW MPE5 TOPS10 + CHORUS MSDOS TOPS20 + CHRYSALIS MULTICS TOS + CMOS MUSIC TP3010 + CMS MUSIC/SP TRSDOS + COS MVS ULTRIX + CPIX MVS/SP UNIX + CTOS NEXUS UNIX-BSD + CTSS NMS UNIX-V1AT + DCN NONSTOP UNIX-V + DDNOS NOS-2 UNIX-V.1 + DOMAIN NTOS UNIX-V.2 + DOS OS/DDP UNIX-V.3 + EDX OS/2 UNIX-PC + ELF OS4 UNKNOWN + EMBOS OS86 UT2D + EMMOS OSX V + EPOS PCDOS VM + FOONEX PERQ/OS VM/370 + FUZZ PLI VM/CMS + GCOS PSDOS/MIT VM/SP + GPOS PRIMOS VMS + HDOS RMX/RDOS VMS/EUNICE + IMAGEN ROS VRTX + INTERCOM RSX11M WAITS + IMPRESS RTE-A WANG + INTERLISP SATOPS WIN32 + IOS SCO-XENIX/386 X11R3 + IRIX SCS XDE + ISI-68020 SIMP XENIX + ITS SUN + + + +Appendix C Installing DNS on a Sun when running NIS + +==================== + 2) How to get DNS to be used when running NIS ? + + First setup the appropriate /etc/resolv.conf file. + Something like this should do the "trick". + + ; + ; Data file for a client. + ; + domain local domain + nameserver address of primary domain nameserver + nameserver address of secondary domain nameserver + + where: "local domain" is the domain part of the hostnames. + For example, if your hostname is "thor.ece.uc.edu" + your "local domain" is "ece.uc.edu". + + You will need to put a copy of this resolv.conf on + all NIS(YP) servers including slaves. + + Under SunOS 4.1 and greater, change the "B=" at the top + of the /var/yp/Makefile to "B=-b" and setup NIS in the + usual fashion. + + You will need reboot or restart ypserv for these changes + to take affect. + + Under 4.0.x, edit the Makefile or apply the following "diff": + +*** Makefile.orig Wed Jan 10 13:22:11 1990 +--- Makefile Wed Jan 10 13:22:01 1990 +*************** +*** 63 **** +! | $(MAKEDBM) - $(YPDBDIR)/$(DOM)/hosts.byname; \ +--- 63 ---- +! | $(MAKEDBM) -b - $(YPDBDIR)/$(DOM)/hosts.byname; \ +*************** +*** 66 **** +! | $(MAKEDBM) - $(YPDBDIR)/$(DOM)/hosts.byaddr; \ +--- 66 ---- +! | $(MAKEDBM) -b - $(YPDBDIR)/$(DOM)/hosts.byaddr; \ +==================== + diff --git a/usr.sbin/named/doc/misc/domain.ps b/usr.sbin/named/doc/misc/domain.ps new file mode 100644 index 000000000000..61064a7cf82f --- /dev/null +++ b/usr.sbin/named/doc/misc/domain.ps @@ -0,0 +1,701 @@ +%!PS-Adobe-3.0 +%%Creator: groff version 1.05 +%%DocumentNeededResources: font Times-Bold +%%+ font Times-Italic +%%+ font Times-Roman +%%DocumentSuppliedResources: procset grops 1.05 0 +%%Pages: 5 +%%PageOrder: Ascend +%%Orientation: Portrait +%%EndComments +%%BeginProlog +%%BeginResource: procset grops 1.05 0 + +/setpacking where { + pop + currentpacking + true setpacking +} if + +/grops 120 dict dup begin + +% The ASCII code of the space character. +/SC 32 def + +/A /show load def +/B { 0 SC 3 -1 roll widthshow } bind def +/C { 0 exch ashow } bind def +/D { 0 exch 0 SC 5 2 roll awidthshow } bind def +/E { 0 rmoveto show } bind def +/F { 0 rmoveto 0 SC 3 -1 roll widthshow } bind def +/G { 0 rmoveto 0 exch ashow } bind def +/H { 0 rmoveto 0 exch 0 SC 5 2 roll awidthshow } bind def +/I { 0 exch rmoveto show } bind def +/J { 0 exch rmoveto 0 SC 3 -1 roll widthshow } bind def +/K { 0 exch rmoveto 0 exch ashow } bind def +/L { 0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow } bind def +/M { rmoveto show } bind def +/N { rmoveto 0 SC 3 -1 roll widthshow } bind def +/O { rmoveto 0 exch ashow } bind def +/P { rmoveto 0 exch 0 SC 5 2 roll awidthshow } bind def +/Q { moveto show } bind def +/R { moveto 0 SC 3 -1 roll widthshow } bind def +/S { moveto 0 exch ashow } bind def +/T { moveto 0 exch 0 SC 5 2 roll awidthshow } bind def + +% name size font SF - + +/SF { + findfont exch + [ exch dup 0 exch 0 exch neg 0 0 ] makefont + dup setfont + [ exch /setfont cvx ] cvx bind def +} bind def + +% name a c d font MF - + +/MF { + findfont + [ 5 2 roll + 0 3 1 roll % b + neg 0 0 ] makefont + dup setfont + [ exch /setfont cvx ] cvx bind def +} bind def + +/level0 0 def +/RES 0 def +/PL 0 def +/LS 0 def + +% BP - + +/BP { + /level0 save def + 1 setlinecap + 1 setlinejoin + 72 RES div dup scale + LS { + 90 rotate + } { + 0 PL translate + } ifelse + 1 -1 scale +} bind def + +/EP { + level0 restore + showpage +} bind def + + +% centerx centery radius startangle endangle DA - + +/DA { + newpath arcn stroke +} bind def + +% x y SN - x' y' +% round a position to nearest (pixel + (.25,.25)) + +/SN { + transform + .25 sub exch .25 sub exch + round .25 add exch round .25 add exch + itransform +} bind def + +% endx endy startx starty DL - +% we round the endpoints of the line, so that parallel horizontal +% and vertical lines will appear even + +/DL { + SN + moveto + SN + lineto stroke +} bind def + +% centerx centery radius DC - + +/DC { + newpath 0 360 arc closepath +} bind def + + +/TM matrix def + +% width height centerx centery DE - + +/DE { + TM currentmatrix pop + translate scale newpath 0 0 .5 0 360 arc closepath + TM setmatrix +} bind def + +% these are for splines + +/RC /rcurveto load def +/RL /rlineto load def +/ST /stroke load def +/MT /moveto load def +/CL /closepath load def + +% fill the last path + +% amount FL - + +/FL { + currentgray exch setgray fill setgray +} bind def + +% fill with the ``current color'' + +/BL /fill load def + +/LW /setlinewidth load def +% new_font_name encoding_vector old_font_name RE - + +/RE { + findfont + dup maxlength dict begin + { + 1 index /FID ne { def } { pop pop } ifelse + } forall + /Encoding exch def + dup /FontName exch def + currentdict end definefont pop +} bind def + +/DEFS 0 def + +% hpos vpos EBEGIN - + +/EBEGIN { + moveto + DEFS begin +} bind def + +/EEND /end load def + +/CNT 0 def +/level1 0 def + +% llx lly newwid wid newht ht newllx newlly PBEGIN - + +/PBEGIN { + /level1 save def + translate + div 3 1 roll div exch scale + neg exch neg exch translate + % set the graphics state to default values + 0 setgray + 0 setlinecap + 1 setlinewidth + 0 setlinejoin + 10 setmiterlimit + [] 0 setdash + /setstrokeadjust where { + pop + false setstrokeadjust + } if + /setoverprint where { + pop + false setoverprint + } if + newpath + /CNT countdictstack def + userdict begin + /showpage {} def +} bind def + +/PEND { + clear + countdictstack CNT sub { end } repeat + level1 restore +} bind def + +end def + +/setpacking where { + pop + setpacking +} if +%%EndResource +%%IncludeResource: font Times-Bold +%%IncludeResource: font Times-Italic +%%IncludeResource: font Times-Roman +grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72 def/PL +792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron/scaron/zcaron +/Ydieresis/trademark/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/space/exclam +/quotedbl/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright +/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven +/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J +/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex +/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z +/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft +/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl/endash +/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut/dotaccent/breve +/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash/quotedblbase/OE/Lslash +/.notdef/exclamdown/cent/sterling/currency/yen/brokenbar/section/dieresis +/copyright/ordfeminine/guilsinglleft/logicalnot/minus/registered/macron/degree +/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered/cedilla +/onesuperior/ordmasculine/guilsinglright/onequarter/onehalf/threequarters +/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla +/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth +/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave +/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex +/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave +/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde +/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn +/ydieresis]def/Times-Roman@0 ENC0/Times-Roman RE/Times-Italic@0 ENC0 +/Times-Italic RE/Times-Bold@0 ENC0/Times-Bold RE +%%EndProlog +%%Page: 1 1 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 12/Times-Bold@0 SF -.5(What is a Domain?)239.58 82.031 R/F1 10 +/Times-Italic@0 SF(Mark R. Horton)255.92 100.031 Q(ABSTRACT)264.385 154.031 Q +/F2 10/Times-Roman@0 SF 1.689(In the past, electronic mail has used many dif) +122 190.031 R 1.688(ferent kinds of syntax, naming a)-.18 F .036 +(computer and a login name on that computer)122 202.031 R 5.036(.A)-.55 G .036 +(new system, called `)318.134 202.031 R(`domains')-.74 E .037(', is)-.74 F +1.905(becoming widely used, based on a heirarchical naming scheme.)122 214.031 +R 1.904(This paper is)6.904 F 1.256 +(intended as a quick introduction to domains.)122 226.031 R 1.257 +(For more details, you should read)6.257 F +(some of the documents referenced at the end.)122 238.031 Q F1 2.5(1. Intr)72 +286.031 R(oduction)-.37 E F2 .139(What exactly are domains?)72 304.031 R +(Basically)5.139 E 2.639(,t)-.65 G .138 +(hey are a way of looking at the world as a heirarchy \(tree structure\).) +230.625 304.031 R -1(Yo)72 316.031 S 1.079(u're already used to using two tree\ + world models that work pretty well: the telephone system and the)1 F(post of) +72 328.031 Q 2.5(\214ce. Domains)-.18 F +(form a similar heirarchy for the electronic mail community)2.5 E(.)-.65 E .232 +(The post of)72 346.031 R .232(\214ce divides the world up geographically)-.18 +F 2.732<2c8c>-.65 G .232 +(rst into countries, then each country divides itself up,)289.946 346.031 R +.598(those units subdivide, and so on.)72 358.031 R .598(One such country)5.598 +F 3.098(,t)-.65 G .598(he USA, divides into states, which divide into coun-) +290.332 358.031 R .211(ties \(except for certain states, like Louisiana, which\ + divide into things like parishes\), the counties subdivide)72 370.031 R 2.189 +(into cities, towns, and townships, which typically divide into streets, the s\ +treets divide into lots with)72 382.031 R .265(addresses, possibly containing \ +room and apartment numbers, the then individual people at that address.)72 +394.031 R(So)5.265 E(you have an address like)72 406.031 Q(Mark Horton)108 +424.031 Q(Room 2C-249)108 436.031 Q(6200 E. Broad St.)108 448.031 Q +(Columbus, Ohio, USA)108 460.031 Q 1.167(\(I'm ignoring the name `)72 478.031 R +(`A)-.74 E 1.168(T&T Bell Laboratories')-1.11 F 3.668('a)-.74 G 1.168 +(nd the zip code, which are redundant information.\))292.814 478.031 R +(Other countries may subdivide dif)72 490.031 Q(ferently)-.18 E 2.5(,f)-.65 G +(or example many small countries do not have states.)247.25 490.031 Q .554 +(The telephone system is similar)72 508.031 R 5.554(.Y)-.55 G .553 +(our full phone number might look like 1-614-860-1234 x234 This con-)214.6 +508.031 R 1.24(tains, from left to right, your country code \(Surprise!)72 +520.031 R 1.24(The USA has country code `)6.24 F(`1')-.74 E 1.24 +('!\), area code 614)-.74 F 1.012 +(\(Central Ohio\), 860 \(a pre\214x in the Reynoldsbur)72 532.031 R 3.512(gC) +-.18 G 1.012(.O.\), 1234 \(individual phone number\), and extension)287.398 +532.031 R 2.69(234. Some)72 544.031 R .191(phone numbers do not have extension\ +s, but the phone system in the USA has standardized on a)2.69 F 3.782(3d)72 +556.031 S 1.281(igit area code, 3 digit pre\214x, and 4 digit phone number) +85.782 556.031 R 6.281(.O)-.55 G 1.281(ther countries don')332.354 556.031 R +3.781(tu)-.18 G 1.281(se this standard, for)421.837 556.031 R 1.424(example, i\ +n the Netherlands a number might be +46 8 7821234 \(country code 46, city code\ + 8, number)72 568.031 R .294(7821234\), in Germany +49 231 7551234, in Sweden \ ++31 80 551234, in Britain +44 227 61234 or +44 506)72 580.031 R(41)72 592.031 Q +3.237(1234. Note)-.37 F .737(that the country and city codes and telephone num\ +bers are not all the same length, and the)3.237 F .812(punctuation is dif)72 +604.031 R .812(ferent from our North American notation.)-.18 F -.4(Wi)5.812 G +.812(thin a country).4 F 3.312(,t)-.65 G .812(he length of the telephone) +396.882 604.031 R .25(number might depend on the city code.)72 616.031 R .251 +(Even within the USA, the length of extensions is not standardized:)5.25 F .005 +(some places use the last 4 digits of the telephone number for the extension, \ +some use 2 or 3 or 4 digit exten-)72 628.031 R .649 +(sions you must ask an operator for)72 640.031 R 5.649(.E)-.55 G .649 +(ach country has established local conventions.)227.363 640.031 R .65 +(But the numbers are)5.65 F .197(unambigous when dialed from left-to-right, so\ + as long as there is a way to indicate when you are done dial-)72 652.031 R +(ing, there is no problem.)72 664.031 Q 3.092(Ak)72 682.031 S .592(ey dif) +87.312 682.031 R .593(ference in philosophy between the two systems is evident\ + from the way addresses and telephone)-.18 F 1.497(numbers are written.)72 +694.031 R -.4(Wi)6.497 G 1.497(th an address, the most speci\214c information \ +comes \214rst, the least speci\214c last.).4 F .573(\(The `)72 706.031 R .573 +(`root of the tree')-.74 F 3.073('i)-.74 G 3.073(sa)172.515 706.031 S 3.074(tt) +183.918 706.031 S .574(he right.\))192.552 706.031 R -.4(Wi)5.574 G .574 +(th telephones, the least speci\214c information \(root\) is at the left.).4 F +.299(The telephone system was designed for machinery that looks at the \214rst\ + few digits, does something with it,)72 718.031 R .773 +(and passes the remainder through to the next level.)72 730.031 R .773 +(Thus, in ef)5.773 F .774(fect, you are routing your call through the)-.18 F +.255(telephone network.)72 742.031 R .255(Of course, the exact sequence you di\ +al depends on where you are dialing from - some-)5.255 F .259(times you must d\ +ial 9 or 8 \214rst, to get an international dialtone you must dial 01)72 +754.031 R .259(1, if you are calling locally)-.37 F EP +%%Page: 2 2 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF .31(you can \(and sometimes must\) leave of)72 96 R +2.81(ft)-.18 G .31(he 1 and the area code.)239.24 96 R .31 +(\(This makes life very interesting for peo-)5.31 F .463 +(ple who must design a box to call their home of)72 108 R .463 +(\214ce from any phone in the world.\))-.18 F .464(This type of address is) +5.464 F(called a `)72 120 Q(`relative address')-.74 E +(', since the actual address used depends on the location of the sender)-.74 E +(.)-.55 E .547(The postal system, on the other hand, allows you to write the s\ +ame address no matter where the sender is.)72 138 R .851(The address above wil\ +l get to me from anywhere in the world, even private company mail systems.)72 +150 R -1(Ye)5.851 G(t,)1 E .195 +(some optional abbreviations are possible - I can leave of)72 162 R 2.695(ft) +-.18 G .195(he USA if I'm mailing within the USA; if I'm in)307.61 162 R .552 +(the same city as the address, I can usually just say `)72 174 R(`city')-.74 E +3.053('i)-.74 G 3.053(np)312.94 174 S .553(lace of the last line.)325.993 174 R +.553(This type of address is)5.553 F(called an `)72 186 Q(`absolute address') +-.74 E +(', since the unabbreviated form does not depend on the location of the sender) +-.74 E(.)-.55 E .674(The ARP)72 204 R .674 +(ANET has evolved with a system of absolute addresses: `)-.92 F(`user@host') +-.74 E 3.173('w)-.74 G .673(orks from any machine.)407.001 204 R .269 +(The UUCP network has evolved with a system of relative addresses: `)72 216 R +-2.13(`host!user ')-.74 F 2.769('w)-.74 G .269(orks from any machine)410.713 +216 R .566(with a direct link to `)72 228 R(`host')-.74 E .565(', and you have\ + to route your mail through the network to \214nd such a machine.)-.74 F .451 +(In fact, the `)72 240 R(`user@host')-.74 E 2.951('s)-.74 G .452(yntax has bec\ +ome so popular that many sites run mail software that accepts this)180.114 240 +R .502(syntax, looks up `)72 252 R(`host')-.74 E 3.002('i)-.74 G 3.002(nat) +175.578 252 S .501(able, and sends it to the appropriate network for `)193.802 +252 R(`host')-.74 E 3.001('. This)-.74 F .501(is a very nice)3.001 F .693 +(user interface, but it only works well in a small network.)72 264 R .693 +(Once the set of allowed hosts grows past about)5.693 F +(1000 hosts, you run into all sorts of administrative problems.)72 276 Q .357(\ +One problem is that it becomes nearly impossible to keep a table of host names\ + up to date.)72 294 R .356(New machines)5.356 F 1.123 +(are being added somewhere in the world every day)72 306 R 3.623(,a)-.65 G +1.123(nd nobody tells you about them.)294.727 306 R 1.124(When you try to)6.124 +F .951(send mail to a host that isn')72 318 R 3.451(ti)-.18 G 3.451(ny)196.537 +318 S .951 +(our table \(replying to mail you just got from a new host\), your mailing) +209.988 318 R 1.057(software might try to route it to a smarter machine, but w\ +ithout knowing which network to send it to, it)72 330 R(can')72 342 Q 2.78(tg) +-.18 G .28(uess which smarter machine to forward to.)99.59 342 R .28 +(Another problem is name space collision - there is noth-)5.28 F 1.293(ing to \ +prevent a host on one network from choosing the same name as a host on another\ + network.)72 354 R(For)6.293 E .944(example, DEC')72 366 R 3.444(sE)-.55 G .944 +(NET has a `)148.048 366 R(`vortex')-.74 E 3.444('m)-.74 G .944 +(achine, there is also one on UUCP)244.204 366 R 5.943(.B)-1.11 G .943 +(oth had their names long)401.348 366 R .13 +(before the two networks could talk to each other)72 378 R 2.63(,a)-.4 G .131 +(nd neither had to ask the other network for permission to)275.5 378 R 1.268 +(use the name.)72 390 R 1.268(The problem is compounded when you consider how \ +many computer centers name their)6.268 F(machines `)72 402 Q(`A)-.74 E -.74('') +-1.11 G 2.5(,`).74 G(`B')137.81 402 Q(', `)-.74 E(`C')-.74 E(', and so on.)-.74 +E 1.123(In recognition of this problem, ARP)72 420 R 3.623(Ah)-.92 G 1.123 +(as established a new way to name computers based on domains.)236.978 420 R +1.423(The ARP)72 432 R 1.423(ANET is pioneering the domain convention, and man\ +y other computer networks are falling in)-.92 F .575(line, since it is the \ +\214rst naming convention that looks like it really stands a chance of working\ +.)72 444 R .576(The MIL-)5.576 F .626(NET portion of ARP)72 456 R .626 +(ANET has a domain, CSNET has one, and it appears that Digital, A)-.92 F(T&T) +-1.11 E 3.125(,a)-.74 G .625(nd UUCP)464.205 456 R .661 +(will be using domains as well.)72 468 R .661 +(Domains look a lot like postal addresses, with a simple syntax that \214ts on) +5.661 F .876(one line, is easy to type, and is easy for computers to handle.)72 +480 R 2.276 -.7(To i)5.876 H .875(llustrate, an old routed UUCP address).7 F +7.093(might read `)72 492 R(`sdcsvax!ucbvax!allegra!cbosgd!mark')-.74 E 9.593 +('. The)-.74 F 7.094(domain version of this might read)9.593 F -.74(``)72 504 S +(mark@d.osg.cb.att.uucp').74 E 4.443('. The)-.74 F 1.942 +(machine is named d.osg.cb.att.uucp \(UUCP domain, A)4.443 F 1.942(T&T company) +-1.11 F(,)-.65 E 1.183 +(Columbus site, Operating System Group project, fourth machine.\))72 516 R +1.183(Of course, this example is somewhat)6.183 F .877(verbose and contrived; \ +it illustrates the heirarchy well, but most people would rather type something\ + like)72 528 R -.74(``)72 540 S(cbosgd.att.uucp').74 E 2.791('o)-.74 G 2.791 +(re)154.401 540 S .292(ven `)164.962 540 R(`cbosgd.uucp')-.74 E .292 +(', and actual domains are usually set up so that you don')-.74 F 2.792(th)-.18 +G .292(ave to)479.548 540 R(type very much.)72 552 Q -1(Yo)72 570 S 5.307(um)1 +G 2.806(ay wonder why the single @ sign is present, that is, why the above add\ +ress does not read)101.307 570 R -.74(``)72 582 S(mark.d.osg.cb.att.uucp').74 E +3.736('. In)-.74 F 1.236 +(fact, it was originally proposed in this form, and some of the examples in) +3.736 F .961(RFC819 do not contain an @ sign.)72 594 R .961 +(The @ sign is present because some ARP)5.961 F .961 +(ANET sites felt the strong)-.92 F .317(need for a divider between the domain,\ + which names one or more computers, and the left hand side, which)72 606 R 1.73 +(is subject to whatever interpretation the domain chooses.)72 618 R 1.729 +(For example, if the A)6.729 F 1.729(TT domain chooses to)-1.11 F .185 +(address people by full name rather than by their login, an address like `)72 +630 R(`Mark.Horton@A)-.74 E(TT)-1.11 E(.UUCP')-.74 E 2.685('m)-.74 G(akes) +486.23 630 Q .16(it clear that some machine in the A)72 642 R .159 +(TT domain should interpret the string `)-1.11 F(`Mark.Horton')-.74 E .159 +(', but if the address)-.74 F 2.657(were `)72 654 R(`Mark.Horton.A)-.74 E(TT) +-1.11 E(.UUCP')-.74 E 2.657 +(', routing software might try to \214nd a machine named `)-.74 F(`Horton')-.74 +E 5.158('o)-.74 G(r)500.67 654 Q -.74(``)72 666 S(Mark.Horton').74 E 2.613 +('. \(By)-.74 F .113(the way)2.613 F 2.613(,c)-.65 G .113 +(ase is ignored in domains, so that `)201.952 666 R(`A)-.74 E(TT)-1.11 E +(.UUCP')-.74 E 2.612('i)-.74 G 2.612(st)402.282 666 S .112(he same as `)411.564 +666 R(`att.uucp')-.74 E('.)-.74 E 1.58 -.7(To t)72 678 T .181 +(he left of the @ sign, however).7 F 2.681(,ad)-.4 G .181 +(omain can interpret the text any way it wants; case can be ignored or)226.987 +678 R(it can be signi\214cant.\))72 690 Q 1.202(It is important to note that)72 +708 R/F1 10/Times-Bold@0 SF 1.202(domains ar)3.702 F 3.702(en)-.18 G 1.202 +(ot r)248.666 708 R(outes)-.18 E F0 6.202(.S)C 1.202 +(ome people look at the number of !')301.44 708 R 3.702(si)-.55 G 3.702(nt) +463.816 708 S 1.202(he \214rst)475.298 708 R .679(example and the number of .') +72 720 R 3.179(si)-.55 G 3.179(nt)202.444 720 S .68 +(he second, and assume the latter is being routed from a machine called)213.403 +720 R -.74(``)72 732 S(uucp').74 E 2.548('t)-.74 G 2.548(oa)108.608 732 S .048 +(nother called `)120.596 732 R(`att')-.74 E 2.548('t)-.74 G 2.548(oa)202.29 732 +S .048(nother called `)214.278 732 R(`cb')-.74 E 2.548('a)-.74 G .048 +(nd so on.)297.072 732 R .048(While it is possible to set up mail routing)5.048 +F .547(software to do this, and indeed in the worst case, even without a reaso\ +nable set of tables, this method will)72 744 R EP +%%Page: 3 3 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF .077(always work, the intent is that `)72 96 R +(`d.osg.cb.att.uucp')-.74 E 2.577('i)-.74 G 2.577(st)279.919 96 S .077 +(he name of a machine, not a path to get there.)289.166 96 R .077(In par)5.077 +F(-)-.2 E(ticular)72 108 Q 2.534(,d)-.4 G .035(omains are absolute addresses, \ +while routes depend on the location of the sender)107.184 108 R 5.035(.S)-.55 G +.035(ome subroutine)442.025 108 R 1.067(is char)72 120 R 1.067(ged with \214gu\ +ring out, given a domain based machine name, what to do with it.)-.18 F 1.066 +(In a high quality)6.067 F .148(environment like the ARP)72 132 R 2.648(AI)-.92 +G .148(nternet, it can query a table or a name server)189.442 132 R 2.648(,c) +-.4 G .148(ome up with a 32 bit host num-)377.682 132 R(ber)72 144 Q 2.555(,a) +-.4 G .055(nd connect you directly to that machine.)93.865 144 R .055 +(In the UUCP environment, we don')5.055 F 2.555(th)-.18 G .055 +(ave the concept of two)413.25 144 R .785 +(processes on arbitrary machines talking directly)72 156 R 3.286(,s)-.65 G +3.286(ow)276.302 156 S 3.286(ef)291.808 156 S .786 +(orward mail one hop at a time until it gets to the)302.864 156 R .096 +(appropriate destination.)72 168 R .096(In this case, the subroutine decides i\ +f the name represents the local machine, and if)5.096 F +(not, decides which of its neighbors to forward the message to.)72 180 Q/F1 10 +/Times-Italic@0 SF 2.5(2. What)72 204 R(is a Domain?)2.5 E F0 .084 +(So, after all this background, we still haven')72 222 R 2.584(ts)-.18 G .084 +(aid what a domain is.)258.582 222 R .085(The answer \(I hope it')5.085 F 2.585 +(sb)-.55 G .085(een worth the)449.4 222 R .439 +(wait\) is that a domain is a subtree of the world tree.)72 234 R .439 +(For example, `)5.439 F(`uucp')-.74 E 2.939('i)-.74 G 2.939(sat)380.937 234 S +.439(op level domain \(that is, a)397.925 234 R .127(subtree of the `)72 246 R +(`root')-.74 E .127 +('.\) and represents all names and machines beneath it in the tree.)-.74 F -.74 +(``)5.128 G(att.uucp').74 E 2.628('i)-.74 G 2.628(sas)463.194 246 S(ubdo-) +480.67 246 Q .04(main of `)72 258 R(`uucp')-.74 E .04 +(', representing all names, machines, and subdomains beneath `)-.74 F(`att') +-.74 E 2.54('i)-.74 G 2.54(nt)407.74 258 S .04(he tree.)418.06 258 R .04 +(Similarly for)5.04 F -.74(``)72 270 S(cb.att.uucp').74 E .812(', `)-.74 F +(`osg.cb.att.uucp')-.74 E .812(', and even `)-.74 F(`d.osg.cb.att.uucp')-.74 E +3.312('\()-.74 G .812(although `)337.65 270 R(`d.osg.cb.att.uucp')-.74 E 3.312 +('i)-.74 G 3.313(sa`)461.664 270 S -1.95(`leaf ')479.21 270 R(')-.74 E +(domain, representing only the one machine\).)72 282 Q 2.664(Ad)72 300 S .164 +(omain has certain properties.)86.884 300 R .164 +(The key property is that it has a `)5.164 F(`registry')-.74 E 2.663('. That) +-.74 F .163(is, the domain has a list)2.663 F .429(of the names of all immedia\ +te subdomains, plus information about how to get to each one.)72 312 R .43 +(There is also a)5.43 F .601(contact person for the domain.)72 324 R .601 +(This person is responsible for the domain, keeping the registry up-to-date,) +5.601 F .007(serving as a point of contact for outside queries, and setting po\ +licy requirements for subdomains.)72 336 R .008(Each sub-)5.008 F .839(domain \ +can decide who it will allow to have subdomains, and establish requirements th\ +at all subdomains)72 348 R .062(must meet to be included in the registry)72 360 +R 5.062(.F)-.65 G .062(or example, the `)243.506 360 R(`cb')-.74 E 2.562('d) +-.74 G .063(omain might require all subdomains to be)336.964 360 R +(physically located in the A)72 372 Q(T&T building in Columbus.)-1.11 E(ARP)72 +390 Q 3.564(Ah)-.92 G 1.064 +(as established certain requirements for top level domains.)106.314 390 R 1.064 +(These requirements specify that there)6.064 F .371(must be a list of all subd\ +omains and contact persons for them, a responsible person who is an authority \ +for)72 402 R .685(the domain \(so that if some site does something bad, it can\ + be made to stop\), a minimum size \(to prevent)72 414 R 1.051(small domains f\ +rom being top level\), and a pair of nameservers \(for redundancy\) to provide\ + a directory-)72 426 R .367(assistance facility)72 438 R 5.367(.D)-.65 G .367(\ +omains can be more lax about the requirements they place on their subdomains, \ +mak-)157.624 438 R .139 +(ing it harder to be a top level domain than somewhere lower in the tree.)72 +450 R .139(Of course, if you are a subdomain,)5.139 F +(your parent is responsible for you.)72 462 Q 1.005 +(One requirement that is NOT present is for unique parents.)72 480 R 1.004 +(That is, a machine \(or an entire subdomain\))6.005 F .724 +(need not appear in only one place in the tree.)72 492 R .725(Thus, `)5.724 F +(`cb')-.74 E 3.225('m)-.74 G .725(ight appear both in the `)321.65 492 R(`att') +-.74 E 3.225('d)-.74 G .725(omain, and in)447.83 492 R 1.253(the `)72 504 R +(`ohio')-.74 E 3.753('d)-.74 G 3.753(omain. This)126.346 504 R 1.253(allows do\ +mains to be structured more \215exibly than just the simple geography)3.753 F +.297(used by the postal service and the telephone company; or)72 516 R .298 +(ganizations or topography can be used in parallel.)-.18 F(\(Actually)72 528 Q +2.761(,t)-.65 G .261(here are a few instances where this is done in the postal\ + service [overseas military mail] and the)117.161 528 R .528(telephone system \ +[pre\214xes can appear in more than one area code, e.g. near W)72 540 R .529 +(ashington D.C., and Silicon)-.8 F -1.11(Va)72 552 S 4.068(lley].\) It)1.11 F +1.567(also allows domains to split or join up, while remaining upward compatib\ +le with their old)4.068 F(addresses.)72 564 Q 1.958 +(Do all domains represent speci\214c machines?)72 582 R 1.958(Not necessarily) +6.958 F 6.958(.I)-.65 G(t')342.794 582 Q 4.458(sp)-.55 G 1.958 +(retty obvious that a full path like)361.702 582 R -.74(``)72 594 S +(d.cbosg.att.uucp').74 E 3.546('r)-.74 G 1.046(efers to exactly one machine.) +155.986 594 R 1.046(The OSG domain might decide that `)6.046 F +(`cbosg.att.uucp')-.74 E(')-.74 E .385 +(represents a particular gateway machine.)72 606 R .385 +(Or it might decide that it represents a set of machines, several of)5.385 F +1.763(which might be gateways.)72 618 R 1.763(The `)6.763 F(`att.uucp')-.74 E +4.263('d)-.74 G 1.762(omain might decide that several machines, `)261.338 618 R +(`ihnp4.uucp')-.74 E(',)-.74 E -.74(``)72 630 S(whgwj.uucp').74 E .482 +(', and `)-.74 F(`hogtw)-.74 E(.uucp')-.65 E 2.982('a)-.74 G .482 +(re all entry points into `)221.456 630 R(`att.uucp')-.74 E 2.983('. Or)-.74 F +.483(it might decide that it just rep-)2.983 F .045 +(resents a spot in the name space, not a machine.)72 642 R .044 +(For example, there is no machine corresponding to `)5.044 F(`arpa')-.74 E(') +-.74 E .336(or `)72 654 R(`uucp')-.74 E .336(', or to the root.)-.74 F .337 +(Each domain decides for itself.)5.336 F .337 +(The naming space and the algorithm for getting)5.337 F .977(mail from one mac\ +hine to another are not closely linked - routing is up to the mail system to \ +\214gure out,)72 666 R(with or without help from the structure of the names.)72 +678 Q .286(The domain syntax does allow explicit routes, in case you want to e\ +xercise a particular route or some gate-)72 696 R 9.168(way is balking.)72 708 +R 9.167(The syntax is `)165.334 708 R(`@dom)-.74 E(1)281.576 713 Q(,@dom) +286.576 708 Q(2)316.066 713 Q(,...,@dom)321.066 708 Q(n)360.556 713 Q +(:user@domain')365.556 708 Q 9.167(', for example,)-.74 F(@ihnp4.UUCP)72 720 Q +(,@ucbvax.UUCP)-1.11 E(,:joe@NIC.ARP)-1.11 E .946 +(A, forcing it to be routed through dom)-.92 F(1)425.602 725 Q 3.446(,d)430.602 +720 S(om)441.548 720 Q(2)454.328 725 Q 3.446(,.)459.328 720 S .946(.., dom) +467.774 720 R(n)496.5 725 Q(,)501.5 720 Q .406 +(and from domn sent to the \214nal address.)72 732 R .406 +(This behaves exactly like the UUCP ! routing syntax, although it)5.406 F +(is somewhat more verbose.)72 744 Q EP +%%Page: 4 4 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF 2.218(By the way)72 96 R 4.718(,y)-.65 G 2.219(ou've n\ +o doubt noticed that some forms of electronic addresses read from left-to-righ\ +t)133.554 96 R .545 +(\(cbosgd!mark\), others read from right-to-left \(mark@Berkeley\).)72 108 R +.545(Which is better?)5.545 F .544(The real answer here is)5.544 F .891 +(that it')72 120 R 3.391(sar)-.55 G .891(eligious issue, and it doesn')117.173 +120 R 3.391(tm)-.18 G .891(ake much dif)245.338 120 R 3.391 +(ference. left-to-right)-.18 F .891(is probably a bit easier for a)3.391 F +1.413(computer to deal with because it can understand something on the left an\ +d ignore the remainder of the)72 132 R 2.507(address. \(While)72 144 R(it') +2.507 E 2.507(sa)-.55 G .008(lmost as easy for the program to read from right-\ +to-left, the ease of going from left-to-)158.951 144 R(right was probably in t\ +he backs of the minds of the designers who invented host:user and host!user)72 +156 Q(.\))-.55 E .779(On the other hand, I claim that user@host is easier for \ +humans to read, since people tend to start reading)72 174 R .811(from the left\ + and quit as soon as they recognize the login name of the person.)72 186 R .812 +(Also, a mail program that)5.812 F 1.53 +(prints a table of headers may have to truncate the sender)72 198 R 2.629 -.55 +('s a).37 H 1.529(ddress to make it \214t in a \214xed number of).55 F +(columns, and it')72 210 Q 2.5(sp)-.55 G(robably more useful to read `)147.56 +210 Q(`mark@d.osg.a')-.74 E 2.5('t)-.74 G(han `)335.8 210 Q(`ucbvax!sdcsv')-.74 +E('.)-.74 E .841(These are pretty minor issues, after all, humans can adapt to\ + skip to the end of an address, and programs)72 228 R .393 +(can truncate on the left.)72 240 R .392(But the real problem is that if the w\ +orld contains BOTH left-to-right and right-to-)5.392 F .82 +(left syntax, you have ambiguous addresses like x!y@z to consider)72 252 R 5.82 +(.T)-.55 G .82(his single problem turns out to be a)357.43 252 R(killer)72 264 +Q 2.5(,a)-.4 G +(nd is the best single reason to try to stamp out one in favor of the other) +102.15 264 Q(.)-.55 E/F1 10/Times-Italic@0 SF 2.5(3. So)72 288 R(why ar)2.5 E +2.5(ew)-.37 G 2.5(ed)137.74 288 S(oing this, anyway?)149.68 288 Q F0 .938 +(The current world is full of lots of interesting kinds of mail syntax.)72 306 +R .938(The old ARP)5.938 F 3.437(A`)-.92 G(`user@host')423.656 306 Q 3.437('i) +-.74 G 3.437(ss)481.663 306 S(till)492.88 306 Q 1.156(used on the ARP)72 318 R +1.156(ANET by many systems.)-.92 F 1.156 +(Explicit routing can sometimes by done with an address like)6.156 F -.74(``)72 +330 S(user@host2@host1').74 E 3.856('w)-.74 G 1.356 +(hich sends the mail to host1 and lets host1 interpret `)173.336 330 R +(`user@host2')-.74 E 3.855('. Addresses)-.74 F .704 +(with more than one @ were made illegal a few years ago, but many ARP)72 342 R +.704(ANET hosts depended on them,)-.92 F 1.899 +(and the syntax is still being used.)72 354 R 1.899(UUCP uses `)6.899 F -2.13 +(`h1!h2!h3!user ')-.74 F 1.898(', requiring the user to route the mail.)-.74 F +(Berknets use `)72 366 Q -2.13(`host:user ')-.74 F 2.5('a)-.74 G +(nd do not allow explicit routing.)181.14 366 Q 4.804 -.7(To g)72 384 T 3.404 +(et mail from one host to another).7 F 5.904(,i)-.4 G 5.904(th)252.842 384 S +3.404(ad to be routed through gateways.)266.526 384 R 3.405(Thus, the address) +8.404 F -.74(``)72 396 S(csvax:mark@Berkeley').74 E 2.744('f)-.74 G .244 +(rom the ARP)181.324 396 R .244(ANET would send the mail to Berkeley)-.92 F +2.743(,w)-.65 G .243(hich would forward it to)405.818 396 R 2.948 +(the Berknet address csvax:mark.)72 408 R 4.348 -.7(To s)7.948 H 2.949 +(end mail to the ARP).7 F 2.949(ANET from UUCP)-.92 F 5.449(,a)-1.11 G 5.449 +(na)426.003 408 S 2.949(ddress such as)440.892 408 R -.74(``)72 420 S +(ihnp4!ucbvax!sam@foo-unix').74 E 7.46('w)-.74 G 4.96 +(ould route it through ihnp4 to ucbvax, which would interpret)216.6 420 R -.74 +(``)72 432 S(sam@foo-unix').74 E 4.422('a)-.74 G 4.422(sa)152.462 432 S 4.422 +(nA)165.214 432 S(RP)181.856 432 Q 1.922(ANET address and pass it along.)-.92 F +1.923(When the Berknet-UUCP gateway and)6.922 F(Berknet-ARP)72 444 Q 16.197 +(ANET gateway were on dif)-.92 F 16.196(ferent machines, addresses such as)-.18 +F -.74(``)72 456 S(csvax:ihnp4!ihnss!warren@Berkeley').74 E 2.5('w)-.74 G +(ere common.)242.18 456 Q .986(As you can see, the combination of left-to-righ\ +t UUCP syntax and right-to-left ARP)72 474 R .986(ANET syntax makes)-.92 F +1.681(things pretty complex.)72 486 R 1.681(Berknets are gone now)6.681 F 4.181 +(,b)-.65 G 1.68(ut there are lots of gateways between UUCP and the)279.757 486 +R(ARP)72 498 Q 1.301(ANET and ARP)-.92 F(ANET)-.92 E 1.301 +(-like mail networks.)-.92 F 1.301 +(Sending mail to an address for which you only know a)6.301 F 5.618 +(path from the ARP)72 510 R 5.618 +(ANET onto UUCP is even harder \255 suppose the address you have is)-.92 F +(ihnp4!ihnss!warren@Berkeley)72 522 Q 3.51(,a)-.65 G 1.011 +(nd you are on host rlgvax which uses seismo as an ARP)204.87 522 R 1.011 +(ANET gateway)-.92 F(.)-.65 E -1(Yo)72 534 S 3.535(um)1 G 1.035 +(ust send to seismo!ihnp4!ihnss!warren@Berkeley)99.535 534 R 3.535(,w)-.65 G +1.035(hich is not only pretty hard to read, but when)314.705 534 R 1.43 +(the recipient tries to reply)72 546 R 3.93(,i)-.65 G 3.93(tw)189.04 546 S 1.43 +(ill have no idea where the break in the address between the two UUCP)202.97 +546 R .608(pieces occurs.)72 558 R .608(An ARP)5.608 F .608 +(ANET site routing across the UUCP world to somebody')-.92 F 3.108(sE)-.55 G +.607(thernet using domains)414.456 558 R 2.224 +(locally will have to send an address something like `)72 570 R(`xxx@Berkeley) +-.74 E(.ARP)-.65 E -1.02 -1.11(A' ')-.92 H 2.225(to get it to UUCP)5.835 F +4.725(,t)-1.11 G(hen)489.56 570 Q -.74(``)72 582 S(ihnp4!decvax!island!yyy').74 +E 4.039('t)-.74 G 4.039(og)190.639 582 S 1.539 +(et it to the other ethernet, then `)204.678 582 R(`sam@csvax.ISLAND')-.74 E +4.038('t)-.74 G 4.038(og)444.116 582 S 1.538(et it across)458.154 582 R 31.285 +(their ethernet.)72 594 R 31.286(The single address would therefore be)195.11 +594 R(ihnp4!decvax!island!sam@csvax.ISLAND@Berkeley)72 606 Q(.ARP)-.65 E 2.801 +(A, which is too much to ask any person or)-.92 F 5.863(mailer to understand.) +72 618 R(It')179.299 618 Q 8.363(se)-.55 G 5.863 +(ven worse: gateways have to deal with ambiguous names like)204.882 618 R +(ihnp4!mark@Berkeley)72 630 Q 4.833(,w)-.65 G 2.333 +(hich can be parsed either `)177.873 630 R(`\(ihnp4!mark\)@Berkeley')-.74 E +4.833('i)-.74 G 4.833(na)409.531 630 S 2.333(ccordance with the)423.804 630 R +(ARP)72 642 Q(ANET conventions, or `)-.92 E(`ihnp4!\(mark@Berkeley\)')-.74 E +2.5('a)-.74 G 2.5(st)301.26 642 S(he old UUCP would.)310.43 642 Q .415(Another\ + very important reason for using domains is that your mailing address becomes \ +absolute instead of)72 660 R 3.03(relative. It)72 672 R .53(becomes possible t\ +o put your electronic address on your business card or in your signature \214l\ +e)3.03 F .185(without worrying about writing six dif)72 684 R .185 +(ferent forms and \214fteen hosts that know how to get to yours.)-.18 F .185 +(It dras-)5.185 F .468(tically simpli\214es the job of the reply command in yo\ +ur mail program, and automatic reply code in the net-)72 696 R(news software.) +72 708 Q EP +%%Page: 5 5 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Italic@0 SF 2.5(4. Further)72 96 R(Information)2.5 E/F1 10 +/Times-Roman@0 SF .794(For further information, some of the basic ARP)72 114 R +.794(ANET reference documents are in order)-.92 F 5.794(.T)-.55 G .794 +(hese can often)445.212 114 R .65 +(be found posted to Usenet, or available nearby)72 126 R 5.65(.T)-.65 G .65 +(hey are all available on the ARP)276.23 126 R .65(ANET on host NIC via)-.92 F +.371(FTP with login ANONYMOUS, if you have an ARP)72 138 R .371(ANET login.) +-.92 F .371(They can also be ordered from the Net-)5.371 F +(work Information Center)72 150 Q 2.5(,S)-.4 G +(RI International, Menlo Park, California, 94025.)182.14 150 Q 2.5(RFC819 The) +72 168 R(Domain Naming Convention for Internet User Applications)2.5 E 2.5 +(RFC821 Simple)72 180 R(Mail T)2.5 E(ransfer Protocol)-.35 E 2.5 +(RFC822 Standard)72 192 R(for the Format of ARP)2.5 E(ANET T)-.92 E +(ext Messages)-.7 E 2.5(RFC881 The)72 204 R(Domain Names Plan and Schedule)2.5 +E(#)72 222 Q 2.5(#@)72 234 S 29.07(\(#\)domain.mm 2.1)88.71 234 R +(smail 12/14/86)2.5 E(#)72 246 Q EP +%%Trailer +end +%%EOF diff --git a/usr.sbin/named/doc/misc/purdue-paper.ps b/usr.sbin/named/doc/misc/purdue-paper.ps new file mode 100644 index 000000000000..d8e7db37bc90 --- /dev/null +++ b/usr.sbin/named/doc/misc/purdue-paper.ps @@ -0,0 +1,3424 @@ +%!PS-Adobe-2.0 +%%Creator: dvips 5.485 Copyright 1986-92 Radical Eye Software +%%Title: main.dvi +%%Pages: 21 1 +%%BoundingBox: 0 0 612 792 +%%EndComments +%DVIPSCommandLine: /usr/local/tex/dvips main.dvi +%%BeginProcSet: tex.pro +/TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N /X{S N} +B /TR{translate}N /isls false N /vsize 11 72 mul N /@rigin{isls{[0 -1 1 0 0 0] +concat}if 72 Resolution div 72 VResolution div neg scale isls{Resolution hsize +-72 div mul 0 TR}if Resolution VResolution vsize -72 div 1 add mul TR matrix +currentmatrix dup dup 4 get round 4 exch put dup dup 5 get round 5 exch put +setmatrix}N /@landscape{/isls true N}B /@manualfeed{statusdict /manualfeed +true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0]N /nn 0 N +/IE 0 N /ctr 0 N /df-tail{/nn 8 dict N nn begin /FontType 3 N /FontMatrix +fntrx N /FontBBox FBB N string /base X array /BitMaps X /BuildChar{ +CharBuilder}N /Encoding IE N end dup{/foo setfont}2 array copy cvx N load 0 nn +put /ctr 0 N[}B /df{/sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 +0 sf neg 0 0]N df-tail}B /E{pop nn dup definefont setfont}B /ch-width{ch-data +dup length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{128 +ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub get 127 +sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data dup type +/stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N /rc 0 N /gp 0 N +/cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup /base get 2 index get +S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff ch-yoff ch-height +sub ch-xoff ch-width add ch-yoff setcachedevice ch-width ch-height true[1 0 0 +-1 -.1 ch-xoff sub ch-yoff .1 add]{ch-image}imagemask restore}B /D{/cc X dup +type /stringtype ne{]}if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 +ne{dup dup length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N} +B /I{cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin +0 0 moveto pop}N /eop{SI restore showpage userdict /eop-hook known{eop-hook} +if}N /@start{userdict /start-hook known{start-hook}if /VResolution X +/Resolution X 1000 div /DVImag X /IE 256 array N 0 1 255{IE S 1 string dup 0 3 +index put cvn put}for 65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N +/RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X +/rulex X V}B /V statusdict begin /product where{pop product dup length 7 ge{0 +7 getinterval(Display)eq}{pop false}ifelse}{false}ifelse end{{gsave TR -.1 -.1 +TR 1 1 scale rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1 +-.1 TR rulex ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /a{ +moveto}B /delta 0 N /tail{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{ +S p tail}B /c{-4 M}B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B +/j{3 M}B /k{4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w +}B /q{p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p +a}B /bos{/SS save N}B /eos{SS restore}B end +%%EndProcSet +%%BeginProcSet: special.pro +TeXDict begin /SDict 200 dict N SDict begin /@SpecialDefaults{/hs 612 N /vs +792 N /ho 0 N /vo 0 N /hsc 1 N /vsc 1 N /ang 0 N /CLIP 0 N /rwiSeen false N +/rhiSeen false N /letter{}N /note{}N /a4{}N /legal{}N}B /@scaleunit 100 N +/@hscale{@scaleunit div /hsc X}B /@vscale{@scaleunit div /vsc X}B /@hsize{/hs +X /CLIP 1 N}B /@vsize{/vs X /CLIP 1 N}B /@clip{/CLIP 2 N}B /@hoffset{/ho X}B +/@voffset{/vo X}B /@angle{/ang X}B /@rwi{10 div /rwi X /rwiSeen true N}B /@rhi +{10 div /rhi X /rhiSeen true N}B /@llx{/llx X}B /@lly{/lly X}B /@urx{/urx X}B +/@ury{/ury X}B /magscale true def end /@MacSetUp{userdict /md known{userdict +/md get type /dicttype eq{userdict begin md length 10 add md maxlength ge{/md +md dup length 20 add dict copy def}if end md begin /letter{}N /note{}N /legal{ +}N /od{txpose 1 0 mtx defaultmatrix dtransform S atan/pa X newpath clippath +mark{transform{itransform moveto}}{transform{itransform lineto}}{6 -2 roll +transform 6 -2 roll transform 6 -2 roll transform{itransform 6 2 roll +itransform 6 2 roll itransform 6 2 roll curveto}}{{closepath}}pathforall +newpath counttomark array astore /gc xdf pop ct 39 0 put 10 fz 0 fs 2 +F/|______Courier fnt invertflag{PaintBlack}if}N /txpose{pxs pys scale ppr +aload pop por{noflips{pop S neg S TR pop 1 -1 scale}if xflip yflip and{pop S +neg S TR 180 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 +get neg sub neg TR}if xflip yflip not and{pop S neg S TR pop 180 rotate ppr 3 +get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get +neg TR}if}{noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop +pop 90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get +neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr 1 get +neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr 2 get ppr 0 +get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 -1 roll add 2 div 3 +1 roll add 2 div 2 copy TR .96 dup scale neg S neg S TR}if}N /cp{pop pop +showpage pm restore}N end}if}if}N /normalscale{Resolution 72 div VResolution +72 div neg scale magscale{DVImag dup scale}if 0 setgray}N /psfts{S 65781.76 +div N}N /startTexFig{/psf$SavedState save N userdict maxlength dict begin +/magscale false def normalscale currentpoint TR /psf$ury psfts /psf$urx psfts +/psf$lly psfts /psf$llx psfts /psf$y psfts /psf$x psfts currentpoint /psf$cy X +/psf$cx X /psf$sx psf$x psf$urx psf$llx sub div N /psf$sy psf$y psf$ury +psf$lly sub div N psf$sx psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy +psf$sy div psf$ury sub TR /showpage{}N /erasepage{}N /copypage{}N /p 3 def +@MacSetUp}N /doclip{psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll +newpath 4 copy 4 2 roll moveto 6 -1 roll S lineto S lineto S lineto closepath +clip newpath moveto}N /endTexFig{end psf$SavedState restore}N /@beginspecial{ +SDict begin /SpecialSave save N gsave normalscale currentpoint TR +@SpecialDefaults count /ocount X /dcount countdictstack N}N /@setspecial{CLIP +1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto closepath +clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx sub div rhiSeen{ +rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR}{rhiSeen{rhi ury lly +sub div dup scale llx neg lly neg TR}if}ifelse CLIP 2 eq{newpath llx lly +moveto urx lly lineto urx ury lineto llx ury lineto closepath clip}if +/showpage{}N /erasepage{}N /copypage{}N newpath}N /@endspecial{count ocount +sub{pop}repeat countdictstack dcount sub{end}repeat grestore SpecialSave +restore end}N /@defspecial{SDict begin}N /@fedspecial{end}B /li{lineto}B /rl{ +rlineto}B /rc{rcurveto}B /np{/SaveX currentpoint /SaveY X N 1 setlinecap +newpath}N /st{stroke SaveX SaveY moveto}N /fil{fill SaveX SaveY moveto}N +/ellipse{/endangle X /startangle X /yrad X /xrad X /savematrix matrix +currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc savematrix +setmatrix}N end +%%EndProcSet +TeXDict begin 40258431 52099146 1000 300 300 @start /Fa 1 49 +df<060F0F0E1E1E1C3C383830707060E0C04008117F910A>48 D E /Fb +6 119 df<780018001800300030003000370078C0604060606060C0C0C0C0C0C0418063003C00 +0B117E900E>98 D<040C0000000000705898983030606464683006127E910B>105 +D<1C70278C2604260606060C0C0C0C0C0C0C181E3019C01800180030003000FC000F10808A10> +112 D<73C09C209860980018003000300030003000600060000B0B7E8A0E>114 +D<381048308C309830183030603060306430E431E80E380E0B7E8A12>117 +D<386048608C2098201820304030403040308011000E000B0B7E8A10>I +E /Fc 12 119 df<07FE03F800E001C000E0010000E0020000E0080001C0100001C0200001C080 +0001C1000003830000038F00000393800003A380000781C0000701C0000700E0000700E0000E00 +70000E0070000E0038000E0038001C003C00FF80FF001D177F961E>75 D<071018F03070607060 +60C060C060C06080C080C480C4C1C446C838700E0E7E8D13>97 D<7C0018001800180018003000 +300030003000678068C070406060C060C060C060C06080C080C08180C10046003C000B177E960F +>I<07C00C20107020706000C000C000C00080008000C010C02060C03F000C0E7E8D0F>I<07C01C +20301060106020FFC0C000C000C000C000C010402060C01F000C0E7E8D10>101 +D<0300038003000000000000000000000000001C002400460046008C000C001800180018003100 +3100320032001C0009177F960C>105 D<3E0C0C0C0C181818183030303060606060C0C8C8C8D0 +7007177E960B>108 D<1C3C22462382230346030603060306030C060C060C0C0C081A3019E018 +001800300030003000FC001014808D12>112 D<38F04518463846308C000C000C000C00180018 +0018001800300030000D0E7F8D10>114 D<030003000600060006000600FFC00C000C000C0018 +00180018001800300030803080310031001E000A147F930D>116 D<1C02002606004606004606 +00860C000C0C000C0C000C0C001818001818801818801838800C5900078E00110E7F8D14>I<1C +04260E4606460686040C040C040C0418081808181018100C6007800F0E7F8D11>I +E /Fd 3 116 df<007FFC01FF0007800078000780006000078000C0000F000180000F00020000 +0F000400000F000800001E001000001E004000001E008000001E010000003C020000003C040000 +003C1E0000003C3E000000785F000000788F0000007A0F0000007C07800000F807800000F007C0 +0000F003C00000F003C00001E001E00001E001E00001E001E00001E000F00003C000F00003C000 +F80003C000780003C000780007C000FC00FFFC07FF8028227EA129>75 D<3C07E01F0046183061 +8047201880C087401D00E087801E00E087801C00E087001C00E00E003801C00E003801C00E0038 +01C00E003801C01C007003801C007003801C007007001C007007043800E007083800E00E083800 +E00E083800E006107001C006203000C003C026157E942B>109 D<007E00008100030080020180 +06038006030006000007000007F80003FE0001FF00003F00000780000380700380F00300F00300 +E002004004003018000FE00011157E9417>115 D E /Fe 47 124 df<387CFEFFFF7F3B030307 +06060C1C18702008117C8610>44 D<387CFEFEFE7C3807077C8610>46 D<00180000780001F800 +FFF800FFF80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F800 +01F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F800 +01F8007FFFE07FFFE013207C9F1C>49 D<03FC000FFF003C1FC07007E07C07F0FE03F0FE03F8FE +03F8FE01F87C01F83803F80003F80003F00003F00007E00007C0000F80001F00003E0000380000 +700000E01801C0180380180700180E00380FFFF01FFFF03FFFF07FFFF0FFFFF0FFFFF015207D9F +1C>I<00FE0007FFC00F07E01E03F03F03F03F81F83F81F83F81F81F03F81F03F00003F00003E0 +0007C0001F8001FE0001FF000007C00001F00001F80000FC0000FC3C00FE7E00FEFF00FEFF00FE +FF00FEFF00FC7E01FC7801F81E07F00FFFC001FE0017207E9F1C>I<0000E00001E00003E00003 +E00007E0000FE0001FE0001FE00037E00077E000E7E001C7E00187E00307E00707E00E07E00C07 +E01807E03807E07007E0E007E0FFFFFEFFFFFE0007E00007E00007E00007E00007E00007E00007 +E000FFFE00FFFE17207E9F1C>I<1000201E01E01FFFC01FFF801FFF001FFE001FF8001BC00018 +000018000018000018000019FC001FFF001E0FC01807E01803E00003F00003F00003F80003F838 +03F87C03F8FE03F8FE03F8FC03F0FC03F07007E03007C01C1F800FFF0003F80015207D9F1C>I< +001F8000FFE003F07007C0F00F01F81F01F83E01F83E01F87E00F07C00007C0000FC0800FC7FC0 +FCFFE0FD80F0FF00F8FE007CFE007CFC007EFC007EFC007EFC007E7C007E7C007E7C007E3C007C +3E007C1E00F80F00F00783E003FFC000FF0017207E9F1C>I<6000007800007FFFFE7FFFFE7FFF +FC7FFFF87FFFF87FFFF0E00060E000C0C00180C00300C00300000600000C00001C000018000038 +0000780000780000F00000F00000F00001F00001F00001F00003F00003F00003F00003F00003F0 +0003F00003F00001E00017227DA11C>I<000070000000007000000000F800000000F800000000 +F800000001FC00000001FC00000003FE00000003FE00000003FE00000006FF000000067F000000 +0E7F8000000C3F8000000C3F800000183FC00000181FC00000381FE00000300FE00000300FE000 +00600FF000006007F00000E007F80000FFFFF80000FFFFF800018001FC00018001FC00038001FE +00030000FE00030000FE000600007F000600007F00FFE00FFFF8FFE00FFFF825227EA12A>65 +DI<0003FE0080001FFF818000FF01E38001F8 +003F8003E0001F8007C0000F800F800007801F800007803F000003803F000003807F000001807E +000001807E00000180FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000 +FE00000000FE000000007E000000007E000001807F000001803F000001803F000003801F800003 +000F8000030007C000060003F0000C0001F800380000FF00F000001FFFC0000003FE000021227D +A128>II70 D<0003FE0040001FFFC0C0007F00F1C001F8003FC003F0000FC007 +C00007C00FC00003C01F800003C03F000001C03F000001C07F000000C07E000000C07E000000C0 +FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE000FFF +FC7E000FFFFC7F00001FC07F00001FC03F00001FC03F00001FC01F80001FC00FC0001FC007E000 +1FC003F0001FC001FC003FC0007F80E7C0001FFFC3C00003FF00C026227DA12C>III75 D78 D<0007FC0000003FFF800000FC07E00003F001F80007E000FC000F +C0007E001F80003F001F80003F003F00001F803F00001F807F00001FC07E00000FC07E00000FC0 +FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000F +E0FE00000FE07E00000FC07F00001FC07F00001FC03F00001F803F80003F801F80003F000FC000 +7E0007E000FC0003F001F80000FC07E000003FFF80000007FC000023227DA12A>II<01FC0407FF8C1F03FC3C007C7C003C78001C +78001CF8000CF8000CFC000CFC0000FF0000FFE0007FFF007FFFC03FFFF01FFFF80FFFFC03FFFE +003FFE0003FF00007F00003F00003FC0001FC0001FC0001FE0001EE0001EF0003CFC003CFF00F8 +C7FFE080FF8018227DA11F>83 D<7FFFFFFF807FFFFFFF807E03F80F807803F807807003F80380 +6003F80180E003F801C0E003F801C0C003F800C0C003F800C0C003F800C0C003F800C00003F800 +000003F800000003F800000003F800000003F800000003F800000003F800000003F800000003F8 +00000003F800000003F800000003F800000003F800000003F800000003F800000003F800000003 +F800000003F800000003F800000003F8000003FFFFF80003FFFFF80022227EA127>II<07FC001FFF803F07C03F03E03F01E03F01F01E01F000 +01F00001F0003FF003FDF01FC1F03F01F07E01F0FC01F0FC01F0FC01F0FC01F07E02F07E0CF81F +F87F07E03F18167E951B>97 D<00FF8007FFE00F83F01F03F03E03F07E03F07C01E07C0000FC00 +00FC0000FC0000FC0000FC0000FC00007C00007E00007E00003E00301F00600FC0E007FF8000FE +0014167E9519>99 D<0001FE000001FE0000003E0000003E0000003E0000003E0000003E000000 +3E0000003E0000003E0000003E0000003E0000003E0001FC3E0007FFBE000F81FE001F007E003E +003E007E003E007C003E00FC003E00FC003E00FC003E00FC003E00FC003E00FC003E00FC003E00 +FC003E007C003E007C003E003E007E001E00FE000F83BE0007FF3FC001FC3FC01A237EA21F>I< +00FE0007FF800F87C01E01E03E01F07C00F07C00F8FC00F8FC00F8FFFFF8FFFFF8FC0000FC0000 +FC00007C00007C00007E00003E00181F00300FC07003FFC000FF0015167E951A>I<003F8000FF +C001E3E003C7E007C7E00F87E00F83C00F80000F80000F80000F80000F80000F8000FFFC00FFFC +000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80 +000F80000F80000F80000F80000F80007FF8007FF80013237FA211>I<03FC1E0FFF7F1F0F8F3E +07CF3C03C07C03E07C03E07C03E07C03E07C03E03C03C03E07C01F0F801FFF0013FC0030000030 +00003800003FFF801FFFF00FFFF81FFFFC3800FC70003EF0001EF0001EF0001EF0001E78003C7C +007C3F01F80FFFE001FF0018217E951C>II<1C003F007F007F007F003F001C000000000000000000000000000000FF00 +FF001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00FF +E0FFE00B247EA310>I +107 DIII<00FE0007FFC00F83E01E00F03E00F87C007C7C007C7C007CFC007EFC007EFC007EFC007EFC +007EFC007EFC007E7C007C7C007C3E00F81F01F00F83E007FFC000FE0017167E951C>II114 D<0FF3003FFF00781F00600700E00300E00300F00300FC00007FE000 +7FF8003FFE000FFF0001FF00000F80C00780C00380E00380E00380F00700FC0E00EFFC00C7F000 +11167E9516>I<0180000180000180000180000380000380000780000780000F80003F8000FFFF +00FFFF000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F81 +800F81800F81800F81800F81800F830007C30003FE0000F80011207F9F16>IIIIII123 +D E /Ff 30 121 df<7FFFC0FFFFE0FFFFE07FFFC013047D901A>45 D<3078FCFC783006067685 +1A>I<00C001C001C003C007C00FC07FC0FDC071C001C001C001C001C001C001C001C001C001C0 +01C001C001C001C001C001C001C001C001C07FFF7FFF7FFF101E7B9D1A>49 +D<03F0000FFC001FFF003C0F807803C07001C0E000E0F000E0F000E06000E00000E00000E00001 +C00001C0000380000780000F00000E00003C00007C0000F00001E00003C0000780000F00001E00 +E03C00E07FFFE0FFFFE07FFFE0131E7D9D1A>I<01FC0007FF001FFF801E03C03C01C03C00E03C +00E00000E00000E00001C00003C000078001FF0001FF0001FFC00003E00000F000007000007800 +0038000038600038F00038F00078E000707000F07E03E03FFFC00FFF0001FC00151E7E9D1A>I< +000F80001F80003B80003B8000738000F38000E38001C38003C3800383800783800F03800E0380 +1E03803C0380380380780380F00380FFFFFEFFFFFEFFFFFE000380000380000380000380000380 +000380003FF8007FFC003FF8171E7F9D1A>I<003E0001FF8003FFC007C1E00F00E01E0F703C3F +F0387FF07070F870E07870E078E1C038E1C038E1C038E1C038E1C038E1C038E1C038E1C03870E0 +7070E0707070E0387FE03C3FC01E0F000F003807C0F803FFF001FFE0003F00151E7E9D1A>64 +D<003800007C00007C00006C0000EE0000EE0000EE0000C60000C60001C70001C70001C70001C7 +000383800383800383800383800701C00701C007FFC007FFC00FFFE00E00E00E00E00E00E00E00 +E01C00707F01FCFF83FE7F01FC171E7F9D1A>I<1FF0003FFC007FFE00780F0030070000038000 +0380007F8007FF801FFF803F8380780380700380E00380E00380E00380700780780F803FFFFC1F +FDFC07F0FC16157D941A>97 DI<00FF8003FFC00F +FFE01F01E03C00C0780000700000700000E00000E00000E00000E00000E0000070000070000078 +00703C00701F01F00FFFE003FFC000FE0014157D941A>I<001FC0001FC0001FC00001C00001C0 +0001C00001C00001C00001C001F1C007FDC00FFFC01E0FC03C07C07803C07001C0E001C0E001C0 +E001C0E001C0E001C0E001C0E001C07003C07003C03807C03E0FC01FFFFC07FDFC01F1FC161E7E +9D1A>I<01F80007FF000FFF801E07C03C01C07800E07000E0E00070E00070FFFFF0FFFFF0FFFF +F0E000007000007000007800703C00701F01F00FFFE003FFC000FE0014157D941A>I<0007E000 +1FF0003FF800787800F03000E00000E00000E00000E0007FFFF0FFFFF0FFFFF000E00000E00000 +E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0003F +FF807FFFC03FFF80151E7F9D1A>I<01F87C07FFFE0FFFFE1E078C1C03803801C03801C03801C0 +3801C03801C01C03801E07801FFF001FFE0039F8003800003800001C00001FFF801FFFE03FFFF8 +78007C70001CE0000EE0000EE0000EE0000E70001C78003C3E00F81FFFF007FFC001FF0017217F +941A>II<00C00001E00001E00000C00000000000 +00000000000000000000000000007FE0007FE0007FE00000E00000E00000E00000E00000E00000 +E00000E00000E00000E00000E00000E00000E00000E00000E00000E0007FFF80FFFFC07FFF8012 +1F7C9E1A>I107 DI<7CE0E000FFFBF8007FFFF8001F1F1C001E1E1C001E1E1C001C1C1C001C1C1C00 +1C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C +007F1F1F00FF9F9F807F1F1F00191580941A>II<01F00007FC001FFF003E0F803C07807803C07001C0E000E0E000E0 +E000E0E000E0E000E0E000E0F001E07001C07803C03C07803E0F801FFF0007FC0001F00013157D +941A>II<7F83F0FF8FF87FBFFC03 +FC3C03F01803E00003C00003C00003800003800003800003800003800003800003800003800003 +80000380007FFF00FFFF007FFF0016157E941A>114 D<07FB801FFF807FFF80780780E00380E0 +0380E003807800007FC0003FFC0007FE00003F800007806001C0E001C0E001C0F003C0FC0780FF +FF00EFFE00E3F80012157C941A>I<00C00001C00001C00001C00001C00001C00001C0007FFFE0 +FFFFE0FFFFE001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C070 +01C07001C07001C07000E0E000FFE0007FC0001F00141C7F9B1A>II<7F83FCFFC7FE7F83FC0E00E00E00E00E00E007 +01C00701C00701C003838003838003838001C70001C70001C70000EE0000EE0000EE00007C0000 +7C0000380017157F941A>II<7FC7F87FCFFC7FC7F80703C003838003C70001EF0000FE00007C00007800003800007C +0000EE0001EE0001C7000383800783C00F01C07FC7FCFFC7FE7FC7FC17157F941A>I +E /Fg 46 122 df<1C003E007F00FF80FF80FF807F003E001C0009097B8813>46 +D<000E00001E00007E0007FE00FFFE00FFFE00F8FE0000FE0000FE0000FE0000FE0000FE0000FE +0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE +0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE007FFFFE7FFFFE7FFF +FE17277BA622>49 D<00FF800003FFF0000FFFFC001F03FE003800FF007C007F80FE003FC0FF00 +3FC0FF003FE0FF001FE0FF001FE07E001FE03C003FE000003FE000003FC000003FC000007F8000 +007F000000FE000000FC000001F8000003F0000003E00000078000000F0000001E0000003C00E0 +007000E000E000E001C001C0038001C0070001C00FFFFFC01FFFFFC03FFFFFC07FFFFFC0FFFFFF +80FFFFFF80FFFFFF801B277DA622>I<007F800003FFF00007FFFC000F81FE001F00FF003F80FF +003F807F803F807F803F807F801F807F800F007F800000FF000000FF000000FE000001FC000001 +F8000007F00000FFC00000FFF0000001FC0000007E0000007F0000007F8000003FC000003FC000 +003FE000003FE03C003FE07E003FE0FF003FE0FF003FE0FF003FC0FF007FC07E007F807C007F00 +3F01FE001FFFFC0007FFF00000FF80001B277DA622>I<00000E0000001E0000003E0000007E00 +0000FE000000FE000001FE000003FE0000077E00000E7E00000E7E00001C7E0000387E0000707E +0000E07E0000E07E0001C07E0003807E0007007E000E007E000E007E001C007E0038007E007000 +7E00E0007E00FFFFFFF8FFFFFFF8FFFFFFF80000FE000000FE000000FE000000FE000000FE0000 +00FE000000FE000000FE00007FFFF8007FFFF8007FFFF81D277EA622>I<0C0003000F803F000F +FFFE000FFFFC000FFFF8000FFFF0000FFFE0000FFFC0000FFE00000E0000000E0000000E000000 +0E0000000E0000000E0000000E7FC0000FFFF8000F80FC000E003E000C003F0000001F8000001F +C000001FC000001FE000001FE018001FE07C001FE0FE001FE0FE001FE0FE001FE0FE001FC0FC00 +1FC078003F8078003F803C007F001F01FE000FFFF80003FFF00000FF80001B277DA622>I<0007 +F000003FFC0000FFFE0001FC0F0003F01F8007E03F800FC03F801FC03F801F803F803F801F003F +8000007F0000007F0000007F000000FF000000FF0FC000FF3FF800FF707C00FFC03E00FFC03F00 +FF801F80FF801FC0FF001FC0FF001FE0FF001FE0FF001FE07F001FE07F001FE07F001FE07F001F +E03F001FE03F001FC01F801FC01F803F800FC03F0007E07E0003FFFC0000FFF000003FC0001B27 +7DA622>I<380000003E0000003FFFFFF03FFFFFF03FFFFFF07FFFFFE07FFFFFC07FFFFF807FFF +FF0070000E0070000E0070001C00E0003800E0007000E000E0000000E0000001C0000003800000 +07800000078000000F0000000F0000001F0000001F0000003F0000003E0000003E0000007E0000 +007E0000007E0000007E000000FE000000FE000000FE000000FE000000FE000000FE000000FE00 +0000FE0000007C0000003800001C297CA822>I<000003800000000007C00000000007C0000000 +000FE0000000000FE0000000000FE0000000001FF0000000001FF0000000003FF8000000003FF8 +000000003FF80000000073FC0000000073FC00000000F3FE00000000E1FE00000000E1FE000000 +01C0FF00000001C0FF00000003C0FF80000003807F80000007807FC0000007003FC0000007003F +C000000E003FE000000E001FE000001E001FF000001C000FF000001FFFFFF000003FFFFFF80000 +3FFFFFF80000780007FC0000700003FC0000700003FC0000E00001FE0000E00001FE0001E00001 +FF0001C00000FF0001C00000FF00FFFE001FFFFEFFFE001FFFFEFFFE001FFFFE2F297EA834>65 +DI<00003FF001800003FFFE0380000FFFFF878000 +3FF007DF8000FF8001FF8001FE00007F8003FC00003F8007F000001F800FF000000F801FE00000 +07801FE0000007803FC0000007803FC0000003807FC0000003807F80000003807F8000000000FF +8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF800000 +0000FF8000000000FF80000000007F80000000007F80000000007FC0000003803FC0000003803F +C0000003801FE0000003801FE0000007000FF00000070007F000000E0003FC00001E0001FE0000 +3C0000FF8000F800003FF007E000000FFFFFC0000003FFFF000000003FF8000029297CA832>I< +FFFFFFF80000FFFFFFFF8000FFFFFFFFE00003FC001FF80003FC0007FC0003FC0001FE0003FC00 +00FF0003FC00007F8003FC00003FC003FC00001FC003FC00001FE003FC00001FE003FC00000FF0 +03FC00000FF003FC00000FF003FC00000FF003FC00000FF803FC00000FF803FC00000FF803FC00 +000FF803FC00000FF803FC00000FF803FC00000FF803FC00000FF803FC00000FF803FC00000FF8 +03FC00000FF003FC00000FF003FC00000FF003FC00001FE003FC00001FE003FC00001FC003FC00 +003FC003FC00007F8003FC00007F0003FC0001FE0003FC0003FC0003FC001FF800FFFFFFFFE000 +FFFFFFFF8000FFFFFFFC00002D297DA835>II72 DI77 DI80 D82 +D<007F806003FFF0E007FFF9E00F807FE01F001FE03E0007E07C0003E07C0001E0FC0001E0FC00 +01E0FC0000E0FE0000E0FE0000E0FF000000FFC000007FFE00007FFFE0003FFFFC001FFFFE000F +FFFF8007FFFFC003FFFFE000FFFFE00007FFF000007FF000000FF8000007F8000003F8600001F8 +E00001F8E00001F8E00001F8F00001F0F00001F0F80003F0FC0003E0FF0007C0FFE01F80F3FFFF +00E0FFFE00C01FF0001D297CA826>I<7FFFFFFFFFC07FFFFFFFFFC07FFFFFFFFFC07F803FC03F +C07E003FC007C078003FC003C078003FC003C070003FC001C0F0003FC001E0F0003FC001E0E000 +3FC000E0E0003FC000E0E0003FC000E0E0003FC000E0E0003FC000E000003FC0000000003FC000 +0000003FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC000000000 +3FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC000 +0000003FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC000000000 +3FC00000007FFFFFE000007FFFFFE000007FFFFFE0002B287EA730>II87 +D<01FF800007FFF0000F81F8001FC07E001FC07E001FC03F000F803F8007003F8000003F800000 +3F8000003F80000FFF8000FFFF8007FC3F800FE03F803F803F803F003F807F003F80FE003F80FE +003F80FE003F80FE003F807E007F807F00DF803F839FFC0FFF0FFC01FC03FC1E1B7E9A21>97 +DI<001FF80000FFFE0003F01F0007E03F80 +0FC03F801F803F803F801F007F800E007F0000007F000000FF000000FF000000FF000000FF0000 +00FF000000FF000000FF0000007F0000007F0000007F8000003F8001C01F8001C00FC0038007E0 +070003F01E0000FFFC00001FE0001A1B7E9A1F>I<00003FF80000003FF80000003FF800000003 +F800000003F800000003F800000003F800000003F800000003F800000003F800000003F8000000 +03F800000003F800000003F800000003F800001FE3F80000FFFBF80003F03FF80007E00FF8000F +C007F8001F8003F8003F8003F8007F0003F8007F0003F8007F0003F800FF0003F800FF0003F800 +FF0003F800FF0003F800FF0003F800FF0003F800FF0003F8007F0003F8007F0003F8007F0003F8 +003F8003F8001F8003F8000F8007F80007C00FF80003F03BFF8000FFF3FF80003FC3FF80212A7E +A926>I<003FE00001FFF80003F07E0007C01F000F801F801F800F803F800FC07F000FC07F0007 +C07F0007E0FF0007E0FF0007E0FFFFFFE0FFFFFFE0FF000000FF000000FF0000007F0000007F00 +00007F0000003F8000E01F8000E00FC001C007E0038003F81F0000FFFE00001FF0001B1B7E9A20 +>I<0007F0003FFC00FE3E01F87F03F87F03F07F07F07F07F03E07F00007F00007F00007F00007 +F00007F00007F000FFFFC0FFFFC0FFFFC007F00007F00007F00007F00007F00007F00007F00007 +F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007 +F0007FFF807FFF807FFF80182A7EA915>I<00FF81F003FFE7F80FC1FE7C1F80FC7C1F007C383F +007E107F007F007F007F007F007F007F007F007F007F007F007F003F007E001F007C001F80FC00 +0FC1F8001FFFE00018FF800038000000380000003C0000003E0000003FFFF8001FFFFF001FFFFF +800FFFFFC007FFFFE01FFFFFF03E0007F07C0001F8F80000F8F80000F8F80000F8F80000F87C00 +01F03C0001E01F0007C00FC01F8003FFFE00007FF0001E287E9A22>II<07000FC01FE03FE03FE03FE01FE00FC00700000000000000000000 +0000000000FFE0FFE0FFE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0 +0FE00FE00FE00FE00FE00FE00FE0FFFEFFFEFFFE0F2B7DAA14>I<000700000F80001FC0003FE0 +003FE0003FE0001FC0000F8000070000000000000000000000000000000000000000000001FFE0 +01FFE001FFE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0 +000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0 +000FE0000FE0000FE0000FE07C0FE0FE0FE0FE0FC0FE1F80FE1F007C3E003FFC000FF000133784 +AA15>IIIII<003FE00001FFFC0003F07E000FC01F80 +1F800FC03F800FE03F0007E07F0007F07F0007F07F0007F0FF0007F8FF0007F8FF0007F8FF0007 +F8FF0007F8FF0007F8FF0007F8FF0007F87F0007F07F0007F03F800FE03F800FE01F800FC00FC0 +1F8007F07F0001FFFC00003FE0001D1B7E9A22>II114 +D<03FE300FFFF01E03F03800F0700070F00070F00070F80070FC0000FFE0007FFE007FFF803FFF +E01FFFF007FFF800FFF80003FC0000FC60007CE0003CF0003CF00038F80038FC0070FF01E0F7FF +C0C1FF00161B7E9A1B>I<00700000700000700000700000F00000F00000F00001F00003F00003 +F00007F0001FFFF0FFFFF0FFFFF007F00007F00007F00007F00007F00007F00007F00007F00007 +F00007F00007F00007F00007F00007F03807F03807F03807F03807F03807F03803F03803F87001 +F86000FFC0001F8015267FA51B>I +II120 DI E /Fh 36 124 df<0000FC0000038300000E +0080001C03800038078000700780007003000070000000E0000000E0000000E0000000E0000000 +E0000000E000003FFFFE0001C00E0001C00E0001C00E0001C00E0001C00E0003801C0003801C00 +03801C0003801C0003801C0003801C000700380007003800070038000700380007003800070038 +000E0070000F007800FFC3FF0019237FA21B>12 D<0000FE03F00003818E0C000E00B802001C01 +F00E003803E01E007003C01E007001C00C007001C00000E003800000E003800000E003800000E0 +03800000E003800000E00380003FFFFFFFF801C007003801C007003801C007003801C007003801 +C007003803800E007003800E007003800E007003800E007003800E007003800E007007001C00E0 +07001C00E007001C00E007001C00E007001C00E007001C00E00E003801C00F003C01E0FFE3FF9F +FC27237FA229>14 D<1C3E7E7E3A02020404080810204080070F7D840E>44 +DI<3078F8787005057C840E>I<0000040000000006000000000E000000 +001E000000001E000000003E000000003F000000004F000000004F000000008F000000008F0000 +00010F000000010780000002078000000207800000040780000004078000000807C000000803C0 +00001003C000001003C000002003C000003FFFE000004001E000004001E000008001E000008001 +E000010001E000010000F000020000F000060000F000040000F0000C0000F0003E0001F800FF80 +0FFF8021237EA225>65 D<03FFE0FFF8003E000F80003C000F00003C000F00003C000F00003C00 +0F00003C000F000078001E000078001E000078001E000078001E000078001E000078001E0000F0 +003C0000F0003C0000F0003C0000FFFFFC0000F0003C0000F0003C0001E000780001E000780001 +E000780001E000780001E000780001E000780003C000F00003C000F00003C000F00003C000F000 +03C000F00003C000F000078001E00007C001F000FFFC3FFF0025227EA125>72 +D<03FFF0003E00003C00003C00003C00003C00003C000078000078000078000078000078000078 +0000F00000F00000F00000F00000F00000F00001E00001E00001E00001E00001E00001E00003C0 +0003C00003C00003C00003C00003C00007800007C000FFFC0014227EA112>I<03FFFFC0003E00 +F0003C0078003C003C003C003E003C001E003C003E0078003E0078003E0078003E0078003E0078 +003C0078007C00F0007800F000F000F001E000F0078000FFFE0000F0000001E0000001E0000001 +E0000001E0000001E0000001E0000003C0000003C0000003C0000003C0000003C0000003C00000 +0780000007C00000FFFC00001F227EA121>80 D<03FFFF0000003E01E000003C007800003C003C +00003C003C00003C003E00003C003E000078003E000078003E000078003E000078003E00007800 +7C00007800780000F000F00000F001E00000F007800000FFFC000000F00C000000F007000001E0 +07000001E003800001E003800001E003C00001E003C00001E003C00003C007C00003C007C00003 +C007C00003C007C00003C007C04003C007C080078007C08007C003E100FFFC01E3000000007C00 +22237EA124>82 D<000FC0800030318000C00B0001800700038007000300030007000300070003 +000E0002000E0002000F0002000F0000000F0000000F80000007E0000007FE000003FFC00001FF +E000007FF000000FF8000000F8000000780000003C0000003C0000003C0020003C004000380040 +00380040003800600030006000700060006000F000C000E8018000C607000081FC000019247DA2 +1B>I<03FC000606000F03000F03800601800001C0000380000380007F8003E3800F03801C0380 +380700780700F00708F00708F00F08F00F08F017107867A01F83C015157D9418>97 +D<0780003F80000700000700000700000700000700000700000E00000E00000E00000E00000E00 +000E00001C3F001CC1801D00C01E00601C00701C00703800783800783800783800783800783800 +787000F07000F07000E07001E07001C0700380E80700C61C0081F00015237BA21B>I<00FF0003 +81C00603C00C03C01C0180380000780000700000F00000F00000F00000F00000F00000E00000F0 +0000F000807001007001003806001C180007E00012157C9416>I<00001E0000FE00001C00001C +00001C00001C00001C00001C00003800003800003800003800003800003800FC700383700700F0 +0C00F01C00703800707800E07000E0F000E0F000E0F000E0F000E0E001C0E001C0E001C0E001C0 +7003C07003C0380F801C33C007C3F817237CA21B>I<00FE000383800701C00C00E01C00E03800 +E07800E07000E0FFFFE0F00000F00000F00000F00000E00000E00000F000407000803000801803 +000E0C0003F00013157D9416>I<0003E0000E30001C700038F000307000700000700000700000 +E00000E00000E00000E00000E00000E0003FFE0001C00001C00001C00001C00001C00003800003 +80000380000380000380000380000700000700000700000700000700000700000E00000F0000FF +F00014237FA20F>I<00000780001F88800070D18000E0E18001C0700003C0700003C070000780 +F0000780F0000780F0000780E0000381E0000181C00002C30000027E0000040000000400000004 +0000000600000007FF800007FFE00007FFF0001C007800300018006000180060001800C0001800 +C0001800C0003000600060003000C0001C07800003FC00001921809518>I<00780003F8000070 +0000700000700000700000700000700000E00000E00000E00000E00000E00000E00001C3F001CC +1801D00C01E00E01E00E01C00E03C01C03801C03801C03801C03801C03801C0700380700380700 +380700380700380700380E00700F0078FFE7FF18237FA21B>I<007000F001F000F000E0000000 +0000000000000000000000000001C00FC001C001C001C001C00380038003800380038003800700 +070007000700070007000E000F00FFE00C227FA10E>I<007803F8007000700070007000700070 +00E000E000E000E000E000E001C001C001C001C001C001C0038003800380038003800380070007 +0007000700070007000E000F00FFE00D237FA20E>108 D<01C1F807E01FC60C183001D80E6038 +01E007801C01E007801C01C007001C03C00F003803800E003803800E003803800E003803800E00 +3803800E003807001C007007001C007007001C007007001C007007001C007007001C00700E0038 +00E00F003C00F0FFE3FF8FFE27157F942A>I<01C3F01FCC1801D00C01E00E01E00E01C00E03C0 +1C03801C03801C03801C03801C03801C0700380700380700380700380700380700380E00700F00 +78FFE7FF18157F941B>I<007E000383800600C00C00E01C0070380070780078700078F00078F0 +0078F00078F00078E000F0E000F0E000E0F001E07001C07003803807001C1C0007F00015157D94 +18>I<00E1F8000FE60C0000E8060000F0070000E0038000E0038001C003C001C003C001C003C0 +01C003C001C003C001C003C003800780038007800380070003800F0003801E0003801C00074038 +000730E000070F80000700000007000000070000000E0000000E0000000E0000000E0000000E00 +00001E000000FFC000001A1F80941B>I<00FC100382100701300E00F01C00F03800F07800E078 +00E0F000E0F000E0F000E0F000E0F001C0F001C0F001C0F001C07003C07005C0380B801C338007 +C380000380000380000380000700000700000700000700000700000F00007FE0141F7C941A>I< +01C7C01FC8E001D1E001E1E001E0C001C00003C000038000038000038000038000038000070000 +0700000700000700000700000700000E00000F0000FFF00013157F9413>I<01F906070C031803 +1801180118021C001FE00FF807FC007E000E4006400640066006600CE008D83087C010157E9413 +>I<008000800080018001000300030007000F001F00FFF80E000E000E000E000E001C001C001C +001C001C001C0038103810381038103810382038201C4007800D1F7C9E13>I<0E0070FE07F00E +00F00E00700E00700E00701C00E01C00E01C00E01C00E01C00E01C00E03801C03801C03801C038 +01C03803C03805C0380B801C13C007E3F815157C941B>III<1FF83FC003E01E0001C0180000E0100000E020000070400000788000 +00390000001E0000001C0000000E0000001F0000003700000063800000C380000181C0000101E0 +000200E0000E00F0003E00F800FF03FF001A157F941A>I<0FFC0FE001E0078000E0030000E002 +0000E0040000E00400007008000070080000701000007030000078200000384000003840000038 +8000003C8000001D0000001D0000001E0000001C0000000C000000080000000800000010000000 +1000000020000000400000F0400000F0800000F1000000C20000003C0000001B1F80941A>I<07 +FFF80780380600700C00E00801C0080380080700100E00001C0000380000700000E00001C02003 +C0200380200700600E00401C00C03801C0700380FFFF8015157F9416>II +E /Fi 54 122 df<00000FE0000030180000E01C0001C03C0001803C0003803800038000000380 +000007000000070000000700000007000000070000000E000000FFFFE0000E00E0000E00E0000E +01C0001C01C0001C01C0001C01C0001C0380001C03800038038000380380003807000038070000 +3807000070070800700E1000700E1000700E1000700E2000E0062000E003C000E0000000E00000 +00C0000001C0000001C0000071800000F1800000F3000000620000003C0000001E2D82A21B>12 +D<0007800000001C6003800030100780006010078000E010038000C010010001C07001000380F0 +02000380F002000380600400070000080007000010000700006000073C00A00007E20310000781 +041000070108080007011008000F022008001F842008001C782C08003C003E080038003E080078 +001C0800780000080078000008007000001000F000001000700000200070000020007800004000 +380000800038000100001C000200000E000C00000380700000007F80000021257BA325>38 +D45 D<70F8F8F0E005057A840F>I<000000080000001800000030 +0000003000000060000000C0000000C0000001800000018000000300000006000000060000000C +0000000C0000001800000030000000300000006000000060000000C00000018000000180000003 +0000000300000006000000060000000C0000001800000018000000300000003000000060000000 +C0000000C0000001800000018000000300000006000000060000000C0000000C00000018000000 +30000000300000006000000060000000C0000000C0000000800000001D317FA419>I<000F8000 +30C000E06001C0700380700300700700700F00700E00701E00701E00701C00F03C00F03C00F03C +00F07801E07801E07801E07801E0F003C0F003C0F003C0F00380E00780E00780E00700E00F00E0 +0E00E01C00E01C00E0380060700030E0001F000014227AA019>I<0001000300030006001E002E +03CE001C001C001C001C0038003800380038007000700070007000E000E000E000E001C001C001 +C001C003800380038003800780FFFC10217AA019>I<000FC000106000603800801800801C0100 +1C02201E02101E04101E04101E04101E08203C08203C0840380840780880F00700E00001C00003 +0000060000180000200000C0000100000200000400100800301000202000605F80C063FFC040FF +80807F00801E0017227CA019>I<000FC000307000C01801001C02001C04000C04401C08201C08 +201C08201C08403808C0380700700000600001C000070000FC000007000003800003800001C000 +01C00001C00003C06003C0F003C0F00380E00780800700800E00801C0040380020F0001F800016 +227BA019>I<0000180000380000380000700000700000700000E00000E00000E00000C00001C0 +000180000380000300000300000600000600000C00000C000018000010000031800061C0004380 +0083800183800303800207000407000807003FC700403E00800FF0000E00000E00001C00001C00 +001C00001C00003800003800003800003000152B7EA019>I<00400400703800FFF000FFE000BF +80008000010000010000010000010000020000020000023E0002C3000501800601C00401C00001 +E00001E00001E00001E00001E00001E07003C0F003C0F003C0E00780800700800F00800E00401C +0040380030E0000F800016227BA019>I<07000F800F800F000E00000000000000000000000000 +000000000000000000007000F800F800F000E00009157A940F>58 D<0000030000000300000007 +000000070000000F0000000F0000001F0000002F0000002F0000004F0000004F80000087800000 +878000010780000207800002078000040780000407800008078000080780001007800030078000 +200780007FFF80004007C0008007C0008003C0010003C0030003C0020003C0040003C0040003C0 +0C0003C03C0007C0FF003FFC1E237DA224>65 D<00FFFFE0000F0038000F001C000F001E001E00 +0E001E000F001E000F001E000F003C000E003C001E003C001E003C003C00780078007800F00078 +01E00078078000FFFF8000F001E000F000F000F0007801E0007801E0003801E0003C01E0003C03 +C0007803C0007803C0007803C000F0078000F0078001E0078003C0078007000F801E00FFFFF000 +20227DA122>I<00007F00800003808100000E00630000380027000070001F0000E0000E0001C0 +000E000380000E000700000E000F000004000E000004001E000004003C000004003C0000080078 +0000000078000000007800000000F000000000F000000000F000000000F000000000F000000000 +E000000000E000002000E000002000E000004000E000004000F000008000700000800070000100 +00380002000018000400001C0008000006003000000381C0000000FE000000212479A223>I<00 +FFFFF000000F003C00000F000E00000F000700001E000380001E000380001E0001C0001E0001C0 +003C0001C0003C0001E0003C0001E0003C0001E000780001E000780001E000780001E000780001 +E000F00003C000F00003C000F00003C000F00003C001E000078001E000078001E000070001E000 +0F0003C0000E0003C0001C0003C0003C0003C00038000780007000078000E000078001C0000780 +0700000F801C0000FFFFF0000023227DA125>I<00FFFFFF80000F000780000F000180000F0001 +80001E000180001E000180001E000100001E000100003C000100003C000100003C010100003C01 +000000780200000078020000007806000000780E000000FFFC000000F00C000000F00C000000F0 +0C000001E008000001E008000001E008040001E000080003C000080003C000080003C000100003 +C000100007800020000780006000078000C000078001C0000F8007C000FFFFFF800021227DA121 +>I<00FFFFFF000F000F000F0003000F0003001E0003001E0003001E0002001E0002003C000200 +3C0002003C0102003C010000780200007802000078060000780E0000FFFC0000F00C0000F00C00 +00F00C0001E0080001E0080001E0080001E0000003C0000003C0000003C0000003C00000078000 +000780000007800000078000000F800000FFFC000020227DA120>I<00FFF87FFC000F00078000 +0F000780000F000780001E000F00001E000F00001E000F00001E000F00003C001E00003C001E00 +003C001E00003C001E000078003C000078003C000078003C000078003C0000FFFFF80000F00078 +0000F000780000F000780001E000F00001E000F00001E000F00001E000F00003C001E00003C001 +E00003C001E00003C001E000078003C000078003C000078003C000078003C0000F8007C000FFF8 +7FFC0026227DA124>72 D<00FFF8000F00000F00000F00001E00001E00001E00001E00003C0000 +3C00003C00003C0000780000780000780000780000F00000F00000F00000F00001E00001E00001 +E00001E00003C00003C00003C00003C0000780000780000780000780000F8000FFF80015227DA1 +13>I<00FFF807FC000F0001E0000F0001C0000F000100001E000200001E000400001E00100000 +1E002000003C004000003C008000003C010000003C040000007808000000781800000078380000 +00787C000000F0BC000000F23C000000F41E000000F81E000001F01F000001E00F000001E00F00 +0001E00F800003C007800003C007800003C003C00003C003C000078003C000078001E000078001 +E000078001E0000F8001F000FFF80FFE0026227DA125>75 D<00FFFC00000F8000000F0000000F +0000001E0000001E0000001E0000001E0000003C0000003C0000003C0000003C00000078000000 +780000007800000078000000F0000000F0000000F0000000F0000001E0000001E0000001E00020 +01E0002003C0004003C0004003C0008003C0008007800180078001000780030007800F000F803E +00FFFFFE001B227DA11F>I<00FF800007FC000F80000F80000F80001780000F80001780001780 +002F000013C0002F000013C0004F000013C0008F000023C0009E000023C0011E000023C0011E00 +0023C0021E000043C0043C000043C0043C000043C0083C000041E0083C000081E01078000081E0 +2078000081E02078000081E04078000101E040F0000101E080F0000101E100F0000101E100F000 +0200F201E0000200F201E0000200F401E0000200F801E0000400F803C0000400F003C0000400F0 +03C0000C00E003C0001E00C007C000FFC0C07FFC002E227DA12C>I<00FF000FFC000F8001E000 +0F800180000FC000800013C001000013C001000011E001000011E001000021E002000020F00200 +0020F002000020F0020000407804000040780400004078040000403C040000803C080000803E08 +0000801E080000801E080001001F100001000F100001000F10000100079000020007A000020007 +A000020003E000020003E000040003C000040001C000040001C0000C0001C0001E00008000FFC0 +00800026227DA124>I<0000FE0000078380000C00E0003800700070003800E0003801C0001C03 +80001C0700001C0F00001E1E00001E1C00001E3C00001E3C00001E7800001E7800001E7800001E +F000003CF000003CF000003CF0000078F0000078E0000078E00000F0E00000F0E00001E0E00001 +C0F00003C0F00007807000070078000E0038001C001C0038000E00E0000703800001FC00001F24 +79A225>I<00FFFFE0000F0038000F001E000F000E001E0007001E0007001E0007001E0007003C +000F003C000F003C000F003C001E0078001E0078003C00780078007800E000F003C000FFFE0000 +F0000000F0000001E0000001E0000001E0000001E0000003C0000003C0000003C0000003C00000 +078000000780000007800000078000000F800000FFF8000020227DA121>I<00FFFFC0000F0070 +000F003C000F001C001E000E001E000E001E000F001E000F003C001E003C001E003C001E003C00 +3C0078003800780070007801E00078078000FFFC0000F00E0000F0070000F0038001E003C001E0 +03C001E003C001E003C003C0078003C0078003C0078003C0078007800F0007800F0107800F0107 +8007020F800702FFF8038C000000F020237DA124>82 D<0001F020000E0C40001802C0003001C0 +006001C000E0018000C0018001C0018001C0018003C0010003C0010003C0000003C0000003E000 +0001F8000001FF000000FFE000007FF000001FF8000003FC0000007C0000003C0000001E000000 +1E0000001E0020001C0020001C0020001C00200018006000380060003000700060007000C000C8 +018000C607000081FC00001B247DA21B>I<1FFFFFF81E03C0381803C0183003C0182007801820 +0780184007801040078010400F0010800F0010800F0010000F0000001E0000001E0000001E0000 +001E0000003C0000003C0000003C0000003C00000078000000780000007800000078000000F000 +0000F0000000F0000000F0000001E0000001E0000001E0000001E0000003E00000FFFF00001D22 +77A123>I<3FFE03FF03C0007803C0006003C00020078000400780004007800040078000400F00 +00800F0000800F0000800F0000801E0001001E0001001E0001001E0001003C0002003C0002003C +0002003C0002007800040078000400780004007800040070000800F0000800F000100070001000 +70002000700040003000400038018000180200000E0C000003F00000202377A124>I<007FF81F +F8000FC007C000078003000007C002000003C004000003C008000003E010000001E030000001E0 +20000001F040000000F080000000F100000000FA000000007C000000007C000000007C00000000 +3C000000003C000000007E000000009E000000011E000000031F000000060F000000040F000000 +080F80000010078000002007C000004007C00000C003C000018003E000010001E000070001E000 +1F0003F000FFC01FFE0025227EA124>88 D<00F8C00185C00705C00E03800E03801C03803C0380 +380700780700780700780700F00E00F00E00F00E00F00E10F01C20701C20703C20305C40308C40 +0F078014157B9419>97 D<03C03F8003800380038007000700070007000E000E000E000E001C00 +1CF81D0C1E0E3C0638073807380F700F700F700F700FE01EE01EE01EE03CE038E038607060E031 +C01F0010237BA216>I<007E0001C1000301800703800E07801C07803C00003800007800007800 +00780000F00000F00000F00000F00000F00100700100700200300C001830000FC00011157B9416 +>I<00003C0003F80000380000380000380000700000700000700000700000E00000E00000E000 +00E00001C000F9C00185C00705C00E03800E03801C03803C0380380700780700780700780700F0 +0E00F00E00F00E00F00E10F01C20701C20703C20305C40308C400F078016237BA219>I<00F803 +840E021C023C0238027804F018FFE0F000F000E000E000E000E000E002E0026004701830600F80 +0F157A9416>I<00003E0000470000CF00018F0001860003800003800003800007000007000007 +00000700000700000E0000FFF0000E00000E00000E00001C00001C00001C00001C00001C000038 +0000380000380000380000380000700000700000700000700000700000E00000E00000E00000E0 +0000C00001C00001C000718000F18000F300006200003C0000182D82A20F>I<001F180030B800 +E0B801C07001C0700380700780700700E00F00E00F00E00F00E01E01C01E01C01E01C01E01C01E +03800E03800E0780060B8006170001E700000700000700000E00000E00000E00701C00F01800F0 +300060E0003F8000151F7E9416>I<00F0000FE00000E00000E00000E00001C00001C00001C000 +01C000038000038000038000038000070000071F0007218007C0C00F00E00F00E00E00E00E00E0 +1C01C01C01C01C01C01C01C0380380380380380380380704700708700E08700E10700610E00620 +6003C016237DA219>I<00C001E001C001C0000000000000000000000000000000001C00230043 +0043008700870087000E000E001C001C001C00380038003840708070807080710032001C000B21 +7BA00F>I<00F0000FE00000E00000E00000E00001C00001C00001C00001C00003800003800003 +80000380000700000701E0070210070C700E10F00E10F00E20600E40001D80001E00001FC0001C +7000383800383800381C00381C20703840703840703840701880E01880600F0014237DA216> +107 D<01E01FC001C001C001C0038003800380038007000700070007000E000E000E000E001C00 +1C001C001C0038003800380038007000700070007100E200E200E200E200640038000B237CA20C +>I<1C0F80F8002610C10C00476066060087807807008780780700870070070087007007000E00 +E00E000E00E00E000E00E00E000E00E00E001C01C01C001C01C01C001C01C01C001C01C0382038 +0380384038038070403803807080380380308070070031003003001E0023157B9428>I<1C0F00 +2631C04740C08780E08780E08700E08700E00E01C00E01C00E01C00E01C01C03801C03801C0380 +1C0704380708380E08380E103806107006203003C016157B941B>I<007E0001C3000381800701 +C00E01C01C01E03C01E03801E07801E07801E07801E0F003C0F003C0F00380F00780700700700E +00700C0030180018700007C00013157B9419>I<01C1F002621804741C08780C08700E08700E08 +701E00E01E00E01E00E01E00E01E01C03C01C03C01C03C01C07803807003807003C0E003C1C007 +2380071E000700000700000E00000E00000E00000E00001C00001C00001C0000FFC000171F7F94 +19>I<00F8400184C00705C00E03800E03801C03803C0380380700780700780700780700F00E00 +F00E00F00E00F00E00F01C00701C00703C00305C0030B8000F3800003800003800007000007000 +00700000700000E00000E00000E0000FFE00121F7B9416>I<1C1F002620804741C08783C08703 +C08701808700000E00000E00000E00000E00001C00001C00001C00001C00003800003800003800 +0038000070000030000012157B9415>I<00FC000183000200800401800C03800C03000C00000F +00000FF00007FC0003FE00003E00000F00000700700700F00600F00600E004004008002030001F +C00011157D9414>I<00C001C001C001C001C003800380038003800700FFF8070007000E000E00 +0E000E001C001C001C001C003800380038003810702070207040708031001E000D1F7C9E10>I< +1E00602300E04380E04381C08381C08701C08701C00703800E03800E03800E03801C07001C0700 +1C07001C07081C0E10180E101C0E101C1E200C262007C3C015157B941A>I<1E03802307C04387 +C04383C08381C08700C08700C00700800E00800E00800E00801C01001C01001C01001C02001C02 +001C04001C08001C08000C300003C00012157B9416>I<1E0060E02300E1F04380E1F04381C0F0 +8381C0708701C0308701C030070380200E0380200E0380200E0380201C0700401C0700401C0700 +401C0700801C0700801C0701001C0F01000C0F020006138C0003E0F0001C157B9420>I<1E0030 +2300704380704380E08380E08700E08700E00701C00E01C00E01C00E01C01C03801C03801C0380 +1C03801C07001C07001C07001C0F000C3E0003CE00000E00000E00001C00601C00F03800F03000 +E0600080C0004380003E0000141F7B9418>121 D E /Fj 3 53 df<0F8030E040708030C038E0 +384038003800700070006000C00180030006000C08080810183FF07FF0FFF00D157E9412>50 +D<0FE030306018701C701C001C00180038006007E000300018000C000E000EE00EE00EC00C4018 +30300FE00F157F9412>I<00300030007000F001F001700270047008701870107020704070C070 +FFFE0070007000700070007003FE0F157F9412>I E /Fk 19 122 df<0007F010001C0C300070 +026000C001E0038000E0070000E00E0000600E0000601C0000403C000040380000407800000078 +00000078000000F0000000F0000000F0000000F0000000F0000000F0000080F000010070000100 +7000010038000200380004001C0004000C001800060020000380C000007F00001C1E7C9C1E>67 +D<0FFFFC0000F80F0000F0038000F003C000F001C000F001C000F001C001E003C001E003C001E0 +03C001E0038001E0070001E00E0003C03C0003FFE00003C0000003C0000003C0000003C0000007 +80000007800000078000000780000007800000078000000F0000000F800000FFF000001A1C7E9B +1C>80 D<0FFFF80000F80E0000F0078000F003C000F001C000F001E000F001E001E003C001E003 +C001E0038001E0070001E00E0001E03C0003FFE00003C0700003C0380003C03C0003C01C0003C0 +1E0007803C0007803C0007803C0007803C0007803C0007803C080F003C100F801C10FFF01C2000 +0007C01D1D7E9B1F>82 D<1FFFFFF03C07C0F03007803020078020600780204007802040078020 +400F0020800F0020000F0000000F0000000F0000000F0000001E0000001E0000001E0000001E00 +00001E0000001E0000003C0000003C0000003C0000003C0000003C0000003C000000780000007C +00001FFFE0001C1C7C9B1E>84 D<07F0001C18001E0C001C0E00180E00000E00000E0001FE000F +0E001C1C00301C00701C00E01C40E01C40E03C40E05C80709D803F0E0012127D9115>97 +D<01F8071C0C1E181C38183000700070007000E000E000E000600060047008301018200FC00F12 +7D9112>99 D<01F8070C0C061C073803300370037FFF7000E000E000E00060006002300430081C +3007C010127E9112>101 D<000F800039C00061C000E3C001C18001C00001C00001C000038000 +0380000380003FF8000380000380000700000700000700000700000700000700000E00000E0000 +0E00000E00000E00000E00001C00001E0000FFC000121D7F9C0D>I<07E00001E00001C00001C0 +0001C00001C00001C00001C000038000038000038000038F8003B0C003C0E00780E00780E00700 +E00700E00700E00700E00E01C00E01C00E01C00E01C00E01C00E01C01C03801E03C0FF9FF0141D +7F9C17>104 D<00C001C001C0018000000000000000000000000000001F800780038007000700 +07000700070007000E000E000E000E000E000E001C001E00FF800A1D7F9C0C>I<07E001E001C0 +01C001C001C001C001C00380038003800380038003800700070007000700070007000E000E000E +000E000E000E001C001E00FF800B1D7F9C0C>108 D<1F8FC0FC00079061060003E07607000780 +780700078078070007007007000700700700070070070007007007000E00E00E000E00E00E000E +00E00E000E00E00E000E00E00E000E00E00E001C01C01C001E01E01E00FF8FF8FF8021127F9124 +>I<1F8F8007B0C003C0E00780E00780E00700E00700E00700E00700E00E01C00E01C00E01C00E +01C00E01C00E01C01C03801E03C0FF9FF014127F9117>I<00FC000307000E01801C01C03800C0 +3000C07000E07000E07000E0E001C0E001C0E001C0600180600380700700380E001C180007E000 +13127E9115>I<1F9C07EE03CF078E078C07000700070007000E000E000E000E000E000E001C00 +1E00FFC010127F9110>114 D<03F20C0E18061004300438043E001FE00FF007F8003C401C400C +400C6018E010D0608FC00F127F9110>I<020002000200060006000C001C003C00FFE01C001C00 +380038003800380038003800700070407040704070407080708031001E000B1A7C9910>II<0FF0FE03C03801C03001C02001C06001C04001 +E08000E08000E10000E10000E200007200007400007C0000780000700000300000200000200000 +4000004000708000F10000F10000E60000780000171A809116>121 D E +/Fl 42 124 df<6060F0F0F8F86868080808080808101010102020404080800D0C7F9C15>34 +D45 D<00010003000600060006000C000C000C00180018001800300030 +00300060006000C000C000C0018001800180030003000300060006000C000C000C001800180018 +00300030003000600060006000C000C00010297E9E15>47 D<030007003F00C700070007000700 +07000700070007000700070007000700070007000700070007000700070007000700070007000F +80FFF80D1C7C9B15>49 D<07C01830201C400C400EF00FF80FF807F8077007000F000E000E001C +001C00380070006000C00180030006010C01180110023FFE7FFEFFFE101C7E9B15>I<07E01830 +201C201C781E780E781E381E001C001C00180030006007E00030001C001C000E000F000F700FF8 +0FF80FF80FF00E401C201C183007E0101D7E9B15>I<03C00C301818300C700C600EE006E006E0 +07E007E007E007E0076007700F300F18170C2707C700060006000E300C780C78187010203030C0 +0F80101D7E9B15>57 D<000600000006000000060000000F0000000F0000000F00000017800000 +178000001780000023C0000023C0000023C0000041E0000041E0000041E0000080F0000080F000 +0180F8000100780001FFF80003007C0002003C0002003C0006003E0004001E0004001E000C001F +001E001F00FF80FFF01C1D7F9C1F>65 D<001F808000E0618001801980070007800E0003801C00 +03801C00018038000180780000807800008070000080F0000000F0000000F0000000F0000000F0 +000000F0000000F0000000F0000000700000807800008078000080380000801C0001001C000100 +0E000200070004000180080000E03000001FC000191E7E9C1E>67 D73 D78 D80 +D82 D<7FFFFFC0700F01C0600F00C0400F0040400F0040C00F0020800F0020800F00 +20800F0020000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F +0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000001F800003 +FFFC001B1C7F9B1E>84 DI<7FF0FFC00FC03E000780180003C0180003E0100001E0 +200001F0600000F0400000788000007D8000003D0000001E0000001F0000000F0000000F800000 +0F80000013C0000023E0000021E0000041F00000C0F8000080780001007C0003003C0002001E00 +06001F001F003F80FFC0FFF01C1C7F9B1F>88 D91 D<080810102020404040 +40808080808080B0B0F8F8787830300D0C7A9C15>II<1FC0003070007838 +00781C00301C00001C00001C0001FC000F1C00381C00701C00601C00E01C40E01C40E01C40603C +40304E801F870012127E9115>97 DI<07E00C3018783078 +70306000E000E000E000E000E000E00060007004300418080C3007C00E127E9112>I<003F0000 +070000070000070000070000070000070000070000070000070000070003E7000C1700180F0030 +0700700700600700E00700E00700E00700E00700E00700E00700600700700700300700180F000C +370007C7E0131D7E9C17>I<03E00C301818300C700E6006E006FFFEE000E000E000E000600070 +02300218040C1803E00F127F9112>I<00F8018C071E061E0E0C0E000E000E000E000E000E00FF +E00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E007FE00F1D809C +0D>I<00038003C4C00C38C01C3880181800381C00381C00381C00381C001818001C38000C3000 +13C0001000003000001800001FF8001FFF001FFF803003806001C0C000C0C000C0C000C0600180 +3003001C0E0007F800121C7F9215>II<18003C003C0018 +000000000000000000000000000000FC001C001C001C001C001C001C001C001C001C001C001C00 +1C001C001C001C001C00FF80091D7F9C0C>I107 +DIII<03F0000E1C0018060030 +0300700380600180E001C0E001C0E001C0E001C0E001C0E001C06001807003803003001806000E +1C0003F00012127F9115>II114 D<1F9030704030C010C010E010F800 +7F803FE00FF000F880388018C018C018E010D0608FC00D127F9110>I<04000400040004000C00 +0C001C003C00FFE01C001C001C001C001C001C001C001C001C001C101C101C101C101C100C100E +2003C00C1A7F9910>IIII121 D123 +D E /Fm 4 53 df<0C001C00EC000C000C000C000C000C000C000C000C000C000C000C000C000C +000C000C00FFC00A137D9211>49 D<1F0060C06060F070F030603000700070006000C001C00180 +020004000810101020207FE0FFE00C137E9211>I<0FC030707038703870380038003000E00FC0 +007000380018001C601CF01CF018E03860701FC00E137F9211>I<006000E000E0016002600660 +0C600860106020606060C060FFFC0060006000600060006003FC0E137F9211>I +E /Fn 47 124 df<001F83E000F06E3001C078780380F8780300F0300700700007007000070070 +0007007000070070000700700007007000FFFFFF80070070000700700007007000070070000700 +700007007000070070000700700007007000070070000700700007007000070070000700700007 +0070000700700007007000070070007FE3FF001D20809F1B>11 D<003F0000E0C001C0C00381E0 +0701E00701E0070000070000070000070000070000070000FFFFE00700E00700E00700E00700E0 +0700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E0 +0700E07FC3FE1720809F19>I<001F81F80000F04F040001C07C06000380F80F000300F00F0007 +00F00F00070070000007007000000700700000070070000007007000000700700000FFFFFFFF00 +070070070007007007000700700700070070070007007007000700700700070070070007007007 +000700700700070070070007007007000700700700070070070007007007000700700700070070 +0700070070070007007007007FE3FE3FF02420809F26>14 D<7038F87CFC7EFC7E743A04020402 +04020804080410081008201040200F0E7E9F17>34 D<0020004000800100020006000C000C0018 +0018003000300030007000600060006000E000E000E000E000E000E000E000E000E000E000E000 +E0006000600060007000300030003000180018000C000C000600020001000080004000200B2E7D +A112>40 D<800040002000100008000C00060006000300030001800180018001C000C000C000C0 +00E000E000E000E000E000E000E000E000E000E000E000E000C000C000C001C001800180018003 +000300060006000C00080010002000400080000B2E7DA112>I<70F8FCFC740404040808101020 +40060E7C840D>44 DI<70F8F8F87005057C840D>I<70F8F8F870000000 +0000000000000070F8F8F87005147C930D>58 D<000100000003800000038000000380000007C0 +000007C0000007C0000009E0000009E0000009E0000010F0000010F0000010F000002078000020 +78000020780000403C0000403C0000403C0000801E0000801E0000FFFE0001000F0001000F0001 +000F00020007800200078002000780040003C00E0003C01F0007E0FFC03FFE1F207F9F22>65 +DI68 DI73 +D78 D<07E0800C1980100780300380600180600180E00180E000 +80E00080E00080F00000F000007800007F00003FF0001FFC000FFE0003FF00001F800007800003 +C00003C00001C08001C08001C08001C08001C0C00180C00380E00300F00600CE0C0081F8001221 +7D9F19>83 D<7FFFFFE0780F01E0600F0060400F0020400F0020C00F0030800F0010800F001080 +0F0010800F0010000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000 +000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F00 +00000F0000001F800007FFFE001C1F7E9E21>I87 D<0804100820102010402040208040 +80408040B85CFC7EFC7E7C3E381C0F0E7B9F17>92 D<1FE000303000781800781C00300E00000E +00000E00000E0000FE00078E001E0E00380E00780E00F00E10F00E10F00E10F01E10781E103867 +200F83C014147E9317>97 D<0E0000FE00000E00000E00000E00000E00000E00000E00000E0000 +0E00000E00000E00000E3E000EC3800F01C00F00E00E00E00E00700E00700E00780E00780E0078 +0E00780E00780E00780E00700E00700E00E00F00E00D01C00CC300083E0015207F9F19>I<03F8 +0E0C1C1E381E380C70007000F000F000F000F000F000F00070007000380138011C020E0C03F010 +147E9314>I<000380003F80000380000380000380000380000380000380000380000380000380 +00038003E380061B801C0780380380380380700380700380F00380F00380F00380F00380F00380 +F003807003807003803803803807801C07800E1B8003E3F815207E9F19>I<03F0000E1C001C0E +00380700380700700700700380F00380F00380FFFF80F00000F00000F000007000007000003800 +801800800C010007060001F80011147F9314>I<007C00C6018F038F0706070007000700070007 +0007000700FFF00700070007000700070007000700070007000700070007000700070007000700 +070007007FF01020809F0E>I<0000E003E3300E3C301C1C30380E00780F00780F00780F00780F +00780F00380E001C1C001E380033E0002000002000003000003000003FFE001FFF800FFFC03001 +E0600070C00030C00030C00030C000306000603000C01C038003FC00141F7F9417>I<0E0000FE +00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E3E000E43000E +81800F01C00F01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E +01C00E01C00E01C00E01C0FFE7FC16207F9F19>I<1C001E003E001E001C000000000000000000 +000000000E007E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E +000E00FFC00A1F809E0C>I<00E001F001F001F000E0000000000000000000000000007007F000 +F00070007000700070007000700070007000700070007000700070007000700070007000700070 +007000706070F060F0C061803F000C28829E0E>I<0E0000FE00000E00000E00000E00000E0000 +0E00000E00000E00000E00000E00000E00000E0FF00E03C00E03000E02000E04000E08000E1000 +0E30000E70000EF8000F38000E1C000E1E000E0E000E07000E07800E03800E03C00E03E0FFCFF8 +15207F9F18>I<0E00FE000E000E000E000E000E000E000E000E000E000E000E000E000E000E00 +0E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00FFE00B20809F0C>I< +0E1F01F000FE618618000E81C81C000F00F00E000F00F00E000E00E00E000E00E00E000E00E00E +000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E0 +0E000E00E00E000E00E00E000E00E00E00FFE7FE7FE023147F9326>I<0E3E00FE43000E81800F +01C00F01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E +01C00E01C00E01C0FFE7FC16147F9319>I<01F800070E001C03803801C03801C07000E07000E0 +F000F0F000F0F000F0F000F0F000F0F000F07000E07000E03801C03801C01C0380070E0001F800 +14147F9317>I<0E3E00FEC3800F01C00F00E00E00E00E00F00E00700E00780E00780E00780E00 +780E00780E00780E00700E00F00E00E00F01E00F01C00EC3000E3E000E00000E00000E00000E00 +000E00000E00000E00000E0000FFE000151D7F9319>I<03E0800619801C05803C078038038078 +0380700380F00380F00380F00380F00380F00380F003807003807803803803803807801C0B800E +138003E380000380000380000380000380000380000380000380000380003FF8151D7E9318>I< +0E78FE8C0F1E0F1E0F0C0E000E000E000E000E000E000E000E000E000E000E000E000E000E00FF +E00F147F9312>I<1F9030704030C010C010C010E00078007F803FE00FF00070803880188018C0 +18C018E030D0608F800D147E9312>I<020002000200060006000E000E003E00FFF80E000E000E +000E000E000E000E000E000E000E000E000E080E080E080E080E080610031001E00D1C7F9B12> +I<0E01C0FE1FC00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01 +C00E01C00E01C00E01C00E03C00603C0030DC001F1FC16147F9319>III<7FC3FC0F01E00701C0070180 +03810001C20000E40000EC00007800003800003C00007C00004E000087000107000303800201C0 +0601E01E01E0FF07FE1714809318>II<3FFF380E200E20 +1C40384078407000E001E001C00380078007010E011E011C0338027006700EFFFE10147F9314> +II E /Fo 7 117 df<0000E000000000E000000001F000000001F0000000 +01F000000003F800000003F800000006FC00000006FC0000000EFE0000000C7E0000000C7E0000 +00183F000000183F000000303F800000301F800000701FC00000600FC00000600FC00000C007E0 +0000FFFFE00001FFFFF000018003F000018003F000030001F800030001F800060001FC00060000 +FC000E0000FE00FFE00FFFE0FFE00FFFE0231F7E9E28>65 D<07FC001FFF003F0F803F07C03F03 +E03F03E00C03E00003E0007FE007FBE01F03E03C03E07C03E0F803E0F803E0F803E0FC05E07E0D +E03FF8FE0FE07E17147F9319>97 D +I<01FE0007FF801F0FC03E0FC03E0FC07C0FC07C0300FC0000FC0000FC0000FC0000FC0000FC00 +007C00007E00003E00603F00C01F81C007FF0001FC0013147E9317>I114 D<0FE63FFE701E600EE006E006F800FFC07FF83F +FC1FFE03FE001FC007C007E007F006F81EFFFCC7F010147E9315>I<0180018001800380038003 +8007800F803F80FFFCFFFC0F800F800F800F800F800F800F800F800F800F800F860F860F860F86 +0F8607CC03F801F00F1D7F9C14>I E /Fp 14 118 df44 D46 D<0000FF00000007FFC000001FFFE000007FFFF00000FF +01F80001FC00FC0003F0007E0007E0003E000FC01FBE001F807FFF001F00FFFF003E01FFFF003E +03F0FF007C07E07F807C07C03F807C0F801F80FC0F801F80F81F000F80F81F000F80F81F000F80 +F81F000F80F81F000F80F81F000F80F81F000F80F81F000F80FC0F801F007C0F801F007C07C03E +007C07E07E003E03F0FC003E01FFF8001F00FFF0001F807FE0000FC01F800007E000000003F000 +000001FC000F8000FF007F00007FFFFE00001FFFF8000007FFE0000000FF0000212A7DA928>64 +D<01FE000FFF803FFFC03FFFE03C03F03001F00001F80000F80000F80000F80000F80000F8007F +F807FFF81FFFF83FE0F87F00F8FC00F8F800F8F800F8F800F8FC01F87E07F87FFFF83FFFF81FFC +F80FE0F8151B7E9A1D>97 DI<007FC001FFF007FFFC0FFF +FC1FC07C1F00083E00007C00007C00007C0000F80000F80000F80000F80000F80000F80000F800 +007C00007C00007E00003E00001F000C1FC07C0FFFFC07FFFC01FFF0007F80161B7E9A1B>I<00 +003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00 +003E00003E00FC3E03FF3E07FFFE0FFFFE1FC1FE3F007E3E003E7C003E7C003EFC003EF8003EF8 +003EF8003EF8003EF8003EF8003EF8003EFC003E7C003E7C003E3E007E3F00FE1FC1FE0FFFFE07 +FFBE03FF3E00FC3E172A7EA91F>I<007E0003FF8007FFC00FFFE01F83F03F00F03E00787C0078 +7C003878003CFFFFFCFFFFFCFFFFFCFFFFFCF80000F80000F800007800007C00007C00003E0000 +3F000C1FC07C0FFFFC07FFFC01FFF0007F80161B7E9A1B>I<001FC0007FC000FFC001FFC003F0 +0003E00007C00007C00007C00007C00007C00007C00007C00007C00007C000FFFE00FFFE00FFFE +0007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C0 +0007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C000122A7FA912 +>I104 D112 D114 D<03FC001FFF803FFFC07FFFC07C07C0F80080F80000F80000F8 +0000FC00007F80007FF8003FFE001FFF0007FF8000FFC0000FE00007E00003E00003E04003E0E0 +07E0FC0FC0FFFFC07FFF801FFE0003F800131B7E9A17>I117 +D E /Fq 2 104 df<0000F80003C0000F00001E00003C00007800007800007800007800007800 +007800007800007800007800007800007800007800007800007800007800007800007800007800 +00780000780000F00000F00001E000078000FE0000FE000007800001E00000F00000F000007800 +007800007800007800007800007800007800007800007800007800007800007800007800007800 +007800007800007800007800007800007800003C00001E00000F000003C00000F8153C7CAC1E> +102 DI +E /Fr 38 122 df<78FCFCFEFE7A02020202040404081010204007127B8511>44 +DI<007F000001C1C0000780F0000F0078000E0038001C001C003C +001E003C001E003C001E0078000F0078000F0078000F0078000F00F8000F80F8000F80F8000F80 +F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F +80F8000F80F8000F8078000F0078000F0078000F0078000F003C001E003C001E003C001E001C00 +1C000E0038000F0078000780F00001C1C000007F000019297EA71E>48 D<00100000700001F000 +0FF000FEF000F0F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F000 +00F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F000 +00F00000F00000F00000F00000F00000F00000F00000F00001F8007FFFE07FFFE013287BA71E> +I<007F000003FFC0000701F0000C00F80010007C001C007C003E007E003E003E003E003E001E00 +3E000C007E0000007C0000007C00000078000000F0000000E0000001C0000007000000FF000000 +01E0000000F0000000780000003C0000003E0000001F0000001F0000001F8000001F8030001F80 +78001F80FC001F80FC001F80FC001F00F8001F0040003F0040003E0030007C001800F8000F01F0 +0003FFC000007F000019297EA71E>51 D<00006000000060000000E0000001E0000001E0000003 +E0000003E0000005E0000009E0000009E0000011E0000021E0000021E0000041E0000081E00000 +81E0000101E0000201E0000201E0000401E0000801E0000801E0001001E0003001E0002001E000 +4001E000C001E000FFFFFF80FFFFFF800001E0000001E0000001E0000001E0000001E0000001E0 +000001E0000001E0000003F000007FFF80007FFF8019287EA71E>I<20000000380000003FFFFF +803FFFFF803FFFFF007FFFFF006000020040000400400004004000080080001000800020000000 +20000000400000008000000080000001000000030000000200000006000000060000000C000000 +0C0000001C0000001C0000001C0000003800000038000000380000007800000078000000780000 +0078000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F80000007000 +00192A7DA81E>55 D<007F000001FFC0000381F000060078000C003C001C001C0018000E003800 +0E0038000E0038000E003C000E003C000E003E001C001F8018001FC038000FF0600007F8C00003 +FF800001FF0000007FC00000FFE000030FF8000603FC001C01FE0038007E0030003F0070000F00 +70000780E0000780E0000380E0000380E0000380E0000380F0000300700007007800060038000C +001E0038000F80F00003FFE000007F000019297EA71E>I<007F000001FFC00007C1E0000F0070 +001E0038001C003C003C001C0078001E0078001E00F8000F00F8000F00F8000F00F8000F00F800 +0F80F8000F80F8000F80F8000F8078000F8078001F803C001F803C001F801C002F800E004F8007 +00CF8003810F80007E0F8000000F0000000F0000000F0000001E0000001E0000001E0000003C00 +1C003C003E0078003E0070003C00E0001801C0001C0780000FFE000003F8000019297EA71E>I< +00001800000000180000000018000000003C000000003C000000003C000000007E000000007E00 +000000FF000000009F000000009F000000011F800000010F800000010F8000000207C000000207 +C000000207C000000403E000000403E000000403E000000801F000000801F000001801F8000010 +00F800001000F800002000FC000020007C00003FFFFC00007FFFFE000040003E000040003E0000 +80001F000080001F000080001F000100000F800100000F800100000F8002000007C007000007C0 +1F80000FE0FFF000FFFFFFF000FFFF282A7EA92D>65 D<0000FF00100007FFE030001FC0783000 +3E000C7000F80006F001F00003F003E00001F007C00000F00F800000700F800000701F00000030 +3F000000303E000000303E000000107E000000107E000000107C00000000FC00000000FC000000 +00FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC000000007C0000 +00007E000000007E000000103E000000103E000000103F000000101F000000200F800000200F80 +00006007C000004003E000008001F000018000F8000300003E000E00001FC038000007FFE00000 +00FF8000242B7DA92B>67 DI73 D76 D78 +D<0001FF0000000F01E000003C0078000078003C0000E0000E0001E0000F0003C0000780078000 +03C00F800003E01F000001F01F000001F03E000000F83E000000F87E000000FC7E000000FC7C00 +00007C7C0000007CFC0000007EFC0000007EFC0000007EFC0000007EFC0000007EFC0000007EFC +0000007EFC0000007EFC0000007E7C0000007C7E000000FC7E000000FC7E000000FC3E000000F8 +3F000001F81F000001F01F000001F00F800003E007800003C007C00007C003E0000F8000F0001E +000078003C00003C007800000F01E0000001FF0000272B7DA92E>II<00FE010003FF83000F81E3001E0037003C001F0038000F007800070070000700F0 +000300F0000300F0000300F0000100F8000100F8000100FC0000007C0000007F0000003FE00000 +1FFF00000FFFE00007FFF80003FFFC00007FFE000007FF0000007F0000001F8000000F80000007 +C0000007C0800003C0800003C0800003C0800003C0C00003C0C0000380C0000380E0000780F000 +0700F8000E00EE001C00C3C07800C1FFF000803FC0001A2B7DA921>83 D<7FFFFFFFF87FFFFFFF +F87C007C00F870007C003860007C001840007C000840007C0008C0007C000CC0007C000C80007C +000480007C000480007C000480007C000480007C000400007C000000007C000000007C00000000 +7C000000007C000000007C000000007C000000007C000000007C000000007C000000007C000000 +007C000000007C000000007C000000007C000000007C000000007C000000007C000000007C0000 +00007C000000007C000000007C000000007C000000007C00000000FE000000FFFFFE0000FFFFFE +0026297EA82B>II87 D<01FC00000E0780001001C0003C00E000 +3E00F0003E0078001C00780008007800000078000000780000007800007FF80003E078000F8078 +001F0078003E0078007C00780078007820F8007820F8007820F8007820F800F8207C00F8203C01 +3C401F063FC007F80F001B1A7E991E>97 D<07800000FF800000FF8000000F8000000780000007 +800000078000000780000007800000078000000780000007800000078000000780000007800000 +078000000783F000078C1C0007B0070007A0038007C003C0078001E0078001E0078000F0078000 +F0078000F8078000F8078000F8078000F8078000F8078000F8078000F8078000F0078000F00780 +01F0078001E0078001C007C003C00740078007200E0006181C000407E0001D2A7FA921>I<007F +8001C0700780080F003C1E007C3C007C3C00387C0010780000F80000F80000F80000F80000F800 +00F80000F80000F800007800007C00003C00043C00041E00080F001007802001C0C0007F00161A +7E991B>I<00000F000001FF000001FF0000001F0000000F0000000F0000000F0000000F000000 +0F0000000F0000000F0000000F0000000F0000000F0000000F0000000F00003F0F0001C0CF0003 +802F000F001F001E001F001C000F003C000F007C000F0078000F0078000F00F8000F00F8000F00 +F8000F00F8000F00F8000F00F8000F00F8000F0078000F0078000F003C000F003C000F001E001F +000E002F0007004F8001C18FF8007E0FF81D2A7EA921>I<007E0003C3800700E00E00F01C0070 +3C00783C003878003C78003CF8003CF8003CFFFFFCF80000F80000F80000F80000F80000780000 +7C00003C00043C00041E00080E001007002001C0C0007F00161A7E991B>I<001F000070C000E1 +E001C3E003C3E00381C00780800780000780000780000780000780000780000780000780000780 +00FFFE00FFFE000780000780000780000780000780000780000780000780000780000780000780 +0007800007800007800007800007800007800007800007800007800007800007C000FFFE00FFFE +00132A7FA912>I<07000F801F801F800F80070000000000000000000000000000000000000007 +807F807F800F800780078007800780078007800780078007800780078007800780078007800780 +0780078007800780FFF8FFF80D297FA811>105 D<0781F800FC00FF860E030700FF98070C0380 +0FA0079003C007A003D001E007C003E001E007C003E001E0078003C001E0078003C001E0078003 +C001E0078003C001E0078003C001E0078003C001E0078003C001E0078003C001E0078003C001E0 +078003C001E0078003C001E0078003C001E0078003C001E0078003C001E0078003C001E0078003 +C001E0078003C001E0FFFC7FFE3FFFFFFC7FFE3FFF301A7F9933>109 D<0783F800FF8C1C00FF +900E000FA0070007A0078007C0078007C007800780078007800780078007800780078007800780 +078007800780078007800780078007800780078007800780078007800780078007800780078007 +800780078007800780FFFCFFFCFFFCFFFC1E1A7F9921>I<007F000001C1C000070070000E0038 +001C001C003C001E003C001E0078000F0078000F00F8000F80F8000F80F8000F80F8000F80F800 +0F80F8000F80F8000F80F8000F8078000F0078000F003C001E003C001E001E003C000E00380007 +00700001C1C000007F0000191A7E991E>I<0783F000FF8C1C00FFB00F0007A0078007C003C007 +8003E0078001E0078001F0078001F0078000F8078000F8078000F8078000F8078000F8078000F8 +078000F8078000F0078001F0078001F0078001E0078003C007C003C007C0078007A00E0007983C +000787E00007800000078000000780000007800000078000000780000007800000078000000780 +000007800000FFFC0000FFFC00001D267F9921>I<0787C0FF98E0FF91F00FA1F007C1F007C0E0 +07C000078000078000078000078000078000078000078000078000078000078000078000078000 +07800007800007800007800007C000FFFE00FFFE00141A7F9917>114 D<07F8401C06C03001C0 +6000C06000C0E00040E00040F00040F800007E00007FF0003FFE000FFF0003FF80003FC00007C0 +8001E08001E0C000E0C000E0C000E0E000C0F001C0F80180C4070083F800131A7E9918>I<0080 +000080000080000080000180000180000180000380000380000780000F80001FFF80FFFF800780 +000780000780000780000780000780000780000780000780000780000780000780000780000780 +4007804007804007804007804007804007804003C08001C08000E100003E0012257FA417>I<07 +800780FF80FF80FF80FF800F800F80078007800780078007800780078007800780078007800780 +078007800780078007800780078007800780078007800780078007800780078007800780078007 +8007800F8007800F800380178001C027C000E047FC003F87FC1E1A7F9921>II121 +D E /Fs 24 124 df<00000FF03F000000780CE0800001E00FC3C00003801F87C00007003F07C0 +000F003F03C0001E001E0100001E001E0000001E001E0000003C003C0000003C003C0000003C00 +3C0000003C003C0000003C003C0000003C003C00000078007800000FFFFFFFF0000FFFFFFFF000 +00780078000000780078000000780078000000F000F0000000F000F0000000F000F0000000F000 +F0000000F000F0000000F000F0000001E001E0000001E001E0000001E001E0000001E001E00000 +01E001E0000001E001E0000003C003C0000003C003C0000003C003C0000003C003C0000003C003 +C0000003C003C0000007C007C000007FF87FFE0000FFF87FFE00002A2A7FA923>11 +D<387C7EFC7C3807067B8511>46 D<00000FF00100007FFE030001FC07070007E0018E001F8000 +5E003E00003E007C00003E00F800001E01F000001E03E000000C07C000000C07C000000C0F8000 +000C1F8000000C1F0000000C3F000000083F000000007E000000007E000000007E000000007E00 +000000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC +000000207C000000207C000000207C000000403E000000403E000000801E000000801F00000100 +0F8000020007C000040003E000180001F0003000007E01E000003FFF80000007FC0000282B7AA9 +2B>67 D<01FFFFFFFF03FFFFFFFF000FC0007F000F80000F000F800007000F800007000F800003 +000F800003001F000003001F000003001F000001001F000001001F000801001F000801003E0010 +00003E001000003E001000003E003000003E00F000003FFFF000007FFFE000007C00E000007C00 +6000007C006000007C002000007C00200200F800400400F800400400F800000400F800000800F8 +00000800F800001801F000001001F000003001F000003001F000007001F00000E001F00003E003 +F0000FE0FFFFFFFFC0FFFFFFFFC028297EA829>69 D<01FFFF03FFFE03FFFF07FFFE000FC0001F +80000F80001F00000F80001F00000F80001F00000F80001F00000F80001F00001F00003E00001F +00003E00001F00003E00001F00003E00001F00003E00001F00003E00003E00007C00003E00007C +00003E00007C00003E00007C00003E00007C00003FFFFFFC00007FFFFFF800007C0000F800007C +0000F800007C0000F800007C0000F800007C0000F80000F80001F00000F80001F00000F80001F0 +0000F80001F00000F80001F00000F80001F00001F00003E00001F00003E00001F00003E00001F0 +0003E00001F00003E00001F00003E00003F00007E000FFFF81FFFF00FFFF81FFFF002F297EA82D +>72 D<01FFFF800003FFFF8000000FC00000000F800000000F800000000F800000000F80000000 +0F800000001F000000001F000000001F000000001F000000001F000000001F000000003E000000 +003E000000003E000000003E000000003E000000003E000000007C000000007C000000007C0000 +00007C000000007C000000007C00002000F800004000F800004000F800004000F800008000F800 +008000F800018001F000018001F000030001F000030001F000070001F0000E0001F0003E0003F0 +01FE00FFFFFFFC00FFFFFFFC0023297EA825>76 D<0001FC020007FF06001E038E003800DC0070 +007C00E0003C01E0001C03C0001C03C0001C0380000807800008078000080780000807C0000807 +C0000007E0000003F0000003FE000001FFE00001FFFE0000FFFF00003FFF80000FFFC00000FFE0 +00000FE0000003F0000001F0000001F0000001F0200000F0200000F0200000F0200000E0600001 +E0600001E0700001C0700003C0780007807C000700E6001E00E3C07C00C1FFF000803FC0001F2B +7DA921>83 D<003FC00001C0F0000200380007803C0007C01E000F801E0007801E0002001E0000 +001E0000001E0000001E00001FFC0001F83C0007C03C000F803C001E003C003E003C007C007820 +F8007820F8007820F8007820F800F820F80178407C0278403E0C3F8007F01E001B1A7D991E>97 +D<01E000003FE000003FE0000003C0000003C0000003C0000003C0000003C0000003C000000780 +000007800000078000000780000007800000078000000F0000000F07E0000F1838000F600E000F +800F000F0007001F0007801E0007C01E0003C01E0003C01E0003C01E0003C03C0007C03C0007C0 +3C0007C03C0007C03C0007803C000F8078000F8078000F0078001E0078001C0078003800740070 +00E200E000C103800080FE00001A2A7AA921>I<001FF000700C01E00203801E07001F0F003E1E +001E3E00083C00007C00007C0000780000F80000F80000F80000F80000F80000F80000F8000078 +00087800083C00101C00200E004007038001FC00181A7C991B>I<0000007800000FF800000FF8 +000000F0000000F0000000F0000000F0000000F0000000F0000001E0000001E0000001E0000001 +E0000001E0000001E0000003C0000FC3C0007833C001E00BC003800BC0070007C00F0007801E00 +07803E0007803C0007807C0007807C00078078000F00F8000F00F8000F00F8000F00F8000F00F8 +000F00F8001E00F8001E0078001E0078001E0038003E001C005E000E01BE0007063FE001F83FE0 +1D2A7CA921>I<001F8000F0E001C03003803807003C0E001C1E001C3E001E3C001E7C001E7C00 +1EFFFFFCF80000F80000F80000F80000F80000F80000F800007800087800083800101C00200E00 +C007030001FC00171A7C991B>I<0000003C0007E0C2003C390E00701E0E00E01E0401E01E0003 +E01F0003C01F0007C01F0007C01F0007C01F0007C01E0007C03E0007C03C0003C0780001C07000 +02E1E000063F000004000000040000000C0000000C0000000E00000007FFF00003FFFC0003FFFE +000E001F0018000780380003807000038070000380E0000380E0000380E0000380E00007007000 +0E0030001C001C0038000F01E00001FF00001F287F9A1E>103 D<000F000001FF000001FF0000 +001E0000001E0000001E0000001E0000001E0000001E0000003C0000003C0000003C0000003C00 +00003C0000003C00000078000000783F800078C1C0007900E0007A00F0007C00F000F800F000F8 +00F000F000F000F000F000F000F000F000F001E001E001E001E001E001E001E001E001E001E001 +E001E003C003C003C003C003C003C003C003C003C003C003C003C007C007C07FFC7FFCFFFCFFFC +1E2A7FA921>I<001C003E003E007E003E001C0000000000000000000000000000000000000078 +07F807F800F800F800F000F000F000F000F000F001E001E001E001E001E001E003C003C003C003 +C003C003C007C07FF8FFF80F297FA811>I<00781FC00FE00FF860E030700FF98070C03800FA00 +79003C00FC007A003C00F4007A003C00F8007C003C00F00078003C00F00078003C00F00078003C +00F00078003C01E000F0007801E000F0007801E000F0007801E000F0007801E000F0007801E000 +F0007803C001E000F003C001E000F003C001E000F003C001E000F003C001E000F003C001E000F0 +07C003E001F07FFC3FFE1FFFFFFC7FFE3FFF301A7F9933>109 D<00783F800FF8C1C00FF900E0 +00FA00F000FC00F000F800F000F800F000F000F000F000F000F000F000F000F001E001E001E001 +E001E001E001E001E001E001E001E001E003C003C003C003C003C003C003C003C003C003C003C0 +03C007C007C07FFC7FFCFFFCFFFC1E1A7F9921>I<001FC0000070700001C01C0003800E000700 +0E000E000F001E0007803C0007803C0007807C0007807C00078078000F80F8000F80F8000F80F8 +000F80F8000F80F8001F00F8001F00F8001E0078003C0078003C00380078001C00F0000E01C000 +0707800001FC0000191A7C991E>I<001E0FC00003FE30700003FEC03C00003F001E00001E001E +00003E000F00003C000F80003C000F80003C000F80003C000F80003C000F800078000F80007800 +0F800078000F800078000F800078000F000078001F0000F0001F0000F0003E0000F0003C0000F0 +00780000F000F00000F800E00001E403C00001E207000001E1FC000001E000000001E000000001 +E000000003C000000003C000000003C000000003C000000003C000000003C000000007C0000000 +7FFC000000FFFC0000002126819921>I<00787C0FF98E0FFA1F00FA1F00FC1E00F81E00F80000 +F80000F00000F00000F00001E00001E00001E00001E00001E00001E00003C00003C00003C00003 +C00003C00003C00007C0007FFE00FFFE00181A7F9917>114 D<003F8401C06C03001C06000C0E +000C0C00081C00081E00081F00001FC0000FFE0007FF8003FFC000FFE0000FF00001F02000F060 +00706000706000706000707000607000C0E80180C6070081FC00161A7E9918>I<002000002000 +00200000600000400000C00000C00001C00001C00003C0000780001FFF80FFFF80078000078000 +0780000F00000F00000F00000F00000F00000F00001E00001E00001E00001E00001E01001E0100 +3C02003C02003C02003C02003C04001C04001C08000E100003E00011257BA417>I<07800780FF +80FF80FF80FF800F800F800F800F800F000F000F000F000F000F000F000F000F000F000F000F00 +1E001E001E001E001E001E001E001E001E001E001E001E003C003C003C003C003C003C003C007C +003C007C003C00BC001C017C000E067FC003F87FC01A1A7B9921>I123 +D E /Ft 80 125 df<001F83E000706E3000C07C780180F8780380F07807007000070070000700 +7000070070000700700007007000070070000700700007007000FFFFFFC0070070000700700007 +007000070070000700700007007000070070000700700007007000070070000700700007007000 +070070000700700007007000070070000700700007007000070078007FE3FF801D2380A21C>11 +D<001FC0000070200000C010000180380003807800070078000700300007000000070000000700 +000007000000070000000700000007000000FFFFF8000700780007003800070038000700380007 +003800070038000700380007003800070038000700380007003800070038000700380007003800 +07003800070038000700380007003800070038007FE1FF80192380A21B>I<001FD80000703800 +00C078000180780003807800070038000700380007003800070038000700380007003800070038 +000700380007003800FFFFF8000700380007003800070038000700380007003800070038000700 +380007003800070038000700380007003800070038000700380007003800070038000700380007 +00380007003800070038007FF3FF80192380A21B>I<000FC07F00007031C08000E00B00400180 +1E00E003803E01E007003C01E007001C00C007001C000007001C000007001C000007001C000007 +001C000007001C000007001C0000FFFFFFFFE007001C01E007001C00E007001C00E007001C00E0 +07001C00E007001C00E007001C00E007001C00E007001C00E007001C00E007001C00E007001C00 +E007001C00E007001C00E007001C00E007001C00E007001C00E007001C00E007001C00E07FF1FF +CFFE272380A229>I<000FE07F60007011C0E000E01B01E001803E01E003803E01E007001C00E0 +07001C00E007001C00E007001C00E007001C00E007001C00E007001C00E007001C00E007001C00 +E0FFFFFFFFE007001C00E007001C00E007001C00E007001C00E007001C00E007001C00E007001C +00E007001C00E007001C00E007001C00E007001C00E007001C00E007001C00E007001C00E00700 +1C00E007001C00E007001C00E007001C00E007001C00E07FF1FFCFFE272380A229>I<003C0000 +00006200000000C200000001810000000181000000038100000003810000000381000000038100 +0000038200000003820000000384000000038800000001C800000001D000000001E003FF8001C0 +007C0000E000380001E000300001F0002000027000400004700040000838008000183C00800030 +1C010000701E020000700E020000F007040000F007880000F003880000F001D00100F000E00100 +78007003003800B802003C031C04000E0C0E0C0003F003F00021257EA326>38 +D<70F8FCFC7404040404080810102040060F7CA20E>I<00200040008001000300060004000C00 +0C00180018003000300030007000600060006000E000E000E000E000E000E000E000E000E000E0 +00E000E000E000E0006000600060007000300030003000180018000C000C000400060003000100 +0080004000200B327CA413>I<800040002000100018000C000400060006000300030001800180 +018001C000C000C000C000E000E000E000E000E000E000E000E000E000E000E000E000E000E000 +C000C000C001C0018001800180030003000600060004000C00180010002000400080000B327DA4 +13>I<70F8FCFC7404040404080810102040060F7C840E>44 DI<70F8F8 +F87005057C840E>I<000080000180000180000300000300000300000600000600000600000C00 +000C00000C0000180000180000180000300000300000300000600000600000600000C00000C000 +00C0000180000180000180000180000300000300000300000600000600000600000C00000C0000 +0C0000180000180000180000300000300000300000600000600000600000C00000C00000C00000 +11317DA418>I<01F000071C000C06001803003803803803807001C07001C07001C07001C0F001 +E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001 +E07001C07001C07001C07803C03803803803801C07000C0600071C0001F00013227EA018>I<00 +8003800F80F3800380038003800380038003800380038003800380038003800380038003800380 +0380038003800380038003800380038003800380038007C0FFFE0F217CA018>I<03F0000C1C00 +1007002007804003C04003C08003E0F003E0F801E0F801E0F801E02003E00003E00003C00003C0 +000780000700000E00001C0000180000300000600000C000018000010000020020040020080020 +1800603000403FFFC07FFFC0FFFFC013217EA018>I<03F8000C1E001007002007804007C07807 +C07803C07807C03807C0000780000780000700000F00000E0000380003F000001C00000F000007 +800007800003C00003C00003E02003E07003E0F803E0F803E0F003C04003C0400780200780100F +000C1C0003F00013227EA018>I<000200000600000E00000E00001E00001E00002E00004E0000 +4E00008E00008E00010E00020E00020E00040E00040E00080E00100E00100E00200E00200E0040 +0E00800E00FFFFF8000E00000E00000E00000E00000E00000E00000E00001F0001FFF015217FA0 +18>I<1000801E07001FFF001FFE001FF80013E000100000100000100000100000100000100000 +10F800130E001407001803801003800001C00001C00001E00001E00001E00001E07001E0F001E0 +F001E0E001C08001C04003C04003802007001006000C1C0003F00013227EA018>I<007E0001C1 +000300800601C00E03C01C03C0180180380000380000780000700000700000F0F800F30C00F406 +00F40300F80380F801C0F001C0F001E0F001E0F001E0F001E0F001E07001E07001E07001E03801 +C03801C01803801C03000C0600070C0001F00013227EA018>I<4000006000007FFFE07FFFC07F +FFC0400080C0010080010080020080020000040000080000080000100000300000200000600000 +600000600000E00000C00000C00001C00001C00001C00001C00003C00003C00003C00003C00003 +C00003C00003C00003C00001800013237DA118>I<01F800060E000803001001802001802000C0 +6000C06000C06000C07000C07801803E01003F02001FC4000FF80003F80003FC00067F00083F80 +100F803007C06001C06000E0C000E0C00060C00060C00060C000606000406000C0300080180300 +0E0E0003F00013227EA018>I<01F000060C000C0600180700380380700380700380F001C0F001 +C0F001C0F001E0F001E0F001E0F001E0F001E07001E07003E03803E01805E00C05E00619E003E1 +E00001C00001C00001C0000380000380300300780700780600700C002018001030000FC0001322 +7EA018>I<70F8F8F870000000000000000000000070F8F8F87005157C940E>I<70F8F8F8700000 +00000000000000000070F8F8F87808080808101010204040051F7C940E>I<07E01838201C400E +800FF00FF00FF00F000F000E001C00380030006000C000C0008000800180010001000100010001 +00010000000000000000000000038007C007C007C0038010237DA217>63 +D<0001800000018000000180000003C0000003C0000003C0000005E0000005E000000DF0000008 +F0000008F0000010F800001078000010780000203C0000203C0000203C0000401E0000401E0000 +401E0000800F0000800F0000FFFF000100078001000780030007C0020003C0020003C0040003E0 +040001E0040001E00C0000F00C0000F03E0001F8FF800FFF20237EA225>65 +DI<0007E0100038183000E00630 +01C00170038000F0070000F00E0000701E0000701C0000303C0000303C0000307C000010780000 +1078000010F8000000F8000000F8000000F8000000F8000000F8000000F8000000F80000007800 +0000780000107C0000103C0000103C0000101C0000201E0000200E000040070000400380008001 +C0010000E0020000381C000007E0001C247DA223>IIII<0007F008003C0C1800E0021801C001B803 +8000F8070000780F0000381E0000381E0000183C0000183C0000187C0000087800000878000008 +F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8001FFF780000F8780000 +787C0000783C0000783C0000781E0000781E0000780F00007807000078038000B801C000B800E0 +0318003C0C080007F00020247DA226>II +I<03FFF0001F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F +00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F +00700F00F80F00F80F00F80E00F01E00401C0020380018700007C00014237EA119>IIIII<000FE00000783C0000E00E0003C00780078003C00F0001E00E0000 +E01E0000F03C0000783C0000787C00007C7C00007C7800003C7800003CF800003EF800003EF800 +003EF800003EF800003EF800003EF800003EF800003EF800003E7800003C7C00007C7C00007C3C +0000783E0000F81E0000F00F0001E00F0001E0078003C003C0078000E00E0000783C00000FE000 +1F247DA226>II<000FE0000078 +3C0000E00E0003C00780078003C00F0001E00E0000E01E0000F03E0000F83C0000787C00007C7C +00007C7800003C7800003CF800003EF800003EF800003EF800003EF800003EF800003EF800003E +F800003EF800003E7800003C7C00007C7C00007C3C0000783C0000781E0380F00E0420E00F0801 +E0078813C003C8178000E80E00007C3C02000FEC0200000C0200000C0200000E0600000F0E0000 +07FC000007FC000007F8000003F8000001E01F2D7DA226>II<03F0200C0C601802603001E07000E0600060E00060E00060E00020 +E00020E00020F00000F000007800007F00003FF0001FFE000FFF0003FF80003FC00007E00001E0 +0000F00000F0000070800070800070800070800070C00060C00060E000C0F000C0C80180C60700 +81FC0014247DA21B>I<7FFFFFF87807807860078018400780084007800840078008C007800C80 +078004800780048007800480078004000780000007800000078000000780000007800000078000 +000780000007800000078000000780000007800000078000000780000007800000078000000780 +000007800000078000000780000007800000078000000FC00003FFFF001E227EA123>IIII<7FF807 +FF0007E001F80003C000E00003E000C00001E000800000F001000000F80300000078020000007C +040000003E0C0000001E080000001F100000000FB000000007A000000007C000000003E0000000 +01E000000001F000000003F80000000278000000047C0000000C3E000000081E000000101F0000 +00300F80000020078000004007C00000C003E000008001E000010001F000030000F000070000F8 +001F8001FC00FFE007FFC022227FA125>I91 +D93 D<0FE0001838003C0C003C0E001807000007000007 +0000070000FF0007C7001E07003C0700780700700700F00708F00708F00708F00F087817083C23 +900FC1E015157E9418>97 D<0E0000FE00001E00000E00000E00000E00000E00000E00000E0000 +0E00000E00000E00000E00000E00000E1F000E61C00E80600F00300E00380E003C0E001C0E001E +0E001E0E001E0E001E0E001E0E001E0E001E0E001C0E003C0E00380F00700C80600C41C0083F00 +17237FA21B>I<01FE000703000C07801C0780380300780000700000F00000F00000F00000F000 +00F00000F00000F000007000007800403800401C00800C010007060001F80012157E9416>I<00 +00E0000FE00001E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E000 +00E001F8E00704E00C02E01C01E03800E07800E07000E0F000E0F000E0F000E0F000E0F000E0F0 +00E0F000E07000E07800E03800E01801E00C02E0070CF001F0FE17237EA21B>I<01FC00070700 +0C03801C01C03801C07801E07000E0F000E0FFFFE0F00000F00000F00000F00000F00000700000 +7800203800201C00400E008007030000FC0013157F9416>I<003C00C6018F038F030F07000700 +0700070007000700070007000700FFF80700070007000700070007000700070007000700070007 +0007000700070007000700070007807FF8102380A20F>I<00007001F198071E180E0E181C0700 +1C07003C07803C07803C07803C07801C07001C07000E0E000F1C0019F000100000100000180000 +1800001FFE000FFFC00FFFE03800F0600030400018C00018C00018C000186000306000303800E0 +0E038003FE0015217F9518>I<0E0000FE00001E00000E00000E00000E00000E00000E00000E00 +000E00000E00000E00000E00000E00000E1F800E60C00E80E00F00700F00700E00700E00700E00 +700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E0070FFE7 +FF18237FA21B>I<1C001E003E001E001C00000000000000000000000000000000000E00FE001E +000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00FFC00A22 +7FA10E>I<01C003E003E003E001C00000000000000000000000000000000001E00FE001E000E0 +00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000 +E000E000E060E0F0C0F18061803E000B2C82A10F>I<0E0000FE00001E00000E00000E00000E00 +000E00000E00000E00000E00000E00000E00000E00000E00000E03FC0E01F00E01C00E01800E02 +000E04000E08000E10000E38000EF8000F1C000E1E000E0E000E07000E07800E03C00E01C00E01 +E00E00F00E00F8FFE3FE17237FA21A>I<0E00FE001E000E000E000E000E000E000E000E000E00 +0E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E +000E000E000E00FFE00B237FA20E>I<0E1FC07F00FE60E183801E807201C00F003C00E00F003C +00E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E00 +3800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E0FF +E3FF8FFE27157F942A>I<0E1F80FE60C01E80E00F00700F00700E00700E00700E00700E00700E +00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E0070FFE7FF18157F94 +1B>I<01FC000707000C01801800C03800E0700070700070F00078F00078F00078F00078F00078 +F00078F000787000707800F03800E01C01C00E038007070001FC0015157F9418>I<0E1F00FE61 +C00E80600F00700E00380E003C0E001C0E001E0E001E0E001E0E001E0E001E0E001E0E001E0E00 +3C0E003C0E00380F00700E80E00E41C00E3F000E00000E00000E00000E00000E00000E00000E00 +000E00000E0000FFE000171F7F941B>I<01F8200704600E02601C01603801E07800E07800E0F0 +00E0F000E0F000E0F000E0F000E0F000E0F000E07000E07800E03801E01C01E00C02E0070CE001 +F0E00000E00000E00000E00000E00000E00000E00000E00000E00000E0000FFE171F7E941A>I< +0E3CFE461E8F0F0F0F060F000E000E000E000E000E000E000E000E000E000E000E000E000E000F +00FFF010157F9413>I<0F8830786018C018C008C008E008F0007F803FE00FF001F8003C801C80 +0C800CC00CC008E018D0308FC00E157E9413>I<02000200020002000600060006000E001E003E +00FFF80E000E000E000E000E000E000E000E000E000E000E000E040E040E040E040E040E040708 +030801F00E1F7F9E13>I<0E0070FE07F01E00F00E00700E00700E00700E00700E00700E00700E +00700E00700E00700E00700E00700E00700E00700E00F00E00F006017003827800FC7F18157F94 +1B>IIII< +FFC1FE1E00780E00300E00200E002007004007004003808003808003808001C10001C10000E200 +00E20000E200007400007400003800003800003800001000001000002000002000002000004000 +F04000F08000F180004300003C0000171F7F941A>I<3FFFC0380380300780200700600E00401C +00403C0040380000700000E00001E00001C0000380400700400F00400E00C01C00803800807801 +80700780FFFF8012157F9416>III +E /Fu 35 124 df<0001E0000003E000000FE000007FE0001FFFE000FFFFE000FFBFE000E03FE0 +00003FE000003FE000003FE000003FE000003FE000003FE000003FE000003FE000003FE000003F +E000003FE000003FE000003FE000003FE000003FE000003FE000003FE000003FE000003FE00000 +3FE000003FE000003FE000003FE000003FE000003FE000003FE000003FE000003FE000003FE000 +003FE000003FE000003FE000003FE000003FE000003FE0007FFFFFF07FFFFFF07FFFFFF01C2E7A +AD29>49 D<003FF00001FFFE0007FFFF800FC07FE01E001FF03C000FF87F0007FC7F8007FEFFC0 +07FEFFC003FEFFC003FFFFC003FF7F8003FF7F8003FF3F0003FF000003FF000003FE000003FE00 +0007FC000007FC00000FF800000FF000001FE000001FC000003F8000007F000000FE000001F800 +0001F0000003E00000078007000F0007001E0007003C000F0078000E00F0000E01C0001E03FFFF +FE07FFFFFE0FFFFFFE1FFFFFFE3FFFFFFE7FFFFFFCFFFFFFFCFFFFFFFCFFFFFFFC202E7CAD29> +I<000FFC0000007FFF800001F01FE00003C00FF000070007F8000FE007FC000FF007FC001FF007 +FE001FF807FE001FF807FE001FF807FE001FF807FE000FF007FC0007E007FC00018007FC000000 +0FF80000000FF00000001FE00000001FC00000007F8000001FFE0000001FFC0000001FFF800000 +001FF000000007F800000003FC00000003FE00000003FF00000001FF80000001FF800E0001FFC0 +3F8001FFC07FC001FFC07FC001FFC0FFE001FFC0FFE001FFC0FFE001FF80FFE001FF80FFC003FF +007F8003FF003F0003FE001F0007FC000FE01FF80007FFFFE00001FFFF8000001FFC0000222E7D +AD29>I<0000007800000000F800000001F800000003F800000007F800000007F80000000FF800 +00001FF80000003FF80000007FF800000077F8000000F7F8000001E7F8000003C7F800000787F8 +00000707F800000F07F800001E07F800003C07F800007807F800007007F80000F007F80001E007 +F80003C007F800078007F8000F0007F8000F0007F8001E0007F8003C0007F800780007F800F000 +07F800FFFFFFFFF0FFFFFFFFF0FFFFFFFFF000000FF80000000FF80000000FF80000000FF80000 +000FF80000000FF80000000FF80000000FF80000000FF800000FFFFFF0000FFFFFF0000FFFFFF0 +242E7EAD29>I<0000007C0000000000007C000000000000FE000000000000FE000000000000FE +000000000001FF000000000001FF000000000003FF800000000003FF800000000007FFC0000000 +0007FFC00000000007FFC0000000000FFFE0000000000F7FE0000000001F7FF0000000001E3FF0 +000000001E3FF0000000003E3FF8000000003C1FF8000000007C1FFC00000000780FFC00000000 +780FFC00000000F80FFE00000000F007FE00000001F007FF00000001E003FF00000001E003FF00 +000003E003FF80000003C001FF80000007C001FFC00000078000FFC00000078000FFC000000FFF +FFFFE000000FFFFFFFE000001FFFFFFFF000001E00003FF000001E00003FF000003C00003FF800 +003C00001FF800007C00001FFC00007800000FFC00007800000FFC0000F0000007FE0000F00000 +07FE0001F0000007FF0003F8000003FF00FFFFC001FFFFFEFFFFC001FFFFFEFFFFC001FFFFFE37 +317DB03E>65 DI<000003FF80018000003FFFF003800001FFFFFC0F800007FF007F1F80001FF8000F +BF80003FE00003FF8000FF800000FF8001FF0000007F8003FE0000003F8007FC0000003F8007FC +0000001F800FF80000001F801FF80000000F801FF00000000F803FF000000007803FF000000007 +807FF000000007807FE000000007807FE000000000007FE00000000000FFE00000000000FFE000 +00000000FFE00000000000FFE00000000000FFE00000000000FFE00000000000FFE00000000000 +FFE00000000000FFE000000000007FE000000000007FE000000000007FE000000000007FF00000 +0003803FF000000003803FF000000003801FF000000003801FF800000007800FF8000000070007 +FC000000070007FC0000000E0003FE0000001E0001FF0000003C0000FF8000007800003FE00000 +F000001FF80003E0000007FF003F80000001FFFFFE000000003FFFF80000000003FF8000003131 +7BB03C>I73 D77 DI<00000FFE0000000000FFFFE000000007FFFFFC0000001FFC07 +FF0000003FE000FF800000FF80003FE00001FF00001FF00003FE00000FF80007FC000007FC0007 +FC000007FC000FF8000003FE001FF8000003FF001FF0000001FF003FF0000001FF803FF0000001 +FF803FF0000001FF807FE0000000FFC07FE0000000FFC07FE0000000FFC0FFE0000000FFE0FFE0 +000000FFE0FFE0000000FFE0FFE0000000FFE0FFE0000000FFE0FFE0000000FFE0FFE0000000FF +E0FFE0000000FFE0FFE0000000FFE0FFE0000000FFE0FFE0000000FFE07FE0000000FFC07FE000 +0000FFC07FF0000001FFC07FF0000001FFC03FF0000001FF803FF0000001FF801FF8000003FF00 +1FF8000003FF000FFC000007FE000FFC000007FE0007FE00000FFC0003FF00001FF80001FF8000 +3FF00000FFC0007FE000003FE000FF8000001FFC07FF00000007FFFFFC00000000FFFFE0000000 +000FFE00000033317BB03E>II82 D<001FF0018000FFFF038003FFFFC78007F00FFF800F8001FF801F00 +007F803F00001F803E00000F807E00000F807E00000780FE00000780FE00000780FE00000380FF +00000380FF00000380FF80000000FFE00000007FFC0000007FFFE000007FFFFE00003FFFFFC000 +1FFFFFF0001FFFFFF8000FFFFFFC0003FFFFFE0001FFFFFF00007FFFFF80001FFFFF800000FFFF +C0000007FFC0000000FFE00000003FE00000003FE00000001FE06000001FE0E000000FE0E00000 +0FE0E000000FE0E000000FC0F000000FC0F000000FC0F800001F80FC00001F80FF00003F00FFC0 +007E00FFFC01FC00F1FFFFF800E03FFFE000C007FF000023317BB02E>I<3FFFFFFFFFFF003FFF +FFFFFFFF003FFFFFFFFFFF003FE00FFC01FF007F000FFC003F807E000FFC001F807C000FFC000F +8078000FFC00078078000FFC00078070000FFC00038070000FFC00038070000FFC00038070000F +FC000380E0000FFC0001C0E0000FFC0001C0E0000FFC0001C0E0000FFC0001C000000FFC000000 +00000FFC00000000000FFC00000000000FFC00000000000FFC00000000000FFC00000000000FFC +00000000000FFC00000000000FFC00000000000FFC00000000000FFC00000000000FFC00000000 +000FFC00000000000FFC00000000000FFC00000000000FFC00000000000FFC00000000000FFC00 +000000000FFC00000000000FFC00000000000FFC00000000000FFC00000000000FFC0000000000 +0FFC00000000000FFC00000000000FFC00000000000FFC00000000000FFC000000007FFFFFFF80 +00007FFFFFFF8000007FFFFFFF800032307DAF39>I<007FF8000003FFFF000007FFFFC0000FE0 +1FE0001FF007F0001FF003F8001FF003FC001FF001FE000FE001FE0007C001FE00010001FE0000 +0001FE00000001FE000001FFFE00003FFFFE0001FFF1FE0007FE01FE000FF001FE001FC001FE00 +3F8001FE007F8001FE00FF0001FE00FF0001FE00FF0001FE00FF0001FE00FF0003FE007F8003FE +007FC00EFE003FF03CFF000FFFF87FF807FFF03FF800FF800FF825207E9F28>97 +D<01F8000000FFF8000000FFF8000000FFF80000000FF800000007F800000007F800000007F800 +000007F800000007F800000007F800000007F800000007F800000007F800000007F800000007F8 +00000007F800000007F800000007F80FF00007F87FFE0007F9FFFF8007FFE03FC007FF000FE007 +FE0007F007F80003F807F80003FC07F80003FC07F80001FE07F80001FE07F80001FE07F80001FF +07F80001FF07F80001FF07F80001FF07F80001FF07F80001FF07F80001FF07F80001FF07F80001 +FE07F80001FE07F80001FE07F80003FC07F80003FC07FC0007F807FE0007F007F7001FE007E3E0 +7FC007C1FFFF0007807FFE0007001FE00028327EB12E>I<0007FF00007FFFE000FFFFF003FC03 +F807F007FC0FE007FC1FE007FC3FC007FC3FC003F87FC001F07F8000407F800000FF800000FF80 +0000FF800000FF800000FF800000FF800000FF800000FF8000007F8000007FC000007FC000003F +C0000E3FE0000E1FE0001C0FF0001C07F8007803FF01F000FFFFE0007FFF800007FC001F207D9F +25>I<00000007E0000003FFE0000003FFE0000003FFE00000003FE00000001FE00000001FE000 +00001FE00000001FE00000001FE00000001FE00000001FE00000001FE00000001FE00000001FE0 +0000001FE00000001FE00000001FE0000FF81FE0007FFF1FE001FFFFDFE003FE03FFE007F800FF +E00FE0003FE01FE0001FE03FC0001FE03FC0001FE07F80001FE07F80001FE07F80001FE0FF8000 +1FE0FF80001FE0FF80001FE0FF80001FE0FF80001FE0FF80001FE0FF80001FE0FF80001FE07F80 +001FE07F80001FE07F80001FE03FC0001FE03FC0001FE01FC0003FE00FE0007FE007F001FFE003 +FC07DFF001FFFF9FFF007FFE1FFF000FF01FFF28327DB12E>I<0007FC0000003FFF800000FFFF +E00003FC07F00007F801F8000FE000FC001FE0007E003FC0007E003FC0003F007FC0003F007F80 +003F007F80003F80FF80003F80FF80003F80FFFFFFFF80FFFFFFFF80FFFFFFFF80FF80000000FF +80000000FF800000007F800000007F800000003FC00000003FC00003801FC00003801FE0000780 +0FF0000F0007F8001E0003FE00FC0000FFFFF800003FFFE0000003FF000021207E9F26>I<0000 +FF000007FFC0001FFFE0003FC7F0007F0FF800FE0FF801FE0FF801FC0FF803FC07F003FC03E003 +FC01C003FC000003FC000003FC000003FC000003FC000003FC000003FC0000FFFFF800FFFFF800 +FFFFF80003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC00 +0003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC +000003FC000003FC000003FC000003FC000003FC000003FC000003FC00007FFFF0007FFFF0007F +FFF0001D327EB119>I<001FF007E000FFFE3FF001FFFF7FF807F83FF1F80FE00FE1F80FE00FE0 +F01FC007F0601FC007F0003FC007F8003FC007F8003FC007F8003FC007F8003FC007F8001FC007 +F0001FC007F0000FE00FE0000FE00FE00007F83FC00007FFFF000006FFFE00000E1FF000000E00 +0000001E000000001E000000001F000000001F800000001FFFFFC0000FFFFFF8000FFFFFFE0007 +FFFFFF0003FFFFFF8007FFFFFFC01FFFFFFFE03F00007FE07E00000FF0FC000007F0FC000003F0 +FC000003F0FC000003F0FC000003F07E000007E03F00000FC01FC0003F800FF801FF0007FFFFFE +0000FFFFF000001FFF8000252F7E9F29>I<01F800000000FFF800000000FFF800000000FFF800 +0000000FF80000000007F80000000007F80000000007F80000000007F80000000007F800000000 +07F80000000007F80000000007F80000000007F80000000007F80000000007F80000000007F800 +00000007F80000000007F807F8000007F83FFF000007F87FFF800007F8F03FC00007F9C01FE000 +07FB000FE00007FE000FF00007FE000FF00007FC000FF00007FC000FF00007F8000FF00007F800 +0FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF000 +07F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F800 +0FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF000FFFFC1FFFF80FFFFC1FFFF80 +FFFFC1FFFF8029327DB12E>I<03C0000FF0000FF0001FF8001FF8001FFC001FF8001FF8000FF0 +000FF00003C00000000000000000000000000000000000000000000000000001F800FFF800FFF8 +00FFF8000FF80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F8 +0007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F8 +00FFFF80FFFF80FFFF8011337DB217>I<01F8000000FFF8000000FFF8000000FFF80000000FF8 +00000007F800000007F800000007F800000007F800000007F800000007F800000007F800000007 +F800000007F800000007F800000007F800000007F800000007F800000007F8007FFC07F8007FFC +07F8007FFC07F8001FC007F8001F0007F8003E0007F800780007F801F00007F803E00007F80780 +0007F81F000007F83E000007F87C000007F9FE000007FBFF000007FFFF800007FF7FC00007FE3F +E00007F81FE00007F01FF00007F00FF80007F007FC0007F003FE0007F001FF0007F000FF0007F0 +00FF8007F0007FC007F0003FE007F0003FF0FFFF80FFFFFFFF80FFFFFFFF80FFFF28327EB12C> +107 D<01F800FFF800FFF800FFF8000FF80007F80007F80007F80007F80007F80007F80007F800 +07F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F800 +07F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F800 +07F80007F80007F80007F80007F80007F80007F80007F80007F800FFFFC0FFFFC0FFFFC012327D +B117>I<03F007F8000FF000FFF03FFF007FFE00FFF07FFF80FFFF00FFF0F03FC1E07F800FF1C0 +1FE3803FC007F3000FE6001FC007F6000FFC001FE007FE000FFC001FE007FC000FF8001FE007FC +000FF8001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007 +F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE0 +07F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001F +E007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF000 +1FE0FFFFC1FFFF83FFFFFFFFC1FFFF83FFFFFFFFC1FFFF83FFFF40207D9F45>I<03F007F80000 +FFF03FFF0000FFF07FFF8000FFF0F03FC0000FF1C01FE00007F3000FE00007F6000FF00007FE00 +0FF00007FC000FF00007FC000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF000 +07F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F800 +0FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF000 +07F8000FF00007F8000FF000FFFFC1FFFF80FFFFC1FFFF80FFFFC1FFFF8029207D9F2E>I<0007 +FE0000003FFFC00000FFFFF00003FC03FC0007F000FE000FE0007F001FC0003F803FC0003FC03F +C0003FC07F80001FE07F80001FE07F80001FE0FF80001FF0FF80001FF0FF80001FF0FF80001FF0 +FF80001FF0FF80001FF0FF80001FF0FF80001FF07F80001FE07F80001FE07F80001FE03FC0003F +C03FC0003FC01FE0007F800FE0007F0007F801FE0003FE07FC0001FFFFF800003FFFC0000007FE +000024207E9F29>I<03F03F00FFF07FC0FFF1FFE0FFF3C7F00FF38FF807F70FF807F60FF807FE +0FF807FC07F007FC03E007FC008007F8000007F8000007F8000007F8000007F8000007F8000007 +F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F80000 +07F8000007F80000FFFFE000FFFFE000FFFFE0001D207E9F22>114 D<00FF870007FFEF001FFF +FF003F007F003C001F0078000F00F8000700F8000700F8000700FC000700FF000000FFF800007F +FFC0003FFFF0003FFFFC000FFFFE0007FFFF0001FFFF80001FFF800000FFC000001FC060000FC0 +E00007C0E00007C0F00007C0F8000780F8000F80FE000F00FF803E00FFFFFC00F3FFF800C07FC0 +001A207D9F21>I<00380000380000380000380000380000780000780000780000F80000F80001 +F80003F80007F8001FF800FFFFFEFFFFFEFFFFFE07F80007F80007F80007F80007F80007F80007 +F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80707F80707F80707 +F80707F80707F80707F80703F80E03FC0E01FE1C00FFF8007FF0000FE0182E7EAD20>I<01F800 +03F000FFF801FFF000FFF801FFF000FFF801FFF0000FF8001FF00007F8000FF00007F8000FF000 +07F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F800 +0FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF000 +07F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8001FF00007F8001FF00003F800 +3FF00003F8006FF00001FE03CFF80000FFFF8FFF80007FFF0FFF80000FFC0FFF8029207D9F2E> +I119 +D123 D E end +%%EndProlog +%%BeginSetup +TeXDict begin + +%%EndSetup +%%Page: 1 1 +0 bop 367 90 a Fu(Coun)n(tering)26 b(Abuse)h(of)h(Name{Based)691 +182 y(Authen)n(tication)1260 156 y Ft(1)397 349 y Fs(Christoph)20 +b(L.)g(Sc)n(h)n(uba)h(and)f(Eugene)f(H.)h(Spa\013ord)728 475 +y Fr(CO)n(AST)h(Lab)r(oratory)541 550 y(Departmen)n(t)e(of)h(Computer)f +(Sciences)750 625 y(Purdue)h(Univ)n(ersit)n(y)587 700 y(W)-5 +b(est)19 b(Lafa)n(y)n(ette,)h(IN)f(47907-1398)624 774 y Fq(f)p +Fp(schuba,spaf)p Fq(g)p Fp(@cs.purdue.)o(edu)889 959 y Fo(Abstract)279 +1044 y Fn(Authen)o(tication)f(for)f(access)h(con)o(trol)f(pro)q(cedures)h(is) +g(usually)g(based)g(on)f(the)h(iden-)211 1100 y(tit)o(y)f(of)h(participating) +h(en)o(tities.)28 b(In)18 b(some)g(comm)o(unications)g(systems,)g(iden)o +(tities)h(are)211 1157 y(partially)13 b(or)e(wholly)h(resolv)o(ed)h(using)f +(hostnames)f(or)g(mac)o(hine)i(addresses)f(in)g(the)g(under-)211 +1213 y(lying)17 b(proto)q(col)f(suite.)23 b(Access)17 b(con)o(trol)e(lists)i +(and)f(rev)o(o)q(cation)g(lists)h(are)f(often)g(de\014ned)211 +1269 y(on)g(the)h(basis)f(of)g(hostnames,)g(whereb)o(y)g(the)h(comm)o +(unication)g(subsystem)f(at)g(run)o(time)211 1326 y(utilizes)h(mac)o(hine)f +(addresses.)279 1382 y(After)d(comm)o(unications)i(b)q(et)o(w)o(een)f(t)o(w)o +(o)e(mac)o(hines)j(are)e(established,)j(hosts)d(iden)o(tify)211 +1439 y(eac)o(h)19 b(other)g(b)o(y)h(their)f(proto)q(col)h(addresses.)32 +b(T)l(o)19 b(map)g(this)h(address)f(to)g(a)g(high{lev)o(el)211 +1495 y(name,)f(whic)o(h)h(can)f(then)h(b)q(e)f(compared)g(with)h(access)f +(con)o(trol)f(or)h(rev)o(o)q(cation)g(lists)h(to)211 1552 y(gran)o(t)f(or)g +(den)o(y)i(access,)f(a)g(resolution)h(pro)q(cess)f(is)g(initiated.)33 +b(The)19 b(abstraction)g(from)211 1608 y(proto)q(col)d(addresses)h(to)e +(high{lev)o(el)j(hostnames)e(is)h(necessary)f(to)g(hide)i(details)f(of)f +(het-)211 1665 y(erogeneous)d(comm)o(unication)h(subsystems,)e(and)i(of)e +(dynamic)i(net)o(w)o(ork)e(con\014gurations)211 1721 y(from)18 +b(the)g(application)i(la)o(y)o(er)f(where)g(a)f(uniform,)h(high{lev)o(el)i +(naming)e(sc)o(heme)f(is)h(de-)211 1778 y(sired.)279 1834 y(If)f +(cryptographic)f(capabilities)j(are)e(used)g(that)e(iden)o(tify)j(sub)s +(ject{ob)s(ject)e(in)o(terac-)211 1890 y(tions,)j(authen)o(tication)h +(usually)g(do)q(es)f(not)f(dep)q(end)i(on)f(host)f(iden)o(ti\014cation.)35 +b(Where)211 1947 y(host)17 b(iden)o(ti\014cation)j(is)e(part)f(of)g(the)h +(authen)o(tication,)g(a)g(crucial)h(link)g(in)f(the)g(c)o(hain)g(of)211 +2003 y(authen)o(tication)h(is)g(the)f(asso)q(ciation)h(b)q(et)o(w)o(een)g +(hostnames)f(and)g(their)h(resp)q(ectiv)o(e)h(ad-)211 2060 +y(dresses.)g(The)15 b(v)m(alidit)o(y)i(of)e(the)g(authen)o(tication)h(can)f +(b)q(e)h(trusted)f(only)h(as)f(m)o(uc)o(h)g(as)g(the)211 2116 +y(binding)i(pro)q(cess)f(itself.)279 2173 y(In)i(the)f(In)o(ternet)h(this)g +(name)f(resolution)h(is)g(pro)o(vided)g(b)o(y)f(a)g(widely{implemen)o(ted)211 +2229 y(distributed)f(database)e(system:)19 b(the)c(Domain)f(Name)h(System)f +(\(DNS\).)g(Dynamic)h(con-)211 2286 y(\014guration)g(b)q(eha)o(vior,)h +(system)f(e\016ciency)l(,)i(and)e(v)o(olume)h(of)f(binding)i(requests)e +(demand)211 2342 y(late)i(binding)i(b)q(et)o(w)o(een)f(hostnames)f(and)g +(addresses,)g(and)h(cac)o(hing)g(of)e(the)i(mappings.)211 2399 +y(Therefore,)c(bindings)i(are)d(established)j(\\just)e(in)h(time")f(on)g(a)g +(need)h(basis)f(and)g(are)g(k)o(ept)211 2455 y(v)m(alid)j(for)d(a)h(limited)i +(p)q(erio)q(d)g(of)e(time.)p 89 2536 720 2 v 145 2567 a Fm(1)164 +2582 y Fl(submitted)e(to)h(the)g(t)o(w)o(en)o(t)o(y-second)h(ann)o(ual)e +Fk(T)m(elecomm)o(unicatio)o(ns)f(P)o(olicy)h(Researc)o(h)i(Conference)p +eop +%%Page: 2 2 +1 bop 279 82 a Fn(This)15 b(pap)q(er)g(describ)q(es)g(problems)g(of)f +(name{based)h(authen)o(tication)f(requiring)i(late)211 139 +y(binding)21 b(suc)o(h)e(as)f(that)h(pro)o(vided)g(b)o(y)g(the)g(DNS)g(for)f +(hostname{to{address)g(asso)q(cia-)211 195 y(tions.)23 b(Because)16 +b(forw)o(ard)f(mappings)i(\(where)f(the)g(address)g(is)h(a)f(relation)g(of)g +(the)g(host-)211 252 y(name\))c(and)h(rev)o(erse)f(mappings)i(are)e(main)o +(tained)h(in)h(unrelated)f(parts)f(of)g(the)h(database,)211 +308 y(three)k(lev)o(els)h(of)f(mo)q(di\014cation)h(are)f(p)q(ossible:)25 +b(mo)q(di\014ed)18 b(forw)o(ard)e(mapping,)i(mo)q(di\014ed)211 +364 y(bac)o(kw)o(ard)10 b(mapping,)i(or)e(b)q(oth.)18 b(The)11 +b(mo)q(di\014cation)h(of)e(asso)q(ciations)h(enables)h(the)f(sp)q(o)q(of-)211 +421 y(ing)16 b(of)e(hostnames)h(in)h(sessions)g(that)e(dep)q(end)j(on)e(the)h +(DNS.)279 477 y(W)l(e)j(state)f(the)g(problem)h(in)h(an)e(abstract)g(w)o(a)o +(y)f(and)i(in)h(the)e(concrete)h(case)g(of)f(the)211 534 y(DNS.)c(W)l(e)g +(analyze)h(the)f(conditions)i(that)d(facilitate)j(the)e(exploitation)h(of)f +(the)g(problem)211 590 y(and)h(explain)i(the)e(w)o(eaknesses)g(that)g(are)g +(presen)o(t)g(in)h(the)f(DNS.)279 647 y(W)l(e)h(then)h(explore)f(some)g(p)q +(ossible)i(solutions)f(to)e(the)h(problem.)23 b(All)18 b(our)e(prop)q(osed) +211 703 y(solutions)k(are)e(ev)m(aluated)j(b)o(y)e(a)f(n)o(um)o(b)q(er)i(of)f +(criteria)g(to)g(compare)g(e\013ects)f(of)h(the)g(so-)211 760 +y(lutions.)36 b(Eac)o(h)19 b(of)h(the)g(solutions)h(will)h(either)f(consist)f +(of)g(mec)o(hanisms)g(that)g(enable)211 816 y(arbitrarily)g(c)o(hosen)g(p)q +(olicies,)j(or)c(it)h(will)h(require)f(the)g(implemen)o(tation)h(of)e(a)h +(certain)211 873 y(p)q(olicy)l(.)k(W)l(e)16 b(emphasize)i(the)e(solutions)h +(to)e(impro)o(v)o(e)h(existing)h(name)f(serv)o(ers)g(b)o(y)g(mo)q(d-)211 +929 y(ifying)i(them)g(in)g(a)f(w)o(a)o(y)g(that)f(they)i(rely)g(on)f(less)h +(trust,)f(and)h(to)f(em)o(b)q(ed)h(crytographic)211 985 y(metho)q(ds)d(in)o +(to)g(the)h(name)f(resolution)h(pro)q(cess.)89 1152 y Fu(1)83 +b(In)n(tro)r(duction)89 1261 y Ft(The)19 b(In)o(ternet)f(is)h(a)h(widespread) +f(conglomeration)g(of)g(h)o(undreds)h(of)f(thousands)i(of)f(in)o(tercon-)89 +1322 y(nected)e(heterogeneous)h(net)o(w)o(orks)f(and)h(hosts.)29 +b(The)18 b(design)h(of)g(the)f(In)o(ternet)f(is)i(based)g(on)g(a)89 +1382 y(proto)q(col)e(hierarc)o(h)o(y)l(.)j(There)c(exist)f(m)o(ultiple)e +(implem)o(en)o(tati)o(ons)h(of)j(these)f(proto)q(cols.)162 +1442 y(Computers)21 b(comm)o(uni)o(cate)e(with)i(eac)o(h)f(other)i(on)g(the)f +(basis)h(of)f(di\013eren)o(t)g(t)o(yp)q(es)g(of)g(ad-)89 1502 +y(dresses;)27 b(on)d(the)f(ph)o(ysical)f(la)o(y)o(er)g(using)i(lo)o(w{lev)o +(el)d(ph)o(ysical)i(addresses)h(according)f(to)h(the)89 1562 +y(hardw)o(are)15 b(devices)f(used,)h(on)g(the)f(data)i(link)e(to)h(presen)o +(tation)g(la)o(y)o(er)e(on)i(a)h(\014rst{lev)o(el)d(abstrac-)89 +1623 y(tion)20 b(using)h(host)g(addresses)g(suc)o(h)f(as)h(IP)f(addresses) +1101 1604 y Fj(2)1121 1623 y Ft(,)h(and)g(on)g(the)f(application)g(la)o(y)o +(er)f(on)i(a)89 1683 y(second{lev)o(el)15 b(abstraction)i(using)f(high{lev)o +(el,)e(pronounceable)j(hostnames.)162 1743 y(The)22 b(task)g(of)g(naming)f +(hosts)h(and)h(net)o(w)o(ork)e(domains)g(is)g(addressed)h(b)o(y)g(creating)f +(a)h(hi-)89 1803 y(erarc)o(hical)15 b(relation)i(b)q(et)o(w)o(een)e(domains,) +h(with)h(hosts)h(as)f(the)f(furthest)h(descendan)o(ts)g(from)e(an)89 +1863 y(arti\014cial)d(ro)q(ot)i(domain.)19 b(By)12 b(app)q(ending)i(the)e +(domain)g(lab)q(els)h(one)g(after)f(the)h(other)g(to)g(the)f(host)89 +1923 y(lab)q(els)i(on)i(the)e(path)h(up)g(to)g(the)f(ro)q(ot)i(in)e(the)g +(hierarc)o(hical)f(tree,)h(a)h(unique,)f(memoriz)o(able,)d(and)89 +1984 y(usually)18 b(pronounceable)h(iden)o(ti\014er)e(is)i(created:)26 +b(the)18 b(hostname.)28 b(One)19 b(of)g(the)f(managemen)o(t)89 +2044 y(tasks)f(in)f(the)g(In)o(ternet)f(is)h(the)g(mapping)f(of)i(lo)o(w)o +(er{lev)o(el)c(addresses)k(to)g(these)f(hostnames.)162 2104 +y(The)g(mapping,)f(or)h(binding,)g(of)g(IP)f(addresses)i(to)f(hostnames)g(b)q +(ecame)e(a)j(ma)s(jor)e(problem)89 2164 y(in)f(the)f(rapidly)h(gro)o(wing)g +(In)o(ternet.)19 b(Note)14 b(that)g(this)g(pap)q(er)h(do)q(es)f(not)h(deal)e +(with)h(the)g(mapping)89 2224 y(b)q(et)o(w)o(een)f(addresses)h(on)h(the)e(ph) +o(ysical)g(la)o(y)o(er)g(and)h(transp)q(ort)i(la)o(y)o(er,)c(whic)o(h)h(is)h +(solv)o(ed)f(b)o(y)h(ARP)1870 2206 y Fj(3)89 2285 y Ft(in)20 +b(the)g(TCP/IP)h(In)o(ternet)e(Proto)q(col)i(Suite,)g(but)f(with)g(the)g +(mapping)g(b)q(et)o(w)o(een)f(hostnames)89 2345 y(and)e(IP)f(addresses.)p +89 2417 720 2 v 145 2448 a Fm(2)164 2463 y Fl(\\32-bit)c(addresses)k +(assigned)f(to)e(hosts)i(that)f(w)o(an)o(t)f(to)h(participate)g(in)f(a)h +(TCP/IP)g(in)o(ternet")h([Com91)m(])145 2497 y Fm(3)164 2513 +y Fl(\\Address)f(Resolution)e(Proto)q(col)g({)h(used)g(to)g(dynamically)c +(bind)k(a)f(high{lev)o(el)g(IP)h(address)g(to)g(a)f(lo)o(w{lev)o(el)89 +2562 y(ph)o(ysical)h(hardw)o(are)i(address")g([Com91)m(])977 +2715 y Ft(2)p eop +%%Page: 3 3 +2 bop 162 82 a Ft(This)18 b(higher{lev)o(el)d(binding)j(e\013ort)f(w)o(en)o +(t)g(through)i(di\013eren)o(t)d(stages)j(of)e(dev)o(elopmen)o(t)e(up)89 +142 y(to)f(the)f(curren)o(tly)e(used)j(Domain)e(Name)g(System)f(\(DNS\).)i +(The)g(DNS)h(is)f(a)g(distributed)g(naming)89 203 y(resolution)g(system)f +(used)h(b)o(y)g(most)g(net)o(w)o(ork)f(services)g(a)o(v)m(ailable)h +(throughout)h(the)f(In)o(ternet.)19 b(It)89 263 y(w)o(orks)d(transparen)o +(tly)g(for)g(the)f(user)h(who)h(sends)f(email,)d(accesses)j(another)h(host)f +(via)g Fi(telnet)i Ft(or)89 323 y Fi(rlo)n(gin)p Ft(,)d(or)g(transfers)h +(some)e(\014les)h(via)g Fi(ftp)g Ft(b)q(et)o(w)o(een)f(hosts.)22 +b(The)15 b(DNS)g(pro)o(vides)f(name)g(binding)89 383 y(in)19 +b(b)q(oth)i(directions:)27 b(giv)o(en)19 b(a)h(hostname,)g(it)f(returns)h +(the)g(appropriate)g(IP)g(addresses,)g(and)89 443 y(vice)15 +b(v)o(ersa.)162 504 y(Before)c(hosts)i(gran)o(t)f(net)o(w)o(ork)g(services)e +(to)j(users,)f(an)g(authen)o(tication)g(pro)q(cess)g(tak)o(es)g(place,)89 +564 y(where)19 b(the)g(users')g(access)g(righ)o(ts,)g(and)g(the)g(iden)o(tit) +o(y)e(of)j(connecting)f(hosts)h(get)f(scrutinized,)89 624 y(according)f(to)g +(pro)o(vider)f(p)q(olicies.)24 b(There)18 b(are)f(man)o(y)f(notions)j(on)f +(ho)o(w)g(access)f(righ)o(ts)h(can)g(b)q(e)89 684 y(sp)q(eci\014ed.)i +(Examinations)13 b(can)i(b)q(e)f(based)h(on)g(iden)o(ti\014cation)e(b)o(y)g +(hostname,)h(login)g(name,)f(and)89 744 y(login)20 b(passw)o(ord.)34 +b(In)20 b(some)f(cases)h(it)f(su\016ces)h(to)g(pro)o(vide)g(the)f(righ)o(t)h +(names,)g(and)g(access)g(is)89 804 y(gran)o(ted)c(without)h(sp)q(ecifying)f +(an)o(y)g(passw)o(ord)h(at)g(all.)162 865 y(Some)j(Berk)o(eley)f +Fh(r{commands)h Ft(\(see)h([Ste90,)h(c)o(hapter)f(14]\))g(o\013er)h(net)o(w)o +(ork)f(services)f(for)89 925 y(whic)o(h)j(it)h(is)g(su\016cien)o(t)f(to)h(v)o +(erify)e(user)j(name)d(and)j(hostname)f(to)g(gain)h(complete)d(access.)89 +985 y(As)f(the)g(remote)e(user)i(name)f(is)g(sp)q(eci\014ed)h(b)o(y)f(the)h +(connecting)g(site,)g(the)g(authen)o(tication)f(is)89 1045 +y(additionally)c(based)h(up)q(on)g(the)f(name)f(of)i(the)f(connecting)g(mac)o +(hine.)j(A)d(mac)o(hine)e(that)j(o\013ers)89 1105 y(services)d(can)h(acquire) +f(information)g(ab)q(out)j(the)d Fi(so)n(cket)i Ft(that)g(is)f(used)g(b)o(y)f +(the)h(connecting)g(site.)89 1166 y(A)20 b(so)q(c)o(k)o(et)f(is)h(an)g +(abstraction)h(for)f(a)g(net)o(w)o(ork)g(service)e(access)i(p)q(oin)o(t)g +(\(NSAP\):)f(in)h(UNIX)1827 1148 y Fj(4)1865 1166 y Ft(a)89 +1226 y(tuple)c(consisting)h(of)g(IP)g(address,)g(p)q(ort,)g(and)g(proto)q +(col)h(used)f(b)o(y)f(the)g(remote)f(site.)22 b(T)l(o)c(v)o(erify)89 +1286 y(the)e(hostname,)f(it)h(is)g(the)g(task)h(of)f(the)g(DNS)g(to)h(map)e +(the)h(IP)g(address)h(to)g(the)f(hostname.)162 1346 y(Because)23 +b(the)g(DNS)h(is)f(distributed)g(among)g(man)o(y)f(thousands)j(of)f(hosts,)i +(it)d(can)h(b)q(e)g(a)89 1406 y(critical)13 b(mistak)o(e)f(to)j(blindly)e +(trust)i(the)g(resolv)o(ed)e(binding.)21 b(This)14 b(pap)q(er)i(in)o(v)o +(estigates)d(p)q(olicies)89 1467 y(and)j(mec)o(hanism)o(s)d(to)i(solv)o(e)g +(the)g(problem)e(of)j(trust)f(in)g(the)g(Domain)f(Name)f(System.)20 +b(Some)14 b(of)89 1527 y(these)j(p)q(olicies)f(and)i(mec)o(hanisms)d(migh)o +(t)g(b)q(e)j(abstractable)f(to)h(distributed)f(naming)f(services)89 +1587 y(in)g(general.)162 1647 y(Although)d(this)f(problem)f(has)i(b)q(een)g +(kno)o(wn)g(for)f(some)g(y)o(ears)g(no)o(w,)h(not)g(man)o(y)e(publications)89 +1707 y(deal)18 b(with)g(it.)26 b([Bel90)o(])17 b(and)i([Sc)o(h93])e(are)h +(the)g(principal)f(accoun)o(ts)h(that)h(w)o(e)e(can)h(men)o(tion)e(as)89 +1768 y(related)g(w)o(ork.)22 b([Bel90)o(])17 b(demonstrates)f(the)g(sub)o(v)o +(ersion)g(of)h(system)e(securit)o(y)h(using)h(the)f(DNS)89 +1828 y(and)k(discusses)g(p)q(ossible)f(defenses)h(against)g(the)f(attac)o(k)h +(and)g(limitations)d(on)j(their)f(applica-)89 1888 y(bilit)o(y)l(.)24 +b(The)18 b(pap)q(er)h(follo)o(ws)f(suggestions)h(from)e(P)o(aul)h(V.)f(Mo)q +(c)o(k)m(ap)q(etris,)h(the)f(designer)h(of)g(the)89 1948 y(DNS.)g(In)g([Sc)o +(h93])g(the)g(details)g(of)h(the)f(exploitation)g(of)h(the)f(w)o(eakness)h +(are)f(w)o(ork)o(ed)g(out)h(and)89 2008 y(sev)o(eral)c(approac)o(hes)h(to)g +(solv)o(e)f(the)h(w)o(eakness)f(in)h(the)f(DNS)h(are)g(discussed)f(with)h +(emphasis)e(on)89 2068 y(hardening)20 b(the)g(name)f(serv)o(er)g(impleme)o(n) +o(tations)f(and)i(the)g(usage)h(of)g(strong)g(cryptographic)89 +2129 y(metho)q(ds)16 b(for)g(authen)o(tication.)p 89 2201 720 +2 v 145 2232 a Fm(4)164 2247 y Fl(UNIX)e(is)g(a)f(trademark)g(of)h(No)o(v)o +(ell)977 2715 y Ft(3)p eop +%%Page: 4 4 +3 bop 89 90 a Fu(2)83 b(The)27 b(Problem)89 215 y Fg(2.1)70 +b(Statemen)n(t)21 b(of)i(the)f(Problem)89 307 y Ft(Authen)o(ticit)o(y)16 +b(is)k(based)f(on)h(the)f(iden)o(tit)o(y)e(of)j(some)e(en)o(tit)o(y)l(.)29 +b(This)19 b(en)o(tit)o(y)e(has)j(to)g(pro)o(v)o(e)f(that)89 +367 y(it)g(is)g(gen)o(uine.)30 b(In)19 b(man)o(y)e(net)o(w)o(ork)i +(applications)g(the)h(iden)o(tit)o(y)d(of)i(participating)g(en)o(tities)f(is) +89 427 y(simply)e(determined)g(b)o(y)i(their)f(names)h(or)g(addresses.)28 +b(High{lev)o(el)16 b(applications)j(use)f(mainly)89 487 y(names)f(for)g +(authen)o(tication)h(purp)q(oses,)g(b)q(ecause)g(address)g(lists)f(are)h(m)o +(uc)o(h)d(harder)j(to)g(create,)89 548 y(understand,)f(and)f(main)o(tain)f +(than)i(name)e(lists.)162 608 y(Assuming)f(an)j(en)o(tit)o(y)c(w)o(an)o(ts)j +(to)g(sp)q(o)q(of)h(the)f(iden)o(tit)o(y)d(of)j(some)e(other)i(en)o(tit)o(y)l +(,)d(it)j(is)f(in)g(some)89 668 y(cases)h(enough)g(to)g(c)o(hange)g(the)f +(mapping)g(b)q(et)o(w)o(een)g(its)g(lo)o(w{lev)o(el)f(address)i(and)g(its)g +(high{lev)o(el)89 728 y(name.)k(That)d(means)e(that)h(an)h(attac)o(k)o(er)e +(can)h(fak)o(e)g(the)f(name)g(of)i(someone)e(b)o(y)g(mo)q(difying)g(the)89 +788 y(asso)q(ciation)j(of)g(his)f(address)h(from)e(his)h(o)o(wn)h(name)e(to)h +(the)g(name)f(he)h(w)o(an)o(ts)h(to)f(imp)q(ersonate.)89 849 +y(Once)f(an)h(attac)o(k)o(er)f(has)h(done)g(that,)f(an)i(authen)o(ticator)e +(can)h(no)g(longer)f(distinguish)h(b)q(et)o(w)o(een)89 909 +y(the)e(true)g(and)h(the)g(fak)o(ed)f(en)o(tit)o(y)l(.)k(This)c(describ)q(es) +g(the)h(fundamen)o(tal)e(problem)f(on)j(whic)o(h)f(this)89 +969 y(pap)q(er)e(is)g(based:)20 b Fh(If)12 b(the)g(binding)h(pro)q(cess)g(b)q +(et)o(w)o(een)f(names)f(and)j(addresses)f(cannot)g(b)q(e)g(trusted)89 +1029 y(fully)l(,)i(no)h(one)h(can)f(rely)f(on)i(an)g(authen)o(tication)f(pro) +q(cess)h(on)f(a)h(high{lev)o(el.)89 1174 y Fg(2.2)70 b(The)22 +b(Problem)g(in)g(the)g(DNS)89 1266 y Ft(T)l(o)h(understand)h(the)e(metho)q(d) +g(ho)o(w)i(to)f(deceiv)o(e)d(the)j(DNS)g(w)o(e)f(\014rst)h(giv)o(e)f(an)h +(example)e(for)89 1326 y(a)i(v)m(alid)g(name)f(resolution)h(in)g(the)f(DNS.)h +(The)g(resolution)g(is)g(based)g(on)h(the)e(clien)o(t{serv)o(er)89 +1386 y(paradigm.)e(An)o(y)14 b(pro)q(cess)h(that)h(accepts)e(a)h(connection)g +(from)e(another)j(host)f(receiv)o(es)e(from)g(its)89 1447 y(lo)o(w)o(er)h +(proto)q(col)h(la)o(y)o(er)e(the)i(connecting)f(host's)h(IP)g(address.)21 +b(The)15 b(pro)q(cess)g(then)g(calls)f(its)g(lo)q(cal)89 1507 +y(resolv)o(er)j(with)h(this)g(IP)g(address)h(as)g(an)g(argumen)o(t)e(and)i +(requests)e(the)h(according)h(hostname.)89 1567 y(The)14 b(resolv)o(er)e +(forms)h(a)h(query)f(for)h(the)f(giv)o(en)g(IP)h(address)g(and)g(w)o(aits)g +(to)g(retriev)o(e)e(the)h(resp)q(onse)89 1627 y(con)o(taining)18 +b(the)h(answ)o(er)f(to)h(its)g(query)f(from)f(the)h(default)h(name)e(serv)o +(er.)27 b(This)19 b(name)e(serv)o(er)89 1687 y(could)g(b)q(e)g(running)g(on)g +(the)f(same)g(host)i(with)e(the)h(resolv)o(er)f(soft)o(w)o(are,)g(on)h(a)h +(host)f(in)g(the)f(lo)q(cal)89 1747 y(domain)e(of)i(the)e(resolv)o(er,)g(or)i +(on)f(a)h(host)f(outside)g(the)g(lo)q(cal)g(domain.)20 b(The)15 +b(selection)f(of)i(whic)o(h)89 1808 y(name)e(serv)o(er)h(to)h(con)o(tact)g +(dep)q(ends)g(on)g(the)f(name)g(or)h(address)g(to)g(b)q(e)g(resolv)o(ed.)k +(The)c(decision)89 1868 y(pro)q(cess)h(ab)q(out)g(this)g(c)o(hoice)d(is)j(sp) +q(eci\014ed)e(in)h([Mo)q(c87)q(,)f(sections)i(4.3.2,)f(5.3.3].)162 +1928 y(Queries)g(to)h(name)f(serv)o(ers)g(from)f(a)j(resolv)o(er)d(come)g(in) +i(t)o(w)o(o)f(\015a)o(v)o(ors:)23 b Fh(recursiv)o(e)15 b Ft(and)i +Fh(itera-)89 1988 y(tiv)o(e)p Ft(.)i(In)14 b(recursiv)o(e)f(resolution,)i(a)f +(resolv)o(er)g(sends)h(a)g(recursiv)o(e)d(query)i(to)h(a)g(name)e(serv)o(er.) +20 b(The)89 2048 y(queried)12 b(name)h(serv)o(er)f(then)i(has)g(the)g +(obligation)g(to)f(resp)q(ond)i(with)e(the)h(answ)o(er)g(to)g(that)g(query)89 +2109 y(or)h(an)f(error)h(co)q(de.)20 b(If)14 b(a)h(name)e(serv)o(er)g(cannot) +i(resolv)o(e)e(the)h(query)f(lo)q(cally)l(,)h(it)f(calls)h(its)g(resolv)o(er) +89 2169 y(and)h(queries)e(recursiv)o(ely)f(another)j(name)e(serv)o(er.)20 +b(This)15 b(is)f(rep)q(eated)g(un)o(til)f(one)i(queried)e(name)89 +2229 y(serv)o(er)20 b(supplies)g(the)h(answ)o(er)g(or)g(an)g(error)g(co)q(de) +g(that)g(then)f(tra)o(v)o(els)g(the)h(rev)o(erse)e(path.)35 +b(In)89 2289 y(iterativ)o(e)13 b(resolution,)j(the)f(con)o(tacted)g(name)f +(serv)o(er)g(returns)i(an)f(answ)o(er)h(to)g(the)f(query)f(to)i(the)89 +2349 y(requesting)i(resolv)o(er.)27 b(This)19 b(is)g(a)g(referral)e(to)i +(another)h(name)d(serv)o(er)h(that)h(is)f(more)g(lik)o(ely)e(to)89 +2410 y(kno)o(w)h(the)g(answ)o(er,)g(or)g(an)h(error)f(co)q(de)g(to)h(signal)f +(the)g(o)q(ccurrence)f(of)i(an)f(exception)f(or)h(error.)89 +2470 y(The)f(rep)q(eated)g(resolution)h(attempts)e(are)h(p)q(erformed)f(b)o +(y)h(the)g(lo)q(cal)g(resolv)o(er.)162 2530 y(Man)o(y)g(securit)o(y)g +(problems)f(of)i(the)f(TCP/IP)i(proto)q(col)f(suite)f(build)h(on)g(the)f +(abilit)o(y)f(of)i(the)89 2590 y(attac)o(k)o(er)i(to)h(sp)q(o)q(of)i(the)e +(IP)f(address)i(of)f(a)h(trusted)f(mac)o(hine,)e(as)i(describ)q(ed)g(in)f +([Bel89)o(].)32 b(As)977 2715 y(4)p eop +%%Page: 5 5 +4 bop 201 1145 a @beginspecial 0 @llx 0 @lly 378 @urx 252 @ury +3780 @rwi @setspecial +%%BeginDocument: setup.eps +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/l {lineto} bind def +/m {moveto} bind def +/s {stroke} bind def +/n {newpath} bind def +/gs {gsave} bind def +/gr {grestore} bind def +/clp {closepath} bind def +/graycol {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul +4 -2 roll mul setrgbcolor} bind def +/col-1 {} def +/col0 {0 0 0 setrgbcolor} bind def +/col1 {0 0 1 setrgbcolor} bind def +/col2 {0 1 0 setrgbcolor} bind def +/col3 {0 1 1 setrgbcolor} bind def +/col4 {1 0 0 setrgbcolor} bind def +/col5 {1 0 1 setrgbcolor} bind def +/col6 {1 1 0 setrgbcolor} bind def +/col7 {1 1 1 setrgbcolor} bind def + end +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def + +$F2psBegin +0 setlinecap 0 setlinejoin +-9.0 270.0 translate 0.900 -0.900 scale +1.000 setlinewidth +n 99 19 m 99 39 l gs col-1 s gr +n 99 279 m 99 299 l gs col-1 s gr +n 339 19 m 339 39 l gs col-1 s gr +n 339 279 m 339 299 l gs col-1 s gr +0.500 setlinewidth +n 159 59 m 279 59 l gs col-1 s gr +n 271.000 57.000 m 279.000 59.000 l 271.000 61.000 l gs 2 setlinejoin col-1 s gr +1.000 setlinewidth + [6.000000] 0 setdash +n 379 19 m 419 19 l gs col-1 s gr + [] 0 setdash + [6.000000] 0 setdash +n 59 19 m 14 19 l gs col-1 s gr + [] 0 setdash + [6.000000] 0 setdash +n 379 299 m 419 299 l gs col-1 s gr + [] 0 setdash + [6.000000] 0 setdash +n 59 299 m 14 299 l gs col-1 s gr + [] 0 setdash +n 59 19 m 139 19 l gs col-1 s gr +n 299 19 m 379 19 l gs col-1 s gr +n 59 299 m 139 299 l gs col-1 s gr +n 299 299 m 379 299 l gs col-1 s gr + [6.000000] 0 setdash +n 259 299 m 299 299 l gs col-1 s gr + [] 0 setdash + [6.000000] 0 setdash +n 139 299 m 179 299 l gs col-1 s gr + [] 0 setdash + [6.000000] 0 setdash +n 259 19 m 299 19 l gs col-1 s gr + [] 0 setdash + [6.000000] 0 setdash +n 139 19 m 179 19 l gs col-1 s gr + [] 0 setdash +0.500 setlinewidth +n 46 39 m 39 39 39 72 7 arcto 4 {pop} repeat 39 79 152 79 7 arcto 4 {pop} repeat 159 79 159 46 7 arcto 4 {pop} repeat 159 39 46 39 7 arcto 4 {pop} repeat clp gs 0.95 setgray fill gr +gs col-1 s gr +n 286 39 m 279 39 279 72 7 arcto 4 {pop} repeat 279 79 392 79 7 arcto 4 {pop} repeat 399 79 399 46 7 arcto 4 {pop} repeat 399 39 286 39 7 arcto 4 {pop} repeat clp gs 0.95 setgray fill gr +gs col-1 s gr +n 46 239 m 39 239 39 272 7 arcto 4 {pop} repeat 39 279 152 279 7 arcto 4 {pop} repeat 159 279 159 246 7 arcto 4 {pop} repeat 159 239 46 239 7 arcto 4 {pop} repeat clp gs 0.95 setgray fill gr +gs col-1 s gr +n 286 239 m 279 239 279 272 7 arcto 4 {pop} repeat 279 279 392 279 7 arcto 4 {pop} repeat 399 279 399 246 7 arcto 4 {pop} repeat 399 239 286 239 7 arcto 4 {pop} repeat clp gs 0.95 setgray fill gr +gs col-1 s gr +n 77.000 87.000 m 79.000 79.000 l 81.000 87.000 l gs 2 setlinejoin col-1 s gr +n 79 79 m 79 239 l gs col-1 s gr +n 81.000 231.000 m 79.000 239.000 l 77.000 231.000 l gs 2 setlinejoin col-1 s gr + 1 setlinecap [1 3.000000] 3.000000 setdash +n 9 189 m 429 189 l gs col-1 s gr + [] 0 setdash 0 setlinecap +n 319 239 m + 323.644 205.212 323.644 190.212 319 179 curveto + 316.081 171.953 306.047 161.919 299 159 curveto + 259.136 142.488 178.864 175.512 139 159 curveto + 131.953 156.081 121.919 146.047 119 139 curveto + 114.356 127.788 114.356 112.788 119 79 curveto +gs col-1 s gr +n 115.929 86.653 m 119.000 79.000 l 119.892 87.198 l gs 2 setlinejoin col-1 s gr +/Courier-Bold findfont 12.00 scalefont setfont +314 74 m +gs 1 -1 scale (boromir) col-1 show gr +/Courier-Bold findfont 12.00 scalefont setfont +74 74 m +gs 1 -1 scale (aragorn) col-1 show gr +/Courier-Bold findfont 12.00 scalefont setfont +349 209 m +gs 1 -1 scale (attack.dom) col-1 show gr +/Courier-Bold findfont 12.00 scalefont setfont +349 179 m +gs 1 -1 scale (defend.dom) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +44 54 m +gs 1 -1 scale (user:) col-1 show gr +/Courier-Bold findfont 12.00 scalefont setfont +74 54 m +gs 1 -1 scale (alice) col-1 show gr +/Courier-Bold findfont 12.00 scalefont setfont +314 54 m +gs 1 -1 scale (bob) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +144 149 m +gs 1 -1 scale (Hi! I am) col-1 show gr +/Courier-Bold findfont 12.00 scalefont setfont +189 149 m +gs 1 -1 scale (bob@boromir.defend.dom) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +284 54 m +gs 1 -1 scale (user:) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +284 74 m +gs 1 -1 scale (host:) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +44 74 m +gs 1 -1 scale (ns:) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +84 214 m +gs 1 -1 scale (exchange of DNS packets) col-1 show gr +/Courier-Bold findfont 12.00 scalefont setfont +149 99 m +gs 1 -1 scale (alice@aragorn) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +244 99 m +gs 1 -1 scale (trusts) col-1 show gr +/Courier-Bold findfont 12.00 scalefont setfont +279 99 m +gs 1 -1 scale (bob@boromir) col-1 show gr +/Courier-Bold findfont 12.00 scalefont setfont +69 264 m +gs 1 -1 scale (caradhras) col-1 show gr +/Courier-Bold findfont 12.00 scalefont setfont +314 264 m +gs 1 -1 scale (dwimmerlaik) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +284 264 m +gs 1 -1 scale (host:) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +44 264 m +gs 1 -1 scale (ns:) col-1 show gr +$F2psEnd +%%EndDocument + @endspecial 556 1300 a Ft(Figure)16 b(1:)21 b(Example)15 b(top)q(ology)i(of) +g(mac)o(hines)89 1435 y(hosts)j(trust)f(eac)o(h)g(other,)g(usually)f(on)i +(the)f(basis)g(of)g(hostnames,)g(an)h(attac)o(k)o(er)e(can)h(tak)o(e)f(the)89 +1495 y(easier)i(approac)o(h)h(and)g(sp)q(o)q(of)h(a)f(host's)g(name)e +(instead)h(of)h(its)f(IP)g(address.)35 b(The)20 b(pro)q(cess)h(is)89 +1555 y(depicted)15 b(in)h(\014gure)g(1.)162 1615 y(Assume)11 +b(that)i(user)f Ff(alice@arag)o(orn)o(.de)o(fen)o(d.)o(dom)d +Ft(trusts)k(user)f Ff(bob@boromi)o(r.d)o(ef)o(end)o(.)89 1675 +y(dom)18 b Ft(via)g(the)h Fh(.rhosts)g Ft(mec)o(hanism)o(.)26 +b(If)18 b(a)h(host)h(named)e Ff(boromir.d)o(ef)o(end)o(.do)o(m)e +Ft(accesses)i(an-)89 1735 y(other)j(host)g(named)e Ff(aragorn.de)o(fen)o(d.d) +o(om)p Ft(,)f(host)j Ff(aragorn)d Ft(accepts)i(the)g(connection)g(and)89 +1796 y(retriev)o(es)i(address)j(information)d(ab)q(out)j(the)f(connecting)g +(host)g Ff(boromir)p Ft(.)42 b(Host)24 b Ff(aragorn)89 1856 +y Ft(reads)c(host)g Ff(boromir)p Ft('s)d(IP)j(address)g(and)h(con)o(v)o(erts) +d(it)i(in)o(to)f(a)h(regular)g(hostname.)31 b(T)l(o)20 b(bind)89 +1916 y(the)f(righ)o(t)h(name)e(to)i(the)f(IP)h(address,)h(host)f +Ff(aragorn)d Ft(starts)j(a)g(DNS)g(query)f(in)g(the)g(rev)o(erse)89 +1976 y(lo)q(okup)c(tree,)f(the)h(database)h(p)q(ortion)g(that)f(con)o(tains)g +(the)g(IP)f(address)i(to)f(hostname)g(mapping)89 2036 y(information.)162 +2097 y(F)l(or)23 b(a)g(pair)g(of)g(mac)o(hines)d Ff(caradhras.a)o(tta)o(ck.)o +(do)o(m)g Ft(and)j Ff(dwimmerlai)o(k.a)o(tta)o(ck)o(.do)o(m)89 +2157 y Ft(under)17 b(the)g(p)q(o)o(w)o(er)h(of)g(an)f(attac)o(k)o(er,)g(with) +g Ff(caradhras)d Ft(running)k(a)f(primary)f(name)g(serv)o(er)h(for)89 +2217 y(a)e(certain)f(zone,)g(and)i Ff(dwimmerla)o(ik)11 b Ft(trying)k(to)g +(fak)o(e)f Ff(boromir)p Ft('s)e(iden)o(tit)o(y)l(,)g(it)j(is)f(easy)h(to)g +(mak)o(e)89 2277 y Ff(aragorn)f Ft(b)q(eliev)o(e)h Ff(dwimmerlai)o(k)f +Ft(w)o(as)j Ff(boromir)p Ft(.)k Ff(dwimmerla)o(ik)13 b Ft(connects)k(to)g +Ff(aragorn)d Ft(and)89 2337 y(claims)e(to)i(b)q(e)g Ff(boromir)p +Ft(,)d Ff(aragorn)g Ft(retriev)o(es)h Ff(dwimmerlai)o(k)p Ft('s)f(IP)i +(address)i Ff(111.22.33)o(.4)10 b Ft(and)89 2398 y(queries)i(the)i(name)e +Ff(4.33.22.11)o(1.i)o(n-)o(add)o(r.a)o(rpa)e Ft(from)i(the)h(DNS.)g(One)g +(single)g(en)o(try)g(in)g(the)89 2458 y(authoritativ)o(e)18 +b(data)h(for)g(the)g(rev)o(erse)e(lo)q(okup)i(tree)f(for)h +Ff(caradhras)p Ft(')o(s)d(zone)j(sp)q(eci\014es)f(the)g(IP)89 +2518 y(address{to{name)h(mapping)e(b)q(et)o(w)o(een)g Ff(4.33.22.111)o(.in)o +(-ad)o(dr)o(.ar)o(pa)e Ft(and)j Ff(dwimmerlaik)o Ft(.)89 2578 +y(If)d(the)h(attac)o(k)o(er)e(replaces)h(this)h(line)f(b)o(y)g(a)h(mapping)f +(b)q(et)o(w)o(een)g Ff(4.33.22.1)o(11.)o(in-)o(add)o(r.)o(arp)o(a)977 +2715 y Ft(5)p eop +%%Page: 6 6 +5 bop 89 82 a Ft(and)17 b Ff(boromir)p Ft(,)c Ff(aragorn)p +Ft('s)h(resolution)i(attempt)f(will)g(\014nally)h(gran)o(t)h +Ff(dwimmerlai)o(k)c Ft(access)k(to)89 142 y Ff(aragorn)p Ft(.)162 +203 y(This)e(sho)o(ws)g(the)g(simplicit)n(y)d(of)j(an)g(attac)o(k)f(that)h +(is)g(based)g(up)q(on)g(trust)g(placed)f(in)h(the)f(data)89 +263 y(pro)o(vided)h(b)o(y)h(DNS.)f(It)g(is)h(based)g(on)h(a)f(w)o(eakness)g +(in)g(the)f(DNS,)h(not)g(an)g(easily)f(\014xable)h(bug)g(in)89 +323 y(the)g(implem)o(en)o(tati)o(on)e(of)j(a)f(particular)g(net)o(w)o(ork)g +(service.)162 383 y(One)c(widely)f(accepted)g(w)o(a)o(y)g(of)i(dealing)e +(with)h(this)g(problem)e(is)i(adding)h(an)f(additional)g(DNS)89 +443 y(query)i(of)i(the)f(determined)e(hostname)i(to)g(the)g(serv)o(er)f(co)q +(de)i(and)g(comparing)e(the)h(returned)g(IP)89 504 y(addresses)22 +b(against)h(the)e(original)h(IP)f(address)h(for)g(a)g(matc)o(h.)36 +b(This)22 b(only)f(adds)i(marginally)89 564 y(to)f(the)f(qualit)o(y)f(of)h +(securit)o(y;)h(it)f(do)q(es)h(not)g(pro)o(vide)e(complete)g(securit)o(y)l(.) +34 b(An)21 b(attac)o(k)o(er)g(can)89 624 y(piggybac)o(k)16 +b(additional)h(resource)f(records)g(to)h(the)f(answ)o(er)h(pac)o(k)o(et)e(to) +i(the)g(\014rst)f(query)l(.)21 b(Doing)89 684 y(so,)26 b(the)f(attac)o(k)o +(er)e(p)q(oisons)j(the)e(victim')o(s)e(cac)o(he)h(with)i(false)f +(information,)g(suc)o(h)g(that)h(the)89 744 y(forw)o(ard)17 +b(lo)q(okup)g(w)o(ould)f(not)h(disclose)e(the)h(attac)o(k.)89 +889 y Fg(2.3)70 b(W)-6 b(eaknesses)89 981 y Ft(In)21 b(this)f(paragraph)j(w)o +(e)e(describ)q(e)f(the)h(conditions)g(that)g(facilitate)f(a)h(break{in.)35 +b(The)21 b(DNS)89 1041 y(is)e(w)o(eak)h(in)f(sev)o(eral)g(places.)31 +b(W)l(e)19 b(examine)e(the)j(problems)e(of)i(name{based)f(authen)o(tication) +89 1101 y(pro)q(cesses,)26 b(trusting)e(information)f(that)i(comes)d(from)h +(an)i(un)o(trust)o(w)o(orth)o(y)e(authorit)o(y)l(,)i(and)89 +1162 y(accepting)14 b(additional,)h(p)q(ossibly)g(incorrect)f(information)g +(that)i(w)o(as)f(not)h(requested,)d(but)j(that)89 1222 y(seems)f(to)h(pro)o +(vide)g(adv)m(an)o(tages)h(for)g(run)o(time)d(p)q(erformance.)89 +1352 y Fe(2.3.1)55 b(Assumptions)18 b(to)g(F)-5 b(acilitate)18 +b(Break{ins)89 1444 y Ft(In)g(our)g(setup)g(w)o(e)g(assume)f(that)i(the)f +(attac)o(k)o(er)f(has)h(complete)e(con)o(trol)i(o)o(v)o(er)f(mac)o(hine)f +Ff(cara-)89 1504 y(dhras.atta)o(ck.)o(do)o(m)e Ft(running)j(a)h(legitimate)c +(primary)h(name)h(serv)o(er)g(for)h(a)h(DNS)f(zone.)23 b(This)89 +1564 y(strong)18 b(assumption)f(do)q(es)h(not)f(alw)o(a)o(ys)g(need)g(to)h(b) +q(e)f(satis\014ed.)24 b(It)17 b(is)g(simply)e(the)h(easiest)h(w)o(a)o(y)89 +1625 y(for)h(an)h(attac)o(k)o(er)e(if)h(he)g(con)o(trols)g(a)h(primary)d +(name)h(serv)o(er,)h(b)q(ecause)g(of)g(its)g(capabilities)f(and)89 +1685 y(the)f(fact)g(that)h(other)f(mac)o(hines)e(b)q(eliev)o(e)h(name)g(serv) +o(ers.)162 1745 y(Dep)q(ending)g(on)h(the)f(top)q(ology)h(of)f(a)h(real)e +(net)o(w)o(ork)h(it)f(is)h(su\016cien)o(t)f(if)g(an)i(attac)o(k)o(er)e(con)o +(trols)89 1805 y(one)i(of)g(the)f(authoritativ)o(e)g(name)f(serv)o(ers)h(for) +h(the)f(particular)g(zone:)21 b(the)15 b(one)h(that)g(is)f(queried)89 +1865 y(\014rst)k(b)o(y)f(the)h(remote)e(resolv)o(er.)27 b(It)18 +b(is)h(not)g(m)o(uc)o(h)d(more)i(di\016cult)f(for)i(an)g(attac)o(k)o(er)f(to) +h(satisfy)89 1926 y(this)d(second)h(assumption)e(than)i(the)f(\014rst)h(one.) +162 1986 y(The)k(con)o(trol)g(m)o(ust)f(include)f(the)i(abilit)o(y)f(to)h(up) +q(date)h(the)e(asso)q(ciated)i(in)o(v)o(erse)e(mapping)89 2046 +y(tree.)g(The)13 b(attac)o(k)o(er)g(migh)o(t)f(ha)o(v)o(e)h(successfully)g +(sub)o(v)o(erted)f(suc)o(h)i(a)g(mac)o(hine)e(or)i(simply)d(b)q(e)j(the)89 +2106 y(legitimate)i(o)o(wner)i(of)h(it.)27 b(In)19 b(the)f(follo)o(wing)g +(discussion)h(w)o(e)f(will)f(assume)h(that)h(the)f(attac)o(k)o(er)89 +2166 y(has)f(suc)o(h)f(access)g(to)h(a)f(primary)f(name)g(serv)o(er.)89 +2296 y Fe(2.3.2)55 b(Authen)n(tication)18 b(via)g(Hostnames)89 +2389 y Ft(W)l(e)c(explained)f(in)h(the)g(in)o(tro)q(duction)g(that)g(users)h +(need)e(to)i(b)q(e)f(authorized)g(b)o(y)g(net)o(w)o(ork)f(service)89 +2449 y(pro)o(viders)20 b(b)q(efore)g(they)g(can)h(use)f(the)g(service.)33 +b(This)20 b(authen)o(tication)g(is)g(usually)h(based)f(on)89 +2509 y(the)d(v)o(eri\014cation)e(of)j(the)e(user's)h(login)g(name)e(along)j +(with)f(the)g(asso)q(ciated)h(passw)o(ord)g(and)f(the)89 2569 +y(hostname)j(of)g(the)g(mac)o(hine)e(on)j(whic)o(h)e(the)h(user)g(starts)h +(his)g(requests.)32 b(Net)o(w)o(orks)20 b(\(as)g(w)o(ell)977 +2715 y(6)p eop +%%Page: 7 7 +6 bop 89 82 a Ft(as)20 b(systems)e(in)h(general\))g(ma)o(y)f(b)q(e)i +(classi\014ed)f(in)o(to)g(di\013eren)o(t)f(partitions:)28 b(Closed)19 +b(Net)o(w)o(orks,)89 142 y(Op)q(en)d(Net)o(w)o(orks,)f(and)i(T)l(rusted)g +(Net)o(w)o(orks)e([PL91)q(].)162 203 y(Closed)22 b(Net)o(w)o(orks)f(can)h(b)q +(e)f(accessed)h(only)f(within)g(certain)g(b)q(oundaries.)39 +b(Sessions)22 b(are)89 263 y(con)o(trolled)h(and)h(secured)f(in)h(accordance) +f(with)h(the)g(rules)f(implied)e(b)o(y)i(an)h(organization's)89 +323 y(p)q(olicy)l(.)19 b(In)10 b(a)h(Closed)g(Net)o(w)o(ork,)g(the)f(lo)q +(cations)i(of)f(all)f(resources)h(are)g(w)o(ell)e(kno)o(wn)j(and)f(sp)q +(eci\014ed.)162 383 y(Op)q(en)k(Net)o(w)o(orks)g(are)g(regions)h(separated)f +(b)o(y)g(b)q(oundaries)h(from)e(their)h(surroundings,)h(but)89 +443 y(the)h(transfer)h(of)g(information)f(across)h(these)g(b)q(oundaries)g +(is)g(allo)o(w)o(ed.)24 b(They)18 b(are)f(augmen)o(ted)89 504 +y(b)o(y)e(publicly)f(accessible)g(parts)i(or)g(connections)f(to)h(net)o(w)o +(orks)f(o)o(wned)g(b)o(y)g(other)g(companies)g(or)89 564 y(organizations.)21 +b(These)14 b(t)o(w)o(o)f(extensions)h(mak)o(e)d(this)j(t)o(yp)q(e)f(of)h(net) +o(w)o(ork)f(vulnerable)f(to)i(external)89 624 y(threats.)162 +684 y(T)l(rusted)k(Net)o(w)o(orks)f(in)o(tro)q(duce)g(the)g(concept)g(that)h +(net)o(w)o(ork)f(access)g(is)h(con)o(trolled)e(at)i(the)89 +744 y(en)o(try)j(no)q(de.)41 b(In)22 b(the)g(case)g(of)h(large)g(in)o +(ternational)e(net)o(w)o(orks,)i(main)o(tainabilit)o(y)d(and)j(con-)89 +804 y(trollabilit)o(y)16 b(are)j(imp)q(ortan)o(t)e(issues.)28 +b(Adopting)18 b(the)g(T)l(rusted)h(Net)o(w)o(ork)e(concept)h(allo)o(ws)g(the) +89 865 y(decomp)q(osition)12 b(of)i(a)g(large)f(net)o(w)o(ork,)g(gro)o(wing)h +(to)o(w)o(ards)g(an)f(unmanageable)g(complexit)o(y)l(,)d(in)o(to)89 +925 y(relativ)o(ely)i(small)g(national)j(or)g(regional)f(net)o(w)o(orks,)g +(eac)o(h)f(supp)q(orted)j(b)o(y)d(lo)q(cal)h(sta\013,)i(and)e(eac)o(h)89 +985 y(pro)o(vided)h(with)h(its)g(o)o(wn)h(net)o(w)o(ork)f(access)g(con)o +(trol.)21 b(The)16 b(adv)m(an)o(tages)h(are)f(increased)g(con)o(trol-)89 +1045 y(labilit)o(y)l(,)d(main)o(tainabilit)o(y)l(,)g(manageabilit)o(y)l(,)g +(and)k(simpli\014cation)d(of)i(c)o(hange)g(managemen)o(t.)i(A)89 +1105 y(T)l(rusted)12 b(Net)o(w)o(ork)f(can)h(b)q(e)g(regarded)g(globally)f +(as)i(a)f(single)f(Closed)h(Net)o(w)o(ork,)f(but)h(from)f(a)h(lo)q(cal)89 +1166 y(p)q(oin)o(t)k(of)g(view,)f(the)g(in)o(terconnected)f(net)o(w)o(orks)i +(stand)g(widely)f(op)q(en)h(with)g(all)f(the)h(applicable)89 +1226 y(securit)o(y)f(threats.)162 1286 y(The)g(In)o(ternet)e(is)h(a)h(system) +e(of)i(T)l(rusted)g(Net)o(w)o(orks)f(within)g(Op)q(en)h(Net)o(w)o(orks.)k +(This)c(allo)o(ws)89 1346 y(the)d(danger)g(that)h(once)f(someone)f(has)i +(falsely)e(gained)h(access)g(to)h(one)f(mac)o(hine,)e(it)i(is)f(m)o(uc)o(h)f +(sim-)89 1406 y(pler)k(to)h(sub)o(v)o(ert)f(others.)21 b(The)14 +b(term)f Fh(net{sur\014ng)j Ft(describ)q(es)e(the)h(journey)f(through)i(a)f +(n)o(um)o(b)q(er)89 1467 y(of)20 b(sub)o(v)o(erted)e(systems)g(with)h(the)g +(goal)h(of)g(sub)o(v)o(erting)f(others.)31 b(Within)18 b(T)l(rusted)i(Net)o +(w)o(orks)89 1527 y(users)h(are)g(authen)o(ticated)f(solely)g(b)o(y)g(their)g +(login)h(name)f(and)h(connecting)g(hostname.)34 b(The)89 1587 +y(login)21 b(name)f(is)h(sp)q(eci\014ed)g(b)o(y)f(the)h(connecting)g(site,)g +(and)h(therefore)e(can)i(b)q(e)f(falsi\014ed,)g(suc)o(h)89 +1647 y(that)g(the)f(only)g(reliable)f(information)g(left)h(for)h(the)f +(addressed)h(mac)o(hine)d(is)i(the)g(connecting)89 1707 y(mac)o(hine's)13 +b(IP)j(address.)21 b(The)16 b(addressed)g(mac)o(hine)e(then)h(maps)g(the)h +(IP)f(address)i(in)o(to)e(a)h(host-)89 1768 y(name)i(using)h(the)g(DNS.)g(If) +f(an)i(attac)o(k)o(er)e(manages)h(to)g(sub)o(v)o(ert)f(this)h(name)f(binding) +h(call,)f(he)89 1828 y(can)e(falsify)f(the)h(name)f(of)h(a)g(mac)o(hine)e +(within)h(the)h(T)l(rusted)g(Net)o(w)o(ork)f(and)i(therefore)e(succeed)89 +1888 y(in)h(his)g(attac)o(k.)89 2018 y Fe(2.3.3)55 b(T)-5 b(rusting)19 +b(a)g(Not)f(T)-5 b(rust)n(w)n(orth)n(y)20 b(Source)89 2110 +y Ft(Using)f(the)h(DNS)f(to)h(map)f(the)g(IP)g(address)i(pro)o(vided)e(b)o(y) +g(lo)o(w)o(er{lev)o(el)e(proto)q(col)j(la)o(y)o(ers)e(in)o(to)89 +2170 y(the)i(applicable)g(hostname,)h(the)g(addressed)g(host)g(blindly)f +(trusts)h(the)f(information)g(that)h(is)89 2231 y(pro)o(vided)f(b)o(y)h(the)f +(DNS.)h(Information)e(that)j(comes)d(from)h(sources)h(outside)g(of)g(the)g +(trusted)89 2291 y(area)g(is)f(trusted.)34 b(That)21 b(is)f(a)h(sev)o(ere)e +(violation)h(of)g(the)g(partitioning)h(concept.)33 b(Only)20 +b(truly)89 2351 y(authoritativ)o(e)c(information)f(should)i(b)q(e)f(trusted.) +977 2715 y(7)p eop +%%Page: 8 8 +7 bop 89 82 a Fe(2.3.4)55 b(Believing)16 b(Additional,)i(Not)g(Authoritativ)n +(e)g(Information)89 175 y Ft(E\016ciency)e(is)i(one)g(of)h(the)e(stated)i +(goals)g(of)f(the)g(DNS.)f(The)h(DNS)g(proto)q(col)h(pac)o(k)o(ets)e(con)o +(tain)89 235 y(an)h(additional)g(answ)o(er)g(section.)24 b(Using)18 +b(this,)f(name)f(serv)o(ers)h(can)h(pro)o(vide)f(resource)g(records)89 +295 y(con)o(taining)22 b(information)f(that)i(could)f(b)q(e)h(useful)f(in)g +(future)g(requests,)h(but)f(that)h(w)o(ere)f(not)89 355 y(explicitly)15 +b(requested.)24 b(There)17 b(are)g(situations)h(where)g(these)f(additional)g +(records)h(aid)f(system)89 415 y(e\016ciency)l(.)40 b(If)22 +b(the)h(answ)o(er)h(to)f(a)h(query)e(is)h(a)h(referral)e(to)h(another)h(name) +e(serv)o(er,)h(then)g(it)89 475 y(is)g(b)q(ene\014cial)f(to)h(add)h(that)f +(name)f(serv)o(er's)f(IP)i(addresses)h(to)f(the)g(resp)q(onse.)42 +b(That)23 b(sa)o(v)o(es)89 536 y(the)g(lo)q(okup)h(of)f(the)g(name)f(serv)o +(er's)g(asso)q(ciated)j(IP)e(addresses,)i(once)e(its)g(name)f(is)h(found.)89 +596 y(Additional)15 b(resource)h(records)h(are)f(cac)o(hed)g(for)g(future)g +(use.)162 656 y(As)j(w)o(e)g(rely)g(on)h(the)f(correctness)g(of)h(these)f +(additional)g(records)h(once)f(w)o(e)g(use)g(them,)f(w)o(e)89 +716 y(trust)k(information)f(that)i(comes)d(from)h(a)i(source)f(p)q(ossibly)g +(outside)g(of)g(the)g(trusted)g(scop)q(e.)89 776 y(That)17 +b(is)f(another)h(violation)f(of)g(the)g(partitioning)g(concept.)89 +943 y Fu(3)83 b(P)n(olicies)26 b(and)i(Mec)n(hanisms)d(as)i(Solutions)89 +1052 y Ft(W)l(e)16 b(iden)o(tify)f(p)q(olicies)h(and)h(mec)o(hanisms)d(that)j +(serv)o(e)f(as)h(solutions)g(or)g(that)h(simply)c(augmen)o(t)89 +1113 y(the)j(lev)o(el)f(of)i(securit)o(y)e(of)i(the)g(authen)o(tication)f +(pro)q(cess.)26 b(Because)17 b(man)o(y)g(factors)h(con)o(tribute)89 +1173 y(to)j(the)f(securit)o(y)f(breac)o(h)h(encoun)o(tered)g(in)g(this)g(pap) +q(er)h(and)g(all)f(of)h(them)e(are)i(necessary)f(for)89 1233 +y(the)d(w)o(eakness)g(to)h(exist,)e(it)g(is)h(su\016cien)o(t)f(to)i +(eliminate)c(at)k(least)f(one)g(of)h(them.)k(That)c(sounds)89 +1293 y(easy)e(to)g(accomplish,)e(but)i(is)g(a)h(di\016cult)d(task)j(in)e +(practice,)g(b)q(ecause)h(eliminating)e(an)o(y)i(one)g(of)89 +1353 y(the)j(factors)i(brings)f(with)f(it)g(a)h(disadv)m(an)o(tageous)i +(trade{o\013)f(with)e(functionalit)o(y)l(,)g(e\016ciency)l(,)89 +1414 y(or)e(con)o(v)o(enience.)162 1474 y(W)l(e)k(describ)q(e)g(ev)m +(aluation)h(criteria)e(and)i(presen)o(t)f(for)h(eac)o(h)f(of)g(our)h +(solutions)g(necessary)89 1534 y(additional)h(bac)o(kground,)h(follo)o(w)o +(ed)e(b)o(y)h(a)g(description)f(of)h(the)g(idea)f(of)h(the)g(solution.)41 +b(W)l(e)89 1594 y(mak)o(e)13 b(the)i(distinction)f(b)q(et)o(w)o(een)g(mec)o +(hanisms)e(that)j(enable)g(the)g(implem)o(e)o(n)o(tation)e(of)i(p)q(olicies) +89 1654 y(and)23 b(solutions)h(that)f(consist)g(solely)f(of)h(the)f(implem)o +(en)o(tation)e(of)j(a)g(certain)f(p)q(olicy)l(.)40 b(Eac)o(h)89 +1714 y(solution)17 b(is)f(examined)e(and)j(discussed)f(using)g(applicable)g +(ev)m(aluation)g(criteria.)162 1775 y(It)21 b(is)f(imp)q(ortan)o(t)g(not)h +(to)h(view)e(these)g(solutions)h(as)h(stand{alone.)36 b(In)21 +b(di\013eren)o(t)f(com)o(bi-)89 1835 y(nations)i(they)e(ac)o(hiev)o(e)g(sev)o +(eral)g(degrees)h(of)g(securit)o(y)l(.)34 b(It)21 b(is)g(a)g(go)q(o)q(d)j +(idea)c(to)i(implem)o(en)n(t)d(a)89 1895 y(com)o(bination)c(of)i(the)f +(presen)o(ted)f(solutions,)i(to)g(obtain)g(a)g(greater)f(lev)o(el)e(of)j +(con\014dence)f(in)g(the)89 1955 y(securit)o(y)f(of)h(the)g(DNS.)89 +2100 y Fg(3.1)70 b(Ev)l(aluation)23 b(Criteria)89 2192 y Ft(In)13 +b(solving)g(the)f(problem)g(w)o(e)g(are)h(striving)g(for)g +Fh(compatibilit)o(y)d(with)j(the)g(original)f(design)h(goals)p +Ft(.)89 2252 y(In)i(the)g(case)g(of)g(the)g(DNS)g(these)g(goals)h(are)f +Fh(data)h(consistency)f Ft(\(to)g(pro)o(vide)g(a)g(consisten)o(t)g(view)89 +2312 y(of)g(the)f(name)g(space)g(to)h(b)q(e)g(used)f(to)h(refer)f(to)h +(resources\),)f Fh(e\016ciency)f Ft(\(to)i(handle)f(the)g(immense)89 +2373 y(v)o(olume)9 b(of)j(data)h(and)f(resolution)f(requests\),)h(a)g +Fh(distributed)f(c)o(haracter)g Ft(of)h(the)f(implem)o(en)o(tati)o(on)89 +2433 y(\(to)i(pro)o(vide)f(fault)h(tolerance)g(and)g(distributed)g(authorit)o +(y)f(and)i(main)o(tenance\),)d Fh(generalit)o(y)h Ft(\(to)89 +2493 y(pro)o(vide)g(a)h(general)f(usefulness)g(that)h(satis\014es)g +(pragmatic)f(reasons)h(lik)o(e)e(implem)o(en)o(tati)o(on)f(costs)89 +2553 y(and)15 b(administrativ)o(e)c(e\013ort\),)k(and)f Fh(indep)q(endence)f +Ft(\(to)i(pro)o(vide)e(a)i(p)q(ortable)f(system)f(that)h(do)q(es)977 +2715 y(8)p eop +%%Page: 9 9 +8 bop 89 82 a Ft(not)22 b(dep)q(end)f(on)g(underlying)g(hardw)o(are)g(or)h +(comm)o(uni)o(cation)d(tec)o(hnology)l(.\))35 b(Eac)o(h)21 +b(of)g(these)89 142 y(goals)f(represen)o(ts)e(a)h(criterion)e(in)i(itself.)27 +b(Indeed,)18 b(the)h(ultimate)d(goal)k(is)e(to)h(guaran)o(tee)g(data)89 +203 y(consistency)l(,)13 b(but)h(not)h(only)e(in)h(the)g(data)g(base)h(but)f +(also)g(during)g(the)g(mapping)f(pro)q(cess.)21 b(That)89 263 +y(means)11 b(that)i(w)o(e)f(w)o(an)o(t)g(to)h(prev)o(en)o(t)d(the)i(p)q +(ossibilit)o(y)g(of)g(malicious)e(soft)o(w)o(are)j(in)o(tro)q(ducing)f(wrong) +89 323 y(asso)q(ciations)20 b(without)e(the)g(data)h(base)g(ev)o(er)d(seeing) +i(c)o(hanges.)27 b(The)19 b(correctness)e(of)i(this)f(run)89 +383 y(time)c(b)q(eha)o(vior)i(is)g(m)o(uc)o(h)e(harder)j(to)f(ensure)g(than)h +(the)f(in)o(tegrit)o(y)f(of)h(the)g(data)h(base.)162 443 y(W)l(e)j(consider)f +(the)g Fh(qualit)o(y)g(of)h(a)g(solution)g Ft(to)g(b)q(e)f(a)h(measuremen)o +(t)d(of)j(the)f(radius)h(of)g(ap-)89 504 y(plicabilit)o(y)g(of)j(the)g +(solution.)41 b(The)22 b Fh(feasibilit)o(y)f(of)i(an)g(implem)o(en)o(tation)d +Ft(of)j(a)g(solution)g(de-)89 564 y(termines)17 b(ho)o(w)i(m)o(uc)o(h)e +(e\013ort)j(is)f(needed)f(to)i(apply)f(the)g(solution)g(to)h(an)f(unmo)q +(di\014ed)g(v)o(ersion)89 624 y(of)g(a)f(state{of{the{art)i(name)d(serv)o +(er.)27 b(The)18 b Fh(complexit)o(y)d(of)k(its)f(implem)o(en)n(tation)e +Ft(denotes)j(if)89 684 y(mo)q(di\014cations)h(in)g(di\013eren)o(t)f(areas)i +(are)g(in)o(v)o(olv)o(ed)d(and)j(ho)o(w)f(complicated)e(their)i(in)o +(teraction)89 744 y(is.)h(Solutions)16 b(migh)o(t)d(not)j(b)q(e)g(suitable)f +(in)g(ev)o(ery)f(organizational)i(en)o(vironmen)o(t.)i(W)l(e)d(call)g(this)89 +804 y(criterion)i Fh(applicabilit)o(y)f(in)h(an)i(organization)p +Ft(.)27 b(The)18 b Fh(transparency)g(of)g(the)g(solution)g +Ft(in)o(v)o(olv)o(es)89 865 y(the)e(soft)o(w)o(are)g(in)o(terface)f(and)i +(the)f(user)g(in)o(terface)f(to)h(the)g(system.)k(A)15 b(solution)i(that)g +(do)q(es)g(not)89 925 y(require)e(c)o(hanges)i(to)g(the)g(DNS)f(proto)q(col)i +(is)e(preferable)g(o)o(v)o(er)f(one)i(that)g(do)q(es.)23 b(User)16 +b(appro)o(v)m(al)89 985 y(of)h(an)o(y)h(mo)q(di\014cation)e(that)i(is)f(not)g +(transparen)o(t)h(is)f(a)h(crucial)e(p)q(oin)o(t.)24 b(W)l(e)17 +b(com)o(bine)e(these)i(as-)89 1045 y(p)q(ects)g(in)g(the)g(term)e +Fh(acceptabilit)o(y)g(b)o(y)i(the)g(user)p Ft(.)24 b(An)17 +b(imp)q(ortan)o(t)f(p)q(oin)o(t)h(in)g(the)g(in)o(tro)q(duction)89 +1105 y(of)22 b(c)o(hanges)g(to)g(systems)e(is)i(the)f Fh(transition)h(pro)q +(cess)g Ft(from)f(the)g(original)h(state)g(\(b)q(efore)f(the)89 +1166 y(solution)c(is)f(applied\))f(to)i(the)f(new)g(state.)89 +1310 y Fg(3.2)70 b(The)22 b(Berk)n(eley)f(P)n(atc)n(h)89 1402 +y Ft(W)l(e)d(brie\015y)f(explained)h(the)g(Berk)o(eley)d(soft)o(w)o(are)k +(patc)o(h)f(in)g(section)g(1)g(without)h(calling)e(it)h(the)89 +1462 y(Berk)o(eley)10 b(patc)o(h.)20 b(This)13 b(\014rst)g(attempted)f +(defense,)g(dev)o(elop)q(ed)g(at)h(the)g(Univ)o(ersit)o(y)d(of)j(Berk)o(eley) +l(,)89 1523 y(CA)h(,)f(consists)h(of)g(mo)q(di\014cations)g(of)g(the)f +(r-command)f(daemons.)20 b(The)14 b(idea)g(is)g(to)g(v)m(alidate)f(the)89 +1583 y(in)o(v)o(erse)j(mapping)g(tree)h(b)o(y)f(lo)q(oking)i(at)g(the)f +(corresp)q(onding)h(no)q(de)g(on)g(the)f(forw)o(ard)h(mapping)89 +1643 y(tree.)i(S.)c(Bello)o(vin)e(describ)q(es)i(the)g(metho)q(d)g(used)g(b)o +(y)g(the)g(patc)o(h)g(in)g([Bel92)o(])g(as)h(follo)o(ws:)284 +1756 y(T)l(o)e(detect)e(this,)h(w)o(e)g(p)q(erform)f(a)h(cross{c)o(hec)o(k;)g +(using)g(the)g(returned)g(name,)e(w)o(e)211 1816 y(do)17 b(a)h(forw)o(ard)f +(c)o(hec)o(k)e(to)j(learn)e(the)h(legal)f(address)i(for)f(that)g(host.)24 +b(If)17 b(that)g(name)211 1876 y(is)f(not)g(listed,)f(or)h(if)g(the)f +(addresses)i(do)g(not)f(matc)o(h,)e(alarms,)h(gongs,)i(and)g(to)q(csins)211 +1936 y(are)f(sounded.)162 2049 y(The)c(\014x)g(is)h(easily)e(installed)g(and) +i(not)g(v)o(ery)e(complex.)18 b(Its)12 b(compatibilit)o(y)d(with)j(the)g +(existing)89 2109 y(DNS)17 b(proto)q(col)h(is)e(another)i(adv)m(an)o(tage.)24 +b(The)17 b(transition)g(pro)q(cess)h(to)f(mo)o(v)o(e)e(to)i(services)f(that) +89 2169 y(con)o(tain)i(the)g(patc)o(h)g(is)g(not)h(di\016cult,)e(but)h +(requires)g(some)f(w)o(ork.)27 b(Although)19 b(w)o(e)e(regard)i(this)89 +2230 y(patc)o(h)h(as)h(an)g(obligatory)f(mo)q(di\014cation)g(to)h(daemons)e +(lik)o(e)g Fi(rlo)n(gind)h Ft(and)h Fi(rshd)p Ft(,)f(it)g(is)g(limited)89 +2290 y(in)d(its)g(scop)q(e.)25 b(The)17 b(cac)o(he)g(of)g(a)h(running)g(name) +e(serv)o(er)g(can)h(still)g(b)q(e)g(p)q(oisoned)h(b)o(y)f(supplying)89 +2350 y(additional)j(unrequested)f(records)g(as)h(the)g(exp)q(erimen)o(ts)d +(describ)q(ed)i(in)g([Sc)o(h93,)h(section)f(3.5])89 2410 y(pro)o(v)o(e.)162 +2470 y(The)f(Berk)o(eley)d(patc)o(h)j(utilizes)e(a)i(principle)e(that)i(can)g +(b)q(e)g(applied)f(outside)h(of)g(the)g(UNIX)89 2530 y(domain.)h(The)13 +b(idea)g(is)f(to)h(p)q(erform)f(a)h(cross-c)o(hec)o(k)f(of)h(the)g(\014rst)g +(mapping)f(in)g(the)h(rev)o(erse)e(order.)89 2591 y(In)k(a)h(consisten)o(t)f +(state,)h(forw)o(ard)g(and)g(bac)o(kw)o(ard)f(mapping)g(data)h(are)g(managed) +f(b)o(y)g(the)g(same)977 2715 y(9)p eop +%%Page: 10 10 +9 bop 89 82 a Ft(authorit)o(y)l(.)32 b(Th)o(us)20 b(tamp)q(ering)f(with)h +(only)g(one)g(of)g(the)g(t)o(w)o(o)g(directions)f(of)h(mapping)g(can)g(b)q(e) +89 142 y(detected.)162 203 y(The)d(patc)o(h)f(is)g(a)h(solution)g(if)f(trust) +h(can)f(b)q(e)h(extended)f(only)g(within)g(the)g(scop)q(e)h(of)g(author-)89 +263 y(itativ)o(e)e(data,)j(and)f(if)f(the)h(attac)o(k)o(er)f(do)q(es)i(not)f +(use)g(the)f(more)g(sophisticated)h(attac)o(k)f(metho)q(d.)89 +323 y(If)g(the)h(attac)o(k)o(er)f(supplies)h(the)g(additional)g(address)h +(record)e(with)h(the)g(answ)o(er)g(to)h(the)e(rev)o(erse)89 +383 y(lo)q(okup,)h(it)f(means)f(that)i(he)g(con)o(trols)f(b)q(oth)h(lo)q +(okup)h(directions,)d(and)i(that)g(trust)g(is)f(extended)89 +443 y(to)h(p)q(ossibly)f(un)o(trust)o(w)o(orth)o(y)g(sources.)89 +588 y Fg(3.3)70 b(Examining)22 b(Berk)n(eley)f Fs(r{Commands)89 +680 y Ft(In)16 b(this)f(paragraph)j(w)o(e)e(discuss)g(the)g(UNIX{sp)q +(eci\014c)e(w)o(a)o(y)h(of)h(impleme)o(n)o(ting)d(a)j(T)l(rusted)h(Net-)89 +740 y(w)o(ork.)j(The)14 b(Berk)o(eley)c(r{commands)i(extensiv)o(ely)f(use)i +(the)g Fi(.rhosts)g Ft(and)h Fi(/etc/hosts.e)n(quiv)g Ft(\014les)89 +800 y(to)j(increase)g(con)o(v)o(enien)o(t)d(net)o(w)o(ork)j(access.)23 +b(In)17 b(paragraph)i(2.3.2,)e(w)o(e)f(discussed)h(the)g(T)l(rusted)89 +861 y(Net)o(w)o(ork)e(concept.)22 b(R{commands)15 b(suc)o(h)h(as)h(remote)e +(login)h(and)h(remote)e(shell)g(o\013er)i(the)g(p)q(os-)89 +921 y(sibilit)o(y)12 b(to)i(extend)f(trust)i(to)f(other)g(mac)o(hines.)k +(Users)c(and)h(system)d(administrators)h(can)i(build)89 981 +y(individual)j(net)o(w)o(orks)g(of)i(trust.)30 b(This)19 b(pro)o(v)o(es)f +(dangerous)j(in)e(some)f(cases.)29 b([GS91)q(,)19 b(c)o(hapter)89 +1041 y(11])e(discusses)f(securit)o(y)f(problems)g(with)h(the)g(UNIX)e(trust)j +(mec)o(hanism)o(.)162 1101 y(The)e(existence)e(of)j(these)e(structures)h(of)h +(trust)f(is)g(necessary)f(for)i(the)e(break{in)h(to)h(happ)q(en.)89 +1162 y(Ob)o(viously)l(,)23 b(the)g(break{in)h(is)f(prev)o(en)o(ted)e(if)i(w)o +(e)g(prohibit)g(the)g(usage)h(of)f(trusted)g(hosts)i(or)89 +1222 y(trusted)e(users)h(completely)l(.)39 b(It)23 b(is)g(tec)o(hnically)e(p) +q(ossible)i(to)h(disallo)o(w)f(the)g(usage)h(of)g Fh(trust)89 +1282 y Ft(in)19 b(Berk)o(eley)e(r{commands.)30 b(The)19 b(c)o(hoice)g(can)g +(b)q(e)h(made)e(b)o(y)h(the)h(system)e(administrator)h(at)89 +1342 y(compile)10 b(time.)18 b(Ho)o(w)o(ev)o(er,)11 b(b)q(eing)i(able)f(to)h +(access)g(other)g(mac)o(hines)d(without)j(passw)o(ords)i(mak)o(es)89 +1402 y(the)j(w)o(ork)h(in)f(a)h(net)o(w)o(orking)f(en)o(vironmen)o(t)e +(easier.)28 b(Once)18 b(used)h(to)g(the)g(comfort,)e(not)i(man)o(y)89 +1463 y(users)h(agree)g(to)g(sacri\014ce)f(their)g(con)o(v)o(enience)f(for)i +(the)f(prev)o(en)o(tion)g(of)h Fi(hyp)n(othetic)n(al)f Ft(securit)o(y)89 +1523 y(concerns.)32 b(The)20 b(trade{o\013)h(hereb)o(y)e(w)o(ould)h(con)o +(tain)f(the)h(loss)g(of)g(con)o(v)o(enien)o(t,)e(and)j(in)e(man)o(y)89 +1583 y(cases,)13 b(necessary)g(to)q(ols)h(for)f(trouble)g(free)f(connection)h +(to)g(hosts)h(that)g(are)f(accessed)f(frequen)o(tly)l(.)162 +1643 y(A)23 b(less)f(safe)h(solution)h(w)o(ould)e(b)q(e)i(to)f(limit)d(trust) +j(to)g(lo)q(cally)g(administered)d(zones,)25 b(i.e.)89 1703 +y(authoritativ)o(e)20 b(zones,)h(where)g(the)f(Berk)o(eley)e(patc)o(h)j(w)o +(orks)g(reliably)l(.)33 b(As)20 b(w)o(e)g(disco)o(v)o(ered)f(in)89 +1764 y(paragraph)h(3.2,)f(limiting)d(trust)j(to)g(certain)f(zones)h(\014xes)f +(the)h(\015a)o(w.)28 b(An)19 b(organization)g(could)89 1824 +y(issue)g(the)g(p)q(olicy)g(that)h(only)f(lo)q(cal)g(trust)h(is)f(allo)o(w)o +(ed.)30 b(In)19 b(some)g(organizations)h(this)f(can)h(b)q(e)89 +1884 y(considered)d(a)h(reasonable)g(approac)o(h)h(if)e(hardly)g(an)o(y)h +(remote)e(accesses)h(that)i(are)e(directed)g(to)89 1944 y(hosts)j(in)g(the)f +(lo)q(cal)h(zone)f(are)h(originated)f(outside)h(of)g(the)f(lo)q(cal)h(zone.) +31 b(Additional)19 b(mec)o(ha-)89 2004 y(nisms)f(w)o(ould)g(b)q(e)h +(necessary)g(to)g(enforce)f(the)h(p)q(olicy)l(,)f(suc)o(h)g(as)i(p)q(erio)q +(dical)e(c)o(hec)o(ks)g(of)h Fi(.rhosts)89 2065 y Ft(or)g(a)g(mo)q(di\014ed)e +(r{command)g(implem)o(en)n(tation)f(where)i(users)h(cannot)g(directly)e(mo)q +(dify)g(their)89 2125 y(database)22 b(of)f(trusted)f(mac)o(hines,)g(but)g(ha) +o(v)o(e)g(to)h(use)g(a)g(sp)q(ecial)f(program.)34 b(The)21 +b(trust)f(asso-)89 2185 y(ciations)f(m)o(ust)f(then)h(b)q(e)h(k)o(ept)e(in)h +(a)h(protected)f(data)h(area)g(of)g(the)f(op)q(erating)h(system.)29 +b(This)89 2245 y(program)13 b(could)g(\014lter)g(out{of{zone)h(en)o(tries)e +(at)i(the)f(time)e(the)i(user)g(w)o(an)o(ted)g(to)h(en)o(ter)e(them.)18 +b(It)89 2305 y(w)o(ould)d(also)h(con)o(tain)f(the)f(p)q(ossibilit)o(y)h(of)g +(managing)g(setup)g(c)o(hanges)g(cen)o(trally)l(.)k(This)d(solution)89 +2365 y(actually)g(prop)q(oses)h(an)g(automatized)e(pro)q(cedure)h(to)h +(implem)o(en)o(t)c(an)k(organization's)f(p)q(olicy)l(.)162 +2426 y(If)d(the)g(nature)h(of)f(connections)g(allo)o(ws)h(a)f(p)q(olicy)g +(suc)o(h)g(as)h(describ)q(ed)f(ab)q(o)o(v)o(e,)g(impleme)o(n)o(ti)o(ng)89 +2486 y(it)k(is)g(a)h(ma)s(jor)e(e\013ort.)25 b(Some)16 b(system)g(scripts)h +(ha)o(v)o(e)f(to)i(b)q(e)f(written)g(to)h(ensure)f(prop)q(er)h(usage,)89 +2546 y(op)q(erating)i(system)e(co)q(de)h(and)h(r{command)d(co)q(de)j(m)o(ust) +e(b)q(e)h(mo)q(di\014ed,)f(and)i(a)g(new)f(user)g(in-)965 2715 +y(10)p eop +%%Page: 11 11 +10 bop 89 82 a Ft(terface)17 b(has)h(to)h(b)q(e)f(dev)o(elop)q(ed.)24 +b(Users)18 b(ha)o(v)o(e)f(to)h(b)q(e)g(trained)f(on)h(ho)o(w)h(to)f(apply)f +(the)h(c)o(hanged)89 142 y(facilit)o(y)13 b(and)i(ha)o(v)o(e)f(to)h(b)q(e)g +(made)f(familiar)f(with)i(the)f(new)h(p)q(olicy)f(and)i(the)e(new)h(user)g +(in)o(terface.)89 203 y(Adv)m(an)o(tages)k(of)h(this)f(new)g(approac)o(h)g +(are)h(compatibilit)o(y)15 b(with)k(the)g(existing)f(DNS)h(proto)q(col)89 +263 y(and)e(additional)f(b)q(ene\014ts)h(in)f(further)f(securit)o(y)g +(related)h(issues.)162 323 y(Although)i(w)o(e)g(concen)o(trate)f(on)i(the)f +(Berk)o(eley)d(r{commands)i(in)h(this)g(paragraph,)i(w)o(e)d(do)89 +383 y(not)j(forget)f(that)h(there)f(are)g(other)g(w)o(a)o(ys)g(to)h(exploit)e +(the)h(\015a)o(w.)31 b(F)l(or)19 b(example,)f(in)o(tercepting)89 +443 y(electronic)12 b(mail)h(is)g(a)i(target)f(of)h(attac)o(k)o(ers;)e(esp)q +(ecially)g(electronic)f(mail)h(that)h(is)g(exc)o(hanged)f(b)o(y)89 +504 y(securit)o(y)i(agencies)i(and)h(securit)o(y)d(related)h(organizations.) +25 b(Electronic)15 b(mail)h(dep)q(ends)h(on)g(the)89 564 y(DNS.)162 +624 y(The)c(Massac)o(h)o(usetts)h(Institute)e(of)i(T)l(ec)o(hnology)l(,)f +(together)g(with)g(IBM)f(and)i(Digital)f(Equip-)89 684 y(men)o(t)18 +b(Corp)q(oration)k(dev)o(elop)q(ed)c(in)i(1983)h(Kerb)q(eros,)g(an)g(authen)o +(tication)e(system)f(that)j(uses)89 744 y(Data)14 b(Encryption)f(Standard)i +(\(see)e([NBS77)o(]\))g(cryptograph)o(y)g(to)h(transmit)e(sensitiv)o(e)g +(informa-)89 804 y(tion)18 b(on)h(a)g(net)o(w)o(ork,)f(suc)o(h)g(as)h +(clear-text)f(passw)o(ords.)29 b(Although)19 b(Kerb)q(eros)g(is)f(an)h +(excellen)o(t)89 865 y(solution)e(to)g(sev)o(eral)e(di\016cult)h(problems,)f +(it)h(has)h(shortcomings)f(that)i(limit)13 b(its)k(usefulness)f(in)89 +925 y(resp)q(ect)g(to)h(our)f(problem.)k(A)c(discussion)g(of)h(its)f +(shortcomings)g(can)g(b)q(e)g(found)h(in)f([GS91)q(].)162 985 +y(Ov)o(erall,)c(a)h(v)o(ery)f(w)o(eak)h(p)q(oin)o(t)g(in)g(Berk)o(eley)d +(deriv)o(ed)i(UNIX)f(systems)h(is)h(the)g(usage)h(of)f(trust.)89 +1045 y(This)18 b(pap)q(er)g(exploits)f(only)g(one)h(of)g(sev)o(eral)f(kno)o +(wn)h(\015a)o(ws)g(based)g(up)q(on)h(trust.)26 b(Using)17 b(trust{)89 +1105 y(based)h(mec)o(hanism)o(s)c(requires)i(thinking)h(ab)q(out)h(a)g(c)o +(hange)f(in)g(individual)e(p)q(olicies)i(in)f(dealing)89 1166 +y(with)g(gran)o(ting)h(trust)f(to)h(others.)k(W)l(e)16 b(can)h(conclude,)e(b) +o(y)h(citing)f(S.)h(Bello)o(vin)e(\([Bel90)o(]\):)284 1267 +y(If)f(a)h(host)g(trusts)g(another)f(host)h(not)g(named)f(in)g(a)g(lo)q(cal)h +(zone,)f(its)g(name)f(serv)o(er)211 1328 y(cannot)17 b(protect)f(it.)89 +1472 y Fg(3.4)70 b(Restricti)o(ng)21 b(Public)g(Information)i(Access)89 +1564 y Ft(What)13 b(mak)o(es)e(the)h(break{in)g(p)q(ossible)h(in)f(the)g +(\014rst)h(place)f(is)g(gathering)h(necessary)f(information)89 +1624 y(ab)q(out)19 b(hostnames)e(of)h(trusting)g(mac)o(hines)d(and)k(user)e +(names)g(on)h(di\013eren)o(t)e(systems)h(trusting)89 1685 y(eac)o(h)f(other.) +162 1745 y(W)l(e)11 b(are)h(not)g(discussing)f(random)h(patterns)f(of)h +(trust)g(that)g(migh)o(t)e(exist)g(b)q(et)o(w)o(een)h(hosts,)i(but)89 +1805 y(common)d(patterns)j(using)g(a)g(systematic)e(approac)o(h.)21 +b(In)12 b(a)h(cluster)f(of)h(time{sharing)e(mac)o(hines,)89 +1865 y(eac)o(h)18 b(mac)o(hine)f(is)i(lik)o(ely)d(to)j(extend)f(trust)h(to)g +(all)g(its)f(p)q(eers.)29 b(This)19 b(pattern)g(is)g(not)g(common)89 +1925 y(to)24 b(the)f(general)g(user)h(p)q(opulation,)i(but)d(it)g(is)h +(applicable)e(to)i(systems)e(programming)g(and)89 1986 y(op)q(erational)c +(sta\013.)25 b(Another)17 b(t)o(ypical)f(pattern)i(is)f(the)g(o)q(ccurrence)f +(of)i(\014le)f(serv)o(ers)f(that)i(trust)89 2046 y(their)10 +b(clien)o(ts,)g(who)i(serv)o(e)e(as)h(a)h(source)f(of)g(extra)g(CPU)g +(cycles.)18 b(Dataless)12 b(clien)o(ts)d(will)h(frequen)o(tly)89 +2106 y(trust)i(administrativ)o(e)e(mac)o(hines)g(to)j(p)q(ermit)d(soft)o(w)o +(are)i(main)o(tenance.)18 b(Some)11 b(systems)g(still)g(use)89 +2166 y(the)i(same)g Fi(/etc/hosts.e)n(quiv)i Ft(\014les)e(on)h(man)o(y)e +(hosts)i(just)g(to)g(simplify)c(systems)j(administration.)162 +2226 y(Generally)23 b(accessable)h(programs)g(can)g(aid)h(in)e(disco)o(v)o +(ering)g(the)h(desired)f(information:)89 2287 y(there)12 b(are)i(net)o(w)o +(ork)e(monitoring)g(and)i(information)e(to)q(ols)i(\(suc)o(h)f(as)g +Fi(snmptnetstat)p Ft(,)i Fi(tr)n(ac)n(er)n(oute)p Ft(,)89 2347 +y(or)j(the)g(DNS)g(itself)s(\),)g(user)g(information)f(services)g(\(suc)o(h)g +(as)i Fi(\014nger)p Ft(\),)g(and)g(UNIX)d(services)h(in)89 +2407 y(general)i(\(suc)o(h)g(as)h Fi(ftp)p Ft(,)g Fi(smtp)p +Ft(,)f(or)h Fi(rp)n(cinfo)p Ft(.\))30 b(Other)19 b(sources)h(of)f +(information)g(migh)o(t)e(include)89 2467 y(published)k(material)e +(describing)i(net)o(w)o(ork)g(top)q(ology)i(that)e(is)h(a)o(v)m(ailable)e +(for)i(example)d(from)89 2527 y(some)c(academic)g(departmen)o(ts.)162 +2588 y(The)23 b(men)o(tioned)f(collection)f(of)j(to)q(ols)g(sho)o(ws)g(that)g +(it)f(is)g(a)g(di\016cult)f(task)i(to)g(limit)c(in-)965 2715 +y(11)p eop +%%Page: 12 12 +11 bop 89 82 a Ft(formation)22 b(access)h(without)h(sacri\014cing)f(the)f +(legitimate)f(utilization)h(of)h(net)o(w)o(ork)g(services.)89 +142 y(Prev)o(en)o(ting)15 b(someone)h(from)f(gathering)i(information)f(is)g +(nearly)g(imp)q(ossible.)k(T)l(o)q(o)e(man)o(y)d(ser-)89 203 +y(vices)j(rely)g(on)i(address)g(information,)e(and)i(w)o(e)e(conjecture)h +(that)g(most)g(users)g(w)o(ould)g(not)h(b)q(e)89 263 y(happ)o(y)f(if)f(they)g +(w)o(ere)g(depriv)o(ed)f(of)i(useful)f(to)q(ols)h(suc)o(h)g(as)g(electronic)e +(mail)g(or)i(news)f(readers.)89 323 y(The)i(idea)f(of)h(op)q(en)h(systems)d +(requires)h(op)q(en)i(access)e(to)i(information)d(services)h(and)h(address)89 +383 y(information.)29 b(Therefore,)19 b(most)f(system)g(administrators)h(ha)o +(v)o(e)f(decided)g(that)i(the)f(b)q(ene\014ts)89 443 y(of)e(these)e +(utilities)g(out)o(w)o(eigh)h(the)g(risks.)89 588 y Fg(3.5)70 +b(Adjusting)22 b(DNS)h(Up)r(date)g(In)n(terv)l(als)89 680 y +Ft(Some)c(sites)h(ha)o(v)o(e)g(connections)g(c)o(hie\015y)f(with)h(mac)o +(hines)e(outside)j(of)f(their)g(zones)g(that)h(sta)o(y)89 740 +y(stable)14 b(in)f(the)h(sense)f(that)h(hostname)g(to)g(IP)f(address)i +(mapping)e(will)f(sta)o(y)i(the)g(same)e(for)i(a)h(long)89 +800 y(time.)24 b(The)18 b(idea)f(is)h(to)g(en)o(ter)f(long)h(time{to{liv)o(e) +d(v)m(alues)j(in)o(to)f(the)h(resource)f(records,)h(v)m(alues)89 +861 y(that)13 b(exceed)f(the)h(curren)o(tly)e(impleme)o(n)o(ted)f(threshold)j +(of)g(1)h(w)o(eek.)19 b(Limits)11 b(could)i(b)q(e)h(increased)89 +921 y(up)g(to)g(6,)h(12)f(mon)o(ths,)f(or)i(ev)o(en)e(longer,)h(dep)q(ending) +g(on)g(the)g(situation.)20 b(If)14 b(this)g(data)g(is)g(en)o(tered)89 +981 y(with)20 b(great)h(care)g(to)g(ensure)f(correctness)g(of)h(the)g +(mappings,)g(the)f(DNS)g(based)i(break{in)e(is)89 1041 y(prev)o(en)o(ted.)162 +1101 y(This)i(approac)o(h)g(is)f(limited)d(b)o(y)j(its)g(scop)q(e)h(of)f +(applicabilit)o(y)l(,)f(but)i(it)f(is)g(a)h(solution)f(with)89 +1162 y(man)o(y)d(adv)m(an)o(tages.)32 b(It)18 b(go)q(es)j(with)e(the)g +(curren)o(t)f(DNS)i(proto)q(col)g(and)g(can)f(b)q(e)h(implem)o(e)o(n)o(ted)89 +1222 y(without)f(m)o(uc)o(h)e(e\013ort)j(b)o(y)e(simply)f(c)o(hanging)j(the)e +(constan)o(t)i(in)f(the)f(name)g(serv)o(er)g(co)q(de)i(that)89 +1282 y(determines)14 b(the)i(maxim)o(um)c(time{to{liv)o(e)i(for)j(cac)o(he)e +(en)o(tries)h(and)h(recompiling)d(the)i(system.)89 1342 y(As)j(all)f +(necessary)h(en)o(tries)f(are)h(k)o(ept)f(in)h(the)g(lo)q(cal)g(cac)o(he,)f +(the)h(system)e(pro)o(vides)i(v)o(ery)f(quic)o(k)89 1402 y(replies)d(to)i +(queries.)k(It)16 b(hardly)h(ev)o(er)e(uses)i(the)f(net)o(w)o(ork)g(and)h +(therefore)f(sa)o(v)o(es)g(bandwidth)h(on)89 1463 y(the)f(medium)d(for)j +(other)h(tasks.)162 1523 y(This)k(approac)o(h)h(has)f(the)g(problem)e(of)i(v) +m(alidating)g(mappings)f(b)q(efore)h(they)f(are)h(cac)o(hed.)89 +1583 y(Ho)o(w)e(can)h(it)e(b)q(e)i(ensured)f(that)h(the)f(mappings)g(are)g +(correct)g(in)f(the)i(\014rst)f(place?)30 b(Certainly)l(,)89 +1643 y(a)18 b(false)f(en)o(try)f(w)o(ould)i(sta)o(y)f(for)h(a)f(long)h(time,) +d(and)j(the)f(attac)o(k)o(er's)g(address)h(w)o(ould)f(b)q(e)h(\014nally)89 +1703 y(noted.)23 b(But)17 b(do)q(es)h(that)f(really)f(help,)g(once)h(misc)o +(hief)d(is)i(done?)25 b(It)16 b(migh)o(t)f(aid)i(in)g(prosecution)89 +1764 y(e\013orts,)f(but)h(only)f(little)e(in)i(prev)o(en)o(tion.)162 +1824 y(Extending)i(TTL)i(v)m(alues)e(to)h(a)g(long)g(p)q(erio)q(d)g(of)g +(time)d(is)i(a)h(safe)g(and)g(feasible)f(metho)q(d)f(in)89 +1884 y(en)o(vironmen)o(ts)12 b(where)i(the)g(additional)g(condition)g(of)h +(static)f(mappings)g(with)g(long)h(lifetimes)c(is)89 1944 y(giv)o(en.)22 +b(Ho)o(w)o(ev)o(er,)15 b(in)i(this)g(scenario)g(the)f(DNS)h(seems)f(not)h(to) +h(b)q(e)f(the)f(righ)o(t)h(approac)o(h,)g(but)h(a)89 2004 y(lo)q(cally)d(w)o +(ell{administered)f(static)i(mapping)f(mec)o(hanism.)162 2065 +y(One)21 b(of)g(the)g(original)g(reasons)h(to)g(in)o(tro)q(duce)e(the)h(DNS)g +(w)o(as)h(to)f(manage)g(the)g(dynamic)89 2125 y(b)q(eha)o(vior)c(of)h(c)o +(hanges)g(in)f(the)g(data)h(base.)25 b(This)18 b(approac)o(h)g(\014xes)f +(mappings)g(for)h(a)f(long)h(time)89 2185 y(and)e(uses)g(a)g(p)q(o)o(w)o +(erful)e(distributed)h(database)i(system)d(for)i(an)g(infrequen)o(tly)d(o)q +(ccuring)i(up)q(date)89 2245 y(pro)q(cess.)33 b(Although)20 +b(w)o(e)f(are)h(not)g(talking)g(ab)q(out)h(a)f(static)g(mapping)f(in)h(this)f +(paragraph,)k(a)89 2305 y(w)o(ell{main)o(tained)12 b Fi(HOSTS.TXT)k +Ft(\014le)f(or)g(a)g(h)o(ybrid)g(approac)o(h)g(w)o(ould)g(ha)o(v)o(e)g(the)f +(functionalit)o(y)89 2365 y(required)h(with)h(less)g(o)o(v)o(erhead.)162 +2426 y(It)23 b(could)h(b)q(e)f(suggested)i(to)f(abandon)h(the)e(DNS)h(and)g +(either)f(return)g(to)h(the)f(previous)89 2486 y(system)c(with)i(a)g(static)g +(host)g(table,)h(or)f(mo)o(v)o(e)e(on)i(to)g(another)h(system)d(that)i(has)h +(y)o(et)e(to)h(b)q(e)89 2546 y(dev)o(elop)q(ed.)f(W)l(e)14 +b(are)g(not)h(going)h(to)f(discuss)f(p)q(ossible)h(future)f(dev)o(elopmen)o +(t)e(of)i(the)h(DNS)f(here,)965 2715 y(12)p eop +%%Page: 13 13 +12 bop 89 82 a Ft(but)16 b(returning)g(to)h(the)f(previous)g(system.)162 +142 y(In)c(this)f(approac)o(h,)i(mappings)f(can)g(c)o(hange)f(frequen)o(tly)l +(,)g(but)h(c)o(hanges)g(ha)o(v)o(e)f(to)h(b)q(e)g(rep)q(orted)89 +203 y(to)21 b(a)g(cen)o(tral)f(authorit)o(y)g(that)h(manages)f(the)h(whole)f +(DNS)h(space)g(in)f(con)o(trast)h(to)g(the)f(DNS)89 263 y(approac)o(h)k(of)f +(managing)f(zones)h(through)h(delegated)e(lo)q(cal)h(authorities.)41 +b(This)23 b(w)o(ould)g(not)89 323 y(solv)o(e)17 b(the)g(problem,)e(b)q +(ecause)j(the)f(problem)f(is)h(not)h(the)f(DNS,)g(but)h(inadequate)f(metho)q +(ds)g(of)89 383 y(host)i(authen)o(tication.)28 b(IP)18 b(addresses)h(of)g +(trusted)g(mac)o(hines)d(could)j(still)e(b)q(e)i(imitated.)26 +b(This)89 443 y(is)16 b(a)h(somewhat)f(harder)g(task,)g(but)h(the)f(tec)o +(hniques)f(ha)o(v)o(e)g(b)q(een)h(kno)o(wn)h(for)g(quite)e(some)g(time)89 +504 y(\(see)h([Mor85]\).)162 564 y(W)l(ould)e(it)f(b)q(e)g(safer)h(to)f +(transmit)g(up)q(dates)h(to)g(a)f(cen)o(tral)g(site?)20 b(Electronic)12 +b(mail,)g(telephone)89 624 y(calls,)h(or)h(con)o(v)o(en)o(tional)e(pap)q(er)h +(are)h(not)g(necessarily)e(a)i(reliable)d(w)o(a)o(y)j(to)f(transmit)f +(mapping)h(in-)89 684 y(formation)h(up)q(dates.)22 b(The)14 +b(long)h(time)e(dela)o(y)h(un)o(til)f(cen)o(trally)g(made)h(c)o(hanges)h(are) +g(propagated)89 744 y(through)g(the)g(net)o(w)o(ork)e(w)o(ould)i(condemn)e +(the)h(database)i(to)f(b)q(e)f(in)g(an)h(inheren)o(tly)e(inconsisten)o(t)89 +804 y(state.)22 b(The)17 b(system)e(w)o(ould)h(again)h(con)o(tain)g(all)e +(the)i(disadv)m(an)o(tages)g(whic)o(h)f(w)o(ere)g(the)g(reasons)89 +865 y(for)g(dev)o(eloping)g(the)g(curren)o(t)f(DNS.)162 925 +y(But)d(b)q(esides)g(these)g(ob)o(vious,)h(tec)o(hnical,)e(and)i(w)o(ell{kno) +o(wn)e(reasons,)j(there)e(is)g(a)g(signi\014can)o(t)89 985 +y(argumen)o(t)h(wh)o(y)g(no)h(one)g(can)g(p)q(ossibly)g(b)q(e)g(in)f(fa)o(v)o +(or)g(of)h(reinstalling)f(the)g(previous)h(system:)k(the)89 +1045 y(sheer)h(size)f(of)h(the)g(In)o(ternet.)29 b Fi(HOSTS.TXT)20 +b Ft(w)o(as)g(abandoned)g(b)q(ecause)f(200,000)i(hosts)f(w)o(as)89 +1105 y(to)q(o)13 b(m)o(uc)o(h)d(to)i(b)q(e)h(managed.)19 b(Are)11 +b(curren)o(tly)g(o)o(v)o(er)g(2.2)h(million)e(\(see)h([Lot94)q(]\))h(easier)g +(to)g(handle?)89 1166 y(Certainly)j(not.)162 1226 y(Abandoning)f(the)f(DNS)h +(w)o(ould)f(drag)h(the)f(name)f(resolution)h(task)h(in)f(the)g(In)o(ternet)f +(out)i(of)g(a)89 1286 y(functioning)f(state)h(with)f(a)h(not)g(easily)e +(exploitable)g(securit)o(y)g(breac)o(h,)h(in)o(to)g(an)h(unmanageable,)89 +1346 y(not)k(w)o(orking)g(state)g(of)g(prehistoric)e(system)h(design.)25 +b(W)l(e)18 b(think)f(that)h(w)o(ould)f(do)i(more)d(harm)89 +1406 y(than)h(ignoring)f(the)g(problem.)89 1551 y Fg(3.6)70 +b(Hardening)23 b(Name)e(Serv)n(ers)89 1643 y Fe(3.6.1)55 b(Keeping)18 +b(Additional)g(Information)89 1736 y Ft(A)i(\014rst)g(idea)g(is)g(to)g +(extensiv)o(ely)e(log)i(remote)e(login)j(attempts)e(with)h(all)f(asso)q +(ciated)i(address)89 1796 y(and)g(name)d(information.)32 b(Or)19 +b(ev)o(en)g(more:)28 b(to)20 b(tag)h(cac)o(he)e(en)o(tries)g(with)g(their)h +(origin.)32 b(The)89 1856 y(latter)19 b(is)g(an)i(easily)d(ac)o(hiev)o(ed)g +(mo)q(di\014cation)h(that)h(costs)g(additional)g(memory)c(space)k(in)f(the)89 +1916 y(cac)o(he.)h(This)c(metho)q(d)f(mak)o(es)g(it)g(easier)g(to)h(trac)o(k) +g(false)f(database)i(en)o(tries)e(for)h(the)g(purp)q(ose)h(of)89 +1976 y(debugging)g(wrong)g(zone)f(data)i(or)e(in)o(v)o(estigating)f(a)i(DNS)f +(based)h(break{in.)89 2106 y Fe(3.6.2)55 b(Prev)n(en)n(tion)18 +b(of)h(Cac)n(he)h(P)n(oisoning)89 2199 y Ft(Prev)o(en)o(ting)14 +b(the)h(cac)o(he)f(from)h(con)o(tamination)f(is)h(not)h(feasible)e(from)g +(within)h(the)g(name)f(serv)o(er)89 2259 y(co)q(de,)24 b(as)f(there)f(is)h +(no)g(w)o(a)o(y)f(of)h(a)g(priori)f(determining)f(if)h(an)o(y)g(giv)o(en)g +(additional)h(record)f(is)89 2319 y(trust)o(w)o(orth)o(y)14 +b(or)h(not.)21 b(W)l(e)14 b(could)g(start)h(treating)f(sp)q(ecial)g(cases)h +(of)f(when)h(to)g(allo)o(w)f(or)g(disallo)o(w)89 2379 y(additional)i +(information.)162 2439 y(The)h(default)g(safe)g(b)q(eha)o(vior)h(w)o(ould)f +(b)q(e)g(to)h(disallo)o(w)e(the)h(cac)o(hing)g(of)g(unrequested)g(infor-)89 +2500 y(mation,)i(and)i(to)f(allo)o(w)g(it)f(only)h(in)f(cases)h(where)g(the)f +(information)g(is)h(necessary)l(,)g(and)g(then)89 2560 y(only)c(for)h(the)f +(curren)o(t)f(resolution.)965 2715 y(13)p eop +%%Page: 14 14 +13 bop 89 82 a Fe(3.6.3)55 b(Con)n(text)19 b(Cac)n(he)89 175 +y Ft(There)11 b(are)h(other,)h(more)d(sophisticated)i(approac)o(hes)g(p)q +(ossible:)20 b(if)11 b(some)g(additional)h(or)g(author-)89 +235 y(itativ)o(e)g(records)h(are)g(returned)g(together)g(with)g(a)h(resource) +f(record,)g(they)f(could)h(b)q(e)h(in)o(terpreted)89 295 y(only)k(in)f(the)h +(con)o(text)f(of)h(that)g(resource)g(record.)26 b(The)18 b(di\013erence)f(b)q +(et)o(w)o(een)g(the)g(default)h(safe)89 355 y(b)q(eha)o(vior)13 +b(approac)o(h)h(and)g(this)f(one)g(is)g(that)h(in)f(the)g(former,)e(resource) +i(records)h(are)f(only)g(cac)o(hed)89 415 y(when)k(they)f(w)o(ere)g +(requested)g(or)h(necessary)g(additional)g(information,)e(whereas)i(in)g(the) +f(latter)89 475 y(approac)o(h)g(the)f(new)g(en)o(tries)f(get)i(cac)o(hed,)e +(but)h(can)h(b)q(e)f(retriev)o(ed)f(from)g(the)h(cac)o(he)f(only)h(in)g(the) +89 536 y(same)k(con)o(text)h(in)g(whic)o(h)g(they)g(w)o(ere)g(en)o(tered.)33 +b(F)l(or)21 b(example,)e(an)i Ff(address)d Ft(record)i(in)g(the)89 +596 y(additional)f(section)g(of)g(a)g(resp)q(onse)h(to)g(a)f +Ff(mail)24 b(exchange)16 b Ft(record)j(request)g(should)g(only)g(b)q(e)89 +656 y(used)c(for)h(deliv)o(ering)d(mail.)19 b(The)c(information)f(w)o(ould)h +(not)g(b)q(e)g(acceptable)g(for)g(a)h(remote)d(login)89 716 +y(to)h(another)h(host,)g(or)g(generally)e(usable)h(for)g(other)h(services.)k +(A)14 b(glue)g Ff(address)d Ft(record)j(coming)89 776 y(along)k(with)e(a)i +Ff(name)24 b(server)15 b Ft(record)h(w)o(ould)h(only)g(b)q(e)g(used)g(for)g +(follo)o(w{up)g(queries,)f(b)q(ecause)89 837 y(that)k(is)g(the)f(con)o(text)g +(in)h(whic)o(h)f(it)g(w)o(as)h(supplied.)31 b Ff(Address)18 +b Ft(records)h(along)i(with)f Ff(pointer)89 897 y Ft(records)c(should)h(nev)o +(er)d(b)q(e)j(cac)o(hed,)d(b)q(ecause)j(there)e(is)h(no)g(legal)g(con)o(text) +f(in)h(whic)o(h)f(they)h(ha)o(v)o(e)89 957 y(to)h(b)q(e)f(returned)g(in)g(a)g +(single)g(resp)q(onse.)162 1017 y(This)24 b(whole)f(approac)o(h)h(leads)f(to) +h(the)f(question)g(of)h(whether)f(w)o(e)f(still)h(need)g(the)g(addi-)89 +1077 y(tional)18 b(section)f(at)i(all.)25 b(If)18 b(only)g(certain)f(com)o +(binations)f(of)j(resource)e(records)h(are)g(allo)o(w)o(ed)f(as)89 +1138 y(a)22 b(resp)q(onse)g(to)g(a)g(query)l(,)f(wh)o(y)g(not)h(consequen)o +(tly)e(eliminate)f(the)i(idea)g(of)h(additional,)h(un-)89 1198 +y(requested)17 b(information)g(completely)l(,)e(and)k(adapt)g(the)f(proto)q +(col)h(to)g(accommo)q(date)d(the)i(new)89 1258 y(ideas,)e(namely)e(a)j +(certain)e(limited)f(n)o(um)o(b)q(er)g(of)j(t)o(yp)q(es)f(of)g(asso)q +(ciations?)162 1318 y(First)i(of)h(all,)g(that)g(w)o(ould)g(require)e(a)i +(proto)q(col)h(c)o(hange,)f(whic)o(h)f(is)g(something)g(w)o(e)g(try)h(to)89 +1378 y(a)o(v)o(oid.)41 b(Some)21 b(of)i(the)g(original)g(design)g(goals)h(of) +f(the)f(DNS)h(also)h(imply)c(that)k(elimi)o(nating)89 1439 +y(the)18 b(additional)h(section)f(w)o(ould)g(not)h(b)q(e)g(a)g(go)q(o)q(d)h +(approac)o(h.)29 b(The)18 b(system)f(w)o(ould)i(lose)f(some)89 +1499 y(of)i(its)f(generalit)o(y)l(,)f(b)q(ecause)h(the)h(additional)f +(section)g(migh)o(t)e(b)q(ecome)h(v)o(ery)g(useful)h(in)g(future)89 +1559 y(applications)e(of)g(the)f(DNS)h(without)g(con)o(taining)g(an)o(y)f +(securit)o(y)g(threats.)23 b(The)17 b(system)e(w)o(ould)89 +1619 y(certainly)10 b(lose)i(e\016ciency)l(.)17 b(Here)10 b(w)o(e)h(see)h +(again)g(an)g(imp)q(ortan)o(t)f(trade-o\013)h(that)g(w)o(e)f(ha)o(v)o(e)g +(already)89 1679 y(men)o(tioned)e(in)i(previous)g(sections:)19 +b(an)12 b(increase)e(in)h(systems)f(securit)o(y)g(and)i(a)g(decline)d(in)i +(system)89 1740 y(p)q(erformance)k(vs.)21 b(go)q(o)q(d)e(system)14 +b(p)q(erformance)h(and)i(a)g(p)q(ossible)f(lac)o(k)g(of)g(securit)o(y)l(.)162 +1800 y(It)k(is)f(therefore)h(justi\014able)f(to)h(tak)o(e)g(the)f(approac)o +(h)i(of)f(hardening)g(the)g(name)f(serv)o(er)f(b)o(y)89 1860 +y(treating)j(more)f(sp)q(ecial)h(cases,)h(and)g(b)o(y)f(increasing)g(the)g +(complexit)o(y)d(of)k(the)f(in)o(ternal)f(data)89 1920 y(bases,)k(instead)e +(of)g(hardening)h(it)e(b)o(y)h(implem)o(en)o(t)o(ing)e(the)h(same)h(ideas)g +(accepting)f(proto)q(col)89 1980 y(c)o(hanges.)89 2110 y Fe(3.6.4)55 +b(Authorit)n(y)19 b(Cac)n(he)89 2203 y Ft(A)c(further)g(approac)o(h)h(w)o +(ould)g(b)q(e)f(to)h(cac)o(he)e(data)j(only)e(if)g(the)g(source)g(of)h(a)g +(record)f(is)g(kno)o(wn)h(to)89 2263 y(b)q(e)i(authoritativ)o(e)f(for)h(that) +g(zone.)25 b(W)l(e)18 b(giv)o(e)e(an)i(example)e(for)i(that:)24 +b(If)17 b(a)h(name)f(serv)o(er)f Ff(ara-)89 2323 y(gorn.defen)o(d.d)o(om)8 +b Ft(receiv)o(es)i(a)i Ff(pointer)e Ft(record)h(from)g(some)g(host)i +Ff(caradhras)o(.at)o(tac)o(k.d)o(om)o Ft(,)89 2383 y(and)j(the)f(DNS)g +(message)g(also)h(con)o(tains)f(an)h Ff(address)d Ft(record)i(in)g(its)g +(additional)g(section,)g(then)89 2443 y(the)h(name)g(serv)o(er)f +Ff(aragorn)f Ft(w)o(ould)j(b)q(eliev)o(e)d(and)j(cac)o(he)f(this)g +(information)g(only)g(if)g(it)g(already)89 2503 y(kno)o(ws)e(that)g(the)f +(source)h(name)e(serv)o(er)h Ff(caradhras)d Ft(is)k(authoritativ)o(e)f(for)g +(the)h(according)g(zone.)89 2564 y(A)g(name)e(serv)o(er)h(follo)o(wing)h +(this)g(strategy)g(w)o(ould)g(create)g(its)g(o)o(wn)g(tree)f(of)i +(authoritativ)o(e)e(name)965 2715 y(14)p eop +%%Page: 15 15 +14 bop 89 82 a Ft(serv)o(ers.)39 b(This)23 b(tree)f(w)o(ould)g(ha)o(v)o(e)g +(to)h(lose)f(subtrees)h(according)f(to)h(the)f(expiration)g(of)h(the)89 +142 y(lifetime)13 b(of)j(some)g(no)q(de)g(\(name)f(serv)o(er\).)162 +203 y(This)20 b(approac)o(h)g(ho)o(w)o(ev)o(er)e(has)i(a)g(serious)g(\015a)o +(w)g(in)f(it.)30 b(Serv)o(ers)19 b(determine)e(if)i(DNS)g(mes-)89 +263 y(sages)g(are)f(gen)o(uine)f(b)o(y)h(c)o(hec)o(king)e(a)i(certain)f +(\015ag)i(in)f(the)g(header)f(of)i(the)e(DNS)h(message:)24 +b(the)89 323 y Ff(authoritat)o(ive)e(answer)11 b Ft(bit.)20 +b(This)14 b(\015ag)g(is)f(only)g(v)m(alid)h(in)f(resp)q(onses)h(and)g(sp)q +(eci\014es)f(that)h(the)89 383 y(resp)q(onding)20 b(name)f(serv)o(er)f(is)i +(an)g(authorit)o(y)f(for)h(the)f(domain)g(name)f(in)h(question.)31 +b(Nothing)89 443 y(prev)o(en)o(ts)11 b(an)o(y)i(attac)o(k)o(er)e(who)j +(supplies)e(sp)q(eci\014cally)f(man)o(ufactured)g(pac)o(k)o(ets)h(in)g(the)h +(\014rst)g(place)89 504 y(from)i(setting)h(this)g(bit)g(regardless)h(of)f +(its)g(v)m(alidit)o(y)l(.)89 633 y Fe(3.6.5)55 b(Conditional)19 +b(Cac)n(he)g(Use)89 726 y Ft(The)d(Berk)o(eley)d(patc)o(h)j(\(see)g +(paragraph)i(3.2\))e(can)g(fail)f(in)h(the)g(case)g(that)g(the)g(cac)o(he)f +(is)h(already)89 786 y(p)q(oisoned.)29 b(An)19 b(idea)f(to)h(strengthen)g +(the)g(Berk)o(eley)d(patc)o(h)i(is)h(to)g(pro)o(vide)e(the)i(p)q(ossibilit)o +(y)f(to)89 846 y(resolv)o(e)e(queries)h(without)h(using)g(the)f(cac)o(he.)25 +b(That)18 b(could)g(b)q(e)f(used)h(b)o(y)f(the)h(Berk)o(eley)d(patc)o(h.)89 +906 y(The)f(system)e(call)h(executing)f(the)h(forw)o(ard)i(lo)q(okup)f(w)o +(ould)g(for)f(example)f(set)h(a)h(\015ag)h(to)f(indicate)89 +967 y(that)h(the)g(cac)o(he)g(con)o(ten)o(ts)f(should)i(not)f(b)q(e)h(used)f +(for)g(the)g(follo)o(wing)g(resolution.)21 b(This)15 b(metho)q(d)89 +1027 y(again)20 b(decreases)f(the)g(e\016ciency)e(of)j(the)f(system,)f(but)h +(it)g(prev)o(en)o(ts)f(the)h(exploitation)g(of)g(the)89 1087 +y(w)o(eakness.)h(One)12 b(could)h(also)g(think)g(of)g(a)g(system)e(call)h(to) +h(\015ush)g(the)g(cac)o(he)f(follo)o(w)o(ed)g(b)o(y)g(a)h(reload)89 +1147 y(of)j(the)g(database,)h(similar)d(to)i(the)g(signal)g(SIGHUP)f(that)i +(a)f(system)f(administrator)g(can)h(send)89 1207 y(to)h(the)f(BIND)f(implem)o +(en)n(tation)f(of)j(the)f(name)f(serv)o(er)g(to)h(ac)o(hiev)o(e)f(the)h +(same.)89 1337 y Fe(3.6.6)55 b(Discussion)89 1430 y Ft(A)18 +b(v)o(ery)f(thorough)j(analysis)f(of)g(the)f(proto)q(col)h(is)g(needed)f(to)h +(determine)c(the)k(cases)f(in)h(whic)o(h)89 1490 y(additional)g(resource)f +(records)g(are)h(legal)f(and)h(cannot)g(do)g(an)o(y)g(harm,)e(or)i(ha)o(v)o +(e)f(to)h(b)q(e)g(stored)89 1550 y(in)d(di\013eren)o(t)f(con)o(texts.)162 +1610 y(One)20 b(of)h(the)g(design)f(goals)i(of)f(the)f(DNS)g(is)h(hereb)o(y)e +(in)h(danger:)31 b(generalit)o(y)l(.)h(The)21 b(DNS)89 1670 +y(should)14 b(not)h(con)o(tain)e(an)o(y)h(unnecessary)g(restrictions)f +(regarding)h(its)g(purp)q(ose)g(or)g(applications.)89 1731 +y(If)g(the)f(impleme)o(n)o(tor)e(of)k(the)f(DNS)g(w)o(ere)f(to)i(decide)d +(whic)o(h)i(com)o(binations)f(of)h(resource)g(records)89 1791 +y(w)o(ould)i(b)q(e)h(allo)o(w)o(ed,)d(the)i(DNS)h(migh)o(t)d(b)q(e)i +(constrained)h(in)f(a)g(w)o(a)o(y)g(that)h(it)e(is)h(no)h(longer)f(useful)89 +1851 y(for)h(certain)e(applications.)22 b(A)16 b(decline)f(in)h(system)f(p)q +(erformance)g(w)o(ould)i(result)f(from)f(the)h(fact)89 1911 +y(that)g(name)f(serv)o(ers)g(w)o(ould)i(b)q(eliev)o(e)d(and)i(therefore)g +(cac)o(he)f(less)g(data)i(|)f(data)h(that)g(migh)o(t)d(b)q(e)89 +1971 y(needed)i(later.)162 2031 y(Hardening)h(name)e(serv)o(ers)i(consists)g +(of)g(sev)o(eral)f(p)q(ossible)h(mo)q(di\014cations,)f(some)g(of)h(whic)o(h) +89 2092 y(seem)i(promising,)i(ev)o(en)f(though)i(their)e(application)h +(decreases)f(the)h(system's)e(p)q(erformance)89 2152 y(and)e(increases)f(its) +g(complexit)o(y)-5 b(.)89 2296 y Fg(3.7)70 b(Cryptographic)23 +b(Metho)r(ds)g(for)h(Authen)n(tication)89 2389 y Ft(In)19 b(this)g(paragraph) +i(w)o(e)e(describ)q(e)g(the)g(arc)o(hitecture)e(of)j(an)g(authen)o(tication)f +(system)f(em)o(b)q(ed-)89 2449 y(ded)f(in)o(to)f(the)h(DNS.)f(Note)g(that)i +(the)e(algorithms)g(and)i(metho)q(ds)e(describ)q(ed)g(in)h(the)f(follo)o +(wing)89 2509 y(paragraphs)g(yield)d(as)i(m)o(uc)o(h)d(securit)o(y)h(as)i(p)q +(ossible.)21 b(Ho)o(w)o(ev)o(er)12 b(they)i(are)g(not)h(p)q(erfect.)20 +b(Most)15 b(of)89 2569 y(the)j(algorithms)f(rely)g(at)i(some)e(p)q(oin)o(t)h +(on)h(conjectures)e(in)h(n)o(um)o(b)q(er)e(theory)i(that)h(are)f(neither)965 +2715 y(15)p eop +%%Page: 16 16 +15 bop 89 82 a Ft(pro)o(v)o(en)16 b(nor)h(con)o(tradicted,)e(or)i(on)h(the)e +(fact)g(that)h(brute)g(force)f(attac)o(ks)h(are)f(computationally)89 +142 y(infeasible.)k(F)l(or)c(a)h(discussion)f(of)h(this)f(see)g([Den82].)162 +203 y(W)l(e)j(ha)o(v)o(e)f(to)i(meet)d(the)h(requiremen)o(ts)e(of)k(data)g +(in)o(tegrit)o(y)d(of)i(the)g(message)f(and)i(of)f(orig-)89 +263 y(inator)g(authen)o(tication.)27 b(In)18 b(the)g(follo)o(wing)g(w)o(e)g +(will)f(elab)q(orate)i(on)g(these)f(t)o(w)o(o)g(requiremen)o(ts)89 +323 y(and)g(presen)o(t)e(tec)o(hniques)f(for)j(their)e(p)q(ossible)h(implem)o +(en)o(tation.)j(The)d(algorithms)g(and)g(cryp-)89 383 y(tosystems)c(that)i(w) +o(e)f(c)o(hose)g(are)g(t)o(ypical)f(represen)o(tativ)o(es)f(of)j(the)f(class) +g(of)h(algorithms)e(that)i(are)89 443 y(applicable.)20 b(They)c(are)h(b)o(y)e +(far)i(not)g(the)f(only)g(p)q(ossible)g(c)o(hoice.)89 573 y +Fe(3.7.1)55 b(Data)19 b(In)n(tegrit)n(y)89 666 y Ft(Data)f(in)o(tegrit)o(y)d +(in)i(a)h(comm)o(uni)o(cation)c(system)i(prev)o(en)o(ts)g(against)i(activ)o +(e)e(wiretapping,)h(that)89 726 y(means)10 b(a)i(recipien)o(t)d(is)i(pro)o +(vided)f(with)h(the)g(assurance)h(that)g(the)f(con)o(ten)o(t)f(of)h(a)h +(receiv)o(ed)d(message)89 786 y(is)16 b(iden)o(tical)e(to)j(the)f(con)o(ten)o +(t)g(of)g(the)g(message)g(sen)o(t)f(b)o(y)h(its)g(originator.)162 +846 y(W)l(e)h(w)o(an)o(t)g(to)g(ensure)g(the)g(in)o(tegrit)o(y)e(of)i +(transmitted)f(DNS)h(messages)f(along)i(with)f(a)g(time)89 +906 y(stamp)i(to)h(protect)f(against)h(repla)o(y)f(attac)o(ks.)31 +b(W)l(e)19 b(concen)o(trate)f(on)i(a)g(certain)f(tec)o(hnique)f(to)89 +967 y(detect)d(unauthorized)i(message)e(alteration)h(that)h(is)f(e\016cien)o +(t)e(and)j(considerably)f(secure.)162 1027 y(In)k(case)g(of)g(alteration)g +(detection,)f(reco)o(v)o(ery)f(actions)j(could)e(b)q(e)h(to)h(ignore)f(the)f +(receiv)o(ed)89 1087 y(DNS)k(message)g(and)h(issue)f(an)h(additional)g(query) +l(.)42 b(Our)23 b(approac)o(h)i(is)e(based)h(on)g(message)89 +1147 y(digest)19 b(algorithms.)28 b(Message)19 b(digests,)h(or)f(synon)o +(ymously)e(\014ngerprin)o(ts)i(or)g(signatures,)h(are)89 1207 +y(the)d(result)g(of)h(the)f(application)g(of)g(a)h(one-w)o(a)o(y)g(hash)g +(functions)f(that)h(computes)e(a)i(c)o(hec)o(ksum)89 1267 y(of)f(its)f(input) +g(data.)162 1328 y(MD5)k(and)f(the)g(Snefru)g(algorithm)g(are)g(examples)e +(for)i(message)g(digest)g(algorithms)f(\(see)89 1388 y([Riv92)o(,)c +(Mer89].\))20 b(Message)14 b(digest)f(algorithms)g(are)h(easy)g(to)g +(compute,)e(are)i(only)f(a)h(few)g(b)o(ytes)89 1448 y(p)q(er)h(message,)f +(are)h(computationally)e(hard)j(to)f(in)o(v)o(ert,)e(and)j(usually)e(require) +g(a)h(certain)g(size)f(of)89 1508 y(input)i(data.)162 1568 +y(An)g(originator)h(w)o(ould)g(calculate)e(the)h(message)g(digest)g(of)h(a)g +(DNS)f(message)f(immediatel)o(y)89 1629 y(b)q(efore)f(it)g(is)g(sen)o(t)g +(out.)21 b(The)15 b(recipien)o(t)d(w)o(ould)i(recalculate)f(the)h(message)g +(digest)g(and)h(compare)89 1689 y(the)h(resulting)g(v)m(alue)g(with)g(the)g +(one)g(calculated)g(b)o(y)f(the)h(originator.)22 b(In)16 b(case)g(of)h(a)g +(mismatc)n(h,)89 1749 y(the)k(receiv)o(er)e(w)o(ould)j(conclude)e(that)i(he)f +(receiv)o(ed)f(a)h(mo)q(di\014ed)g(DNS)g(message.)36 b(He)21 +b(w)o(ould)89 1809 y(discard)16 b(it.)162 1869 y(But)i(ho)o(w)h(do)q(es)f +(the)g(message)g(digest)g(calculated)f(b)o(y)h(the)g(originator)h(reac)o(h)e +(the)h(receiv)o(er)89 1930 y(without)h(mo)q(di\014cation?)29 +b(The)19 b(message)f(digest)g(algorithms)g(are)h(publicly)e(kno)o(wn)i(and)h +(an)o(y-)89 1990 y(one)k(tamp)q(ering)e(with)i(a)g(message)e(could)i(easily)e +(mo)q(dify)h(the)g(asso)q(ciated)h(message)f(digest)89 2050 +y(accordingly)l(.)i(T)l(o)18 b(sho)o(w)g(ho)o(w)g(this)g(can)g(b)q(e)f(prev)o +(en)o(ted)f(w)o(e)i(discuss)f(a)i(metho)q(d)d(for)i(originator)89 +2110 y(authen)o(tication)f(in)g(the)g(follo)o(wing)g(paragraph.)27 +b(Message)18 b(digests)f(together)h(with)f(originator)89 2170 +y(authen)o(tication)12 b(giv)o(e)f(a)h(v)o(ery)f(strong)i(guaran)o(tee)f(for) +g(the)g(detectabilit)o(y)d(of)k(activ)o(e)d(wiretapping.)89 +2300 y Fe(3.7.2)55 b(Originator)18 b(Authen)n(tication)162 +2393 y Ft(Originator)c(authen)o(tication)f(p)q(ermits)f(the)i(recipien)o(t)d +(of)j(a)g(message)f(to)h(reliably)f(determine)89 2453 y(if)j(the)g +(originator)h(of)f(a)h(message)e(is)h(who)h(he)f(claims)f(to)h(b)q(e.)162 +2513 y(W)l(e)d(explain)f(brie\015y)g(a)h(pro)q(cedure)g(that)h(guaran)o(tees) +f(the)g(originator's)h(authen)o(ticit)o(y)l(.)k(In)12 b(an)89 +2573 y(asymmetric)c(cryptosystem)i(a)i(pair)f(of)h(distinct)f(but)h +(mathematical)o(ly)c(related)j(k)o(eys)g(is)g(used)h(for)965 +2715 y(16)p eop +%%Page: 17 17 +16 bop 241 899 a @beginspecial 0 @llx 0 @lly 359 @urx 206 @ury +3590 @rwi @setspecial +%%BeginDocument: dig_sig_val.eps +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/l {lineto} bind def +/m {moveto} bind def +/s {stroke} bind def +/n {newpath} bind def +/gs {gsave} bind def +/gr {grestore} bind def +/clp {closepath} bind def +/graycol {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul +4 -2 roll mul setrgbcolor} bind def +/col-1 {} def +/col0 {0 0 0 setrgbcolor} bind def +/col1 {0 0 1 setrgbcolor} bind def +/col2 {0 1 0 setrgbcolor} bind def +/col3 {0 1 1 setrgbcolor} bind def +/col4 {1 0 0 setrgbcolor} bind def +/col5 {1 0 1 setrgbcolor} bind def +/col6 {1 1 0 setrgbcolor} bind def +/col7 {1 1 1 setrgbcolor} bind def + end +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def + +$F2psBegin +0 setlinecap 0 setlinejoin +-4.0 211.0 translate 0.900 -0.900 scale +1.000 setlinewidth +n 319 39 m 319 59 l gs col-1 s gr +n 321.000 51.000 m 319.000 59.000 l 317.000 51.000 l gs 2 setlinejoin col-1 s gr +n 319 79 m 319 99 l gs col-1 s gr +n 321.000 91.000 m 319.000 99.000 l 317.000 91.000 l gs 2 setlinejoin col-1 s gr +n 319 179 m 319 159 l gs col-1 s gr +n 317.000 167.000 m 319.000 159.000 l 321.000 167.000 l gs 2 setlinejoin col-1 s gr +n 319 219 m 319 199 l gs col-1 s gr +n 317.000 207.000 m 319.000 199.000 l 321.000 207.000 l gs 2 setlinejoin col-1 s gr +n 79 39 m 79 59 l gs col-1 s gr +n 81.000 51.000 m 79.000 59.000 l 77.000 51.000 l gs 2 setlinejoin col-1 s gr +n 79 79 m 79 99 l gs col-1 s gr +n 81.000 91.000 m 79.000 99.000 l 77.000 91.000 l gs 2 setlinejoin col-1 s gr +n 79 119 m 79 179 l gs col-1 s gr +n 81.000 171.000 m 79.000 179.000 l 77.000 171.000 l gs 2 setlinejoin col-1 s gr +n 79 199 m 79 219 l gs col-1 s gr +n 81.000 211.000 m 79.000 219.000 l 77.000 211.000 l gs 2 setlinejoin col-1 s gr +n 279 19 m 359 19 l gs col-1 s gr +n 39 19 m 119 19 l gs col-1 s gr +0.500 setlinewidth +n 21 179 m 14 179 14 192 7 arcto 4 {pop} repeat 14 199 137 199 7 arcto 4 {pop} repeat 144 199 144 186 7 arcto 4 {pop} repeat 144 179 21 179 7 arcto 4 {pop} repeat clp gs col-1 s gr +n 108 154 m 98 179 l gs col-1 s gr +n 102.828 172.315 m 98.000 179.000 l 99.114 170.829 l gs 2 setlinejoin col-1 s gr +n 274 154 m 284 179 l gs col-1 s gr +n 282.886 170.829 m 284.000 179.000 l 279.172 172.315 l gs 2 setlinejoin col-1 s gr +n 261 179 m 254 179 254 192 7 arcto 4 {pop} repeat 254 199 377 199 7 arcto 4 {pop} repeat 384 199 384 186 7 arcto 4 {pop} repeat 384 179 261 179 7 arcto 4 {pop} repeat clp gs col-1 s gr + [4.000000] 0 setdash +n 164 229 m 234 229 l gs col-1 s gr + [] 0 setdash +n 226.000 227.000 m 234.000 229.000 l 226.000 231.000 l gs 2 setlinejoin col-1 s gr + [4.000000] 0 setdash +n 164 29 m 234 29 l gs col-1 s gr + [] 0 setdash +n 226.000 27.000 m 234.000 29.000 l 226.000 31.000 l gs 2 setlinejoin col-1 s gr +n 11 59 m 4 59 4 72 7 arcto 4 {pop} repeat 4 79 147 79 7 arcto 4 {pop} repeat 154 79 154 66 7 arcto 4 {pop} repeat 154 59 11 59 7 arcto 4 {pop} repeat clp gs col-1 s gr +n 251 59 m 244 59 244 72 7 arcto 4 {pop} repeat 244 79 387 79 7 arcto 4 {pop} repeat 394 79 394 66 7 arcto 4 {pop} repeat 394 59 251 59 7 arcto 4 {pop} repeat clp gs col-1 s gr +/Times-Bold findfont 12.00 scalefont setfont +59 14 m +gs 1 -1 scale (Sender:) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +294 14 m +gs 1 -1 scale (Receiver:) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +294 154 m +gs 1 -1 scale (hash value) col-1 show gr +/Times-Bold findfont 24.00 scalefont setfont +309 139 m +gs 1 -1 scale (=?) col-1 show gr +/Times-BoldItalic findfont 12.00 scalefont setfont +359 154 m +gs 1 -1 scale (s'') col-1 show gr +/Times-BoldItalic findfont 12.00 scalefont setfont +119 159 m +gs 1 -1 scale (K) col-1 show gr +/Times-BoldItalic findfont 12.00 scalefont setfont +129 164 m +gs 1 -1 scale (priv) col-1 show gr +/Times-BoldItalic findfont 12.00 scalefont setfont +239 159 m +gs 1 -1 scale (K) col-1 show gr +/Times-BoldItalic findfont 12.00 scalefont setfont +249 164 m +gs 1 -1 scale (pub) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +19 194 m +gs 1 -1 scale (asymmetric encryption) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +259 194 m +gs 1 -1 scale (asymmetric decryption) col-1 show gr +/Times-BoldItalic findfont 12.00 scalefont setfont +194 219 m +gs 1 -1 scale (s') col-1 show gr +/Times-BoldItalic findfont 12.00 scalefont setfont +194 19 m +gs 1 -1 scale (m) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +54 34 m +gs 1 -1 scale (message) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +274 34 m +gs 1 -1 scale (received message) col-1 show gr +/Times-BoldItalic findfont 12.00 scalefont setfont +109 34 m +gs 1 -1 scale (m) col-1 show gr +/Times-BoldItalic findfont 12.00 scalefont setfont +394 234 m +gs 1 -1 scale (s') col-1 show gr +/Times-BoldItalic findfont 12.00 scalefont setfont +379 34 m +gs 1 -1 scale (m) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +4 234 m +gs 1 -1 scale (encrypted message digest) col-1 show gr +/Times-BoldItalic findfont 12.00 scalefont setfont +149 234 m +gs 1 -1 scale (s') col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +249 234 m +gs 1 -1 scale (received encrypted digest) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +39 114 m +gs 1 -1 scale (message digest) col-1 show gr +/Times-BoldItalic findfont 12.00 scalefont setfont +129 114 m +gs 1 -1 scale (s) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +279 114 m +gs 1 -1 scale (message digest) col-1 show gr +/Times-BoldItalic findfont 12.00 scalefont setfont +369 114 m +gs 1 -1 scale (s) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +14 74 m +gs 1 -1 scale (message digest algorithm) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +254 74 m +gs 1 -1 scale (message digest algorithm) col-1 show gr +$F2psEnd +%%EndDocument + @endspecial 424 1055 a Ft(Figure)16 b(2:)21 b(Digital)16 b(signature)h +(generation)f(and)h(v)m(alidation)89 1189 y(encryption)11 b(and)i +(decryption.)19 b(One)11 b(k)o(ey)g(is)h(priv)m(ate)f(and)i(k)o(ept)e(secret) +g(b)o(y)g(the)h(sender,)g(the)g(other)89 1249 y(one)k(is)h(publicly)d(kno)o +(wn.)22 b(Data)17 b(encrypted)e(with)h(a)h(sender's)f(priv)m(ate)g(k)o(ey)f +(can)i(b)q(e)f(decrypted)89 1309 y(using)j(his)g(public)g(k)o(ey)l(,)f(and)h +(vice)f(v)o(ersa.)30 b(These)19 b(k)o(eys)f(are)h(usually)g(large)g(in)o +(teger)f(n)o(um)o(b)q(ers,)89 1369 y(sev)o(eral)h(h)o(undred)h(decimal)d +(digits)j(long)h(with)e(sp)q(ecial,)h(mathematical)d(prop)q(erties.)33 +b Fh(P)o(ohlig-)89 1430 y(Hellman)14 b Ft(and)j Fh(RSA)e Ft(are)i(examples)d +(of)i(asymmetric)d(cryptosystems)i(\(see)h([PH78,)g(RSA78]\).)162 +1490 y(Figure)i(2)g(depicts)f(digital)h(signature)g(generation)g(and)h(v)m +(alidation;)f(a)h(more)d(detailed)h(ex-)89 1550 y(planation)j(can)g(b)q(e)g +(found)g(in)f([Sc)o(h94,)h(section)f(17.6].)32 b(The)20 b(sender)f(digitally) +g(signs)h(data)g Fd(m)89 1610 y Ft(b)o(y)g(encrypting)g(the)h(hash)g(v)m +(alue)f Fd(s)h Ft(of)g(the)g(data)g(using)g(his)g(priv)m(ate)f(k)o(ey)g(comp) +q(onen)o(t)f Fd(K)1821 1617 y Fc(pr)q(iv)89 1670 y Ft(and)e(sends)h(\(E)368 +1677 y Fc(K)398 1682 y Fb(pr)q(iv)460 1670 y Ft(\()p Fd(s)p +Ft(\),)p Fd(m)p Ft(\).)k(The)17 b(receiv)o(er)e(v)m(alidates)h(the)h(data)h +(in)e(a)h(three)f(step)h(pro)q(cess.)24 b(He)89 1731 y(computes)14 +b(the)h(hash)h(v)m(alue)f Fd(s)g Ft(of)h(the)f(data)h Fd(m)p +Ft(,)f(decrypts)g(the)g(hash)h Fd(s)1399 1713 y Fa(0)1426 1731 +y Ft(that)f(arriv)o(ed)g(using)g(the)89 1791 y(signer's)h(public)f(k)o(ey)g +Fd(K)538 1798 y Fc(pub)610 1791 y Ft(and)i(compares)f(the)g(results)g(D)1196 +1798 y Fc(K)1226 1804 y Fb(pub)1278 1791 y Ft(\()p Fd(s)1320 +1773 y Fa(0)1331 1791 y Ft(\))h(and)f Fd(s)p Ft(.)162 1851 +y(Wh)o(y)21 b(do)g(w)o(e)f(calculate)g(a)i(message)e(digest)g(at)i(all)e(and) +i(not)f(simply)e(encrypt)h(and)h(then)89 1911 y(transmit)h(the)i(whole)f +(message?)43 b(The)23 b(main)f(p)q(oin)o(t)i(here)f(is)g(the)g(di\013erence)g +(b)q(et)o(w)o(een)f(the)89 1971 y(run)o(time)16 b(costs)i(of)g(creating)g(a)g +(message)f(digest)h(and)h(encrypting)e(a)h(message,)f(dep)q(ending)h(on)89 +2032 y(the)e(length)g(of)h(the)f(original)g(message.)162 2092 +y(Run)o(time)h(costs)i(for)g(public)f(k)o(ey)g(encryption)g(are)h(rather)g +(high.)30 b(Man)o(y)18 b(CPU)h(cycles)f(are)89 2152 y(needed.)37 +b(Therefore)21 b(w)o(e)g(w)o(an)o(t)h(to)f(reduce)g(the)h(size)e(of)i(the)g +(data)g(p)q(ortion)h(that)f(has)g(to)g(b)q(e)89 2212 y(encrypted:)e(in)c(our) +h(case)f(the)g(output)h(of)f(the)g(message)g(digest)g(algorithm.)162 +2272 y(Run)o(time)c(costs)j(for)f(the)g(hash)h(functions)g(are)f(rather)g +(small)f(compared)g(to)i(those)f(of)h(public)89 2333 y(k)o(ey)c(encryption.) +19 b(It)12 b(is)g(therefore)f(imp)q(ortan)o(t)g(to)i(note)f(that)g(it)g(is)g +(more)f(e\016cien)o(t)f(to)i(pad)h(a)f(short)89 2393 y(DNS)i(message,)g +(calculate)g(its)g(\014ngerprin)o(t,)g(and)h(then)g(encrypt)f(the)g +(\014ngerprin)o(t,)g(than)h(simply)89 2453 y(to)e(encrypt)g(the)g(whole)g +(DNS)g(message.)19 b(Message)14 b(digest)f(lengths)g(are)g(generally)f +(shorter)h(than)89 2513 y(t)o(ypical)i(DNS)h(messages.)965 +2715 y(17)p eop +%%Page: 18 18 +17 bop 89 82 a Fe(3.7.3)55 b(P)n(assing)20 b(Creden)n(tials)e(to)g(Pro)n(v)n +(e)h(Authorit)n(y)89 175 y Ft(The)14 b(crucial)g(p)q(oin)o(t)g(in)g(the)g +(previously)g(describ)q(ed)f(proto)q(col)j(is)e(the)g(imp)q(ortance)f(of)i +(the)f(public)89 235 y(k)o(ey)e(of)i(the)f(sender.)20 b(If)13 +b(an)h(attac)o(k)o(er)e(can)i(con)o(vince)e(the)h(receiv)o(er)e(to)i(use)h(k) +o(ey)e Fd(K)1581 217 y Fa(0)1577 247 y Fc(public)1684 235 y +Ft(instead)i(of)89 295 y Fd(K)130 302 y Fc(public)224 295 y +Ft(,)j(whereb)o(y)f(the)h(attac)o(k)o(er)g(p)q(ossesses)h(the)f(related)g +Fd(K)1226 277 y Fa(0)1222 307 y Fc(pr)q(iv)q(ate)1337 295 y +Ft(,)g(the)g(attac)o(k)o(er)g(can)g(sub)o(v)o(ert)89 355 y(the)k(proto)q(col) +i(suc)o(h)e(that)h(the)f(receiv)o(er)f(will)g(b)q(e)i(fo)q(oled)g(in)o(to)f +(accepting)g(the)h(in)o(tegrit)o(y)d(and)89 415 y(origin)i(of)h(the)f +(message.)36 b(This)21 b(demonstrates)g(that)g(it)g(is)g(imp)q(ortan)o(t)g +(to)g(devise)g(a)g(sc)o(heme)89 475 y(that)c(protects)g(against)h(this)f +(threat.)23 b(W)l(e)17 b(solv)o(e)f(this)h(problem)e(b)o(y)i(the)f(impleme)o +(n)o(tation)e(of)k(a)89 536 y(distributed)e(sc)o(heme)d(for)k(the)f(v)m +(alidation)g(of)h(public)e(k)o(ey)g(comp)q(onen)o(t)g(certi\014cates.)162 +596 y(The)e(name)f(serv)o(er)g(sending)h(the)g(DNS)g(message)f(has)i(to)g +(pro)o(vide)e(creden)o(tials)g(signed)h(b)o(y)f(its)89 656 +y(paren)o(t)18 b(domain,)f(to)h(con)o(vince)f(the)g(recipien)o(t)f(of)i(its)g +(authorit)o(y)g(o)o(v)o(er)f(the)g(domain)g(for)i(whic)o(h)89 +716 y(it)d(just)g(resolv)o(ed)f(a)i(mapping.)162 776 y(The)d(use)g(of)h(suc)o +(h)f(a)g(certi\014cate)f(transforms)h(the)g(problem)f(of)h(establishing)g +(the)g(credibilit)o(y)89 837 y(of)23 b(one)g(en)o(tit)o(y)e(in)o(to)h(the)h +(problem)e(of)i(establishing)f(the)h(credibilit)o(y)c(of)k(the)g(en)o(tit)o +(y)e(issuing)89 897 y(the)f(certi\014cate.)32 b(This)21 b(problem)e(is)h(v)o +(ery)f(closely)g(related)h(to)h(the)f(problem)f(of)h(distributing)89 +957 y(public)14 b(k)o(ey)f(certi\014cates.)20 b(The)14 b(CCITT)i(recomme)o +(ndation)c(X.509)j(sho)o(ws)h(a)f(w)o(a)o(y)f(to)h(solv)o(e)f(this)89 +1017 y(problem.)19 b(In)c(X.509,)g(a)h(certi\014cate)e(binds)h(a)g(public)g +(k)o(ey)e(to)j(a)g(directory)e(name)g(and)h(iden)o(ti\014es)89 +1077 y(a)i(part)o(y)f(that)g(v)o(ouc)o(hes)g(for)g(the)g(binding.)162 +1138 y(W)l(e)g(can)g(adopt)h(this)f(mec)o(hanism)o(,)d(suc)o(h)j(that)g(a)g +(certi\014cate)f(binds)h(all)g(name)e(serv)o(ers)i(that)89 +1198 y(are)i(authoritativ)o(e)f(for)h(a)h(certain)e(zone)h(to)g(this)g(zone)g +(of)g(authorit)o(y)f(and)i(iden)o(ti\014es)d(the)i(zone)89 +1258 y(that)13 b(v)o(ouc)o(hes)f(for)h(the)f(binding.)20 b(X.509)13 +b(imp)q(oses)f(no)h(constrain)o(ts)g(on)g(the)f(seman)o(tic)f(or)i(syn)o +(tac-)89 1318 y(tic)h(relationship)h(b)q(et)o(w)o(een)g(a)g(certi\014cate)f +(issuer)h(and)h(a)g(sub)s(ject.)k(Ho)o(w)o(ev)o(er,)13 b(in)i(our)h(approac)o +(h,)89 1378 y(the)g(certi\014cation)g(system)g(tak)o(es)g(the)h(form)e(of)i +(a)h(single)e(ro)q(oted)h(tree.)23 b(Eac)o(h)16 b(no)q(de)i(represen)o(ts)89 +1439 y(a)f(zone.)22 b(Sev)o(eral)15 b(name)g(serv)o(ers)h(serv)o(e)f(as)i +(certi\014cation)f(authorities)g(for)h(eac)o(h)f(zone,)g(b)q(ecause)89 +1499 y(all)f(serv)o(ers)g(that)h(w)o(ere)f(in)o(tro)q(duced)g(to)h(increase)f +(the)h(reliabilit)o(y)c(of)k(the)g(database)h(system)d(are)89 +1559 y(capable)i(of)h(v)m(alid)f(and)g(authoritativ)o(e)g(referrals.)162 +1619 y(A)h(certi\014cate)f(for)i(a)g(zone)f(consists)h(of)g(all)f(IP)g +(addresses)h(of)g(authoritativ)o(e)f(name)f(serv)o(ers)89 1679 +y(for)g(that)f(zone,)g(signed)h(with)f(the)g(priv)m(ate)g(k)o(ey)f(of)i(the)f +(name)f(serv)o(ers)g(for)i(the)f(paren)o(t)g(domain.)89 1740 +y(An)o(y)f(resolv)o(er)g(that)i(receiv)o(es)d(a)j(DNS)f(message)g(receiv)o +(es)e(as)j(part)g(of)f(it)g(this)g(certi\014cate.)20 b(After)89 +1800 y(obtaining)14 b(the)f(public)g(k)o(ey)f(for)i(the)f(paren)o(t)g(zone)g +(of)h(the)f(queried)g(zone,)g(the)g(resolv)o(er)g(can)g(then)89 +1860 y(v)o(erify)i(the)h(v)m(alidit)o(y)f(of)h(the)h(referral.)j(But)c(to)h +(v)o(erify)e(the)h(authorit)o(y)g(of)h(the)f(paren)o(t)g(zone,)g(the)89 +1920 y(resolv)o(er)f(has)i(to)g(ask)f(this)g(zone)h(for)f(creden)o(tials.)162 +1980 y(This)j(v)m(alidation)g(pro)q(cess)h(for)f(certi\014cates)f(is)h(done)g +(recursiv)o(ely)e(up)i(the)g(zone)g(hierarc)o(h)o(y)89 2040 +y(tree)e(that)h(coincides)f(with)h(the)f(certi\014cation)g(hierarc)o(h)o(y)l +(,)f(starting)j(at)f(the)f(name)g(serv)o(er)g(that)89 2101 +y(pro)o(vides)h(the)g(queried)g(mapping.)27 b(The)19 b(recursion)f(will)g +(stop)h(at)g(some)f(p)q(oin)o(t,)h(either)e(at)i(the)89 2161 +y(ro)q(ot,)f(or)f(at)h(some)e(in)o(termediate)e(no)q(de)k(that)f(w)o(as)h +(certi\014ed)e(b)q(efore.)24 b(The)17 b(certi\014cates)f(that)i(a)89 +2221 y(name)d(serv)o(er)g(holds)h(are)g(sub)s(ject)g(to)g(timeouts,)e(just)i +(lik)o(e)f(the)g(resource)h(records)g(that)h(sp)q(ecify)89 +2281 y(bindings)c(of)f(this)h(name)e(serv)o(er.)19 b(The)12 +b(certi\014cate)f(for)i(the)f(ro)q(ot)i(m)o(ust)d(b)q(e)h(transmitted)f(b)o +(y)h(some)89 2341 y(trusted,)i(out-of-band)i(mec)o(hanism)o(.)i(F)l(or)c +(example,)e(the)h(ro)q(ot)i(certi\014cate)e(could)g(b)q(e)h(published)89 +2402 y(in)i(an)h(in)o(ternational)e(newspap)q(er.)162 2462 +y(Ev)o(en)k(if)f(an)i(attac)o(k)o(er)e(manages)h(to)g(get)g(a)h(v)m(alid)f +(certi\014cate)e(of)j(a)f(name)f(serv)o(er)g(it)h(w)o(an)o(ts)89 +2522 y(to)d(imp)q(ersonate,)e(and)i(has)g(the)f(capabilit)o(y)f(to)i(also)g +(sp)q(o)q(of)h(this)e(name)f(serv)o(er's)g(IP)i(address,)f(it)89 +2582 y(is)j(still)g(not)h(p)q(ossible)f(for)h(the)f(attac)o(k)o(er)g(to)h +(imp)q(ersonate)e(another)i(host.)29 b(As)18 b(w)o(e)g(sa)o(w)h(in)f(the)965 +2715 y(18)p eop +%%Page: 19 19 +18 bop 89 82 a Ft(previous)14 b(paragraph)i(3.7.2,)e(a)h(DNS)f(message)f(is)h +(encrypted)f(with)i(the)e(name)g(serv)o(er's)g(priv)m(ate)89 +142 y(k)o(ey)k(b)q(efore)i(it)f(is)g(sen)o(t)g(out.)29 b(The)18 +b(creden)o(tials)g(are)g(part)h(of)g(the)f(message)g(and)h(are)g(therefore)89 +203 y(also)11 b(encrypted.)19 b(An)10 b(attac)o(k)o(er)g(cannot)i(construct)f +(the)f(correctly)g(encrypted)g(message)g(without)89 263 y(breaking)16 +b(the)g(asymmetric)d(cryptosystem)i(used.)89 393 y Fe(3.7.4)55 +b(Discussion)89 485 y Ft(The)16 b(v)m(alidation)g(of)h(in)o(tegrit)o(y)d(and) +j(originator)g(of)f(the)g(message,)f(and)i(its)e(underlying)h(pattern)89 +545 y(of)i(certi\014cations)g(stating)g(trust,)g(are)g(the)g(features)g(that) +g(mak)o(e)f(this)g(approac)o(h)i(secure.)26 b(The)89 605 y(follo)o(wing)21 +b(discussion)g(sho)o(ws)i(its)e(disadv)m(an)o(tages.)37 b(Some)20 +b(of)i(them)e(are)h(serious)h(enough)g(to)89 666 y(restrain)16 +b(from)f(an)i(implem)o(en)o(tati)o(on)d(of)j(this)f(approac)o(h)h(at)f(the)g +(curren)o(t)g(time.)162 726 y(The)24 b(whole)g(pro)q(cedure)f(is)h(time)d +(and)k(space)f(consuming.)43 b(Man)o(y)23 b(rather)h(long)g(public)89 +786 y(k)o(eys)16 b(ha)o(v)o(e)g(to)h(b)q(e)g(stored)g(\(at)g(least)g(200)h +(decimal)c(digits)j(long)g(eac)o(h)g(to)g(mak)o(e)e(the)h(public)g(k)o(ey)89 +846 y(encryption)21 b(reasonably)h(strong.\))37 b(Obtaining)22 +b(memory)c(for)k(them,)f(as)h(w)o(ell)e(as)i(additional)89 +906 y(cac)o(he)17 b(memory)e(for)i(larger)h(resource)f(records,)h(is)f(not)i +(a)f(problem)e(in)h(curren)o(t)g(arc)o(hitectures.)89 967 y(The)j(k)o(eys)f +(m)o(ust)f(b)q(e)i(obtained)g(b)q(efore)g(they)g(can)g(b)q(e)g(used.)32 +b(S.)19 b(Ken)o(t)g(describ)q(es)h(in)f([Ken93])89 1027 y(certi\014cate)c +(based)i(k)o(ey)e(managemen)o(t)f(for)i(usage)h(in)f(Priv)m(acy)g(Enhanced)g +(Mail)g(\(PEM\).)162 1087 y(W)l(e)f(will)f(not)h(go)h(in)o(to)f(more)e +(detail)i(regarding)g(the)g(k)o(ey)f(distribution)g(pro)q(cess.)22 +b(The)15 b(regis-)89 1147 y(tration)e(pro)q(cess)g(that)f(has)i(to)e(o)q +(ccur)h(out{of{band)h(is)f(rather)f(cum)o(b)q(ersome.)17 b(The)12 +b(calculations)89 1207 y(to)18 b(encrypt)g(and)g(decrypt)f(message)h(digests) +g(ma)o(y)e(tak)o(e)h(to)q(o)j(long)e(to)g(supp)q(ort)h(the)f(e\016ciency)89 +1267 y(goal)f(of)g(the)g(DNS.)f(The)h(additional)g(data)g(that)g(has)h(to)f +(b)q(e)g(transmitted)e(w)o(ould)i(not)g(degrade)89 1328 y(p)q(erformance)c +(to)q(o)j(badly)l(,)e(esp)q(ecially)f(if)g(faster)i(transmission)f(media)e(b) +q(ecomes)i(broadly)g(a)o(v)m(ail-)89 1388 y(able,)22 b(but)g(the)f +(calculation)g(o)o(v)o(erhead)g(for)h(encryption)f(and)h(decryption)f(cannot) +h(easily)f(b)q(e)89 1448 y(amortized.)f(Ho)o(w)o(ev)o(er,)14 +b(the)i Fh(RSA)g Ft(cryptosystem)e(is)i(a)o(v)m(ailable)g(in)g(hardw)o(are)h +(and)g(a)f(dramatic)89 1508 y(p)q(erformance)g(increase)h(can)h(b)q(e)g +(observ)o(ed,)f(compared)f(with)i(a)g(soft)o(w)o(are)f(implem)o(en)o(tation)e +(of)89 1568 y(the)h(same)f(algorithms.)162 1629 y(The)21 b(implem)o(en)o +(tation)d(of)k(suc)o(h)f(a)g(solution)h(is)e(a)i(ma)s(jor)e(e\013ort.)36 +b(The)22 b(whole)f(k)o(ey)f(man-)89 1689 y(agemen)o(t)i(problem)g(is)h +(complex)f(and)i(it)f(also)h(requires)e(additional)i(administrativ)o(e)d +(e\013ort.)89 1749 y(Resolv)o(er)14 b(routines)h(and)h(name)e(serv)o(er)g +(routines)h(ha)o(v)o(e)f(to)i(b)q(e)f(mo)q(di\014ed,)f(along)i(with)f(the)g +(DNS)89 1809 y(proto)q(col.)21 b(The)14 b(impleme)o(n)o(tation)e(is)i +(feasible,)f(though)i(v)o(ery)e(complex.)18 b(Another)c(dra)o(wbac)o(k)g(is) +89 1869 y(the)h(transition)g(phase)g(that)h(is)f(necessary)f(b)q(ecause)i(of) +f(proto)q(col)h(c)o(hanges.)21 b(Decreased)14 b(p)q(erfor-)89 +1930 y(mance)e(b)q(ecause)i(of)h(calculations)e(necessary)h(to)g(sign,)g +(encrypt)f(and)i(decrypt)e(messages)g(w)o(ould)89 1990 y(b)q(e)j(noticeable)g +(b)o(y)f(users)i(and)g(real-time)d(applications.)162 2050 y(Curren)o(tly)l(,) +i(the)h(metho)q(d)g(seems)f(to)i(b)q(e)f(infeasible,)f(b)q(ecause)i(of)f(its) +g(large)h(computational)89 2110 y(o)o(v)o(erhead.)i(F)l(urther)c(dra)o(wbac)o +(ks)g(are)h(the)f(necessary)f(proto)q(col)i(c)o(hanges)g(and)f(the)g +(complexit)o(y)89 2170 y(of)11 b(prop)q(er)h(k)o(ey)e(and)h(certi\014cate)f +(managemen)o(t.)17 b(Ho)o(w)o(ev)o(er)9 b(with)i(further)g(adv)m(ances)g(in)g +(pro)q(cessor)89 2231 y(sp)q(eed)24 b(and)g(some)f(reasonable)h(relaxation)g +(on)g(requiremen)o(ts)d(for)j(strong)h(encryption)e(\(i.e.)89 +2291 y(shorter)d(k)o(eys)f(increase)g(p)q(erformance)g(of)h +Fh(RSA)g Ft(dramatically\))e(this)i(approac)o(h)g(can)g(b)q(ecome)89 +2351 y(v)o(ery)15 b(attractiv)o(e)g(in)h(the)g(near)g(future.)965 +2715 y(19)p eop +%%Page: 20 20 +19 bop 89 90 a Fu(4)83 b(Conclusions)25 b(and)j(Outlo)r(ok)89 +200 y Ft(Where)19 b(host)h(iden)o(ti\014cation)f(is)g(part)h(of)g(the)f +(authen)o(tication)g(b)q(et)o(w)o(een)g(comm)o(uni)o(cating)e(en-)89 +260 y(tities)h(the)g(v)m(alidit)o(y)g(of)h(the)g(authen)o(tication)f(pro)q +(cess)i(can)f(only)f(b)q(e)i(trusted)e(as)i(m)o(uc)o(h)d(as)i(the)89 +320 y(resolution)c(pro)q(cess)h(that)f(supplies)g(the)g(bindings)g(b)q(et)o +(w)o(een)g(high{lev)o(el)e(hostnames)i(and)h(lo)o(w{)89 381 +y(lev)o(el)e(host)j(addresses.)162 441 y(This)f(is)g(a)h(signi\014can)o(t)f +(problem,)e(b)q(ecause)j(it)e(exp)q(oses)i(probably)g(h)o(undreds)f(of)g +(thousands)89 501 y(of)h(hosts)g(that)f(are)h(curren)o(tly)d(connected)i(to)h +(the)f(In)o(ternet)f(to)h(the)g(threat)g(of)h(break-ins.)162 +561 y(W)l(e)g(discussed)g(solutions)g(to)h(the)f(problem)e(with)i(the)g +(concrete)f(instance)h(of)g(the)g(Domain)89 621 y(Name)g(System.)26 +b(W)l(e)18 b(stressed)h(hardening)g(curren)o(t)f(implem)o(e)o(n)o(tations)e +(of)j(the)f(name)g(serv)o(ers)89 682 y(and)k(put)f(emphasis)g(on)g(the)g(dev) +o(elopmen)o(t)e(of)i(a)h(future)f(sc)o(heme)e(that)i(uses)h(cryptographic)89 +742 y(metho)q(ds)16 b(to)g(giv)o(e)g(a)g(strong)i(guaran)o(tee)e(for)h +(detection)e(of)h(sp)q(o)q(ofed)i(bindings.)89 908 y Fu(Ac)n(kno)n(wledgemen) +n(ts)89 1018 y Ft(W)l(e)g(w)o(ould)g(lik)o(e)e(to)j(thank)f(CO)o(AST)g(sp)q +(onsors)i(BNR,)d(T)l(riden)o(t)g(Data)i(Systems,)e(and)h(the)g(US)89 +1078 y(Air)e(F)l(orce,)h(and)g(the)g(F)l(ulbrigh)o(t)f(Commission)f(for)j +(supp)q(ort)g(that)g(aided,)e(in)h(part,)g(this)g(w)o(ork.)89 +1138 y(Thanks)d(to)f(Stev)o(en)f(Bello)o(vin)f(whose)j(v)m(aluable)f(commen)n +(ts)e(are)i(most)f(appreciated,)h(Dan)h(T)l(rin-)89 1198 y(kle)d(who)h(sho)o +(w)o(ed)g(us)g(ho)o(w)g(to)g(master)e(some)h(of)h(the)f(subtle)g +(di\016culties)f(of)i(the)f(DNS,)g(and)h(J.R.R.)89 1258 y(T)l(olkien)j(whose) +i(fan)o(tasy)g(pro)o(vided)e(the)h(hostnames.)89 1425 y Fu(References)119 +1534 y Ft([Bel89])23 b(Stev)o(en)11 b(M.)g(Bello)o(vin.)g Fi(Se)n(curity)j +(Pr)n(oblems)f(in)h(the)f(TCP/IP)g(Pr)n(oto)n(c)n(ol)f(Suite)p +Ft(.)j(A)l(T&T)289 1594 y(Bell)g(Lab)q(oratories,)j(Murra)o(y)d(Hill,)f(New)i +(Jersey)l(,)f(April)g(1989.)119 1696 y([Bel90])23 b(Stev)o(en)e(M.)h(Bello)o +(vin.)35 b Fi(Using)24 b(the)f(Domain)g(Name)g(System)g(for)f(System)h(Br)n +(e)n(ak-)289 1756 y(ins)p Ft(.)d(A)l(T&T)15 b(Bell)e(Lab)q(oratories,)k +(Murra)o(y)e(Hill,)e(New)h(Jersey)l(,)g(1990.)21 b(\(unpublished)289 +1817 y(tec)o(hnical)15 b(rep)q(ort\).)119 1918 y([Bel92])23 +b(Stev)o(en)18 b(M.)f(Bello)o(vin.)25 b(There)18 b(Be)g(Dragons.)29 +b(In)18 b Fi(UNIX)i(Se)n(curity)f(Symp)n(osium)g(III)289 1978 +y(Pr)n(o)n(c)n(e)n(e)n(dings)p Ft(,)c(pages)i(1{16,)h(Baltimore,)13 +b(MD,)j(1992.)89 2080 y([Com91])23 b(Douglas)13 b(E.)d(Comer.)i +Fi(Internetworking)i(with)f(TCP/IP)p Ft(.)f(Pren)o(tice-Hall,)e(Englew)o(o)q +(o)q(d)289 2140 y(Cli\013s,)16 b(New)g(Jersey)l(,)f(second)i(edition,)e +(1991.)103 2242 y([Den82])24 b(Doroth)o(y)g(E.)f(Denning.)41 +b Fi(Crypto)n(gr)n(aphy)21 b(and)j(Data)f(Se)n(curity)p Ft(.)42 +b(Addison-W)l(esley)289 2302 y(Publishing)17 b(Compan)o(y)l(,)e(Inc.,)f +(1982.)124 2404 y([GS91])24 b(Simson)14 b(Gar\014nk)o(el)g(and)g(Gene)g +(Spa\013ord.)20 b Fi(Pr)n(actic)n(al)15 b(UNIX)h(Se)n(curity)p +Ft(.)j(O'Reilley)11 b(&)289 2464 y(Asso)q(ciates,)17 b(Inc.)e(Sebastop)q(ol,) +i(CA.,)e(1991.)965 2715 y(20)p eop +%%Page: 21 21 +20 bop 103 82 a Ft([Ken93])23 b(Stephen)29 b(T.)f(Ken)o(t.)57 +b Fi(RF)o(C-1422)28 b(Privacy)h(Enhanc)n(ement)h(for)f(Internet)h(Ele)n(c-) +289 142 y(tr)n(onic)16 b(Mail:)21 b(Part)15 b(II:)f(Certi\014c)n(ate-Base)n +(d)j(Key)e(Management)p Ft(.)k(Net)o(w)o(ork)13 b(W)l(orking)289 +203 y(Group,)k(F)l(ebruary)f(1993.)115 304 y([Lot94])25 b(Mark)18 +b(Lottor.)25 b(In)o(ternet)17 b(Domain)f(Surv)o(ey)h(Jan)h(94.)25 +b(SRI)17 b(In)o(ternational,)g(Jan)o(uary)289 364 y(1994.)104 +466 y([Mer89])23 b(Ralph)17 b(C.)f(Merkle.)j(Snefru.)i(Xero)o(x)16 +b(Corp)q(oration,)h(P)o(alo)g(Alto,)e(CA,)g(1989.)97 568 y([Mo)q(c87])24 +b(P)o(aul)g(Mo)q(c)o(k)m(ap)q(etris.)42 b Fi(RF)o(C-1034)23 +b(Domain)h(Names)g(-)h(Conc)n(epts)f(and)g(F)l(acilities)p +Ft(.)289 628 y(Net)o(w)o(ork)16 b(W)l(orking)g(Group,)h(No)o(v)o(em)o(b)q(er) +c(1987.)101 730 y([Mor85])24 b(R.)18 b(T.)g(Morris.)27 b(A)17 +b(W)l(eakness)h(in)g(the)g(4.2BSD)g(UNIX)f(TCP/IP)i(Soft)o(w)o(are.)26 +b(Com-)289 790 y(puting)15 b(Science)e(T)l(ec)o(hnical)h(Rep)q(ort)h(No.)f +(117,)i(A)l(T&T)e(Bell)f(Lab)q(oratories,)j(Murra)o(y)289 850 +y(Hill,)f(New)g(Jersey)l(,)g(F)l(ebruary)h(1985.)91 952 y([NBS77])23 +b(NBS.)d(Data)c(Encryption)g(Standard.)21 b(National)15 b(Bureau)g(of)h +(Standards,)h(W)l(ashing-)289 1012 y(ton)g(D.C.,)f(Jan.)g(1977.)23 +b(FIPS)16 b(PUB)f(46.)119 1114 y([PH78])24 b(S.)19 b(P)o(ohlig)f(and)i(M.)e +(Hellman.)26 b(An)18 b(Impro)o(v)o(ed)e(Algorithm)h(for)i(Computing)f(Loga-) +289 1174 y(rithms)d(o)o(v)o(er)h Fe(GF)p Ft(\(p\))g(and)h(its)g +(Cryptographic)g(Signi\014cance.)j Fi(IEEE)e(T)l(r)n(ansactions)289 +1234 y(on)g(Information)f(The)n(ory)p Ft(,)e(IT-24\(1\):106{10,)k(Jan)o(uary) +e(1978.)126 1336 y([PL91])24 b(R.)14 b(P)o(aans)g(and)g(H.)f(de)g(Lange.)18 +b(Auditing)13 b(the)g(SNA/SNI)g(En)o(vironmen)o(t.)h Fi(Computer)289 +1396 y(&)k(Se)n(curity)p Ft(,)e(10\(3\):251{61,)j(Ma)o(y)d(1991.)114 +1498 y([Riv92])23 b(Ronald)14 b(L.)g(Riv)o(est.)h Fi(RF)o(C-1321)f(The)h(MD5) +g(Message-Digest)h(A)o(lgorithm)p Ft(.)h(Net)o(w)o(ork)289 +1558 y(W)l(orking)g(Group,)g(April)e(1992.)90 1660 y([RSA78])23 +b(R.)d(Riv)o(est,)g(A.)g(Shamir,)f(and)i(L.)g(Adleman.)31 b(A)20 +b(Metho)q(d)h(for)g(Obtaining)f(Digital)289 1720 y(Signatures)g(and)f(Public) +e(Key)h(Cryptosystems.)28 b Fi(Communic)n(ations)19 b(of)h(the)g(A)o(CM)p +Ft(,)289 1780 y(21\(2\):120{6,)f(F)l(ebruary)d(1978.)115 1882 +y([Sc)o(h93])23 b(Christoph)17 b(L.)e(Sc)o(h)o(uba.)20 b(Addressing)c(W)l +(eaknesses)f(in)g(the)h(Domain)f(Name)f(System)289 1942 y(Proto)q(col.)32 +b(Master's)19 b(thesis,)g(Purdue)h(Univ)o(ersit)o(y)l(,)d(W)l(est)i(Lafa)o(y) +o(ette,)h(IN,)e(August)289 2002 y(1993.)115 2104 y([Sc)o(h94])23 +b(Bruce)16 b(Sc)o(hneier.)j Fi(Applie)n(d)f(Crypto)n(gr)n(aphy)p +Ft(.)h(John)e(Wiley)d(&)j(Sons,)f(Inc.,)f(1994.)121 2205 y([Ste90])24 +b(Ric)o(hard)c(W.)f(Stev)o(ens.)31 b Fi(UNIX)21 b(Network)h(Pr)n(o)n(gr)n +(amming)p Ft(.)30 b(Pren)o(tice-Hall,)18 b(Engle-)289 2266 +y(w)o(o)q(o)q(d)g(Cli\013s,)e(New)g(Jersey)l(,)f(1990.)120 +2367 y([T)l(ol65])24 b(John)g(R.)e(R.)g(T)l(olkien.)39 b Fi(The)23 +b(L)n(or)n(d)f(of)h(the)g(R)o(ings)p Ft(.)40 b(Hough)o(ton)24 +b(Mi\017in,)e(Boston,)289 2428 y(second)17 b(edition,)e(1965.)965 +2715 y(21)p eop +%%Trailer +end +userdict /end-hook known{end-hook}if +%%EOF diff --git a/usr.sbin/named/doc/misc/purdue-thesis.ps b/usr.sbin/named/doc/misc/purdue-thesis.ps new file mode 100644 index 000000000000..b3268efa6d28 --- /dev/null +++ b/usr.sbin/named/doc/misc/purdue-thesis.ps @@ -0,0 +1,7129 @@ +%!PS-Adobe-2.0 +%%Creator: dvips 5.485 Copyright 1986-92 Radical Eye Software +%%Title: 94-028.dvi +%%Pages: 97 1 +%%BoundingBox: 0 0 612 792 +%%EndComments +%DVIPSCommandLine: /usr/local/tex/dvips 94-028.dvi +%%BeginProcSet: tex.pro +/TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N /X{S N} +B /TR{translate}N /isls false N /vsize 11 72 mul N /@rigin{isls{[0 -1 1 0 0 0] +concat}if 72 Resolution div 72 VResolution div neg scale isls{Resolution hsize +-72 div mul 0 TR}if Resolution VResolution vsize -72 div 1 add mul TR matrix +currentmatrix dup dup 4 get round 4 exch put dup dup 5 get round 5 exch put +setmatrix}N /@landscape{/isls true N}B /@manualfeed{statusdict /manualfeed +true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0]N /nn 0 N +/IE 0 N /ctr 0 N /df-tail{/nn 8 dict N nn begin /FontType 3 N /FontMatrix +fntrx N /FontBBox FBB N string /base X array /BitMaps X /BuildChar{ +CharBuilder}N /Encoding IE N end dup{/foo setfont}2 array copy cvx N load 0 nn +put /ctr 0 N[}B /df{/sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 +0 sf neg 0 0]N df-tail}B /E{pop nn dup definefont setfont}B /ch-width{ch-data +dup length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{128 +ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub get 127 +sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data dup type +/stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N /rc 0 N /gp 0 N +/cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup /base get 2 index get +S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff ch-yoff ch-height +sub ch-xoff ch-width add ch-yoff setcachedevice ch-width ch-height true[1 0 0 +-1 -.1 ch-xoff sub ch-yoff .1 add]{ch-image}imagemask restore}B /D{/cc X dup +type /stringtype ne{]}if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 +ne{dup dup length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N} +B /I{cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin +0 0 moveto pop}N /eop{SI restore showpage userdict /eop-hook known{eop-hook} +if}N /@start{userdict /start-hook known{start-hook}if /VResolution X +/Resolution X 1000 div /DVImag X /IE 256 array N 0 1 255{IE S 1 string dup 0 3 +index put cvn put}for 65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N +/RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X +/rulex X V}B /V statusdict begin /product where{pop product dup length 7 ge{0 +7 getinterval(Display)eq}{pop false}ifelse}{false}ifelse end{{gsave TR -.1 -.1 +TR 1 1 scale rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1 +-.1 TR rulex ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /a{ +moveto}B /delta 0 N /tail{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{ +S p tail}B /c{-4 M}B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B +/j{3 M}B /k{4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w +}B /q{p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p +a}B /bos{/SS save N}B /eos{SS restore}B end +%%EndProcSet +%%BeginProcSet: special.pro +TeXDict begin /SDict 200 dict N SDict begin /@SpecialDefaults{/hs 612 N /vs +792 N /ho 0 N /vo 0 N /hsc 1 N /vsc 1 N /ang 0 N /CLIP 0 N /rwiSeen false N +/rhiSeen false N /letter{}N /note{}N /a4{}N /legal{}N}B /@scaleunit 100 N +/@hscale{@scaleunit div /hsc X}B /@vscale{@scaleunit div /vsc X}B /@hsize{/hs +X /CLIP 1 N}B /@vsize{/vs X /CLIP 1 N}B /@clip{/CLIP 2 N}B /@hoffset{/ho X}B +/@voffset{/vo X}B /@angle{/ang X}B /@rwi{10 div /rwi X /rwiSeen true N}B /@rhi +{10 div /rhi X /rhiSeen true N}B /@llx{/llx X}B /@lly{/lly X}B /@urx{/urx X}B +/@ury{/ury X}B /magscale true def end /@MacSetUp{userdict /md known{userdict +/md get type /dicttype eq{userdict begin md length 10 add md maxlength ge{/md +md dup length 20 add dict copy def}if end md begin /letter{}N /note{}N /legal{ +}N /od{txpose 1 0 mtx defaultmatrix dtransform S atan/pa X newpath clippath +mark{transform{itransform moveto}}{transform{itransform lineto}}{6 -2 roll +transform 6 -2 roll transform 6 -2 roll transform{itransform 6 2 roll +itransform 6 2 roll itransform 6 2 roll curveto}}{{closepath}}pathforall +newpath counttomark array astore /gc xdf pop ct 39 0 put 10 fz 0 fs 2 +F/|______Courier fnt invertflag{PaintBlack}if}N /txpose{pxs pys scale ppr +aload pop por{noflips{pop S neg S TR pop 1 -1 scale}if xflip yflip and{pop S +neg S TR 180 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 +get neg sub neg TR}if xflip yflip not and{pop S neg S TR pop 180 rotate ppr 3 +get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get +neg TR}if}{noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop +pop 90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get +neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr 1 get +neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr 2 get ppr 0 +get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 -1 roll add 2 div 3 +1 roll add 2 div 2 copy TR .96 dup scale neg S neg S TR}if}N /cp{pop pop +showpage pm restore}N end}if}if}N /normalscale{Resolution 72 div VResolution +72 div neg scale magscale{DVImag dup scale}if 0 setgray}N /psfts{S 65781.76 +div N}N /startTexFig{/psf$SavedState save N userdict maxlength dict begin +/magscale false def normalscale currentpoint TR /psf$ury psfts /psf$urx psfts +/psf$lly psfts /psf$llx psfts /psf$y psfts /psf$x psfts currentpoint /psf$cy X +/psf$cx X /psf$sx psf$x psf$urx psf$llx sub div N /psf$sy psf$y psf$ury +psf$lly sub div N psf$sx psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy +psf$sy div psf$ury sub TR /showpage{}N /erasepage{}N /copypage{}N /p 3 def +@MacSetUp}N /doclip{psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll +newpath 4 copy 4 2 roll moveto 6 -1 roll S lineto S lineto S lineto closepath +clip newpath moveto}N /endTexFig{end psf$SavedState restore}N /@beginspecial{ +SDict begin /SpecialSave save N gsave normalscale currentpoint TR +@SpecialDefaults count /ocount X /dcount countdictstack N}N /@setspecial{CLIP +1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto closepath +clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx sub div rhiSeen{ +rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR}{rhiSeen{rhi ury lly +sub div dup scale llx neg lly neg TR}if}ifelse CLIP 2 eq{newpath llx lly +moveto urx lly lineto urx ury lineto llx ury lineto closepath clip}if +/showpage{}N /erasepage{}N /copypage{}N newpath}N /@endspecial{count ocount +sub{pop}repeat countdictstack dcount sub{end}repeat grestore SpecialSave +restore end}N /@defspecial{SDict begin}N /@fedspecial{end}B /li{lineto}B /rl{ +rlineto}B /rc{rcurveto}B /np{/SaveX currentpoint /SaveY X N 1 setlinecap +newpath}N /st{stroke SaveX SaveY moveto}N /fil{fill SaveX SaveY moveto}N +/ellipse{/endangle X /startangle X /yrad X /xrad X /savematrix matrix +currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc savematrix +setmatrix}N end +%%EndProcSet +TeXDict begin 40258431 52099146 1000 300 300 @start /Fa 61 +124 df<00000FE0000030180000E01C0001C03C0001803C000380380003800000038000000700 +0000070000000700000007000000070000000E000000FFFFE0000E00E0000E00E0000E01C0001C +01C0001C01C0001C01C0001C0380001C0380003803800038038000380700003807000038070000 +70070800700E1000700E1000700E1000700E2000E0062000E003C000E0000000E0000000C00000 +01C0000001C0000071800000F1800000F3000000620000003C0000001E2D82A21B>12 +D<0007800000001C6003800030100780006010078000E010038000C010010001C07001000380F0 +02000380F002000380600400070000080007000010000700006000073C00A00007E20310000781 +041000070108080007011008000F022008001F842008001C782C08003C003E080038003E080078 +001C0800780000080078000008007000001000F000001000700000200070000020007800004000 +380000800038000100001C000200000E000C00000380700000007F80000021257BA325>38 +D<0C1E3F3F1D02020204040810204080080F75A20F>I<0E1E1E1E1E0202040408081020408007 +0F7D840F>44 DI<70F8F8F0E005057A840F>I<0000000800000018 +000000300000003000000060000000C0000000C000000180000001800000030000000600000006 +0000000C0000000C0000001800000030000000300000006000000060000000C000000180000001 +800000030000000300000006000000060000000C00000018000000180000003000000030000000 +60000000C0000000C0000001800000018000000300000006000000060000000C0000000C000000 +1800000030000000300000006000000060000000C0000000C0000000800000001D317FA419>I< +000F800030C000E06001C0700380700300700700700F00700E00701E00701E00701C00F03C00F0 +3C00F03C00F07801E07801E07801E07801E0F003C0F003C0F003C0F00380E00780E00780E00700 +E00F00E00E00E01C00E01C00E0380060700030E0001F000014227AA019>I<0001000300030006 +001E002E03CE001C001C001C001C0038003800380038007000700070007000E000E000E000E001 +C001C001C001C003800380038003800780FFFC10217AA019>I<000FC000106000603800801800 +801C01001C02201E02101E04101E04101E04101E08203C08203C0840380840780880F00700E000 +01C000030000060000180000200000C0000100000200000400100800301000202000605F80C063 +FFC040FF80807F00801E0017227CA019>I<000FC000307000C01801001C02001C04000C04401C +08201C08201C08201C08403808C0380700700000600001C000070000FC00000700000380000380 +0001C00001C00001C00003C06003C0F003C0F00380E00780800700800E00801C0040380020F000 +1F800016227BA019>I<0000180000380000380000700000700000700000E00000E00000E00000 +C00001C0000180000380000300000300000600000600000C00000C000018000010000031800061 +C00043800083800183800303800207000407000807003FC700403E00800FF0000E00000E00001C +00001C00001C00001C00003800003800003800003000152B7EA019>I<00400400703800FFF000 +FFE000BF80008000010000010000010000010000020000020000023E0002C3000501800601C004 +01C00001E00001E00001E00001E00001E00001E07003C0F003C0F003C0E00780800700800F0080 +0E00401C0040380030E0000F800016227BA019>I<000FC000306000401000801801000803000C +03000C06001807001807001007003007C06007E0C003F18001FE0000FC0000FE00033F00061F80 +0C07C01803C03001C06001C06000C0C000C0C000C0C00080C00180C00100C00200C00600600800 +3030000FC00016227BA019>56 D<000FC000386000703000E03001C0380380380780380700380F +00380F00380F00381E00781E00781E00781E00F81E00F01C00F00E01F00E02F00605E00309E001 +F1E00003C00003C0000380000700000700600E00F00C00F01800E0300080600041C0003F000015 +227BA019>I<07000F800F800F000E000000000000000000000000000000000000000000000070 +00F800F800F000E00009157A940F>I<0000030000000300000007000000070000000F0000000F +0000001F0000002F0000002F0000004F0000004F80000087800000878000010780000207800002 +078000040780000407800008078000080780001007800030078000200780007FFF80004007C000 +8007C0008003C0010003C0030003C0020003C0040003C0040003C00C0003C03C0007C0FF003FFC +1E237DA224>65 D<00FFFFE0000F0038000F001C000F001E001E000E001E000F001E000F001E00 +0F003C000E003C001E003C001E003C003C00780078007800F0007801E00078078000FFFF8000F0 +01E000F000F000F0007801E0007801E0003801E0003C01E0003C03C0007803C0007803C0007803 +C000F0078000F0078001E0078003C0078007000F801E00FFFFF00020227DA122>I<00007F0080 +0003808100000E00630000380027000070001F0000E0000E0001C0000E000380000E000700000E +000F000004000E000004001E000004003C000004003C0000080078000000007800000000780000 +0000F000000000F000000000F000000000F000000000F000000000E000000000E000002000E000 +002000E000004000E000004000F00000800070000080007000010000380002000018000400001C +0008000006003000000381C0000000FE000000212479A223>I<00FFFFF000000F003C00000F00 +0E00000F000700001E000380001E000380001E0001C0001E0001C0003C0001C0003C0001E0003C +0001E0003C0001E000780001E000780001E000780001E000780001E000F00003C000F00003C000 +F00003C000F00003C001E000078001E000078001E000070001E0000F0003C0000E0003C0001C00 +03C0003C0003C00038000780007000078000E000078001C00007800700000F801C0000FFFFF000 +0023227DA125>I<00FFFFFF80000F000780000F000180000F000180001E000180001E00018000 +1E000100001E000100003C000100003C000100003C010100003C01000000780200000078020000 +007806000000780E000000FFFC000000F00C000000F00C000000F00C000001E008000001E00800 +0001E008040001E000080003C000080003C000080003C000100003C00010000780002000078000 +6000078000C000078001C0000F8007C000FFFFFF800021227DA121>I<00FFFFFF000F000F000F +0003000F0003001E0003001E0003001E0002001E0002003C0002003C0002003C0102003C010000 +780200007802000078060000780E0000FFFC0000F00C0000F00C0000F00C0001E0080001E00800 +01E0080001E0000003C0000003C0000003C0000003C00000078000000780000007800000078000 +000F800000FFFC000020227DA120>I<00007F00800003808100000E0063000038002700007000 +1F0000E0000E0001C0000E000380000E000700000E000F000004000E000004001E000004003C00 +0004003C00000800780000000078000000007800000000F000000000F000000000F000000000F0 +00000000F0003FFC00E00001E000E00001E000E00001E000E00003C000E00003C000F00003C000 +700003C0007000078000380007800018000F80001C0013800006002300000381C1000000FE0000 +00212479A226>I<00FFF87FFC000F000780000F000780000F000780001E000F00001E000F0000 +1E000F00001E000F00003C001E00003C001E00003C001E00003C001E000078003C000078003C00 +0078003C000078003C0000FFFFF80000F000780000F000780000F000780001E000F00001E000F0 +0001E000F00001E000F00003C001E00003C001E00003C001E00003C001E000078003C000078003 +C000078003C000078003C0000F8007C000FFF87FFC0026227DA124>I<00FFF8000F00000F0000 +0F00001E00001E00001E00001E00003C00003C00003C00003C0000780000780000780000780000 +F00000F00000F00000F00001E00001E00001E00001E00003C00003C00003C00003C00007800007 +80000780000780000F8000FFF80015227DA113>I<00FFF807FC000F0001E0000F0001C0000F00 +0100001E000200001E000400001E001000001E002000003C004000003C008000003C010000003C +04000000780800000078180000007838000000787C000000F0BC000000F23C000000F41E000000 +F81E000001F01F000001E00F000001E00F000001E00F800003C007800003C007800003C003C000 +03C003C000078003C000078001E000078001E000078001E0000F8001F000FFF80FFE0026227DA1 +25>75 D<00FF800007FC000F80000F80000F80001780000F80001780001780002F000013C0002F +000013C0004F000013C0008F000023C0009E000023C0011E000023C0011E000023C0021E000043 +C0043C000043C0043C000043C0083C000041E0083C000081E01078000081E02078000081E02078 +000081E04078000101E040F0000101E080F0000101E100F0000101E100F0000200F201E0000200 +F201E0000200F401E0000200F801E0000400F803C0000400F003C0000400F003C0000C00E003C0 +001E00C007C000FFC0C07FFC002E227DA12C>77 D<00FF000FFC000F8001E0000F800180000FC0 +00800013C001000013C001000011E001000011E001000021E002000020F002000020F002000020 +F0020000407804000040780400004078040000403C040000803C080000803E080000801E080000 +801E080001001F100001000F100001000F10000100079000020007A000020007A000020003E000 +020003E000040003C000040001C000040001C0000C0001C0001E00008000FFC000800026227DA1 +24>I<0000FE0000078380000C00E0003800700070003800E0003801C0001C0380001C0700001C +0F00001E1E00001E1C00001E3C00001E3C00001E7800001E7800001E7800001EF000003CF00000 +3CF000003CF0000078F0000078E0000078E00000F0E00000F0E00001E0E00001C0F00003C0F000 +07807000070078000E0038001C001C0038000E00E0000703800001FC00001F2479A225>I<00FF +FFE0000F0038000F001E000F000E001E0007001E0007001E0007001E0007003C000F003C000F00 +3C000F003C001E0078001E0078003C00780078007800E000F003C000FFFE0000F0000000F00000 +01E0000001E0000001E0000001E0000003C0000003C0000003C0000003C0000007800000078000 +0007800000078000000F800000FFF8000020227DA121>I<00FFFFC0000F0070000F003C000F00 +1C001E000E001E000E001E000F001E000F003C001E003C001E003C001E003C003C007800380078 +0070007801E00078078000FFFC0000F00E0000F0070000F0038001E003C001E003C001E003C001 +E003C003C0078003C0078003C0078003C0078007800F0007800F0107800F01078007020F800702 +FFF8038C000000F020237DA124>82 D<0001F020000E0C40001802C0003001C0006001C000E001 +8000C0018001C0018001C0018003C0010003C0010003C0000003C0000003E0000001F8000001FF +000000FFE000007FF000001FF8000003FC0000007C0000003C0000001E0000001E0000001E0020 +001C0020001C0020001C00200018006000380060003000700060007000C000C8018000C6070000 +81FC00001B247DA21B>I<1FFFFFF81E03C0381803C0183003C018200780182007801840078010 +40078010400F0010800F0010800F0010000F0000001E0000001E0000001E0000001E0000003C00 +00003C0000003C0000003C00000078000000780000007800000078000000F0000000F0000000F0 +000000F0000001E0000001E0000001E0000001E0000003E00000FFFF00001D2277A123>I<3FFE +03FF03C0007803C0006003C00020078000400780004007800040078000400F0000800F0000800F +0000800F0000801E0001001E0001001E0001001E0001003C0002003C0002003C0002003C000200 +7800040078000400780004007800040070000800F0000800F00010007000100070002000700040 +003000400038018000180200000E0C000003F00000202377A124>I87 D<007FF81FF8000FC007C000078003000007C002000003C004000003 +C008000003E010000001E030000001E020000001F040000000F080000000F100000000FA000000 +007C000000007C000000007C000000003C000000003C000000007E000000009E000000011E0000 +00031F000000060F000000040F000000080F80000010078000002007C000004007C00000C003C0 +00018003E000010001E000070001E0001F0003F000FFC01FFE0025227EA124>I<00F8C00185C0 +0705C00E03800E03801C03803C0380380700780700780700780700F00E00F00E00F00E00F00E10 +F01C20701C20703C20305C40308C400F078014157B9419>97 D<03C03F80038003800380070007 +00070007000E000E000E000E001C001CF81D0C1E0E3C0638073807380F700F700F700F700FE01E +E01EE01EE03CE038E038607060E031C01F0010237BA216>I<007E0001C1000301800703800E07 +801C07803C0000380000780000780000780000F00000F00000F00000F00000F001007001007002 +00300C001830000FC00011157B9416>I<00003C0003F800003800003800003800007000007000 +00700000700000E00000E00000E00000E00001C000F9C00185C00705C00E03800E03801C03803C +0380380700780700780700780700F00E00F00E00F00E00F00E10F01C20701C20703C20305C4030 +8C400F078016237BA219>I<00F803840E021C023C0238027804F018FFE0F000F000E000E000E0 +00E000E002E0026004701830600F800F157A9416>I<00003E0000470000CF00018F0001860003 +80000380000380000700000700000700000700000700000E0000FFF0000E00000E00000E00001C +00001C00001C00001C00001C000038000038000038000038000038000070000070000070000070 +0000700000E00000E00000E00000E00000C00001C00001C000718000F18000F300006200003C00 +00182D82A20F>I<001F180030B800E0B801C07001C0700380700780700700E00F00E00F00E00F +00E01E01C01E01C01E01C01E01C01E03800E03800E0780060B8006170001E70000070000070000 +0E00000E00000E00701C00F01800F0300060E0003F8000151F7E9416>I<00F0000FE00000E000 +00E00000E00001C00001C00001C00001C000038000038000038000038000070000071F00072180 +07C0C00F00E00F00E00E00E00E00E01C01C01C01C01C01C01C01C0380380380380380380380704 +700708700E08700E10700610E006206003C016237DA219>I<00C001E001C001C0000000000000 +000000000000000000001C002300430043008700870087000E000E001C001C001C003800380038 +40708070807080710032001C000B217BA00F>I<00F0000FE00000E00000E00000E00001C00001 +C00001C00001C0000380000380000380000380000700000701E0070210070C700E10F00E10F00E +20600E40001D80001E00001FC0001C7000383800383800381C00381C2070384070384070384070 +1880E01880600F0014237DA216>107 D<01E01FC001C001C001C0038003800380038007000700 +070007000E000E000E000E001C001C001C001C0038003800380038007000700070007100E200E2 +00E200E200640038000B237CA20C>I<1C0F80F8002610C10C0047606606008780780700878078 +0700870070070087007007000E00E00E000E00E00E000E00E00E000E00E00E001C01C01C001C01 +C01C001C01C01C001C01C038203803803840380380704038038070803803803080700700310030 +03001E0023157B9428>I<1C0F002631C04740C08780E08780E08700E08700E00E01C00E01C00E +01C00E01C01C03801C03801C03801C0704380708380E08380E103806107006203003C016157B94 +1B>I<007E0001C3000381800701C00E01C01C01E03C01E03801E07801E07801E07801E0F003C0 +F003C0F00380F00780700700700E00700C0030180018700007C00013157B9419>I<01C1F00262 +1804741C08780C08700E08700E08701E00E01E00E01E00E01E00E01E01C03C01C03C01C03C01C0 +7803807003807003C0E003C1C0072380071E000700000700000E00000E00000E00000E00001C00 +001C00001C0000FFC000171F7F9419>I<00F8400184C00705C00E03800E03801C03803C038038 +0700780700780700780700F00E00F00E00F00E00F00E00F01C00701C00703C00305C0030B8000F +380000380000380000700000700000700000700000E00000E00000E0000FFE00121F7B9416>I< +1C1F002620804741C08783C08703C08701808700000E00000E00000E00000E00001C00001C0000 +1C00001C000038000038000038000038000070000030000012157B9415>I<00FC000183000200 +800401800C03800C03000C00000F00000FF00007FC0003FE00003E00000F00000700700700F006 +00F00600E004004008002030001FC00011157D9414>I<00C001C001C001C001C0038003800380 +03800700FFF8070007000E000E000E000E001C001C001C001C0038003800380038107020702070 +40708031001E000D1F7C9E10>I<1E00602300E04380E04381C08381C08701C08701C00703800E +03800E03800E03801C07001C07001C07001C07081C0E10180E101C0E101C1E200C262007C3C015 +157B941A>I<1E03802307C04387C04383C08381C08700C08700C00700800E00800E00800E0080 +1C01001C01001C01001C02001C02001C04001C08001C08000C300003C00012157B9416>I<1E00 +60E02300E1F04380E1F04381C0F08381C0708701C0308701C030070380200E0380200E0380200E +0380201C0700401C0700401C0700401C0700801C0700801C0701001C0F01000C0F020006138C00 +03E0F0001C157B9420>I<1E00302300704380704380E08380E08700E08700E00701C00E01C00E +01C00E01C01C03801C03801C03801C03801C07001C07001C07001C0F000C3E0003CE00000E0000 +0E00001C00601C00F03800F03000E0600080C0004380003E0000141F7B9418>121 +D<01E02003F06007F8C0041F800801000802000004000008000010000020000040000080000100 +000200000400800801001003003F060061FC0040F80080700013157D9414>II E /Fb 15 119 df<40E04003037D8209>58 D<01F90607080310021002100018000F8003 +F0003800080008400840084010E0609F8010117D9013>83 D<072018E0306060606060C0C0C0C0 +C0C841C862D03C700D0B7E8A11>97 D<780018001800300030003000370078C0604060606060C0 +C0C0C0C0C0418063003C000B117E900E>I<007800180018003000300030073018E03060606060 +60C0C0C0C0C0C841C862D03C700D117E9010>100 D<07801840304060407F80C000C000C00040 +2020C01F000B0B7E8A0F>I<040C0000000000705898983030606464683006127E910B>105 +D<71F1F09A1A189C1C18981818181818303030303030303032303062606064606038170B7E8A1B +>109 D<71F09A189C18981818183030303030323062606460380F0B7E8A13>I<07C01820303060 +106018C030C030C020406021801F000D0B7E8A0F>I<1C70278C2604260606060C0C0C0C0C0C0C +181E3019C01800180030003000FC000F10808A10>I<73C09C2098609800180030003000300030 +00600060000B0B7E8A0E>114 D<0F001080218020003E001F0001808080C00083007C00090B7D +8A0F>I<381048308C309830183030603060306430E431E80E380E0B7E8A12>117 +D<386048608C2098201820304030403040308011000E000B0B7E8A10>I +E /Fc 1 49 df<060F0F0E1E1E1C3C383830707060E0C04008117F910A>48 +D E /Fd 17 120 df<60F0F06004047D830A>58 D<0008001800300030003000600060006000C0 +00C000C0018001800180030003000600060006000C000C000C0018001800180030003000300060 +0060006000C000C0000D217E9812>61 D<07FE03F800E001C000E0010000E0020000E0080001C0 +100001C0200001C0800001C1000003830000038F00000393800003A380000781C0000701C00007 +00E0000700E0000E0070000E0070000E0038000E0038001C003C00FF80FF001D177F961E>75 +D<003E1000C1A00100E00200600600600C00400C00400E00000F000007E00007FC0001FE00003F +00000780000380000380200180400300400300600600600400D8180087E00014177E9615>83 +D<7C0018001800180018003000300030003000678068C070406060C060C060C060C06080C080C0 +8180C10046003C000B177E960F>98 D<003E000C000C000C000C0018001800180018073018F030 +7060706060C060C060C06080C080C480C4C1C446C838700F177E9612>100 +D<07C01C20301060106020FFC0C000C000C000C000C010402060C01F000C0E7E8D10>I<1F0006 +000600060006000C000C000C000C0018F01B181C08180838183018301830306030603160616062 +C022C03C10177E9614>104 D<0300038003000000000000000000000000001C00240046004600 +8C000C0018001800180031003100320032001C0009177F960C>I<383C0044C600470200460200 +8E06000C06000C06000C0C00180C00180C40181840181880300880300F00120E7F8D15>110 +D<07C00C20101020186018C018C018C01880308030C060C0C061803E000D0E7E8D11>I<1C3C22 +462382230346030603060306030C060C060C0C0C081A3019E018001800300030003000FC001014 +808D12>I<38F04518463846308C000C000C000C001800180018001800300030000D0E7F8D10> +114 D<030003000600060006000600FFC00C000C000C0018001800180018003000308030803100 +31001E000A147F930D>116 D<1C0200260600460600460600860C000C0C000C0C000C0C001818 +001818801818801838800C5900078E00110E7F8D14>I<1C04260E4606460686040C040C040C04 +18081808181018100C6007800F0E7F8D11>I<1C020426060E460606460606860C040C0C040C0C +040C0C041818081818081818100818100C2C2003C7C0170E7F8D19>I E +/Fe 3 67 df<1F00618040C08060C0600060006000C00180030006000C00102020207FC0FFC00B +107F8F0F>50 D<00C00000C00000C000016000016000023000023000023000041800041800080C +000FFC00080C00100600100600300700FC1FC012117F9016>65 DI E +/Ff 17 122 df<0038007800F001E003C007800F000E001C001C0038003800700070007000E000 +E000E000E000E000E000E000E000E000E000700070007000380038001C001C000E000F00078003 +C001E000F8007800380D2878A21A>40 D<6000F00078003C001E000F000780038001C001C000E0 +00E0007000700070003800380038003800380038003800380038003800700070007000E000E001 +C001C0038007800F001E003C007800F00060000D287CA21A>I66 D<1FF0003FFC007FFE00780F00300700000380000380007F8007FF801FFF803F83 +80780380700380E00380E00380E00380700780780F803FFFFC1FFDFC07F0FC16157D941A>97 +DI<001FC0001FC0001FC00001C00001C00001C000 +01C00001C00001C001F1C007FDC00FFFC01E0FC03C07C07803C07001C0E001C0E001C0E001C0E0 +01C0E001C0E001C0E001C07003C07003C03807C03E0FC01FFFFC07FDFC01F1FC161E7E9D1A> +100 D<01F80007FF000FFF801E07C03C01C07800E07000E0E00070E00070FFFFF0FFFFF0FFFFF0 +E000007000007000007800703C00701F01F00FFFE003FFC000FE0014157D941A>I<01F87C07FF +FE0FFFFE1E078C1C03803801C03801C03801C03801C03801C01C03801E07801FFF001FFE0039F8 +003800003800001C00001FFF801FFFE03FFFF878007C70001CE0000EE0000EE0000EE0000E7000 +1C78003C3E00F81FFFF007FFC001FF0017217F941A>103 DI<7CE0E000FFFBF8007FFFF8001F1F1C001E1E1C001E1E1C001C1C1C001C1C1C001C1C +1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C007F +1F1F00FF9F9F807F1F1F00191580941A>109 DI<01F00007FC001FFF003E0F803C07807803C07001C0E000E0E000E0 +E000E0E000E0E000E0E000E0F001E07001C07803C03C07803E0F801FFF0007FC0001F00013157D +941A>II<7F83F0FF8FF87FBFFC03 +FC3C03F01803E00003C00003C00003800003800003800003800003800003800003800003800003 +80000380007FFF00FFFF007FFF0016157E941A>114 D<07FB801FFF807FFF80780780E00380E0 +0380E003807800007FC0003FFC0007FE00003F800007806001C0E001C0E001C0F003C0FC0780FF +FF00EFFE00E3F80012157C941A>I<00C00001C00001C00001C00001C00001C00001C0007FFFE0 +FFFFE0FFFFE001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C070 +01C07001C07001C07000E0E000FFE0007FC0001F00141C7F9B1A>I<7FC3FCFFC7FE7FC3FC0E00 +E00E00E00700E00701C00781C00381C003838003C38001C38001C70000E70000E70000E6000066 +00006E00003C00003C00003C0000380000380000380000700000700030700078E00071E0007FC0 +003F80001E000017207F941A>121 D E /Fg 10 115 df45 +D<0000040000000006000000000E000000001E000000001E000000003E000000003F000000004F +000000004F000000008F000000008F000000010F00000001078000000207800000020780000004 +0780000004078000000807C000000803C000001003C000001003C000002003C000003FFFE00000 +4001E000004001E000008001E000008001E000010001E000010000F000020000F000060000F000 +040000F0000C0000F0003E0001F800FF800FFF8021237EA225>65 D<00FF000381C00603C00C03 +C01C0180380000780000700000F00000F00000F00000F00000F00000E00000F00000F000807001 +007001003806001C180007E00012157C9416>99 D<00FE000383800701C00C00E01C00E03800E0 +7800E07000E0FFFFE0F00000F00000F00000F00000E00000E00000F00040700080300080180300 +0E0C0003F00013157D9416>101 D<00000780001F88800070D18000E0E18001C0700003C07000 +03C070000780F0000780F0000780F0000780E0000381E0000181C00002C30000027E0000040000 +0004000000040000000600000007FF800007FFE00007FFF0001C00780030001800600018006000 +1800C0001800C0001800C0003000600060003000C0001C07800003FC00001921809518>103 +D<007000F001F000F000E00000000000000000000000000000000001C00FC001C001C001C001C0 +0380038003800380038003800700070007000700070007000E000F00FFE00C227FA10E>105 +D<007803F800700070007000700070007000E000E000E000E000E000E001C001C001C001C001C0 +01C00380038003800380038003800700070007000700070007000E000F00FFE00D237FA20E> +108 D<01C3F01FCC1801D00C01E00E01E00E01C00E03C01C03801C03801C03801C03801C03801C +0700380700380700380700380700380700380E00700F0078FFE7FF18157F941B>110 +D<007E000383800600C00C00E01C0070380070780078700078F00078F00078F00078F00078E000 +F0E000F0E000E0F001E07001C07003803807001C1C0007F00015157D9418>I<01C7C01FC8E001 +D1E001E1E001E0C001C00003C00003800003800003800003800003800007000007000007000007 +00000700000700000E00000F0000FFF00013157F9413>114 D E /Fh 16 +127 df46 D<0000800001800001800003000003000003000006000006 +00000600000C00000C00000C000018000018000018000030000030000030000060000060000060 +0000C00000C00000C0000180000180000180000180000300000300000300000600000600000600 +000C00000C00000C0000180000180000180000300000300000300000600000600000600000C000 +00C00000C0000011317DA418>I<001F0000001F0000003F8000003F8000003B8000007BC00000 +73C0000071C00000F1E00000F1E00000E0E00001E0F00001E0F00001C0F00003C0780003C07800 +0380780007803C0007803C0007003C000F001E000F001E000FFFFE001FFFFF001FFFFF001C000F +003C0007803C00078038000780780003C0780003C0700003C0F00001E0F00001E0E00001E01B23 +7EA220>65 D<01FC0007FF000FFF801F03803C0180780000780000700000F00000F00000F00000 +F00000F00000F000007800007800007800003C00401F03C00FFFC007FF8001FC0012167E9516> +99 D<0003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0 +0003C003E3C00FFBC01FFFC03F0FC03C07C07803C07803C0F003C0F003C0F003C0F003C0F003C0 +F003C0F003C0F003C07803C07803C03C07C03E0FC01FFFC00FFBC003E3C012237EA219>I<03F0 +0007FC001FFE003E0F003C0780780380780380F001C0FFFFC0FFFFC0FFFFC0F00000F00000F000 +007000007800007800003C00801F07800FFF8007FF0001F80012167E9516>I<01F07807FFF80F +FFF81F1F001E0F003C07803C07803C07803C07803C07801E0F001F1F000FFE001FFC0019F00038 +00003800003C00001FFE001FFFC01FFFE03FFFF07801F07800F8F00078F00078F00078F0007878 +00F03E03E01FFFC00FFF8001FC0015217F9518>103 DII108 D110 D<01FC0007FF000FFF801F07C03C01E07800F07800F0700070F00078F00078F00078F0 +0078F00078F000787800F07800F07C01F03E03E01F07C00FFF8007FF0001FC0015167F9518>I< +F0E0F3E0F7E0FF00FE00FC00F800F800F000F000F000F000F000F000F000F000F000F000F000F0 +00F000F0000B167C9511>114 D<07F01FFC3FFE3C0E7806780078007C003F003FF01FF80FFC01 +FE001F000F000F000FC00FF81EFFFE3FFC0FF010167F9513>I<0F000F000F000F000F000F00FF +F8FFF8FFF80F000F000F000F000F000F000F000F000F000F000F000F000F000F000F080F1C07FC +07F803E00E1C7F9B12>I<1C0E3F0E7F8EE3FCE1F8E0700F067CA118>126 +D E /Fi 1 124 df123 D E /Fj 4 107 +df<03F0000FFC001FFE003FFF007FFF807FFF80FFFFC0FFFFC0FFFFC0FFFFC0FFFFC0FFFFC0FF +FFC0FFFFC07FFF807FFF803FFF001FFE000FFC0003F00012147D9519>15 +D<000000006000000000003000000000003000000000001800000000001800000000000C000000 +00000600000000000380FFFFFFFFFFE0FFFFFFFFFFC0000000000380000000000600000000000C +000000000018000000000018000000000030000000000030000000000060002B127D9432>33 +D<001FFF007FFF01E0000380000600000C0000180000300000300000600000600000600000C000 +00C00000FFFFFFFFFFFFC00000C000006000006000006000003000003000001800000C00000600 +0003800001E000007FFF001FFF181E7C9A21>50 D106 +D E /Fk 68 124 df<007E0001C1800301800703C00E03C00E01800E00000E00000E00000E0000 +0E0000FFFFC00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0 +0E01C00E01C00E01C00E01C00E01C07F87F8151D809C17>12 D<6060F0F0F8F868680808080808 +08101010102020404080800D0C7F9C15>34 D<00E0000001900000030800000308000007080000 +0708000007080000070800000710000007100000072000000740000003C03FE003800F00038006 +000380040005C0040009C0080010E0100030E010006070200060702000E0384000E03C4000E01C +8000E00F0020E0070020700780403009C0401830E18007C03E001B1F7E9D20>38 +D<004000800100020006000C000C0018001800300030007000600060006000E000E000E000E000 +E000E000E000E000E000E000E000E000600060006000700030003000180018000C000C00060002 +000100008000400A2A7D9E10>40 D<800040002000100018000C000C0006000600030003000380 +01800180018001C001C001C001C001C001C001C001C001C001C001C001C0018001800180038003 +000300060006000C000C00180010002000400080000A2A7E9E10>I<01800180018001804182F1 +8F399C0FF003C003C00FF0399CF18F4182018001800180018010127E9E15>I<60F0F070101010 +1020204080040C7C830C>44 DI<60F0F06004047C830C>I<0001000300 +0600060006000C000C000C0018001800180030003000300060006000C000C000C0018001800180 +030003000300060006000C000C000C00180018001800300030003000600060006000C000C00010 +297E9E15>I<03C00C301818300C300C700E60066006E007E007E007E007E007E007E007E007E0 +07E007E007E007E00760066006700E300C300C18180C3007E0101D7E9B15>I<030007003F00C7 +000700070007000700070007000700070007000700070007000700070007000700070007000700 +0700070007000F80FFF80D1C7C9B15>I<07C01830201C400C400EF00FF80FF807F8077007000F +000E000E001C001C00380070006000C00180030006010C01180110023FFE7FFEFFFE101C7E9B15 +>I<07E01830201C201C781E780E781E381E001C001C00180030006007E00030001C001C000E00 +0F000F700FF80FF80FF80FF00E401C201C183007E0101D7E9B15>I<000C00000C00001C00003C +00003C00005C0000DC00009C00011C00031C00021C00041C000C1C00081C00101C00301C00201C +00401C00C01C00FFFFC0001C00001C00001C00001C00001C00001C00001C0001FFC0121C7F9B15 +>I<300C3FF83FF03FC020002000200020002000200023E024302818301C200E000E000F000F00 +0F600FF00FF00FF00F800E401E401C2038187007C0101D7E9B15>I<00F0030C06040C0E181E30 +1E300C700070006000E3E0E430E818F00CF00EE006E007E007E007E007E007600760077006300E +300C18180C3003E0101D7E9B15>I<4000007FFF807FFF007FFF00400200800400800400800800 +00100000100000200000600000400000C00000C00001C000018000018000038000038000038000 +038000078000078000078000078000078000078000030000111D7E9B15>I<03E00C301008200C +20066006600660067006780C3E083FB01FE007F007F818FC307E601E600FC007C003C003C003C0 +0360026004300C1C1007E0101D7E9B15>I<03C00C301818300C700C600EE006E006E007E007E0 +07E007E0076007700F300F18170C2707C700060006000E300C780C78187010203030C00F80101D +7E9B15>I<7FFFFFC0FFFFFFE00000000000000000000000000000000000000000000000000000 +000000000000FFFFFFE07FFFFFC01B0C7E8F20>61 D<000600000006000000060000000F000000 +0F0000000F00000017800000178000001780000023C0000023C0000023C0000041E0000041E000 +0041E0000080F0000080F0000180F8000100780001FFF80003007C0002003C0002003C0006003E +0004001E0004001E000C001F001E001F00FF80FFF01C1D7F9C1F>65 DI<001F808000E0618001801980070007800E0003801C0003801C0001803800018078000080 +7800008070000080F0000000F0000000F0000000F0000000F0000000F0000000F0000000F00000 +00700000807800008078000080380000801C0001001C0001000E000200070004000180080000E0 +3000001FC000191E7E9C1E>IIII73 D +76 DII<003F8000 +00E0E0000380380007001C000E000E001C0007003C00078038000380780003C0780003C0700001 +C0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0700001C07800 +03C0780003C0380003803C0007801C0007000E000E0007001C000380380000E0E000003F80001B +1E7E9C20>II82 D<07E0801C198030058070038060 +0180E00180E00080E00080E00080F00000F800007C00007FC0003FF8001FFE0007FF0000FF8000 +0F800007C00003C00001C08001C08001C08001C0C00180C00180E00300D00200CC0C0083F80012 +1E7E9C17>I<7FFFFFC0700F01C0600F00C0400F0040400F0040C00F0020800F0020800F002080 +0F0020000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000 +000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000001F800003FFFC +001B1C7F9B1E>II87 D<7FF0FFC00FC03E000780180003C0180003E0100001E0200001F06000 +00F0400000788000007D8000003D0000001E0000001F0000000F0000000F8000000F80000013C0 +000023E0000021E0000041F00000C0F8000080780001007C0003003C0002001E0006001F001F00 +3F80FFC0FFF01C1C7F9B1F>I91 D<08081010202040404040808080808080 +B0B0F8F8787830300D0C7A9C15>II<1FC000307000783800781C00301C00 +001C00001C0001FC000F1C00381C00701C00601C00E01C40E01C40E01C40603C40304E801F8700 +12127E9115>97 DI<07E00C301878307870306000E000E0 +00E000E000E000E00060007004300418080C3007C00E127E9112>I<003F000007000007000007 +0000070000070000070000070000070000070000070003E7000C1700180F003007007007006007 +00E00700E00700E00700E00700E00700E00700600700700700300700180F000C370007C7E0131D +7E9C17>I<03E00C301818300C700E6006E006FFFEE000E000E000E00060007002300218040C18 +03E00F127F9112>I<00F8018C071E061E0E0C0E000E000E000E000E000E00FFE00E000E000E00 +0E000E000E000E000E000E000E000E000E000E000E000E000E007FE00F1D809C0D>I<00038003 +C4C00C38C01C3880181800381C00381C00381C00381C001818001C38000C300013C00010000030 +00001800001FF8001FFF001FFF803003806001C0C000C0C000C0C000C06001803003001C0E0007 +F800121C7F9215>II<18003C003C001800000000000000 +0000000000000000FC001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C +001C00FF80091D7F9C0C>I<00C001E001E000C000000000000000000000000000000FE000E000 +E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E060E0 +F0C0F1C061803E000B25839C0D>IIIII<03F0000E1C00180600300300700380600180E0 +01C0E001C0E001C0E001C0E001C0E001C06001807003803003001806000E1C0003F00012127F91 +15>II<03C1000C3300180B00300F00700700700700E00700E00700E00700E007 +00E00700E00700600700700700300F00180F000C370007C7000007000007000007000007000007 +00000700000700003FE0131A7E9116>II<1F9030704030C010C010E010F8007F803FE0 +0FF000F880388018C018C018E010D0608FC00D127F9110>I<04000400040004000C000C001C00 +3C00FFE01C001C001C001C001C001C001C001C001C001C101C101C101C101C100C100E2003C00C +1A7F9910>IIII<7F8FF00F03800F030007020003840001C80001D80000F000007000 +00780000F800009C00010E00020E000607000403801E07C0FF0FF81512809116>II123 D E /Fl 7 56 df<0C001C00EC000C000C000C000C000C000C000C +000C000C000C000C000C000C000C000C00FFC00A137D9211>49 D<1F0060C06060F070F0306030 +00700070006000C001C00180020004000810101020207FE0FFE00C137E9211>I<0FC030707038 +703870380038003000E00FC0007000380018001C601CF01CF018E03860701FC00E137F9211>I< +006000E000E00160026006600C600860106020606060C060FFFC0060006000600060006003FC0E +137F9211>I<60607FC07F8044004000400040004F0070C040E0006000700070E070E070E06040 +E021C01F000C137E9211>I<07C00C201070207060006000C000CF00D0C0E060C020C030C030C0 +3040306020206010C00F000C137E9211>I<40007FFC7FF8401080108020004000800100010003 +000200060006000E000E000E000E000E0004000E147E9311>I E /Fm 19 +117 df<03000700FF000700070007000700070007000700070007000700070007000700070007 +00070007007FF00C157E9412>49 D<0F8030E040708030C038E0384038003800700070006000C0 +0180030006000C08080810183FF07FF0FFF00D157E9412>I<0FE030306018701C701C001C0018 +0038006007E000300018000C000E000EE00EE00EC00C401830300FE00F157F9412>I<00300030 +007000F001F001700270047008701870107020704070C070FFFE0070007000700070007003FE0F +157F9412>I<20303FE03FC0240020002000200020002F8030E020700030003800384038E038E0 +388030406020C01F000D157E9412>I<01F00608080C181C301C70006000E000E3E0EC30F018F0 +0CE00EE00EE00E600E600E300C3018183007C00F157F9412>I<40007FFE7FFC7FF8C008801080 +200040008000800100010003000200060006000E000E000E000E000E0004000F167E9512>I<00 +1000003800003800003800005C00005C00005C00008E00008E00008E0001070001070003078002 +038002038007FFC00401C00401C00800E00800E01800E03800F0FE03FE17177F961A>65 +DI72 +D<1FC0386038301038003803F81E3830387038E039E039E07970FF1F1E100E7F8D12>97 +D<007E00000E00000E00000E00000E00000E00000E00000E00000E0007CE001C3E00300E00700E +00600E00E00E00E00E00E00E00E00E00600E00700E00301E00182E0007CFC012177F9614>100 +D104 +D<183C3C1800000000007C1C1C1C1C1C1C1C1C1C1C1C1CFF081780960A>I109 DI<07C018303018600C600CE0 +0EE00EE00EE00EE00E701C3018183007C00F0E7F8D12>I<1F4060C0C040C040E000FF007F801F +C001E080608060C060E0C09F000B0E7F8D0E>115 D<080008000800180018003800FF80380038 +003800380038003800380038403840384038401C800F000A147F930E>I +E /Fn 14 116 df<70F8F8F87005057C840E>58 D<70F8FCFC7404040404080810102040060F7C +840E>I<0000001800000078000001E00000078000001E00000078000003E000000F8000003C00 +0000F0000003C000000F0000003C000000F0000000F00000003C0000000F00000003C0000000F0 +0000003C0000000F80000003E0000000780000001E0000000780000001E000000078000000181D +1C7C9926>I62 D<007FFFF8000007801E0000078007000007800380000F0001C0000F0001C0 +000F0000E0000F0000E0001E0000E0001E0000F0001E0000F0001E0000F0003C0000F0003C0000 +F0003C0000F0003C0000F000780001E000780001E000780001E000780001E000F00003C000F000 +03C000F000038000F000078001E000070001E0000E0001E0001E0001E0001C0003C000380003C0 +00700003C000E00003C003800007C00E0000FFFFF8000024227EA128>68 +D<007FFFFFC000078003C000078000C000078000C0000F0000C0000F0000C0000F000080000F00 +0080001E000080001E000080001E008080001E008000003C010000003C010000003C030000003C +070000007FFE000000780600000078060000007806000000F004000000F004000000F004010000 +F000020001E000020001E000020001E000040001E0000C0003C000080003C000180003C0003000 +03C000700007C003F000FFFFFFE00022227EA124>I<007FFC01FF000780007800078000600007 +8000C0000F000180000F000200000F000400000F000800001E001000001E004000001E00800000 +1E010000003C020000003C040000003C1E0000003C3E000000785F000000788F0000007A0F0000 +007C07800000F807800000F007C00000F003C00000F003C00001E001E00001E001E00001E001E0 +0001E000F00003C000F00003C000F80003C000780003C000780007C000FC00FFFC07FF8028227E +A129>75 D<007FFE000007C0000007800000078000000F0000000F0000000F0000000F0000001E +0000001E0000001E0000001E0000003C0000003C0000003C0000003C0000007800000078000000 +7800000078000000F0000000F0000000F0001000F0001001E0002001E0002001E0004001E00040 +03C000C003C0008003C0018003C0078007C01F00FFFFFF001C227EA121>I<007FC00001FF0007 +C00003E00007C00005E00007C00005E00009E0000BC00009E0000BC00009E00013C00009E00023 +C00011E00027800011E00047800011E00047800011E00087800021E0010F000020F0010F000020 +F0020F000020F0040F000040F0041E000040F0081E000040F0081E000040F0101E000080F0203C +00008078203C00008078403C00008078803C000100788078000100790078000100790078000100 +7A00780002007C00F00002007C00F00002003800F00006003800F0000F003001F000FFE0203FFF +0030227EA12F>I<00786001C4E00302E00601C00E01C01C01C03C01C038038078038078038078 +0380F00700F00700F00700F00708F00E10700E10701E1030262018C6200F01C015157E941A>97 +D<003F0000E0800380C00701C00E03C01C03C03C00003C0000780000780000780000F00000F000 +00F00000F000007000407000403001803802001C1C0007E00012157E9415>99 +D<00F0000FE00000E00000E00000E00001C00001C00001C00001C0000380000380000380000380 +00070000071F0007218007C0C00F00E00F00E00E00E00E00E01C01C01C01C01C01C01C01C03803 +80380380380700380704700708700E08700E08700610E006206003C016237DA21C>104 +D<3C07E01F00461830618047201880C087401D00E087801E00E087801C00E087001C00E00E0038 +01C00E003801C00E003801C00E003801C01C007003801C007003801C007007001C007007043800 +E007083800E00E083800E00E083800E006107001C006203000C003C026157E942B>109 +D<007E0000810003008002018006038006030006000007000007F80003FE0001FF00003F000007 +80000380700380F00300F00300E002004004003018000FE00011157E9417>115 +D E /Fo 89 128 df<001F83E000706E3000C07C780180F8780380F07807007000070070000700 +7000070070000700700007007000070070000700700007007000FFFFFFC0070070000700700007 +007000070070000700700007007000070070000700700007007000070070000700700007007000 +070070000700700007007000070070000700700007007000070078007FE3FF801D2380A21C>11 +D<001FC0000070200000C010000180380003807800070078000700300007000000070000000700 +000007000000070000000700000007000000FFFFF8000700780007003800070038000700380007 +003800070038000700380007003800070038000700380007003800070038000700380007003800 +07003800070038000700380007003800070038007FE1FF80192380A21B>I<001FD80000703800 +00C078000180780003807800070038000700380007003800070038000700380007003800070038 +000700380007003800FFFFF8000700380007003800070038000700380007003800070038000700 +380007003800070038000700380007003800070038000700380007003800070038000700380007 +00380007003800070038007FF3FF80192380A21B>I<000FC07F00007031C08000E00B00400180 +1E00E003803E01E007003C01E007001C00C007001C000007001C000007001C000007001C000007 +001C000007001C000007001C0000FFFFFFFFE007001C01E007001C00E007001C00E007001C00E0 +07001C00E007001C00E007001C00E007001C00E007001C00E007001C00E007001C00E007001C00 +E007001C00E007001C00E007001C00E007001C00E007001C00E007001C00E007001C00E07FF1FF +CFFE272380A229>I<00004000008000008000010000010001F200060E001C0700380780300980 +7009C06010C0E030E0E020E0E060E0E040E0E0C0E0E080E0E180E06100C07201C03201803C0380 +1C07000E0C0009F000100000100000200000200000400000131F7E9918>28 +D<70F8F8F8F8F8F8F8707070707070707070707070202020202020000000000070F8F8F8700524 +7CA30E>33 D<7038F87CFC7EFC7E743A04020402040204020804080410081008201040200F0F7E +A218>I<003C000000006200000000C20000000181000000018100000003810000000381000000 +03810000000381000000038200000003820000000384000000038800000001C800000001D00000 +0001E003FF8001C0007C0000E000380001E000300001F000200002700040000470004000083800 +8000183C008000301C010000701E020000700E020000F007040000F007880000F003880000F001 +D00100F000E0010078007003003800B802003C031C04000E0C0E0C0003F003F00021257EA326> +38 D<70F8FCFC7404040404080810102040060F7CA20E>I<00200040008001000300060004000C +000C00180018003000300030007000600060006000E000E000E000E000E000E000E000E000E000 +E000E000E000E000E0006000600060007000300030003000180018000C000C0004000600030001 +000080004000200B327CA413>I<800040002000100018000C0004000600060003000300018001 +80018001C000C000C000C000E000E000E000E000E000E000E000E000E000E000E000E000E000E0 +00C000C000C001C0018001800180030003000600060004000C00180010002000400080000B327D +A413>I<70F8FCFC7404040404080810102040060F7C840E>44 DI<70F8 +F8F87005057C840E>I<000080000180000180000300000300000300000600000600000600000C +00000C00000C0000180000180000180000300000300000300000600000600000600000C00000C0 +0000C0000180000180000180000180000300000300000300000600000600000600000C00000C00 +000C0000180000180000180000300000300000300000600000600000600000C00000C00000C000 +0011317DA418>I<01F000071C000C06001803003803803803807001C07001C07001C07001C0F0 +01E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F0 +01E07001C07001C07001C07803C03803803803801C07000C0600071C0001F00013227EA018>I< +008003800F80F38003800380038003800380038003800380038003800380038003800380038003 +800380038003800380038003800380038003800380038007C0FFFE0F217CA018>I<03F0000C1C +001007002007804003C04003C08003E0F003E0F801E0F801E0F801E02003E00003E00003C00003 +C0000780000700000E00001C0000180000300000600000C0000180000100000200200400200800 +201800603000403FFFC07FFFC0FFFFC013217EA018>I<03F8000C1E001007002007804007C078 +07C07803C07807C03807C0000780000780000700000F00000E0000380003F000001C00000F0000 +07800007800003C00003C00003E02003E07003E0F803E0F803E0F003C04003C040078020078010 +0F000C1C0003F00013227EA018>I<000200000600000E00000E00001E00001E00002E00004E00 +004E00008E00008E00010E00020E00020E00040E00040E00080E00100E00100E00200E00200E00 +400E00800E00FFFFF8000E00000E00000E00000E00000E00000E00000E00001F0001FFF015217F +A018>I<1000801E07001FFF001FFE001FF80013E0001000001000001000001000001000001000 +0010F800130E001407001803801003800001C00001C00001E00001E00001E00001E07001E0F001 +E0F001E0E001C08001C04003C04003802007001006000C1C0003F00013227EA018>I<007E0001 +C1000300800601C00E03C01C03C0180180380000380000780000700000700000F0F800F30C00F4 +0600F40300F80380F801C0F001C0F001E0F001E0F001E0F001E0F001E07001E07001E07001E038 +01C03801C01803801C03000C0600070C0001F00013227EA018>I<4000006000007FFFE07FFFC0 +7FFFC0400080C00100800100800200800200000400000800000800001000003000002000006000 +00600000600000E00000C00000C00001C00001C00001C00001C00003C00003C00003C00003C000 +03C00003C00003C00003C00001800013237DA118>I<01F800060E000803001001802001802000 +C06000C06000C06000C07000C07801803E01003F02001FC4000FF80003F80003FC00067F00083F +80100F803007C06001C06000E0C000E0C00060C00060C00060C000606000406000C03000801803 +000E0E0003F00013227EA018>I<01F000060C000C0600180700380380700380700380F001C0F0 +01C0F001C0F001E0F001E0F001E0F001E0F001E07001E07003E03803E01805E00C05E00619E003 +E1E00001C00001C00001C0000380000380300300780700780600700C002018001030000FC00013 +227EA018>I<70F8F8F870000000000000000000000070F8F8F87005157C940E>I<70F8F8F87000 +0000000000000000000070F8F8F87808080808101010204040051F7C940E>I<70F8F8F8700000 +000000202020202020707070707070707070707070F8F8F8F8F8F8F87005247C980E>II<07E01838201C400E800FF00FF00FF00F000F000E001C00380030 +006000C000C000800080018001000100010001000100010000000000000000000000038007C007 +C007C0038010237DA217>63 D<000FE00000701C00008002000300018004000040080000200800 +00201007C01020183008203008084060040440C0078441C0038481C00382838003828380038283 +8003828380038283800382838003828380038281C0038241C0038240C007824060078420300B84 +201831881007C0F00800000008000000040000000300000E00800078007007C0000FFC001F237D +A226>I<0001800000018000000180000003C0000003C0000003C0000005E0000005E000000DF0 +000008F0000008F0000010F800001078000010780000203C0000203C0000203C0000401E000040 +1E0000401E0000800F0000800F0000FFFF000100078001000780030007C0020003C0020003C004 +0003E0040001E0040001E00C0000F00C0000F03E0001F8FF800FFF20237EA225>II<0007E0100038183000E0063001C001700380 +00F0070000F00E0000701E0000701C0000303C0000303C0000307C0000107800001078000010F8 +000000F8000000F8000000F8000000F8000000F8000000F8000000F80000007800000078000010 +7C0000103C0000103C0000101C0000201E0000200E000040070000400380008001C0010000E002 +0000381C000007E0001C247DA223>IIII<0007F008003C0C1800E0021801C001B8038000F8070000 +780F0000381E0000381E0000183C0000183C0000187C0000087800000878000008F8000000F800 +0000F8000000F8000000F8000000F8000000F8000000F8001FFF780000F8780000787C0000783C +0000783C0000781E0000781E0000780F00007807000078038000B801C000B800E00318003C0C08 +0007F00020247DA226>III<03FFF0001F +00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F +00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00700F00F80F +00F80F00F80E00F01E00401C0020380018700007C00014237EA119>IIIII<000FE00000783C0000E00E0003C00780078003C00F0001E00E0000E01E0000F03C +0000783C0000787C00007C7C00007C7800003C7800003CF800003EF800003EF800003EF800003E +F800003EF800003EF800003EF800003EF800003E7800003C7C00007C7C00007C3C0000783E0000 +F81E0000F00F0001E00F0001E0078003C003C0078000E00E0000783C00000FE0001F247DA226> +II<000FE00000783C0000E00E00 +03C00780078003C00F0001E00E0000E01E0000F03E0000F83C0000787C00007C7C00007C780000 +3C7800003CF800003EF800003EF800003EF800003EF800003EF800003EF800003EF800003EF800 +003E7800003C7C00007C7C00007C3C0000783C0000781E0380F00E0420E00F0801E0078813C003 +C8178000E80E00007C3C02000FEC0200000C0200000C0200000E0600000F0E000007FC000007FC +000007F8000003F8000001E01F2D7DA226>II<03F0200C0C601802603001E07000E0600060E00060E00060E00020E00020E00020 +F00000F000007800007F00003FF0001FFE000FFF0003FF80003FC00007E00001E00000F00000F0 +000070800070800070800070800070C00060C00060E000C0F000C0C80180C6070081FC0014247D +A21B>I<7FFFFFF87807807860078018400780084007800840078008C007800C80078004800780 +048007800480078004000780000007800000078000000780000007800000078000000780000007 +800000078000000780000007800000078000000780000007800000078000000780000007800000 +078000000780000007800000078000000FC00003FFFF001E227EA123>IIII<7FF807FF0007E001F8 +0003C000E00003E000C00001E000800000F001000000F80300000078020000007C040000003E0C +0000001E080000001F100000000FB000000007A000000007C000000003E000000001E000000001 +F000000003F80000000278000000047C0000000C3E000000081E000000101F000000300F800000 +20078000004007C00000C003E000008001E000010001F000030000F000070000F8001F8001FC00 +FFE007FFC022227FA125>II<7FFFFE7E003E +78003C7000786000784000F0C000F0C001E08003C08003C0800780000780000F00001F00001E00 +003C00003C0000780000780000F00001F00001E00103C00103C0010780010780030F00031E0002 +1E00023C00063C000E78001EF8007EFFFFFE18227DA11E>II<0804100820102010402040208040804080408040B85CFC7EFC7E7C3E381C0F0F7AA218>I< +FEFE06060606060606060606060606060606060606060606060606060606060606060606060606 +0606060606060606FEFE07317FA40E>I<0FE0001838003C0C003C0E0018070000070000070000 +070000FF0007C7001E07003C0700780700700700F00708F00708F00708F00F087817083C23900F +C1E015157E9418>97 D<0E0000FE00001E00000E00000E00000E00000E00000E00000E00000E00 +000E00000E00000E00000E00000E1F000E61C00E80600F00300E00380E003C0E001C0E001E0E00 +1E0E001E0E001E0E001E0E001E0E001E0E001C0E003C0E00380F00700C80600C41C0083F001723 +7FA21B>I<01FE000703000C07801C0780380300780000700000F00000F00000F00000F00000F0 +0000F00000F000007000007800403800401C00800C010007060001F80012157E9416>I<0000E0 +000FE00001E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0 +01F8E00704E00C02E01C01E03800E07800E07000E0F000E0F000E0F000E0F000E0F000E0F000E0 +F000E07000E07800E03800E01801E00C02E0070CF001F0FE17237EA21B>I<01FC000707000C03 +801C01C03801C07801E07000E0F000E0FFFFE0F00000F00000F00000F00000F000007000007800 +203800201C00400E008007030000FC0013157F9416>I<003C00C6018F038F030F070007000700 +070007000700070007000700FFF807000700070007000700070007000700070007000700070007 +000700070007000700070007807FF8102380A20F>I<00007001F198071E180E0E181C07001C07 +003C07803C07803C07803C07801C07001C07000E0E000F1C0019F0001000001000001800001800 +001FFE000FFFC00FFFE03800F0600030400018C00018C00018C000186000306000303800E00E03 +8003FE0015217F9518>I<0E0000FE00001E00000E00000E00000E00000E00000E00000E00000E +00000E00000E00000E00000E00000E1F800E60C00E80E00F00700F00700E00700E00700E00700E +00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E0070FFE7FF18 +237FA21B>I<1C001E003E001E001C00000000000000000000000000000000000E00FE001E000E +000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00FFC00A227FA1 +0E>I<01C003E003E003E001C00000000000000000000000000000000001E00FE001E000E000E0 +00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000 +E000E060E0F0C0F18061803E000B2C82A10F>I<0E0000FE00001E00000E00000E00000E00000E +00000E00000E00000E00000E00000E00000E00000E00000E03FC0E01F00E01C00E01800E02000E +04000E08000E10000E38000EF8000F1C000E1E000E0E000E07000E07800E03C00E01C00E01E00E +00F00E00F8FFE3FE17237FA21A>I<0E00FE001E000E000E000E000E000E000E000E000E000E00 +0E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E +000E000E00FFE00B237FA20E>I<0E1FC07F00FE60E183801E807201C00F003C00E00F003C00E0 +0E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800 +E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E0FFE3FF +8FFE27157F942A>I<0E1F80FE60C01E80E00F00700F00700E00700E00700E00700E00700E0070 +0E00700E00700E00700E00700E00700E00700E00700E00700E00700E0070FFE7FF18157F941B> +I<01FC000707000C01801800C03800E0700070700070F00078F00078F00078F00078F00078F000 +78F000787000707800F03800E01C01C00E038007070001FC0015157F9418>I<0E1F00FE61C00E +80600F00700E00380E003C0E001C0E001E0E001E0E001E0E001E0E001E0E001E0E001E0E003C0E +003C0E00380F00700E80E00E41C00E3F000E00000E00000E00000E00000E00000E00000E00000E +00000E0000FFE000171F7F941B>I<01F8200704600E02601C01603801E07800E07800E0F000E0 +F000E0F000E0F000E0F000E0F000E0F000E07000E07800E03801E01C01E00C02E0070CE001F0E0 +0000E00000E00000E00000E00000E00000E00000E00000E00000E0000FFE171F7E941A>I<0E3C +FE461E8F0F0F0F060F000E000E000E000E000E000E000E000E000E000E000E000E000E000F00FF +F010157F9413>I<0F8830786018C018C008C008E008F0007F803FE00FF001F8003C801C800C80 +0CC00CC008E018D0308FC00E157E9413>I<02000200020002000600060006000E001E003E00FF +F80E000E000E000E000E000E000E000E000E000E000E000E040E040E040E040E040E0407080308 +01F00E1F7F9E13>I<0E0070FE07F01E00F00E00700E00700E00700E00700E00700E00700E0070 +0E00700E00700E00700E00700E00700E00700E00F00E00F006017003827800FC7F18157F941B> +IIIII<3FFFC0380380300780200700600E00401C0040 +3C0040380000700000E00001E00001C0000380400700400F00400E00C01C008038008078018070 +0780FFFF8012157F9416>III<7070F8F8F8 +F8F8F870700D057BA118>127 D E /Fp 14 118 df +44 D46 D<0000FF00000007FFC000001FFFE000007FFFF00000FF01 +F80001FC00FC0003F0007E0007E0003E000FC01FBE001F807FFF001F00FFFF003E01FFFF003E03 +F0FF007C07E07F807C07C03F807C0F801F80FC0F801F80F81F000F80F81F000F80F81F000F80F8 +1F000F80F81F000F80F81F000F80F81F000F80F81F000F80FC0F801F007C0F801F007C07C03E00 +7C07E07E003E03F0FC003E01FFF8001F00FFF0001F807FE0000FC01F800007E000000003F00000 +0001FC000F8000FF007F00007FFFFE00001FFFF8000007FFE0000000FF0000212A7DA928>64 +D<01FE000FFF803FFFC03FFFE03C03F03001F00001F80000F80000F80000F80000F80000F8007F +F807FFF81FFFF83FE0F87F00F8FC00F8F800F8F800F8F800F8FC01F87E07F87FFFF83FFFF81FFC +F80FE0F8151B7E9A1D>97 DI<007FC001FFF007FFFC0FFF +FC1FC07C1F00083E00007C00007C00007C0000F80000F80000F80000F80000F80000F80000F800 +007C00007C00007E00003E00001F000C1FC07C0FFFFC07FFFC01FFF0007F80161B7E9A1B>I<00 +003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00 +003E00003E00FC3E03FF3E07FFFE0FFFFE1FC1FE3F007E3E003E7C003E7C003EFC003EF8003EF8 +003EF8003EF8003EF8003EF8003EF8003EFC003E7C003E7C003E3E007E3F00FE1FC1FE0FFFFE07 +FFBE03FF3E00FC3E172A7EA91F>I<007E0003FF8007FFC00FFFE01F83F03F00F03E00787C0078 +7C003878003CFFFFFCFFFFFCFFFFFCFFFFFCF80000F80000F800007800007C00007C00003E0000 +3F000C1FC07C0FFFFC07FFFC01FFF0007F80161B7E9A1B>I<001FC0007FC000FFC001FFC003F0 +0003E00007C00007C00007C00007C00007C00007C00007C00007C00007C000FFFE00FFFE00FFFE +0007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C0 +0007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C000122A7FA912 +>I104 D112 D114 D<03FC001FFF803FFFC07FFFC07C07C0F80080F80000F80000F8 +0000FC00007F80007FF8003FFE001FFF0007FF8000FFC0000FE00007E00003E00003E04003E0E0 +07E0FC0FC0FFFFC07FFF801FFE0003F800131B7E9A17>I117 +D E /Fq 3 104 df<00380000380000380000380000380000380060380CF8103E7C107C1F11F0 +0793C001D700007C00007C0001D7000793C01F11F07C107CF8103E60380C003800003800003800 +003800003800003800171A7D9B1E>3 D<0000F80003C0000F00001E00003C0000780000780000 +780000780000780000780000780000780000780000780000780000780000780000780000780000 +780000780000780000780000780000F00000F00001E000078000FE0000FE000007800001E00000 +F00000F00000780000780000780000780000780000780000780000780000780000780000780000 +7800007800007800007800007800007800007800007800007800003C00001E00000F000003C000 +00F8153C7CAC1E>102 DI E /Fr 38 122 df<78FCFCFEFE7A02020202040404081010204007127B8511>44 +DI<007F000001C1C0000780F0000F0078000E0038001C001C003C +001E003C001E003C001E0078000F0078000F0078000F0078000F00F8000F80F8000F80F8000F80 +F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F +80F8000F80F8000F8078000F0078000F0078000F0078000F003C001E003C001E003C001E001C00 +1C000E0038000F0078000780F00001C1C000007F000019297EA71E>48 D<00100000700001F000 +0FF000FEF000F0F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F000 +00F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F000 +00F00000F00000F00000F00000F00000F00000F00000F00001F8007FFFE07FFFE013287BA71E> +I<007F000003FFC0000701F0000C00F80010007C001C007C003E007E003E003E003E003E001E00 +3E000C007E0000007C0000007C00000078000000F0000000E0000001C0000007000000FF000000 +01E0000000F0000000780000003C0000003E0000001F0000001F0000001F8000001F8030001F80 +78001F80FC001F80FC001F80FC001F00F8001F0040003F0040003E0030007C001800F8000F01F0 +0003FFC000007F000019297EA71E>51 D<00006000000060000000E0000001E0000001E0000003 +E0000003E0000005E0000009E0000009E0000011E0000021E0000021E0000041E0000081E00000 +81E0000101E0000201E0000201E0000401E0000801E0000801E0001001E0003001E0002001E000 +4001E000C001E000FFFFFF80FFFFFF800001E0000001E0000001E0000001E0000001E0000001E0 +000001E0000001E0000003F000007FFF80007FFF8019287EA71E>I<20000000380000003FFFFF +803FFFFF803FFFFF007FFFFF006000020040000400400004004000080080001000800020000000 +20000000400000008000000080000001000000030000000200000006000000060000000C000000 +0C0000001C0000001C0000001C0000003800000038000000380000007800000078000000780000 +0078000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F80000007000 +00192A7DA81E>55 D<007F000001FFC0000381F000060078000C003C001C001C0018000E003800 +0E0038000E0038000E003C000E003C000E003E001C001F8018001FC038000FF0600007F8C00003 +FF800001FF0000007FC00000FFE000030FF8000603FC001C01FE0038007E0030003F0070000F00 +70000780E0000780E0000380E0000380E0000380E0000380F0000300700007007800060038000C +001E0038000F80F00003FFE000007F000019297EA71E>I<007F000001FFC00007C1E0000F0070 +001E0038001C003C003C001C0078001E0078001E00F8000F00F8000F00F8000F00F8000F00F800 +0F80F8000F80F8000F80F8000F8078000F8078001F803C001F803C001F801C002F800E004F8007 +00CF8003810F80007E0F8000000F0000000F0000000F0000001E0000001E0000001E0000003C00 +1C003C003E0078003E0070003C00E0001801C0001C0780000FFE000003F8000019297EA71E>I< +00001800000000180000000018000000003C000000003C000000003C000000007E000000007E00 +000000FF000000009F000000009F000000011F800000010F800000010F8000000207C000000207 +C000000207C000000403E000000403E000000403E000000801F000000801F000001801F8000010 +00F800001000F800002000FC000020007C00003FFFFC00007FFFFE000040003E000040003E0000 +80001F000080001F000080001F000100000F800100000F800100000F8002000007C007000007C0 +1F80000FE0FFF000FFFFFFF000FFFF282A7EA92D>65 D<0000FF00100007FFE030001FC0783000 +3E000C7000F80006F001F00003F003E00001F007C00000F00F800000700F800000701F00000030 +3F000000303E000000303E000000107E000000107E000000107C00000000FC00000000FC000000 +00FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC000000007C0000 +00007E000000007E000000103E000000103E000000103F000000101F000000200F800000200F80 +00006007C000004003E000008001F000018000F8000300003E000E00001FC038000007FFE00000 +00FF8000242B7DA92B>67 DI73 D76 D78 +D<0001FF0000000F01E000003C0078000078003C0000E0000E0001E0000F0003C0000780078000 +03C00F800003E01F000001F01F000001F03E000000F83E000000F87E000000FC7E000000FC7C00 +00007C7C0000007CFC0000007EFC0000007EFC0000007EFC0000007EFC0000007EFC0000007EFC +0000007EFC0000007EFC0000007E7C0000007C7E000000FC7E000000FC7E000000FC3E000000F8 +3F000001F81F000001F01F000001F00F800003E007800003C007C00007C003E0000F8000F0001E +000078003C00003C007800000F01E0000001FF0000272B7DA92E>II<00FE010003FF83000F81E3001E0037003C001F0038000F007800070070000700F0 +000300F0000300F0000300F0000100F8000100F8000100FC0000007C0000007F0000003FE00000 +1FFF00000FFFE00007FFF80003FFFC00007FFE000007FF0000007F0000001F8000000F80000007 +C0000007C0800003C0800003C0800003C0800003C0C00003C0C0000380C0000380E0000780F000 +0700F8000E00EE001C00C3C07800C1FFF000803FC0001A2B7DA921>83 D<7FFFFFFFF87FFFFFFF +F87C007C00F870007C003860007C001840007C000840007C0008C0007C000CC0007C000C80007C +000480007C000480007C000480007C000480007C000400007C000000007C000000007C00000000 +7C000000007C000000007C000000007C000000007C000000007C000000007C000000007C000000 +007C000000007C000000007C000000007C000000007C000000007C000000007C000000007C0000 +00007C000000007C000000007C000000007C000000007C00000000FE000000FFFFFE0000FFFFFE +0026297EA82B>II87 D<01FC00000E0780001001C0003C00E000 +3E00F0003E0078001C00780008007800000078000000780000007800007FF80003E078000F8078 +001F0078003E0078007C00780078007820F8007820F8007820F8007820F800F8207C00F8203C01 +3C401F063FC007F80F001B1A7E991E>97 D<07800000FF800000FF8000000F8000000780000007 +800000078000000780000007800000078000000780000007800000078000000780000007800000 +078000000783F000078C1C0007B0070007A0038007C003C0078001E0078001E0078000F0078000 +F0078000F8078000F8078000F8078000F8078000F8078000F8078000F8078000F0078000F00780 +01F0078001E0078001C007C003C00740078007200E0006181C000407E0001D2A7FA921>I<007F +8001C0700780080F003C1E007C3C007C3C00387C0010780000F80000F80000F80000F80000F800 +00F80000F80000F800007800007C00003C00043C00041E00080F001007802001C0C0007F00161A +7E991B>I<00000F000001FF000001FF0000001F0000000F0000000F0000000F0000000F000000 +0F0000000F0000000F0000000F0000000F0000000F0000000F0000000F00003F0F0001C0CF0003 +802F000F001F001E001F001C000F003C000F007C000F0078000F0078000F00F8000F00F8000F00 +F8000F00F8000F00F8000F00F8000F00F8000F0078000F0078000F003C000F003C000F001E001F +000E002F0007004F8001C18FF8007E0FF81D2A7EA921>I<007E0003C3800700E00E00F01C0070 +3C00783C003878003C78003CF8003CF8003CFFFFFCF80000F80000F80000F80000F80000780000 +7C00003C00043C00041E00080E001007002001C0C0007F00161A7E991B>I<001F000070C000E1 +E001C3E003C3E00381C00780800780000780000780000780000780000780000780000780000780 +00FFFE00FFFE000780000780000780000780000780000780000780000780000780000780000780 +0007800007800007800007800007800007800007800007800007800007800007C000FFFE00FFFE +00132A7FA912>I<07000F801F801F800F80070000000000000000000000000000000000000007 +807F807F800F800780078007800780078007800780078007800780078007800780078007800780 +0780078007800780FFF8FFF80D297FA811>105 D<0781F800FC00FF860E030700FF98070C0380 +0FA0079003C007A003D001E007C003E001E007C003E001E0078003C001E0078003C001E0078003 +C001E0078003C001E0078003C001E0078003C001E0078003C001E0078003C001E0078003C001E0 +078003C001E0078003C001E0078003C001E0078003C001E0078003C001E0078003C001E0078003 +C001E0078003C001E0FFFC7FFE3FFFFFFC7FFE3FFF301A7F9933>109 D<0783F800FF8C1C00FF +900E000FA0070007A0078007C0078007C007800780078007800780078007800780078007800780 +078007800780078007800780078007800780078007800780078007800780078007800780078007 +800780078007800780FFFCFFFCFFFCFFFC1E1A7F9921>I<007F000001C1C000070070000E0038 +001C001C003C001E003C001E0078000F0078000F00F8000F80F8000F80F8000F80F8000F80F800 +0F80F8000F80F8000F80F8000F8078000F0078000F003C001E003C001E001E003C000E00380007 +00700001C1C000007F0000191A7E991E>I<0783F000FF8C1C00FFB00F0007A0078007C003C007 +8003E0078001E0078001F0078001F0078000F8078000F8078000F8078000F8078000F8078000F8 +078000F8078000F0078001F0078001F0078001E0078003C007C003C007C0078007A00E0007983C +000787E00007800000078000000780000007800000078000000780000007800000078000000780 +000007800000FFFC0000FFFC00001D267F9921>I<0787C0FF98E0FF91F00FA1F007C1F007C0E0 +07C000078000078000078000078000078000078000078000078000078000078000078000078000 +07800007800007800007800007C000FFFE00FFFE00141A7F9917>114 D<07F8401C06C03001C0 +6000C06000C0E00040E00040F00040F800007E00007FF0003FFE000FFF0003FF80003FC00007C0 +8001E08001E0C000E0C000E0C000E0E000C0F001C0F80180C4070083F800131A7E9918>I<0080 +000080000080000080000180000180000180000380000380000780000F80001FFF80FFFF800780 +000780000780000780000780000780000780000780000780000780000780000780000780000780 +4007804007804007804007804007804007804003C08001C08000E100003E0012257FA417>I<07 +800780FF80FF80FF80FF800F800F80078007800780078007800780078007800780078007800780 +078007800780078007800780078007800780078007800780078007800780078007800780078007 +8007800F8007800F800380178001C027C000E047FC003F87FC1E1A7F9921>II121 +D E /Fs 22 118 df<00000FF03F000000780CE0800001E00FC3C00003801F87C00007003F07C0 +000F003F03C0001E001E0100001E001E0000001E001E0000003C003C0000003C003C0000003C00 +3C0000003C003C0000003C003C0000003C003C00000078007800000FFFFFFFF0000FFFFFFFF000 +00780078000000780078000000780078000000F000F0000000F000F0000000F000F0000000F000 +F0000000F000F0000000F000F0000001E001E0000001E001E0000001E001E0000001E001E00000 +01E001E0000001E001E0000003C003C0000003C003C0000003C003C0000003C003C0000003C003 +C0000003C003C0000007C007C000007FF87FFE0000FFF87FFE00002A2A7FA923>11 +D<387C7EFC7C3807067B8511>46 D<00000FF00100007FFE030001FC07070007E0018E001F8000 +5E003E00003E007C00003E00F800001E01F000001E03E000000C07C000000C07C000000C0F8000 +000C1F8000000C1F0000000C3F000000083F000000007E000000007E000000007E000000007E00 +000000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC +000000207C000000207C000000207C000000403E000000403E000000801E000000801F00000100 +0F8000020007C000040003E000180001F0003000007E01E000003FFF80000007FC0000282B7AA9 +2B>67 D<01FFFFFFFF03FFFFFFFF000FC0007F000F80000F000F800007000F800007000F800003 +000F800003001F000003001F000003001F000001001F000001001F000801001F000801003E0010 +00003E001000003E001000003E003000003E00F000003FFFF000007FFFE000007C00E000007C00 +6000007C006000007C002000007C00200200F800400400F800400400F800000400F800000800F8 +00000800F800001801F000001001F000003001F000003001F000007001F00000E001F00003E003 +F0000FE0FFFFFFFFC0FFFFFFFFC028297EA829>69 D<01FFFF03FFFE03FFFF07FFFE000FC0001F +80000F80001F00000F80001F00000F80001F00000F80001F00000F80001F00001F00003E00001F +00003E00001F00003E00001F00003E00001F00003E00001F00003E00003E00007C00003E00007C +00003E00007C00003E00007C00003E00007C00003FFFFFFC00007FFFFFF800007C0000F800007C +0000F800007C0000F800007C0000F800007C0000F80000F80001F00000F80001F00000F80001F0 +0000F80001F00000F80001F00000F80001F00001F00003E00001F00003E00001F00003E00001F0 +0003E00001F00003E00001F00003E00003F00007E000FFFF81FFFF00FFFF81FFFF002F297EA82D +>72 D<01FFFF800003FFFF8000000FC00000000F800000000F800000000F800000000F80000000 +0F800000001F000000001F000000001F000000001F000000001F000000001F000000003E000000 +003E000000003E000000003E000000003E000000003E000000007C000000007C000000007C0000 +00007C000000007C000000007C00002000F800004000F800004000F800004000F800008000F800 +008000F800018001F000018001F000030001F000030001F000070001F0000E0001F0003E0003F0 +01FE00FFFFFFFC00FFFFFFFC0023297EA825>76 D<0001FC020007FF06001E038E003800DC0070 +007C00E0003C01E0001C03C0001C03C0001C0380000807800008078000080780000807C0000807 +C0000007E0000003F0000003FE000001FFE00001FFFE0000FFFF00003FFF80000FFFC00000FFE0 +00000FE0000003F0000001F0000001F0000001F0200000F0200000F0200000F0200000E0600001 +E0600001E0700001C0700003C0780007807C000700E6001E00E3C07C00C1FFF000803FC0001F2B +7DA921>83 D<003FC00001C0F0000200380007803C0007C01E000F801E0007801E0002001E0000 +001E0000001E0000001E00001FFC0001F83C0007C03C000F803C001E003C003E003C007C007820 +F8007820F8007820F8007820F800F820F80178407C0278403E0C3F8007F01E001B1A7D991E>97 +D<01E000003FE000003FE0000003C0000003C0000003C0000003C0000003C0000003C000000780 +000007800000078000000780000007800000078000000F0000000F07E0000F1838000F600E000F +800F000F0007001F0007801E0007C01E0003C01E0003C01E0003C01E0003C03C0007C03C0007C0 +3C0007C03C0007C03C0007803C000F8078000F8078000F0078001E0078001C0078003800740070 +00E200E000C103800080FE00001A2A7AA921>I<001FF000700C01E00203801E07001F0F003E1E +001E3E00083C00007C00007C0000780000F80000F80000F80000F80000F80000F80000F8000078 +00087800083C00101C00200E004007038001FC00181A7C991B>I<0000007800000FF800000FF8 +000000F0000000F0000000F0000000F0000000F0000000F0000001E0000001E0000001E0000001 +E0000001E0000001E0000003C0000FC3C0007833C001E00BC003800BC0070007C00F0007801E00 +07803E0007803C0007807C0007807C00078078000F00F8000F00F8000F00F8000F00F8000F00F8 +000F00F8001E00F8001E0078001E0078001E0038003E001C005E000E01BE0007063FE001F83FE0 +1D2A7CA921>I<001F8000F0E001C03003803807003C0E001C1E001C3E001E3C001E7C001E7C00 +1EFFFFFCF80000F80000F80000F80000F80000F80000F800007800087800083800101C00200E00 +C007030001FC00171A7C991B>I<0000003C0007E0C2003C390E00701E0E00E01E0401E01E0003 +E01F0003C01F0007C01F0007C01F0007C01F0007C01E0007C03E0007C03C0003C0780001C07000 +02E1E000063F000004000000040000000C0000000C0000000E00000007FFF00003FFFC0003FFFE +000E001F0018000780380003807000038070000380E0000380E0000380E0000380E00007007000 +0E0030001C001C0038000F01E00001FF00001F287F9A1E>103 D<000F000001FF000001FF0000 +001E0000001E0000001E0000001E0000001E0000001E0000003C0000003C0000003C0000003C00 +00003C0000003C00000078000000783F800078C1C0007900E0007A00F0007C00F000F800F000F8 +00F000F000F000F000F000F000F000F000F001E001E001E001E001E001E001E001E001E001E001 +E001E003C003C003C003C003C003C003C003C003C003C003C003C007C007C07FFC7FFCFFFCFFFC +1E2A7FA921>I<001C003E003E007E003E001C0000000000000000000000000000000000000078 +07F807F800F800F800F000F000F000F000F000F001E001E001E001E001E001E003C003C003C003 +C003C003C007C07FF8FFF80F297FA811>I<00783F800FF8C1C00FF900E000FA00F000FC00F000 +F800F000F800F000F000F000F000F000F000F000F000F001E001E001E001E001E001E001E001E0 +01E001E001E001E003C003C003C003C003C003C003C003C003C003C003C003C007C007C07FFC7F +FCFFFCFFFC1E1A7F9921>110 D<001FC0000070700001C01C0003800E0007000E000E000F001E +0007803C0007803C0007807C0007807C00078078000F80F8000F80F8000F80F8000F80F8000F80 +F8001F00F8001F00F8001E0078003C0078003C00380078001C00F0000E01C0000707800001FC00 +00191A7C991E>I<001E0FC00003FE30700003FEC03C00003F001E00001E001E00003E000F0000 +3C000F80003C000F80003C000F80003C000F80003C000F800078000F800078000F800078000F80 +0078000F800078000F000078001F0000F0001F0000F0003E0000F0003C0000F000780000F000F0 +0000F800E00001E403C00001E207000001E1FC000001E000000001E000000001E000000003C000 +000003C000000003C000000003C000000003C000000003C000000007C00000007FFC000000FFFC +0000002126819921>I<00787C0FF98E0FFA1F00FA1F00FC1E00F81E00F80000F80000F00000F0 +0000F00001E00001E00001E00001E00001E00001E00003C00003C00003C00003C00003C00003C0 +0007C0007FFE00FFFE00181A7F9917>114 D<003F8401C06C03001C06000C0E000C0C00081C00 +081E00081F00001FC0000FFE0007FF8003FFC000FFE0000FF00001F02000F06000706000706000 +706000707000607000C0E80180C6070081FC00161A7E9918>I<00200000200000200000600000 +400000C00000C00001C00001C00003C0000780001FFF80FFFF800780000780000780000F00000F +00000F00000F00000F00000F00001E00001E00001E00001E00001E01001E01003C02003C02003C +02003C02003C04001C04001C08000E100003E00011257BA417>I<07800780FF80FF80FF80FF80 +0F800F800F800F800F000F000F000F000F000F000F000F000F000F000F000F001E001E001E001E +001E001E001E001E001E001E001E001E003C003C003C003C003C003C003C007C003C007C003C00 +BC001C017C000E067FC003F87FC01A1A7B9921>I E /Ft 22 122 df<0000007C000000000000 +7C000000000000FE000000000000FE000000000000FE000000000001FF000000000001FF000000 +000003FF800000000003FF800000000007FFC00000000007FFC00000000007FFC0000000000FFF +E0000000000F7FE0000000001F7FF0000000001E3FF0000000001E3FF0000000003E3FF8000000 +003C1FF8000000007C1FFC00000000780FFC00000000780FFC00000000F80FFE00000000F007FE +00000001F007FF00000001E003FF00000001E003FF00000003E003FF80000003C001FF80000007 +C001FFC00000078000FFC00000078000FFC000000FFFFFFFE000000FFFFFFFE000001FFFFFFFF0 +00001E00003FF000001E00003FF000003C00003FF800003C00001FF800007C00001FFC00007800 +000FFC00007800000FFC0000F0000007FE0000F0000007FE0001F0000007FF0003F8000003FF00 +FFFFC001FFFFFEFFFFC001FFFFFEFFFFC001FFFFFE37317DB03E>65 D68 D78 +D80 D<001FF0018000FFFF03 +8003FFFFC78007F00FFF800F8001FF801F00007F803F00001F803E00000F807E00000F807E0000 +0780FE00000780FE00000780FE00000380FF00000380FF00000380FF80000000FFE00000007FFC +0000007FFFE000007FFFFE00003FFFFFC0001FFFFFF0001FFFFFF8000FFFFFFC0003FFFFFE0001 +FFFFFF00007FFFFF80001FFFFF800000FFFFC0000007FFC0000000FFE00000003FE00000003FE0 +0000001FE06000001FE0E000000FE0E000000FE0E000000FE0E000000FC0F000000FC0F000000F +C0F800001F80FC00001F80FF00003F00FFC0007E00FFFC01FC00F1FFFFF800E03FFFE000C007FF +000023317BB02E>83 D87 +D<007FF8000003FFFF000007FFFFC0000FE01FE0001FF007F0001FF003F8001FF003FC001FF001 +FE000FE001FE0007C001FE00010001FE00000001FE00000001FE000001FFFE00003FFFFE0001FF +F1FE0007FE01FE000FF001FE001FC001FE003F8001FE007F8001FE00FF0001FE00FF0001FE00FF +0001FE00FF0001FE00FF0003FE007F8003FE007FC00EFE003FF03CFF000FFFF87FF807FFF03FF8 +00FF800FF825207E9F28>97 D<0007FF00007FFFE000FFFFF003FC03F807F007FC0FE007FC1FE0 +07FC3FC007FC3FC003F87FC001F07F8000407F800000FF800000FF800000FF800000FF800000FF +800000FF800000FF800000FF8000007F8000007FC000007FC000003FC0000E3FE0000E1FE0001C +0FF0001C07F8007803FF01F000FFFFE0007FFF800007FC001F207D9F25>99 +D<00000007E0000003FFE0000003FFE0000003FFE00000003FE00000001FE00000001FE0000000 +1FE00000001FE00000001FE00000001FE00000001FE00000001FE00000001FE00000001FE00000 +001FE00000001FE00000001FE0000FF81FE0007FFF1FE001FFFFDFE003FE03FFE007F800FFE00F +E0003FE01FE0001FE03FC0001FE03FC0001FE07F80001FE07F80001FE07F80001FE0FF80001FE0 +FF80001FE0FF80001FE0FF80001FE0FF80001FE0FF80001FE0FF80001FE0FF80001FE07F80001F +E07F80001FE07F80001FE03FC0001FE03FC0001FE01FC0003FE00FE0007FE007F001FFE003FC07 +DFF001FFFF9FFF007FFE1FFF000FF01FFF28327DB12E>I<0007FC0000003FFF800000FFFFE000 +03FC07F00007F801F8000FE000FC001FE0007E003FC0007E003FC0003F007FC0003F007F80003F +007F80003F80FF80003F80FF80003F80FFFFFFFF80FFFFFFFF80FFFFFFFF80FF80000000FF8000 +0000FF800000007F800000007F800000003FC00000003FC00003801FC00003801FE00007800FF0 +000F0007F8001E0003FE00FC0000FFFFF800003FFFE0000003FF000021207E9F26>I<001FF007 +E000FFFE3FF001FFFF7FF807F83FF1F80FE00FE1F80FE00FE0F01FC007F0601FC007F0003FC007 +F8003FC007F8003FC007F8003FC007F8003FC007F8001FC007F0001FC007F0000FE00FE0000FE0 +0FE00007F83FC00007FFFF000006FFFE00000E1FF000000E000000001E000000001E000000001F +000000001F800000001FFFFFC0000FFFFFF8000FFFFFFE0007FFFFFF0003FFFFFF8007FFFFFFC0 +1FFFFFFFE03F00007FE07E00000FF0FC000007F0FC000003F0FC000003F0FC000003F0FC000003 +F07E000007E03F00000FC01FC0003F800FF801FF0007FFFFFE0000FFFFF000001FFF8000252F7E +9F29>103 D<01F800000000FFF800000000FFF800000000FFF8000000000FF80000000007F800 +00000007F80000000007F80000000007F80000000007F80000000007F80000000007F800000000 +07F80000000007F80000000007F80000000007F80000000007F80000000007F80000000007F807 +F8000007F83FFF000007F87FFF800007F8F03FC00007F9C01FE00007FB000FE00007FE000FF000 +07FE000FF00007FC000FF00007FC000FF00007F8000FF00007F8000FF00007F8000FF00007F800 +0FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF000 +07F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F800 +0FF00007F8000FF00007F8000FF000FFFFC1FFFF80FFFFC1FFFF80FFFFC1FFFF8029327DB12E> +I<03C0000FF0000FF0001FF8001FF8001FFC001FF8001FF8000FF0000FF00003C0000000000000 +0000000000000000000000000000000000000001F800FFF800FFF800FFF8000FF80007F80007F8 +0007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F8 +0007F80007F80007F80007F80007F80007F80007F80007F80007F800FFFF80FFFF80FFFF801133 +7DB217>I<01F8000000FFF8000000FFF8000000FFF80000000FF800000007F800000007F80000 +0007F800000007F800000007F800000007F800000007F800000007F800000007F800000007F800 +000007F800000007F800000007F800000007F8007FFC07F8007FFC07F8007FFC07F8001FC007F8 +001F0007F8003E0007F800780007F801F00007F803E00007F807800007F81F000007F83E000007 +F87C000007F9FE000007FBFF000007FFFF800007FF7FC00007FE3FE00007F81FE00007F01FF000 +07F00FF80007F007FC0007F003FE0007F001FF0007F000FF0007F000FF8007F0007FC007F0003F +E007F0003FF0FFFF80FFFFFFFF80FFFFFFFF80FFFF28327EB12C>107 D<01F800FFF800FFF800 +FFF8000FF80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F800 +07F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F800 +07F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F800 +07F80007F80007F80007F80007F800FFFFC0FFFFC0FFFFC012327DB117>I<03F007F8000FF000 +FFF03FFF007FFE00FFF07FFF80FFFF00FFF0F03FC1E07F800FF1C01FE3803FC007F3000FE6001F +C007F6000FFC001FE007FE000FFC001FE007FC000FF8001FE007FC000FF8001FE007F8000FF000 +1FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0 +001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000F +F0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE007F800 +0FF0001FE007F8000FF0001FE007F8000FF0001FE007F8000FF0001FE0FFFFC1FFFF83FFFFFFFF +C1FFFF83FFFFFFFFC1FFFF83FFFF40207D9F45>I<03F007F80000FFF03FFF0000FFF07FFF8000 +FFF0F03FC0000FF1C01FE00007F3000FE00007F6000FF00007FE000FF00007FC000FF00007FC00 +0FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF000 +07F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F800 +0FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF000 +FFFFC1FFFF80FFFFC1FFFF80FFFFC1FFFF8029207D9F2E>I<0007FE0000003FFFC00000FFFFF0 +0003FC03FC0007F000FE000FE0007F001FC0003F803FC0003FC03FC0003FC07F80001FE07F8000 +1FE07F80001FE0FF80001FF0FF80001FF0FF80001FF0FF80001FF0FF80001FF0FF80001FF0FF80 +001FF0FF80001FF07F80001FE07F80001FE07F80001FE03FC0003FC03FC0003FC01FE0007F800F +E0007F0007F801FE0003FE07FC0001FFFFF800003FFFC0000007FE000024207E9F29>I<03F03F +00FFF07FC0FFF1FFE0FFF3C7F00FF38FF807F70FF807F60FF807FE0FF807FC07F007FC03E007FC +008007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007 +F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F80000FFFFE000 +FFFFE000FFFFE0001D207E9F22>114 D<00FF870007FFEF001FFFFF003F007F003C001F007800 +0F00F8000700F8000700F8000700FC000700FF000000FFF800007FFFC0003FFFF0003FFFFC000F +FFFE0007FFFF0001FFFF80001FFF800000FFC000001FC060000FC0E00007C0E00007C0F00007C0 +F8000780F8000F80FE000F00FF803E00FFFFFC00F3FFF800C07FC0001A207D9F21>I<00380000 +380000380000380000380000780000780000780000F80000F80001F80003F80007F8001FF800FF +FFFEFFFFFEFFFFFE07F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007 +F80007F80007F80007F80007F80007F80007F80707F80707F80707F80707F80707F80707F80703 +F80E03FC0E01FE1C00FFF8007FF0000FE0182E7EAD20>I121 D E +end +%%EndProlog +%%BeginSetup +TeXDict begin + +%%EndSetup +%%Page: 1 1 +0 bop 232 75 a Ft(Addressing)26 b(W)-7 b(eaknesses)26 b(in)h(the)g(Domain)h +(Name)751 212 y(System)e(Proto)r(col)457 416 y Fs(Christoph)21 +b(L.)f(Sc)n(h)n(uba)g(and)h(Eugene)e(H.)g(Spa\013ord)788 580 +y Fr(CO)n(AST)i(Lab)r(oratory)601 692 y(Departmen)n(t)e(of)h(Computer)g +(Sciences)810 804 y(Purdue)h(Univ)n(ersit)n(y)647 916 y(W)-5 +b(est)20 b(Lafa)n(y)n(ette,)g(IN)f(47907-1398)685 1028 y Fq(f)p +Fp(schuba,spaf)p Fq(g)p Fp(@cs.pu)o(rdue.e)o(du)p eop +%%Page: 2 2 +1 bop 1922 -100 a Fo(ii)912 344 y(ABSTRA)o(CT)149 555 y(Sc)o(h)o(uba,)19 +b(Christoph.)28 b(M.S.,)18 b(Purdue)g(Univ)o(ersit)o(y)l(,)e(August)j(1993.) +29 b(Addressing)18 b(W)l(eaknesses)149 615 y(in)e(the)g(Domain)g(Name)e +(System)h(Proto)q(col.)22 b(Ma)s(jor)16 b(Professor:)23 b(Eugene)16 +b(H.)f(Spa\013ord.)223 766 y(The)i(Domain)g(Name)e(System)h(\(DNS\))h(is)g(a) +h(widely)e(implem)o(en)o(t)o(ed)f(distributed)h(database)149 +856 y(system)e(used)h(throughout)i(the)e(In)o(ternet,)e(pro)o(viding)i(name)f +(resolution)h(b)q(et)o(w)o(een)f(host)h(names)149 946 y(and)i(In)o(ternet)e +(Proto)q(col)i(addresses.)223 1037 y(This)e(thesis)g(describ)q(es)f(problems) +g(with)h(the)g(DNS)g(and)g(one)h(of)f(its)g(implem)o(en)n(tations)e(that)149 +1127 y(allo)o(w)21 b(the)g(abuse)g(of)g(name)f(based)i(authen)o(tication.)34 +b(This)22 b(leads)e(to)i(situations)f(where)g(the)149 1217 +y(name)16 b(resolution)g(pro)q(cess)h(cannot)f(b)q(e)h(trusted,)f(and)h +(securit)o(y)d(ma)o(y)h(b)q(e)h(compromised.)223 1307 y(This)h(thesis)f +(outlines)g(the)h(curren)o(t)f(design)h(and)g(implem)o(en)o(tati)o(on)e(of)i +(the)f(DNS.)h(It)f(states)149 1398 y(the)f(main)f(problem)f(b)q(oth)j(on)g(a) +f(high)h(lev)o(el)c(and)k(as)g(applied)e(to)i(the)e(DNS)h(in)g(a)h(more)d +(concrete)149 1488 y(fashion.)24 b(W)l(e)17 b(examine)d(the)j(w)o(eaknesses)g +(in)f(the)h(DNS)g(and)g(exploit)f(a)h(metho)q(d)f(to)h(abuse)h(the)149 +1578 y(DNS)f(for)f(system)f(break{ins.)223 1669 y(W)l(e)21 +b(demonstrate)g(these)g(w)o(eaknesses)h(b)o(y)f(describing)h(the)f(necessary) +h(mo)q(di\014cations)f(in)149 1759 y(authoritativ)o(e)16 b(DNS)g(data)h(and)g +(Domain)e(Name)g(System)f(co)q(de.)21 b(W)l(e)16 b(list)g(exp)q(eriences)e +(gained)149 1849 y(during)j(exp)q(erimen)o(ts)d(with)j(sev)o(eral)e(setups)i +(of)g(name)f(serv)o(ers)f(and)j(trusting)f(hosts)g(in)f(a)i(lo)q(cal)149 +1939 y(area)f(net)o(w)o(ork.)223 2030 y(T)l(o)q(o)j(w)o(eak)f(assumptions)h +(during)f(the)h(authen)o(tication)e(pro)q(cesses)i(cause)g(man)o(y)e(securit) +o(y)149 2120 y(breac)o(hes.)28 b(W)l(e)18 b(state)h(the)f(securit)o(y)g +(considerations)g(in)h(the)f(o\016cial)g(design)g(do)q(cumen)o(ts)g(and)149 +2210 y(analyze)12 b(the)g(algorithms)g(used)g(in)g(the)g(DNS)g(proto)q(col)h +(lo)q(oking)g(for)g(w)o(eak)f(assumptions.)20 b(Using)149 2301 +y(a)g(wide)f(v)m(ariet)o(y)g(of)g(criteria,)g(w)o(e)g(discuss)h(sev)o(eral)e +(approac)o(hes)i(to)g(solv)o(e)f(the)g(main)f(problem)149 2391 +y(in)g(the)g(Domain)f(Name)f(System)g(proto)q(col.)27 b(Tw)o(o)19 +b(of)f(these)f(solutions,)i(hardening)f(the)g(name)149 2481 +y(serv)o(er)g(and)i(using)f(cryptographic)g(metho)q(ds)f(for)h(strong)h +(authen)o(tication,)f(receiv)o(e)d(more)i(at-)149 2571 y(ten)o(tion)e(than)h +(the)f(other)g(solutions.)p eop +%%Page: 2 3 +2 bop 794 1170 a Fo(DISCARD)16 b(THIS)f(P)l(A)o(GE)p eop +%%Page: 3 4 +3 bop 1893 -100 a Fo(iii)777 342 y(T)l(ABLE)16 b(OF)g(CONTENTS)1847 +516 y(P)o(age)149 687 y(ABSTRA)o(CT)45 b Fn(:)24 b(:)g(:)h(:)f(:)h(:)f(:)h(:) +f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h +(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)93 b Fo(ii)149 845 y(LIST)17 +b(OF)f(T)l(ABLES)30 b Fn(:)24 b(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f +(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f +(:)g(:)81 b Fo(vi)149 1002 y(LIST)17 b(OF)f(FIGURES)40 b Fn(:)25 +b(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g +(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)68 b Fo(vii)149 +1160 y(1.)36 b(INTR)o(ODUCTION)j Fn(:)24 b(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:) +f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f +(:)g(:)96 b Fo(1)149 1318 y(2.)36 b(THE)16 b(DOMAIN)f(NAME)g(SYSTEM)27 +b Fn(:)e(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h +(:)f(:)h(:)f(:)g(:)96 b Fo(5)223 1427 y(2.1)50 b(In)o(tro)q(duction)21 +b Fn(:)k(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h +(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)96 b +Fo(5)335 1487 y(2.1.1)56 b(The)16 b(TCP/IP)h(Proto)q(col)g(Suite)31 +b Fn(:)25 b(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f +(:)g(:)96 b Fo(6)335 1547 y(2.1.2)56 b(In)o(ternet)15 b(Services)44 +b Fn(:)24 b(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f +(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)96 b Fo(6)335 1608 y(2.1.3)56 +b(P)o(ac)o(k)o(et)15 b(Routing)34 b Fn(:)25 b(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f +(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)96 +b Fo(7)335 1668 y(2.1.4)56 b(Name)14 b(Resolution)37 b Fn(:)24 +b(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h +(:)f(:)h(:)f(:)g(:)96 b Fo(7)223 1728 y(2.2)50 b(Historical)15 +b(Dev)o(elopmen)o(t)j Fn(:)25 b(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h +(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)96 b +Fo(8)223 1788 y(2.3)50 b(Design)16 b(Goals)49 b Fn(:)24 b(:)h(:)f(:)h(:)f(:)h +(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f +(:)h(:)f(:)h(:)f(:)g(:)96 b Fo(9)335 1848 y(2.3.1)56 b(Data)17 +b(Consistency)27 b Fn(:)d(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h +(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)72 b Fo(10)335 1908 +y(2.3.2)56 b(E\016ciency)41 b Fn(:)24 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f +(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)72 +b Fo(10)335 1969 y(2.3.3)56 b(Distributed)16 b(Character)46 +b Fn(:)24 b(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h +(:)f(:)h(:)f(:)g(:)72 b Fo(11)335 2029 y(2.3.4)56 b(Generalit)o(y)24 +b Fn(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h +(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)72 b Fo(11)335 2089 +y(2.3.5)56 b(Indep)q(endence)34 b Fn(:)24 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h +(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)72 +b Fo(11)223 2149 y(2.4)50 b(DNS)16 b(En)o(tities)44 b Fn(:)24 +b(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h +(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)72 b Fo(12)335 2209 +y(2.4.1)56 b(Domain)15 b(Name)g(Space)33 b Fn(:)25 b(:)f(:)h(:)f(:)h(:)f(:)h +(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)72 +b Fo(12)335 2270 y(2.4.2)56 b(DNS)16 b(Messages)e Fn(:)24 b(:)h(:)f(:)g(:)h +(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h +(:)f(:)g(:)72 b Fo(14)335 2330 y(2.4.3)56 b(Resource)16 b(Records)26 +b Fn(:)e(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h +(:)f(:)h(:)f(:)h(:)f(:)g(:)72 b Fo(17)335 2390 y(2.4.4)56 b(Name)14 +b(Serv)o(ers)33 b Fn(:)24 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h +(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)72 b +Fo(18)335 2450 y(2.4.5)56 b(Resolv)o(ers)48 b Fn(:)24 b(:)h(:)f(:)h(:)f(:)g +(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f +(:)h(:)f(:)g(:)72 b Fo(19)223 2510 y(2.5)50 b(F)l(orw)o(ard)16 +b(and)h(In)o(v)o(erse)e(Mapping)h(T)l(ree)38 b Fn(:)25 b(:)f(:)h(:)f(:)h(:)f +(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)72 b Fo(20)223 +2571 y(2.6)50 b(Recursion)16 b(and)g(Iteration)d Fn(:)25 b(:)f(:)g(:)h(:)f(:) +h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g +(:)72 b Fo(22)223 2631 y(2.7)50 b(Filling)15 b(in)g(the)h(Blanks)42 +b Fn(:)24 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f +(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)72 b Fo(22)p eop +%%Page: 4 5 +4 bop 1899 -100 a Fo(iv)1836 64 y(P)o(age)335 178 y(2.7.1)56 +b(Role)16 b(of)g(Cac)o(hes)48 b Fn(:)25 b(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h +(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)72 +b Fo(23)335 239 y(2.7.2)56 b(Role)16 b(of)g(Authorities)32 +b Fn(:)24 b(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h +(:)f(:)h(:)f(:)h(:)f(:)g(:)72 b Fo(23)335 299 y(2.7.3)56 b(Occurrence)15 +b(of)h(Errors)35 b Fn(:)25 b(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f +(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)72 b Fo(24)223 359 y(2.8)50 +b(Example:)19 b(Name)c(Resolution)47 b Fn(:)25 b(:)f(:)h(:)f(:)h(:)f(:)h(:)f +(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)72 +b Fo(24)223 419 y(2.9)50 b(The)16 b(Domain)g(Name)e(System)h(Proto)q(col)g +Fn(:)25 b(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g +(:)72 b Fo(26)335 479 y(2.9.1)56 b(Data)17 b(Structures)22 +b Fn(:)j(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f +(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)72 b Fo(26)335 540 y(2.9.2)56 +b(Name)14 b(Serv)o(er)h(Algorithm)47 b Fn(:)25 b(:)f(:)h(:)f(:)h(:)f(:)h(:)f +(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)72 b Fo(27)335 +600 y(2.9.3)56 b(Resolv)o(er)15 b(Algorithm)24 b Fn(:)g(:)h(:)f(:)h(:)f(:)h +(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)72 +b Fo(30)223 660 y(2.10)26 b(In)o(teraction)15 b(of)i(Name)d(Serv)o(er)h(and)i +(Resolv)o(er)35 b Fn(:)24 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h +(:)f(:)g(:)72 b Fo(31)335 720 y(2.10.1)32 b(Data)17 b(Flo)o(w)23 +b Fn(:)h(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h +(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)72 b Fo(32)335 780 +y(2.10.2)32 b(Shared)16 b(Information)25 b Fn(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h +(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)72 +b Fo(33)149 889 y(3.)36 b(DESCRIPTION)16 b(AND)f(DEMONSTRA)l(TION)g(OF)h +(WEAKNESSES)j Fn(:)25 b(:)f(:)h(:)f(:)g(:)72 b Fo(35)223 998 +y(3.1)50 b(Statemen)o(t)14 b(of)j(the)f(Problem)41 b Fn(:)24 +b(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f +(:)h(:)f(:)g(:)72 b Fo(35)223 1059 y(3.2)50 b(The)16 b(Problem)f(in)h(the)g +(DNS)k Fn(:)k(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f +(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)72 b Fo(36)223 1119 y(3.3)50 +b(W)l(eaknesses)42 b Fn(:)25 b(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) +f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:) +72 b Fo(38)335 1179 y(3.3.1)56 b(Assumptions)15 b(to)i(F)l(acilitate)e +(Break{ins)d Fn(:)25 b(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:) +72 b Fo(38)335 1239 y(3.3.2)56 b(Authen)o(tication)15 b(via)h(Host)g(Names)34 +b Fn(:)25 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)72 +b Fo(39)335 1299 y(3.3.3)56 b(T)l(rusting)17 b(a)f(Not)g(T)l(rust)o(w)o(orth) +o(y)g(Source)34 b Fn(:)25 b(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f +(:)g(:)72 b Fo(40)335 1359 y(3.3.4)56 b(Believing)14 b(Additional,)h(Not)h +(Authoritativ)o(e)f(Information)49 b Fn(:)24 b(:)h(:)f(:)g(:)72 +b Fo(40)223 1420 y(3.4)50 b(Exploiting)16 b(the)g(Fla)o(ws)36 +b Fn(:)24 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f +(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)72 b Fo(41)335 1480 +y(3.4.1)56 b(Regular)16 b(Access)40 b Fn(:)25 b(:)f(:)g(:)h(:)f(:)h(:)f(:)h +(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)72 +b Fo(41)335 1540 y(3.4.2)56 b(The)16 b(\\Database)i(Mo)q(di\014cation")f +(Approac)o(h)48 b Fn(:)25 b(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)72 +b Fo(42)335 1600 y(3.4.3)56 b(The)16 b(\\Cac)o(he)g(P)o(oisoning")i(Approac)o +(h)26 b Fn(:)e(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)72 +b Fo(42)335 1660 y(3.4.4)56 b(The)16 b(\\Ask)g(Me!")21 b(Approac)o(h)40 +b Fn(:)24 b(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h +(:)f(:)g(:)72 b Fo(43)223 1721 y(3.5)50 b(Implem)o(en)n(tation)14 +b(and)j(Exp)q(erimen)o(ts)33 b Fn(:)24 b(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f +(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)72 b Fo(45)335 1781 +y(3.5.1)56 b(Domain)15 b(and)i(Zone)g(Setup)35 b Fn(:)25 b(:)f(:)h(:)f(:)h(:) +f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)72 +b Fo(45)335 1841 y(3.5.2)56 b(Name)14 b(Serv)o(er)h(and)i(Resolv)o(er)e +(Setup)47 b Fn(:)24 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g +(:)72 b Fo(45)335 1901 y(3.5.3)56 b(T)l(rusting)17 b(Hosts)48 +b Fn(:)25 b(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h +(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)72 b Fo(46)335 1961 y(3.5.4)56 +b(Authen)o(tication)15 b(in)h(Berk)o(eley)d(\\r{Commands")18 +b Fn(:)24 b(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)72 b Fo(47)335 +2022 y(3.5.5)56 b(Rev)o(erse)15 b(Lo)q(okup)i(T)l(ree)f(Manipulation)34 +b Fn(:)25 b(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)72 +b Fo(48)335 2082 y(3.5.6)56 b(Cac)o(he)16 b(Corruption)22 b +Fn(:)i(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:) +f(:)h(:)f(:)h(:)f(:)g(:)72 b Fo(48)223 2142 y(3.6)50 b(Exp)q(eriences)15 +b(Gained)21 b Fn(:)k(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f +(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)72 b Fo(50)335 +2202 y(3.6.1)56 b(Acquiring)15 b(Information)39 b Fn(:)24 b(:)h(:)f(:)h(:)f +(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)72 +b Fo(51)335 2262 y(3.6.2)56 b(Complexit)o(y)13 b(of)k(Mo)q(di\014cations)28 +b Fn(:)d(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g +(:)72 b Fo(52)335 2323 y(3.6.3)56 b(Detecting)15 b(a)i(DNS)f(based)h +(Break{in)42 b Fn(:)24 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f +(:)g(:)72 b Fo(53)149 2432 y(4.)36 b(SECURITY)15 b(ANAL)l(YSIS)g(AND)h +(SOLUTIONS)29 b Fn(:)c(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:) +f(:)g(:)72 b Fo(55)223 2540 y(4.1)50 b(Securit)o(y)14 b(Considerations)k(in)d +(the)h(RF)o(C)g(1035)29 b Fn(:)24 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h +(:)f(:)h(:)f(:)g(:)72 b Fo(55)223 2601 y(4.2)50 b(Analysis)15 +b(of)i(the)f(Name)e(Serv)o(er)i(Algorithm)21 b Fn(:)k(:)f(:)h(:)f(:)g(:)h(:)f +(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)72 b Fo(57)p eop +%%Page: 5 6 +5 bop 1913 -100 a Fo(v)1836 64 y(P)o(age)223 178 y(4.3)50 b(Analysis)15 +b(of)i(the)f(Resolv)o(er)f(Algorithm)37 b Fn(:)25 b(:)f(:)h(:)f(:)h(:)f(:)g +(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)72 b Fo(58)223 +239 y(4.4)50 b(Ev)m(aluation)17 b(Criteria)30 b Fn(:)25 b(:)f(:)h(:)f(:)g(:)h +(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h +(:)f(:)g(:)72 b Fo(60)223 299 y(4.5)50 b(The)16 b(Berk)o(eley)e(P)o(atc)o(h) +20 b Fn(:)25 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:) +h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)72 b Fo(61)223 +359 y(4.6)50 b(Examining)15 b(Berk)o(eley)e(\\r{Commands")g +Fn(:)25 b(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g +(:)72 b Fo(62)223 419 y(4.7)50 b(Restricting)15 b(Public)g(Information)h +(Access)f Fn(:)24 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h +(:)f(:)g(:)72 b Fo(64)223 479 y(4.8)50 b(Adjusting)16 b(DNS)g(Up)q(date)h(In) +o(terv)m(als)11 b Fn(:)25 b(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f +(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)72 b Fo(66)223 540 y(4.9)50 +b(Abandoning)17 b(the)f(Domain)f(Name)g(System)28 b Fn(:)d(:)f(:)h(:)f(:)g(:) +h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)72 b Fo(67)223 +600 y(4.10)26 b(Hardening)16 b(Name)e(Serv)o(ers)29 b Fn(:)24 +b(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h +(:)f(:)h(:)f(:)g(:)72 b Fo(68)335 660 y(4.10.1)32 b(Problems)15 +b(Not)h(Exploiting)g(Cac)o(he)g(P)o(oisoning)41 b Fn(:)24 b(:)h(:)f(:)h(:)f +(:)h(:)f(:)h(:)f(:)g(:)72 b Fo(68)335 720 y(4.10.2)32 b(Problems)15 +b(Exploiting)h(Cac)o(he)g(P)o(oisoning)22 b Fn(:)i(:)g(:)h(:)f(:)h(:)f(:)h(:) +f(:)h(:)f(:)h(:)f(:)g(:)72 b Fo(69)335 780 y(4.10.3)32 b(Keeping)16 +b(Additional)f(Information)24 b Fn(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:) +f(:)h(:)f(:)h(:)f(:)g(:)72 b Fo(70)335 841 y(4.10.4)32 b(Prev)o(en)o(tion)15 +b(of)h(Cac)o(he)g(P)o(oisoning)k Fn(:)k(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f +(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)72 b Fo(70)335 901 y(4.10.5)32 +b(Con)o(text)16 b(Cac)o(he)47 b Fn(:)25 b(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h +(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)72 +b Fo(71)335 961 y(4.10.6)32 b(Authorit)o(y)15 b(Cac)o(he)47 +b Fn(:)24 b(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f +(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)72 b Fo(72)335 1021 y(4.10.7)32 +b(Conditional)16 b(Cac)o(he)g(Use)29 b Fn(:)24 b(:)h(:)f(:)h(:)f(:)h(:)f(:)h +(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)72 b +Fo(72)335 1081 y(4.10.8)32 b(Discussion)26 b Fn(:)e(:)h(:)f(:)h(:)f(:)g(:)h +(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h +(:)f(:)g(:)72 b Fo(73)223 1142 y(4.11)26 b(Cryptographic)17 +b(Metho)q(ds)f(for)h(Strong)g(Authen)o(tication)i Fn(:)24 b(:)h(:)f(:)h(:)f +(:)h(:)f(:)h(:)f(:)g(:)72 b Fo(73)335 1202 y(4.11.1)32 b(Data)17 +b(In)o(tegrit)o(y)h Fn(:)24 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h +(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)72 b +Fo(74)335 1262 y(4.11.2)32 b(Originator)16 b(Authen)o(tication)35 +b Fn(:)24 b(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h +(:)f(:)g(:)72 b Fo(75)335 1322 y(4.11.3)32 b(P)o(assing)17 +b(Creden)o(tials)e(to)i(Pro)o(v)o(e)e(Authorit)o(y)23 b Fn(:)h(:)h(:)f(:)h(:) +f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)72 b Fo(77)335 1382 y(4.11.4)32 +b(Example)21 b Fn(:)k(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f +(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)72 +b Fo(78)335 1443 y(4.11.5)32 b(Discussion)26 b Fn(:)e(:)h(:)f(:)h(:)f(:)g(:)h +(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h +(:)f(:)g(:)72 b Fo(81)149 1551 y(5.)36 b(CONCLUSIONS)15 b(AND)h(OUTLOOK)30 +b Fn(:)24 b(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h +(:)f(:)h(:)f(:)g(:)72 b Fo(83)149 1709 y(BIBLIOGRAPHY)44 b +Fn(:)24 b(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f +(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)72 +b Fo(85)p eop +%%Page: 6 7 +6 bop 1894 -100 a Fo(vi)847 342 y(LIST)16 b(OF)g(T)l(ABLES)149 +516 y(T)l(able)1580 b(P)o(age)149 687 y(2.1)60 b(Subset)17 +b(of)f(QTYPEs)21 b Fn(:)k(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h +(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)72 +b Fo(19)149 796 y(2.2)60 b(Example)15 b(steps)h(in)g(name)f(resolution)h +Fn(:)24 b(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f +(:)h(:)f(:)g(:)72 b Fo(26)149 905 y(3.1)60 b(Regular)17 b(access)41 +b Fn(:)25 b(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f +(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)72 +b Fo(41)149 1014 y(3.2)60 b(The)17 b(\\Database)h(Mo)q(di\014cation")f +(approac)o(h)50 b Fn(:)24 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h +(:)f(:)h(:)f(:)g(:)72 b Fo(42)149 1123 y(3.3)60 b(The)17 b(\\Cac)o(he)f(P)o +(oisoning")h(approac)o(h)28 b Fn(:)c(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h +(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)72 b Fo(43)149 1232 +y(4.1)60 b(Example:)20 b(certi\014cate)15 b(v)m(alidation)41 +b Fn(:)25 b(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f +(:)h(:)f(:)h(:)f(:)g(:)72 b Fo(79)149 1341 y(4.2)60 b(Example:)20 +b(legend)c(of)g(abbreviations)22 b Fn(:)i(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g +(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)72 b Fo(79)p +eop +%%Page: 7 8 +7 bop 1880 -100 a Fo(vii)833 342 y(LIST)17 b(OF)f(FIGURES)149 +516 y(Figure)1560 b(P)o(age)149 687 y(2.1)60 b(Domain)16 b(purdue.edu)45 +b Fn(:)24 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g +(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)72 b Fo(12)149 +796 y(2.2)60 b(Domain)16 b(vs.)21 b(zone)32 b Fn(:)24 b(:)h(:)f(:)h(:)f(:)h +(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f +(:)h(:)f(:)h(:)f(:)g(:)72 b Fo(13)149 905 y(2.3)60 b(DNS)17 +b(message)24 b Fn(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h +(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)72 +b Fo(14)149 1014 y(2.4)60 b(The)17 b(in-addr.arpa)g(domain)45 +b Fn(:)25 b(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h +(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)72 b Fo(21)149 1123 y(2.5)60 +b(Degree)16 b(of)h(sp)q(eci\014cation)26 b Fn(:)f(:)f(:)h(:)f(:)g(:)h(:)f(:)h +(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g +(:)72 b Fo(21)149 1232 y(2.6)60 b(Example)15 b(name)g(resolution)41 +b Fn(:)25 b(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h +(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)72 b Fo(25)149 1341 y(2.7)60 +b(Name)15 b(serv)o(er)g(algorithm)j Fn(:)25 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f +(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)72 +b Fo(28)149 1450 y(2.8)60 b(Resolv)o(er)15 b(algorithm)26 b +Fn(:)f(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:) +h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)72 b Fo(30)149 +1559 y(2.9)60 b(Data)18 b(\015o)o(w)e(b)q(et)o(w)o(een)g(DNS)g(en)o(tities)e +Fn(:)25 b(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h +(:)f(:)h(:)f(:)g(:)72 b Fo(32)149 1668 y(3.1)60 b(Exp)q(erimen)o(tal)14 +b(setup)51 b Fn(:)24 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:) +h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)72 +b Fo(36)149 1777 y(3.2)60 b(Algorithm)15 b(of)h(the)g(Berk)o(eley)e(patc)o(h) +46 b Fn(:)24 b(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:) +h(:)f(:)h(:)f(:)g(:)72 b Fo(49)149 1886 y(3.3)60 b(Additional)16 +b(false)g(resource)g(record)22 b Fn(:)j(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f +(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)72 b Fo(50)149 +1995 y(3.4)60 b(Mo)q(di\014cations)17 b(in)f(name)f(serv)o(er)g(co)q(de)47 +b Fn(:)25 b(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f +(:)h(:)f(:)g(:)72 b Fo(51)149 2104 y(4.1)60 b(Application)16 +b(of)g(a)h(message)e(digest)h(algorithm)33 b Fn(:)25 b(:)f(:)h(:)f(:)g(:)h(:) +f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)72 b Fo(74)149 2213 +y(4.2)60 b(Digital)16 b(signature)h(generation)f(and)h(v)m(alidation)51 +b Fn(:)24 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)72 +b Fo(76)149 2321 y(4.3)60 b(Example:)20 b(certi\014cate)15 +b(v)m(alidation)41 b Fn(:)25 b(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:) +f(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)72 b Fo(80)p eop +%%Page: 8 9 +8 bop 1883 -100 a Fo(viii)776 342 y(A)o(CKNO)o(WLEDGMENTS)223 +516 y(W)l(e)15 b(w)o(ould)h(lik)o(e)e(to)j(thank)f(the)f(German-American)e(F) +l(ulbrigh)o(t)i(Commission)f(for)i(a)h(sc)o(hol-)149 606 y(arship)25 +b(that)f(made)f(this)h(w)o(ork)g(p)q(ossible.)45 b(Thanks)25 +b(to)f(Stev)o(en)f(Bello)o(vin)f(whose)j(v)m(aluable)149 696 +y(commen)o(ts)12 b(are)j(most)e(appreciated)i(and)g(Dan)g(T)l(rinkle)e(who)j +(sho)o(w)o(ed)e(us)h(ho)o(w)g(to)g(master)e(some)149 787 y(of)k(the)f(subtle) +g(di\016culties)e(of)j(the)f(DNS.)p eop +%%Page: 1 10 +9 bop 1925 -100 a Fo(1)815 342 y(1.)33 b(INTR)o(ODUCTION)223 +516 y(The)19 b(In)o(ternet)f(is)h(a)h(widespread)f(conglomeration)f(of)i(h)o +(undreds)f(of)h(thousands)h(of)e(in)o(ter-)149 606 y(connected)d +(heterogeneous)h(net)o(w)o(orks)f(and)h(hosts.)22 b(The)17 +b(design)f(of)h(the)f(In)o(ternet)f(is)h(based)h(on)149 696 +y(a)g(proto)q(col)g(hierarc)o(h)o(y)l(.)j(There)c(exist)f(m)o(ultiple)e +(implem)o(en)o(tations)h(of)i(these)g(proto)q(cols.)223 787 +y(Computers)k(comm)o(unicate)e(with)j(eac)o(h)g(other)g(on)h(the)f(basis)h +(of)g(di\013eren)o(t)e(t)o(yp)q(es)h(of)h(ad-)149 877 y(dresses;)e(on)e(the)g +(ph)o(ysical)g(la)o(y)o(er)f(using)h(lo)o(w{lev)o(el)f(ph)o(ysical)g +(addresses)i(lik)o(e)e(Ethernet)1820 859 y Fm(1)1857 877 y +Fo(card)149 967 y(addresses,)25 b(on)f(the)e(data)i(link)e(to)h(presen)o +(tation)g(la)o(y)o(er)e(using)i(host)h(addresses)f(suc)o(h)g(as)h(IP)149 +1057 y(addresses)347 1039 y Fm(2)368 1057 y Fo(,)15 b(and)h(on)g(the)f +(application)g(la)o(y)o(er)f(using)i(high{lev)o(el,)d(pronounceable)j(host)g +(names.)223 1148 y(One)j(of)h(the)g(managemen)o(t)e(tasks)i(in)g(the)f(In)o +(ternet)g(is)h(the)f(mapping)h(of)g(lo)o(w)o(er)f(lev)o(el)f(ad-)149 +1238 y(dresses)e(to)h(host)f(names.)k(A)c(\014rst)g(naiv)o(e)f(approac)o(h)i +(is)e(to)i(collect)d(all)i(name{to{address)g(map-)149 1328 +y(pings)g(in)g(a)g(single)f(\014le.)20 b(That)d(w)o(as)f(also)g(the)f +(\014rst)h(approac)o(h)h(tak)o(en)e(in)g(the)h(In)o(ternet.)j(The)d(\014le) +149 1419 y(\\HOSTS.TXT")f(con)o(tained)f(the)h(name{to{address)g(mapping)f +(for)h(ev)o(ery)e(host)i(connected)f(to)149 1509 y(the)i(ARP)l(ANET.)223 +1599 y(The)i(task)h(of)g(naming)f(hosts)h(and)g(net)o(w)o(ork)f(domains)g(is) +h(addressed)g(b)o(y)f(creating)g(a)h(hier-)149 1689 y(arc)o(hical)h(relation) +g(b)q(et)o(w)o(een)f(domains,)h(with)h(hosts)g(as)g(the)f(furthest)g +(descendan)o(ts)h(from)e(an)149 1780 y(arti\014cial)h(ro)q(ot)h(domain.)32 +b(By)20 b(app)q(ending)h(the)f(domain)f(lab)q(els)h(one)h(after)f(the)g +(other)g(to)h(the)149 1870 y(host)15 b(lab)q(els)f(on)g(the)g(path)g(up)g(to) +g(the)g(ro)q(ot)h(in)e(the)h(hierarc)o(hical)e(tree,)h(a)h(unique,)g(memoriz) +o(able,)149 1960 y(and)j(usually)f(pronounceable)h(iden)o(ti\014er)d(is)i +(created:)21 b(the)16 b(host)h(name.)223 2051 y(The)d(mapping,)g(or)h +(binding,)f(of)h(IP)g(addresses)g(to)g(host)g(names)f(b)q(ecame)f(a)i(ma)s +(jor)f(problem)149 2141 y(in)h(the)h(rapidly)e(gro)o(wing)i(In)o(ternet.)k +(This)15 b(thesis)g(do)q(es)i(not)e(deal)g(with)h(the)f(mapping)f(b)q(et)o(w) +o(een)149 2231 y(addresses)19 b(on)e(the)h(ph)o(ysical)e(la)o(y)o(er)g(and)i +(transp)q(ort)h(la)o(y)o(er,)d(whic)o(h)h(is)g(solv)o(ed)g(b)o(y)g(ARP)1787 +2213 y Fm(3)1824 2231 y Fo(in)g(the)149 2322 y(UNIX)278 2303 +y Fm(4)313 2322 y Fo(proto)q(col)g(suite,)e(but)h(with)h(the)f(mapping)f(b)q +(et)o(w)o(een)g(host)i(names)f(and)h(IP)f(addresses.)p 149 +2365 720 2 v 206 2396 a Fl(1)224 2411 y Fk(Ethernet)g(is)e(a)f(registered)j +(trademark)d(of)g(Xero)o(x)h(Corp)q(oration)206 2446 y Fl(2)224 +2461 y Fk(\\32-bit)f(addresses)j(assigned)e(to)g(hosts)g(that)g(w)o(an)o(t)g +(to)f(participate)h(in)g(a)f(TCP/IP)i(in)o(ternet")f([Com91)m(])206 +2495 y Fl(3)224 2511 y Fk(\\Address)h(Resolution)e(Proto)q(col)h({)f(used)i +(to)e(dynamically)e(bind)i(a)h(high)f(lev)o(el)g(IP)h(address)h(to)f(a)f(lo)o +(w)g(lev)o(el)149 2560 y(ph)o(ysical)h(hardw)o(are)g(address")h([Com91)m(]) +206 2595 y Fl(4)224 2610 y Fk(UNIX)f(is)g(a)g(trademark)f(of)g(A)m(T&T)h +(Bell)g(Lab)q(oratories)p eop +%%Page: 2 11 +10 bop 1925 -100 a Fo(2)223 75 y(This)13 b(higher)f(lev)o(el)f(binding)i +(e\013ort)h(w)o(en)o(t)e(through)i(di\013eren)o(t)e(stages)i(of)f(dev)o +(elopmen)o(t)d(up)j(to)149 165 y(the)g(curren)o(tly)e(used)i(Domain)f(Name)f +(System.)19 b(The)12 b(Domain)g(Name)f(System,)h(with)g(its)h(Berk)o(e-)149 +255 y(ley)19 b(UNIX)f(implem)o(en)o(tati)o(on)g(called)g(BIND)997 +237 y Fm(5)1016 255 y Fo(,)h(is)h(a)g(distributed)f(naming)f(resolution)i +(system)149 346 y(used)d(b)o(y)f(most)g(net)o(w)o(ork)g(services)g(a)o(v)m +(ailable)g(throughout)i(the)f(In)o(ternet.)k(It)16 b(w)o(orks)h(transpar-)149 +436 y(en)o(tly)j(for)h(the)f(user)h(who)g(sends)g(email,)e(accesses)i +(another)g(host)g(via)g(\\telnet")f(or)h(\\rlogin,")149 526 +y(or)d(transfers)g(some)e(\014les)h(via)g(\\ftp")h(from)e(another)i(site)e +(to)i(his)f(o)o(wn)h(mac)o(hine.)k(The)17 b(Domain)149 616 +y(Name)12 b(System)f(pro)o(vides)i(name)e(binding)i(in)g(b)q(oth)h +(directions:)19 b(giv)o(en)12 b(a)h(host)h(name,)e(it)g(returns)149 +707 y(the)k(appropriate)h(IP)f(addresses,)h(and)g(vice)d(v)o(ersa.)223 +797 y(Before)d(hosts)h(gran)o(t)h(net)o(w)o(ork)e(services)g(to)h(users,)h +(an)f(authen)o(tication)f(pro)q(cess)i(tak)o(es)f(place,)149 +887 y(where)19 b(the)g(users')g(access)g(righ)o(ts,)g(and)h(the)f(iden)o(tit) +o(y)e(of)i(connecting)g(hosts)h(get)f(scrutinized,)149 978 +y(according)c(to)g(pro)o(vider)e(p)q(olicies.)20 b(These)14 +b(examinations)f(are)h(usually)g(based)h(up)q(on)g(iden)o(ti\014ca-)149 +1068 y(tion)h(b)o(y)e(login)h(name,)f(passw)o(ord)i(and)g(host)g(name.)j(In)c +(some)f(cases)i(it)e(is)h(su\016cien)o(t)f(to)h(pro)o(vide)149 +1158 y(the)h(righ)o(t)g(names,)f(and)i(access)f(is)g(gran)o(ted)h(without)f +(sp)q(ecifying)g(an)o(y)g(passw)o(ord)h(at)g(all.)223 1248 +y(Some)h(Berk)o(eley)e(\\r{commands")i(o\013er)i(net)o(w)o(ork)e(services)g +(for)h(whic)o(h)g(it)g(is)f(su\016cien)o(t)g(to)149 1339 y(v)o(erify)d(user)i +(name)f(and)h(host)g(name)f(to)h(gran)o(t)g(complete)d(access.)23 +b(As)16 b(the)h(remote)e(user)i(name)149 1429 y(is)g(sp)q(eci\014ed)f(b)o(y)f +(the)i(connecting)f(site,)f(the)h(authen)o(tication)g(is)g(based)h(up)q(on)h +(the)e(name)f(of)i(the)149 1519 y(connecting)j(mac)o(hine.)30 +b(A)19 b(mac)o(hine)f(that)i(o\013ers)h(services)d(can)i(acquire)f +(information)g(ab)q(out)149 1610 y(the)g(so)q(c)o(k)o(et)g(that)h(is)f(used)g +(b)o(y)g(the)g(connecting)g(site.)29 b(A)19 b(so)q(c)o(k)o(et)f(is)h(a)h +(tuple)f(consisting)g(of)h(IP)149 1700 y(address,)g(p)q(ort,)g(and)g(proto)q +(col)g(used)f(b)o(y)g(the)f(remote)g(site.)29 b(T)l(o)19 b(v)o(erify)f(the)g +(host)i(name,)e(it)h(is)149 1790 y(the)e(task)g(of)h(the)e(Domain)g(Name)g +(System)f(to)i(map)f(the)h(IP)f(address)i(on)f(the)g(host)h(name.)k(W)l(e)149 +1880 y(examine)14 b(this)j(case)f(more)f(closely)g(later)h(in)g(this)g +(thesis.)223 1971 y(Because)c(the)h(Domain)f(Name)g(System)f(is)i +(distributed)g(among)g(man)o(y)f(thousands)i(of)g(hosts,)149 +2061 y(it)d(can)g(b)q(e)h(a)f(critical)f(mistak)o(e)f(to)i(blindly)f(trust)h +(the)g(resolv)o(ed)f(binding.)20 b(This)11 b(thesis)g(sho)o(ws)h(that)149 +2151 y(under)f(some)f(assumptions)h(it)f(is)h(no)g(ma)s(jor)f(e\013ort)h(to)h +(falsify)e(the)g(host)i(name)d(and)j(authorization)149 2242 +y(for)17 b(a)g(system.)223 2332 y(Although)j(this)f(problem)f(has)j(b)q(een)f +(kno)o(wn)f(for)i(some)d(y)o(ears)i(no)o(w,)g(not)g(man)o(y)f(publica-)149 +2422 y(tions)i(deal)e(with)h(it.)32 b([Bel90b)o(])20 b(is)g(the)f(main)g(pap) +q(er)i(w)o(e)e(can)h(men)o(tion)f(as)h(related)f(w)o(ork.)33 +b(It)149 2512 y(demonstrates)16 b(the)g(sub)o(v)o(ersion)f(of)h(system)f +(securit)o(y)g(using)h(the)g(Domain)f(Name)f(System)h(and)p +149 2556 720 2 v 206 2587 a Fl(5)224 2602 y Fk(Berk)o(eley)g(In)o(ternet)g +(Name)e(Domain)p eop +%%Page: 3 12 +11 bop 1925 -100 a Fo(3)149 75 y(discusses)19 b(p)q(ossible)g(defenses)g +(against)h(the)f(attac)o(k)f(and)i(limitations)d(on)i(their)f(applicabilit)o +(y)l(.)149 165 y(An)h(earlier)e(pap)q(er)i(b)o(y)f(Stev)o(en)f(Bello)o(vin)f +(\([Bel89)o(]\))i(has)i(already)e(men)o(tioned)e(the)i(p)q(ossibilit)o(y)149 +255 y(of)f(abuse)g(of)g(the)g(Domain)e(Name)g(System.)21 b(That)c(pap)q(er)g +(follo)o(ws)g(suggestions)g(from)f(P)o(aul)g(V.)149 346 y(Mo)q(c)o(k)m(ap)q +(etris,)g(the)g(designer)g(of)h(the)f(Domain)f(Name)g(System.)223 +436 y(The)f(main)g(b)q(o)q(dy)h(of)g(this)g(thesis)f(consists)h(of)g(three)f +(c)o(hapters)g(follo)o(w)o(ed)g(b)o(y)g(a)h(\014nal)g(c)o(hapter)149 +526 y(dra)o(wing)i(conclusions)f(and)h(giving)f(suggestions)i(for)e(future)g +(w)o(ork.)223 616 y(The)e(\014rst)h(of)g(these)g(three)f(c)o(hapters,)g +(Chapter)h(2,)g(describ)q(es)f(the)h(p)q(osition)g(and)g(role)g(of)g(the)149 +707 y(Domain)h(Name)f(System)g(in)h(its)h(frame,)e(the)h(In)o(ternet.)21 +b(It)16 b(giv)o(es)g(a)h(short)g(historical)f(sk)o(etc)o(h)f(of)149 +797 y(the)h(In)o(ternet)e(and)i(describ)q(es)f(the)g(Domain)g(Name)f(System)g +(on)i(a)f(high)h(lev)o(el.)j(In)c(that)h(section)149 887 y(w)o(e)g(go)i(in)o +(to)e(as)h(m)o(uc)o(h)d(detail)i(as)h(necessary)f(to)h(build)f(up)h(the)f +(necessary)g(bac)o(kground)h(for)g(the)149 978 y(succeeding)g(c)o(hapters.)26 +b(W)l(e)18 b(in)o(tro)q(duce)f(the)g(tec)o(hnical)f(terms)h(and)h(explain)f +(the)h(mec)o(hanism)o(s)149 1068 y(cen)o(tral)d(to)g(the)g(understanding)h +(of)g(the)f(Domain)f(Name)g(System)g(and)h(the)h(exploitation)e(of)i(its)149 +1158 y(w)o(eaknesses.)21 b(W)l(e)14 b(giv)o(e)f(an)i(example)d(of)j(a)f(name) +f(resolution)i(and)f(the)g(description)g(of)h(the)f(data)149 +1248 y(structures)j(and)f(algorithms)g(used)g(b)o(y)g(name)f(serv)o(ers)g +(and)i(resolv)o(ers.)223 1339 y(Chapter)h(3)h(states)g(precisely)e(the)h +(main)f(problem)g(w)o(e)h(are)g(addressing.)29 b(W)l(e)18 b(explain)g(the)149 +1429 y(main)d(problem)g(in)h(sev)o(eral)f(stages,)h(giving)g(more)f(details)g +(from)g(section)h(to)g(section.)21 b(First)16 b(w)o(e)149 1519 +y(describ)q(e)d(the)h(problem)e(at)i(a)g(high)g(lev)o(el.)k(Then)c(w)o(e)f +(sho)o(w)i(the)e(existence)f(of)i(the)f(problem)g(with)149 +1610 y(the)i(Domain)f(Name)f(System.)19 b(W)l(e)c(express)g(the)f +(assumptions)h(and)g(examine)e(the)i(w)o(eaknesses)149 1700 +y(in)c(the)g(Domain)f(Name)g(System)f(that)j(lead)e(to)i(the)f(p)q(ossibilit) +o(y)f(of)h(gaining)g(unauthorized)h(access)149 1790 y(to)20 +b(a)g(certain)e(t)o(yp)q(e)h(of)h(remote)e(host.)31 b(In)19 +b(Chapter)g(3)h(w)o(e)f(demonstrate)f(the)h(exploitation)g(of)149 +1880 y(the)i(securit)o(y)f(\015a)o(ws)i(b)o(y)f(giving)g(details)f(of)i(an)f +(arti\014cial)g(setup)g(that)h(leads)f(step)o(wise)f(to)i(an)149 +1971 y(unauthorized)e(login)g(on)h(another)f(host.)33 b(W)l(e)20 +b(close)f(the)h(c)o(hapter)f(with)h(exp)q(eriences)e(gained)149 +2061 y(during)f(our)g(exp)q(erimen)o(ts.)223 2151 y(Concluding)f(the)f(main)g +(b)q(o)q(dy)i(of)f(this)g(thesis,)g(Chapter)g(4)g(analyzes)g(the)g(curren)o +(t)f(securit)o(y)149 2242 y(features)20 b(in)f(the)g(Domain)g(Name)e(System)h +(and)i(presen)o(ts)f(solutions)h(to)g(the)f(giv)o(en)f(problem.)149 +2332 y(The)d(\014rst)f(part)h(con)o(tains)g(the)f(securit)o(y)f +(considerations)h(in)g(the)h(RF)o(C)f(and)h(a)f(securit)o(y)f(analysis)149 +2422 y(of)k(the)e(name)g(serv)o(er)f(and)j(resolv)o(er)d(algorithms.)21 +b(Some)14 b(of)i(the)g(solutions)g(in)g(the)f(second)h(part)149 +2512 y(are)i(already)e(impleme)o(n)o(ted)e(and)k(running)f(in)g(patc)o(hed)f +(v)o(ersions)h(of)g(system)f(soft)o(w)o(are,)h(or)g(are)149 +2603 y(follo)o(w)o(ed)g(b)o(y)f(organizational)i(p)q(olicies;)f(others)g(are) +g(still)g(in)f(an)i(early)f(stage)g(of)h(dev)o(elopmen)o(t.)p +eop +%%Page: 4 13 +12 bop 1925 -100 a Fo(4)149 75 y(Eac)o(h)22 b(of)f(the)g(solutions)h(presen)o +(ted)e(is)h(discussed)g(in)g(this)g(c)o(hapter)g(and)g(ev)m(aluated)g(using)h +(a)149 165 y(wide)16 b(v)m(ariet)o(y)f(of)i(criteria.)223 255 +y(The)h(approac)o(h,)i(and)f(its)f(discussion,)h(of)g(com)o(bining)e(partial) +i(solutions)g(to)g(a)g(dense)f(net-)149 346 y(w)o(ork,)g(are)g(part)g(of)g +(the)g(concluding)f(c)o(hapter.)26 b(Ev)o(en)17 b(if)g(these)h(in)o(terw)o(o) +o(v)o(en)d(solutions)k(do)f(not)149 436 y(guaran)o(tee)f(the)f(securit)o(y)f +(of)h(a)h(system,)d(at)j(least)f(they)g(increase)f(the)h(con\014dence)g(in)g +(it.)p eop +%%Page: 5 14 +13 bop 1925 -100 a Fo(5)655 342 y(2.)32 b(THE)16 b(DOMAIN)f(NAME)g(SYSTEM)223 +516 y(This)j(c)o(hapter)h(describ)q(es)f(the)h(p)q(osition)g(and)g(role)g(of) +g(the)f(Domain)g(Name)f(System)g(in)i(its)149 606 y(frame,)14 +b(the)g(In)o(ternet.)19 b(W)l(e)c(start)g(o\013)g(b)o(y)f(talking)g(ab)q(out) +i(the)f(In)o(ternet,)e(the)h(TCP/IP)i(proto)q(col)149 696 y(suite,)i(In)o +(ternet)e(services,)g(routing,)i(and)h(\014nally)e(the)g(need)g(for)h(name)f +(resolution.)25 b(It)18 b(follo)o(ws)149 787 y(an)23 b(outline)e(of)i(the)f +(historical)f(dev)o(elopmen)o(t)e(of)j(the)g(Domain)f(Name)g(System)f(that)j +(led)e(to)149 877 y(the)h(curren)o(t)e(system.)36 b(W)l(e)21 +b(describ)q(e)g(the)g(design)h(goals)g(of)g(the)f(curren)o(t)g(system)f(for)i +(name)149 967 y(resolution)14 b(in)g(the)g(In)o(ternet)f(and)h(its)g(in)o +(teracting)f(en)o(tities.)19 b(W)l(e)14 b(also)g(talk)g(ab)q(out)h(forw)o +(ard)g(and)149 1057 y(rev)o(erse)d(mapping)g(trees,)g(and)i(recursiv)o(e)d +(and)i(iterativ)o(e)e(resolving)h(tec)o(hniques.)19 b(The)13 +b(follo)o(wing)149 1148 y(section)18 b(con)o(tains)g(some)f(additional)g +(remarks)g(ab)q(out)i(topics)f(that)g(w)o(ere)f(already)h(men)o(tioned)149 +1238 y(but)f(deserv)o(e)e(a)h(more)f(detailed)h(treatmen)o(t.)223 +1328 y(Before)25 b(describing)g(the)h(concrete)g(data)h(structures)f(and)g +(algorithms)g(used)g(b)o(y)g(name)149 1419 y(serv)o(ers)16 +b(and)h(resolv)o(ers)f(w)o(e)g(giv)o(e)g(an)h(example)d(of)j(a)g(name)e +(resolution.)22 b(This)17 b(example)d(should)149 1509 y(pro)o(vide)d(a)h(go)q +(o)q(d)i(understanding)e(of)g(the)g(algorithms)e(and)j(the)e(in)o(teraction)g +(of)h(all)f(participating)149 1599 y(en)o(tities)k(in)h(the)g(distributed)g +(Domain)f(Name)g(System.)223 1689 y(Wherev)o(er)h(it)h(is)h(necessary)f(to)h +(pro)o(vide)f(more)g(sp)q(eci\014c)g(descriptions)g(of)h(concepts)g(or)g(the) +149 1780 y(impleme)o(n)o(tation)9 b(of)k(the)f(Domain)f(Name)f(System,)h(w)o +(e)h(co)o(v)o(er)f(the)g(resp)q(ectiv)o(e)g(topics)h(in)f(greater)149 +1870 y(detail.)149 2035 y(2.1)50 b(In)o(tro)q(duction)223 2175 +y(T)l(o)17 b(understand)g(the)f(role)h(that)g(the)f(DNS)h(pla)o(ys,)e(w)o(e)i +(start)g(b)o(y)f(in)o(tro)q(ducing)g(the)h(In)o(ternet)149 +2265 y(in)f(general)g(\(see)g([Com91,)g(Preface)f(and)i(c)o(hapter)f(1]\).) +223 2356 y(Data)g(comm)o(unic)o(ation)d(has)j(b)q(ecome)d(a)j(fundamen)o(tal) +e(part)h(of)h(computing.)j(Hosts)d(gather)149 2446 y(information)k(w)o +(orldwide)g(and)i(their)e(users)h(w)o(an)o(t)f(to)h(exc)o(hange)g(data)g(and) +g(use)g(remote)e(ser-)149 2536 y(vices)d(for)h(di\013eren)o(t)f(purp)q(oses.) +24 b(Common)16 b(in)o(terests,)f(shared)j(b)o(y)e(p)q(eople)h(that)g(liv)o(e) +e(and)i(w)o(ork)149 2626 y(thousands)j(of)f(miles)d(a)o(w)o(a)o(y)i(from)g +(eac)o(h)f(other,)i(created)f(the)g(need)g(for)h(e\016cien)o(t)d(and)j +(reliable)p eop +%%Page: 6 15 +14 bop 1925 -100 a Fo(6)149 75 y(data)22 b(comm)o(unic)o(ation.)32 +b(What)22 b(started)f(b)q(efore)f(1960)j(with)d(the)h(dev)o(elopmen)o(t)c(of) +k(informa-)149 165 y(tion)16 b(theory)l(,)f(the)h(sampling)e(theorem,)g(and)i +(the)f(\014eld)h(of)f(signal)h(pro)q(cessing,)g(b)q(ecame)e(around)149 +255 y(the)19 b(mid)d(1960s)k(the)e(question)g(of)h(ho)o(w)g(to)g(transmit)e +(data)i(pac)o(k)o(ets)e(in)h(lo)q(cal)h(area)f(net)o(w)o(orks.)149 +346 y(The)i(In)o(ternet)f(con)o(tains)h(and)g(pro)o(vides)f(ev)o(en)g(more:) +27 b(in)o(ternet)o(w)o(ork)18 b(tec)o(hnologies,)i(proto)q(col)149 +436 y(la)o(y)o(ering)c(mo)q(dels,)f(and)j(datagram)f(and)g(stream)f(transp)q +(ort)i(services)e(b)q(et)o(w)o(een)g(hosts)i(on)f(p)q(os-)149 +526 y(sibly)e(di\013eren)o(t)g(net)o(w)o(orks,)g(that)h(together)g +(constitute)f(an)h(in)o(terconnected)e(arc)o(hitecture)g(that)149 +616 y(functions)j(as)g(a)f(single)g(uni\014ed)g(comm)o(unic)o(ation)e +(system.)149 776 y(2.1.1)49 b(The)17 b(TCP/IP)g(Proto)q(col)g(Suite)223 +899 y(The)i(need)g(and)h(imp)q(ortance)f(of)h(in)o(ternet)e(tec)o(hnology)h +(w)o(as)h(recognized)f(b)o(y)g(go)o(v)o(ernmen)o(t)149 989 +y(agencies,)k(whic)o(h)e(resulted)f(in)i(its)f(dev)o(elopmen)o(t)e(b)o(y)i(D) +o(ARP)l(A)1367 971 y Fm(1)1385 989 y Fo(.)h(The)f(D)o(ARP)l(A)g(tec)o +(hnology)149 1079 y(includes)14 b(net)o(w)o(ork)g(standards)i(that)f(sp)q +(ecify)f(details)g(and)h(con)o(v)o(en)o(tions)e(of)i(computer)e(comm)o(u-)149 +1170 y(nication,)18 b(net)o(w)o(ork)g(in)o(terconnection,)f(and)h(tra\016c)g +(routing.)28 b(\\TCP/IP)1536 1152 y Fm(2)1557 1170 y Fo(,")18 +b(an)h(abbreviation)149 1260 y(of)g(the)g(o\016cial)e(name)h(\\TCP/IP)i(In)o +(ternet)d(Proto)q(col)i(Suite,")g(can)g(b)q(e)f(used)h(to)g(set)g(up)f(com-) +149 1350 y(m)o(unication)h(b)q(et)o(w)o(een)h(an)o(y)h(set)f(of)h(in)o +(terconnected)e(hosts)j(or)f(net)o(w)o(orks.)34 b(It)20 b(is)h(notew)o(orth)o +(y)149 1441 y(that)h(TCP/IP)g(is)f(one)g(of)g(man)o(y)f(p)q(ossible)h(tec)o +(hnologies)g(that)g(could)g(b)q(e)g(used)h(to)f(comp)q(ose)149 +1531 y(in)o(terconnected)15 b(net)o(w)o(orks;)g(one)i(that)f(has)h +(demonstrated)f(its)g(viabilit)o(y)e(on)j(a)f(large)h(scale.)149 +1691 y(2.1.2)49 b(In)o(ternet)15 b(Services)223 1813 y(Users)j(are)h(usually) +f(not)h(in)o(terested)e(in)i(the)f(underlying)g(tec)o(hnologies)g(of)h(the)g +(In)o(ternet)e({)149 1904 y(their)j(in)o(terest)f(is)h(the)f(utilization)g +(of)i(net)o(w)o(ork)e(services.)32 b(The)20 b(la)o(y)o(ered)e(design)i(of)h +(TCP/IP)149 1994 y(pro)o(vides)c(the)h(necessary)f(means)f(for)i +(transparency)g(in)f(comm)o(unication)e(and)j(hiding)f(details)149 +2084 y(from)j(the)g(high)g(lev)o(el)e(applications.)33 b(Services)19 +b(can)h(b)q(e)h(partitioned)f(in)o(to)g(application)g(lev)o(el)149 +2174 y(in)o(ternet)f(services)g(and)h(net)o(w)o(ork)f(lev)o(el)f(in)o(ternet) +h(services.)30 b(Examples)19 b(of)h(application)g(lev)o(el)149 +2265 y(services)13 b(are)h(electronic)e(mail,)g(\014le)h(transfer,)h(and)g +(remote)e(login.)20 b(The)14 b(net)o(w)o(ork)f(lev)o(el)f(services)149 +2355 y(\\connectionless)19 b(pac)o(k)o(et)f(deliv)o(ery)f(service")h(and)h +(\\reliable)f(stream)g(transp)q(ort)i(service")e(are)149 2445 +y(used)c(b)o(y)f(the)h(net)o(w)o(ork)f(application)g(programmer)f(and)i +(remain)e(hidden)h(from)f(the)i(application)p 149 2489 720 +2 v 206 2520 a Fl(1)224 2535 y Fk(Defense)h(Adv)n(anced)g(Researc)o(h)g(Pro)r +(jects)g(Agency)206 2569 y Fl(2)224 2585 y Fk(named)24 b(after)h(its)g(ma)r +(jor)e(standards)j(TCP)f(\(T)m(ransmission)e(Con)o(trol)h(Proto)q(col\))h +(and)g(IP)g(\(In)o(ternet)149 2634 y(Proto)q(col\))p eop +%%Page: 7 16 +15 bop 1925 -100 a Fo(7)149 75 y(end)17 b(user.)23 b(These)17 +b(t)o(w)o(o)f(services)g(are)h(based)g(on)g(the)g(transmission)f(of)h(data)h +(pac)o(k)o(ets,)d(units)i(of)149 165 y(data)i(sen)o(t)e(across)i(a)f(pac)o(k) +o(et)e(switc)o(hing)h(net)o(w)o(ork.)25 b(The)18 b(collection)e(of)i(pac)o(k) +o(ets)f(that)h(b)q(elongs)149 255 y(to)f(one)f(connection)g(comp)q(oses)g +(the)g(data)h(comm)o(unication.)149 415 y(2.1.3)49 b(P)o(ac)o(k)o(et)15 +b(Routing)223 538 y(P)o(ac)o(k)o(ets)e(that)h(are)g(sen)o(t)g(from)f(one)h +(host)h(to)g(another)f(usually)g(ha)o(v)o(e)g(to)g(tra)o(v)o(erse)f(more)g +(than)149 628 y(one)i(ph)o(ysical)e(link)h(b)q(et)o(w)o(een)f(these)h(hosts.) +22 b(In)14 b(a)h(complex)d(net)o(w)o(ork)i(with)g(man)o(y)f(thousands)j(of) +149 718 y(mac)o(hines)f(it)g(is)i(not)f(a)h(trivial)e(task)h(to)h(direct)e(a) +i(pac)o(k)o(et)e(from)g(its)h(source)g(to)h(its)f(destination.)223 +809 y(In)k(an)g(in)o(ternet)527 791 y Fm(3)566 809 y Fo(there)g(are)g(sp)q +(ecially)f(dedicated)h(mac)o(hines)e(that)j(attac)o(h)f(t)o(w)o(o)g(or)h +(more)149 899 y(net)o(w)o(orks)h(and)h(transmit)e(pac)o(k)o(ets)g(from)g(one) +h(to)g(the)g(other.)38 b(These)22 b(mac)o(hines)e(are)j(called)149 +989 y(\\gatew)o(a)o(ys.")f(While)13 b(tra)o(v)o(ersing)h(the)f(net)o(w)o(ork) +h(from)f(source)h(to)h(destination)f(host,)h(a)f(message)149 +1079 y(is)i(lik)o(ely)c(to)k(pass)g(through)h(one)e(or)h(more)e(gatew)o(a)o +(ys.)21 b(If)15 b(the)g(top)q(ology)i(of)f(the)f(net)o(w)o(ork)f(allo)o(ws) +149 1170 y(sev)o(eral)j(paths)i(for)f(the)g(message)f(to)i(reac)o(h)e(its)h +(destination,)g(these)g(gatew)o(a)o(ys)g(ha)o(v)o(e)f(to)h(mak)o(e)149 +1260 y(decisions)e(ab)q(out)i(whic)o(h)d(route)i(to)f(c)o(ho)q(ose)h(for)g +(the)f(pac)o(k)o(et.)223 1350 y(In)d(a)h(TCP/IP)h(in)o(ternet)d(the)i(basic)f +(unit)h(of)g(data)g(transmission)f(is)h(the)f(IP)h(datagram.)20 +b(The)149 1441 y(pro)q(cess)c(of)g(c)o(ho)q(osing)g(a)g(path)g(o)o(v)o(er)e +(whic)o(h)h(to)g(send)h(a)g(datagram)f(from)f(source)i(to)f(destination)149 +1531 y(is)h(referred)g(to)g(as)h(routing;)f(an)o(y)h(computer)d(making)h(suc) +o(h)h(a)h(decision)f(is)g(called)f(a)h(router.)223 1621 y(Gatew)o(a)o(ys)f +(in)g(the)h(function)f(of)h(routers)g(comp)q(ose)f(a)g(co)q(op)q(erativ)o(e,) +g(in)o(terconnected)f(struc-)149 1711 y(ture.)21 b(Datagrams)c(originated)e +(at)h(the)g(source)g(are)f(passed)i(from)e(router)g(to)i(router)e(un)o(til)g +(they)149 1802 y(reac)o(h)h(a)h(gatew)o(a)o(y)f(that)h(can)f(deliv)o(er)e +(the)i(datagram)h(directly)d(to)j(its)f(destination.)149 1962 +y(2.1.4)49 b(Name)15 b(Resolution)223 2084 y(Early)e(systems)f(supp)q(orted)i +(p)q(oin)o(t{to{p)q(oin)o(t)h(connections)e(b)q(et)o(w)o(een)f(computers)g +(and)i(used)149 2174 y(lo)o(w)g(lev)o(el)d(hardw)o(are)j(addresses)g(to)g(sp) +q(ecify)e(mac)o(hines.)19 b(In)o(ternet)o(w)o(orking)11 b(in)o(tro)q(duced)i +(univ)o(er-)149 2265 y(sal)18 b(addressing)g(as)h(w)o(ell)d(as)i(proto)q(col) +g(soft)o(w)o(are)g(to)g(map)f(univ)o(ersal)f(addresses)i(in)o(to)g(lo)o +(w-lev)o(el)149 2355 y(hardw)o(are)g(addresses.)24 b(There)17 +b(is)g(also)h(the)f(notion)g(of)h(a)f(host)h(name)e(|)h(a)h(high)f(lev)o(el)e +(address)p 149 2399 720 2 v 206 2429 a Fl(3)224 2444 y Fk(\\Ph)o(ysically)m +(,)h(a)i(collection)f(of)f(pac)o(k)o(et)i(switc)o(hing)f(net)o(w)o(orks)h(in) +o(terconnected)i(b)o(y)d(gatew)o(a)o(ys)g(along)g(with)149 +2494 y(proto)q(cols)h(that)f(allo)o(w)f(them)g(to)h(function)g(logically)e +(as)i(a)g(single,)g(large,)g(virtual)f(net)o(w)o(ork.)29 b(When)17 +b(written)149 2544 y(in)g(upp)q(er)i(case,)g(In)o(ternet)g(refers)g(sp)q +(eci\014cally)e(to)h(the)g(connected)h(In)o(ternet)g(and)e(the)h(TCP/IP)g +(proto)q(cols)g(it)149 2594 y(uses."[Com91)n(])p eop +%%Page: 8 17 +16 bop 1925 -100 a Fo(8)149 75 y(|)17 b(a)g(pronounceable)f(iden)o(ti\014er)f +(for)i(hosts.)23 b(The)16 b(univ)o(ersal)g(addresses)h(can)f(b)q(e)h(mapp)q +(ed)f(in)o(to)149 165 y(host)h(names.)223 255 y(Mapping)e(pro)q(cesses)g(can) +h(also)f(b)q(e)g(called)f(\\name)g(binding")i(or)f(\\name)f(resolution.")21 +b(This)149 346 y(thesis)16 b(is)f(based)h(on)h(the)e(name)f(resolution)i(pro) +q(cess)g(b)q(et)o(w)o(een)f(high)h(lev)o(el)d(addresses,)j(the)g(host)149 +436 y(names,)f(and)i(univ)o(ersally)e(assigned)i(lo)o(w)o(er)e(lev)o(el)f(IP) +i(addresses.)223 526 y(Name)c(resolution)j(is)f(a)h(general)f(concept.)20 +b(The)15 b(curren)o(t)e(proto)q(col)j(in)e(the)g(TCP/IP)h(proto-)149 +616 y(col)h(suite)g(dealing)g(with)h(this)f(concept)g(and)h(solving)f(the)g +(problems)f(that)i(arise)f(from)g(it)g(is)g(the)149 707 y(Domain)g(Name)f +(System.)149 872 y(2.2)50 b(Historical)15 b(Dev)o(elopmen)o(t)223 +1012 y(Around)21 b(1970,)j(the)e(ARP)l(ANET)e(and)i(the)g(TYMNET)f(w)o(ere)f +(in)o(tro)q(duced.)37 b(They)21 b(w)o(ere)149 1102 y(the)h(\014rst)g +(large{scale,)g(general{purp)q(ose)h(data)f(net)o(w)o(orks)g(that)g +(connected)f(geographically)149 1192 y(distributed)16 b(computer)f(systems.) +223 1283 y(As)e(the)h(comm)o(unit)o(y)c(con)o(tained)k(only)g(a)g(few)g(h)o +(undred)g(hosts,)h(name)e(resolution)h(w)o(as)g(man-)149 1373 +y(aged)g(using)g(a)g(single)f(text)f(\014le:)20 b(HOSTS.TXT.)12 +b(This)h(\014le)g(con)o(tained)g(name{to{address)h(map-)149 +1463 y(ping)e(for)g(ev)o(ery)e(connected)h(host.)21 b(The)11 +b(administration,)g(main)o(tenance,)f(and)j(distribution)e(w)o(as)149 +1553 y(done)17 b(b)o(y)f(the)g(SRI)499 1535 y Fm(4)518 1553 +y Fo({)h(NIC)649 1535 y Fm(5)668 1553 y Fo(.)223 1644 y(Whenev)o(er)12 +b(some)i(application)g(had)g(to)h(resolv)o(e)e(a)i(host)f(name)f(and)i(get)g +(the)e(corresp)q(onding)149 1734 y(IP)j(address,)h(or)g(vice)e(v)o(ersa,)g +(the)h(resolv)o(er)f(function)h(called)f(simply)f(lo)q(ok)o(ed)j(up)f(the)g +(name)f(\(or)149 1824 y(IP)d(address\))h(in)f(a)g(lo)q(cal)g(cop)o(y)g(of)g +(the)g(master)f(HOSTS.TXT)h(\014le)f(and)i(returned)f(the)f(asso)q(ciated)149 +1915 y(v)m(alue.)223 2005 y(The)i(enormous)f(gro)o(wth)i(rate)e(of)i(the)e +(In)o(ternet)g(w)o(as)h(b)o(y)g(no)g(means)f(predictable.)19 +b(Therefore)149 2095 y(it)d(to)q(ok)h(sev)o(eral)e(y)o(ears)h(un)o(til)g +(serious)g(problems)f(b)q(ecame)g(apparen)o(t:)222 2227 y Fj(\017)24 +b Fo(System)13 b(administrators)h(used)g(to)h(e{mail)e(c)o(hanges)h(to)h(the) +f(NIC)g(and)h(p)q(erio)q(dically)e(con-)271 2317 y(tact)h(the)f(SRI-NIC)f(to) +i(obtain)g(the)f(latest)g(cop)o(y)g(of)g(HOSTS.TXT.)g(Net)o(w)o(ork)f +(tra\016c)h(and)271 2407 y(pro)q(cessor)18 b(load)e(b)q(ecame)f(unacceptably) +h(high)g(for)h(the)f(NIC.)p 149 2451 720 2 v 206 2482 a Fl(4)224 +2497 y Fk(Stanford)e(Researc)o(h)h(Institute)g(in)e(Menlo)h(P)o(ark,)f +(California)206 2532 y Fl(5)224 2547 y Fk(Net)o(w)o(ork)h(Information)e(Cen)o +(ter)p eop +%%Page: 9 18 +17 bop 1925 -100 a Fo(9)222 75 y Fj(\017)24 b Fo(Names)15 b(assigned)i(to)g +(hosts)g(ha)o(v)o(e)e(to)i(b)q(e)f(unique.)k(As)c(the)g(NIC)g(had)h(no)f +(authorit)o(y)g(o)o(v)o(er)271 165 y(host)h(name)e(assignmen)o(ts,)g(name)g +(collisions)h(b)q(ecame)f(a)h(problem.)222 297 y Fj(\017)24 +b Fo(With)19 b(the)g(gro)o(wth)h(of)f(the)g(In)o(ternet)f(and)i(the)e +(irregularit)o(y)g(of)h(database)i(up)q(dates)f(the)271 387 +y(consistency)c(of)h(the)f(name)f(space)h(w)o(as)h(no)f(longer)h(guaran)o +(teed.)149 519 y(All)e(of)i(these)f(problems)f(arose)i(b)q(ecause)f(the)g +(original)g(approac)o(h)h(scaled)f(p)q(o)q(orly)l(.)223 609 +y(In)22 b(1984)h(the)f(net)o(w)o(ork)g(comm)o(unit)n(y)d(switc)o(hed)j(to)g +(the)g(Domain)g(Name)e(System.)38 b(P)o(aul)149 699 y(Mo)q(c)o(k)m(ap)q +(etris)22 b(w)o(as)g(resp)q(onsible)g(for)f(the)h(design)f(of)h(the)g(arc)o +(hitecture)e(of)h(the)h(new)f(system.)149 790 y(The)14 b(original)f(RF)o(Cs) +541 772 y Fm(6)573 790 y Fo(describing)g(the)g(Domain)f(Name)g(System)f(are)j +([Mo)q(c83a])f(and)h([Mo)q(c83b].)149 880 y(They)j(ha)o(v)o(e)f(b)q(een)g +(obsolete)h(since)f(the)g(release)g(of)h(the)f(curren)o(t)g(sp)q +(eci\014cations)h([Mo)q(c87a)q(])f(and)149 970 y([Mo)q(c87b)q(])g(in)g(No)o +(v)o(em)o(b)q(er)d(1987)18 b(\([LR93])e(and)h([BG92]\).)149 +1136 y(2.3)50 b(Design)16 b(Goals)223 1275 y(The)k(e\013ort)h(of)f(designing) +h(the)f(Domain)f(Name)g(System)g(w)o(as)i(directed)e(to)o(w)o(ards)i(sev)o +(eral)149 1366 y(goals,)e(whic)o(h)e(had)i(the)e(main)g(in\015uence)f(on)j +(determining)c(the)j(curren)o(t)f(structure.)25 b(The)18 b(aim)149 +1456 y(w)o(as)f(to)g(create)e(a)i(system)e(with)h(the)g(follo)o(wing)g(ob)s +(jectiv)o(es)e(in)i(mind:)222 1588 y Fj(\017)24 b Fo(Data)18 +b(Consistency)222 1719 y Fj(\017)24 b Fo(E\016ciency)222 1851 +y Fj(\017)g Fo(Distributed)16 b(Character)222 1983 y Fj(\017)24 +b Fo(Generalit)o(y)222 2115 y Fj(\017)g Fo(Indep)q(endence)149 +2247 y(P)l(.)12 b(Mo)q(c)o(k)m(ap)q(etris)g(states)h(in)e([Mo)q(c87a)q(])h +(the)g(design)g(ob)s(jectiv)o(es)e(that)j(led)e(to)h(the)g(curren)o(t)f +(system:)p 149 2293 720 2 v 206 2324 a Fl(6)224 2339 y Fk(RF)o(Cs)j(are)g(a)g +(series)h(of)e(tec)o(hnical)h(rep)q(orts)i(called)d(Requests)i(for)f(Commen)o +(ts)p eop +%%Page: 10 19 +18 bop 1901 -100 a Fo(10)149 75 y(2.3.1)49 b(Data)18 b(Consistency)223 +197 y(The)g(primary)f(goal)i(w)o(as)f(to)h(pro)o(vide)e(a)i(consisten)o(t)f +(name)f(space)h(to)h(b)q(e)g(used)f(to)h(refer)e(to)149 287 +y(resources.)j(In)12 b(particular,)g(the)f(name)g(space)h(should)g(not)g(dep) +q(end)g(on)g(an)o(y)g(net)o(w)o(ork)f(iden)o(ti\014ers,)149 +378 y(and)17 b(therefore)f(b)q(e)g(totally)g(indep)q(enden)o(t)f(of)i +(routing)g(information)e(or)i(net)o(w)o(ork)e(top)q(ology)l(.)149 +538 y(2.3.2)49 b(E\016ciency)223 660 y(The)15 b(gro)o(wth)g(of)g(the)g(In)o +(ternet)f(in)g(n)o(um)o(b)q(er)f(of)i(mac)o(hines)e(and)j(subnet)o(w)o(orks)f +(called)f(for)h(the)149 750 y(in)o(tro)q(duction)i(of)h(a)f(naming)f +(resolution)h(system)f(that)h(could)g(handle)g(not)g(only)g(the)g(imme)o(nse) +149 841 y(v)o(olume)h(of)j(mac)o(hines)d(and)j(resolution)f(requests,)h(but)f +(could)g(also)h(resp)q(ond)g(e\016cien)o(tly)l(.)31 b(T)l(o)149 +931 y(obtain)14 b(these)e(desired)g(e\013ects,)g(the)h(system)e(w)o(as)i +(built)f(in)g(a)h(hierarc)o(hical,)f(distributed)g(manner)149 +1021 y(using)17 b(the)f(tec)o(hnology)g(of)g(cac)o(hing.)223 +1112 y(In)j(an)i(in)o(ternet,)e(access)h(to)h(mac)o(hines)d(in)i(lo)q(cal)g +(net)o(w)o(orks)f(is)h(more)f(lik)o(ely)e(than)k(remote)149 +1202 y(access)14 b(via)g(man)o(y)f(links.)19 b(Therefore,)14 +b(far)g(more)f(name)f(resolution)i(requests)g(are)g(made)f(lo)q(cally)l(.)149 +1292 y(The)18 b(kno)o(wledge)e(ab)q(out)i(the)f(requested)g(bindings)g(in)f +(the)h(lo)q(cal)g(net)o(w)o(ork)g(is)g(a)o(v)m(ailable)f(in)h(the)149 +1382 y(form)h(of)i(the)f(lo)q(cal)g(database.)30 b(These)19 +b(facts)h(suggests)g(the)f(use)g(of)g(the)g(hierarc)o(hical)e(organi-)149 +1473 y(zational)j(format)e(in)h(whic)o(h)g(lo)q(cal)g(resolution)g(requests)g +(are)g(resolv)o(ed)g(e\016cien)o(tly)d(b)o(y)j(a)h(lo)q(cal)149 +1563 y(en)o(tit)o(y)l(,)d(and)i(infrequen)o(t)e(resolution)h(requests)g(ab)q +(out)h(remote)e(mappings)h(are)g(dealt)g(with)g(b)o(y)149 1653 +y(an)e(in)o(teraction)d(of)i(lo)q(cal)g(and)g(remote)e(en)o(tities.)19 +b(The)c(clear)f(and)h(clean)f(structure)h(that)g(results)149 +1744 y(in)h(seeing)g(the)g(name)f(space)i(as)g(a)f(tree)g(also)h(fa)o(v)o +(ors)f(this)g(approac)o(h.)223 1834 y(The)c(creation)g(of)h(host)g(names)f(b) +o(y)f(app)q(ending)j(no)q(de)f(lab)q(els)f(from)f(the)i(lea)o(v)o(es)e(to)h +(the)h(ro)q(ot)g(of)149 1924 y(this)h(tree)e(serv)o(ed)h(the)g(need)g(for)h +(pronounceable,)g(easily)e(remem)n(b)q(erable)f(names)h(for)i(mac)o(hines.) +149 2014 y(The)23 b(distributed)f(arrangemen)o(t)g(of)h(the)f(system)g(con)o +(tributes)g(to)h(cutting)f(the)h(h)o(uge)g(name)149 2105 y(space)c(in)o(to)g +(pieces)e(that)i(can)g(b)q(e)g(managed)f(e\016cien)o(tly)l(.)26 +b(Cac)o(hing)19 b(information)e(lo)q(cally)h(that)149 2195 +y(w)o(as)e(receiv)o(ed)e(from)g(remote)g(sites)h(is)g(another)i(mec)o(hanism) +12 b(to)k(obtain)g(e\016ciency)l(.)i(Because)d(of)149 2285 +y(the)20 b(dynamics)e(of)i(the)f(system,)f(the)i(cac)o(hed)e(information)h +(is)g(quali\014ed)g(with)g(an)h(additional)149 2376 y(time)15 +b(to)h(liv)o(e)f(\(TTL\))i(parameter)e(to)h(ensure)g(the)g(goal)h(of)g(data)g +(consistency)l(.)p eop +%%Page: 11 20 +19 bop 1901 -100 a Fo(11)149 75 y(2.3.3)49 b(Distributed)16 +b(Character)223 197 y(The)f(c)o(hoice)e(of)j(implem)o(en)n(ting)c(this)j +(large)g(scale)g(clien)o(t{serv)o(er)d(paradigm)j(in)f(a)i(geograph-)149 +287 y(ically)f(distributed)h(set)g(of)h(mac)o(hines)d(w)o(as)j(supp)q(orted)h +(b)o(y)e(the)g(need)g(for)g(increased)g(reliabilit)o(y)149 +378 y(through)f(the)f(existence)e(of)i(redundan)o(t)g(data)h(bases)f(in)g +(secondary)g(name)f(serv)o(ers.)19 b(In)14 b(the)f(case)149 +468 y(of)20 b(an)o(y)f(kind)g(of)h(failure)e(in)h(one)h(of)f(the)h(name)e +(serv)o(ers)g(for)i(a)g(zone,)f(the)g(redundan)o(t)h(bac)o(kup)149 +558 y(serv)o(ers)c(will)f(still)g(b)q(e)i(able)f(to)g(pro)o(vide)g(the)g +(mapping)g(service.)k(Therefore)15 b(the)i(o)q(ccurrence)e(of)149 +649 y(a)i(failure)e(at)i(a)g(single)e(site)h(cannot)h(lead)f(to)h(the)f +(denial)f(of)i(the)f(resolution)g(service.)223 739 y(Lo)q(cal)e(authorities)g +(could)g(administer)e(their)h(o)o(wn)h(domains)g(and)g(zones,)g(k)o(eeping)f +(the)h(data)149 829 y(base)j(consisten)o(t,)e(pro)o(viding)g(autonomous)h +(con)o(trol)g(of)g(name)e(assignmen)o(t,)h(and)h(taking)g(a)o(w)o(a)o(y)149 +919 y(the)11 b(load)g(from)f(cen)o(tral)g(authorities.)20 b(Authorit)o(y)9 +b(passes)j(do)o(wn)g(the)e(edges)h(of)h(the)e(tree,)h(whereas)149 +1010 y(information)19 b(\015o)o(ws)i(across)g(the)e(hierarc)o(hies)g(from)g +(one)h(host)h(to)f(another.)33 b(The)20 b(conceptual)149 1100 +y(arrangemen)o(t)f(of)h(domain)f(name)g(serv)o(ers)g(in)h(a)g(tree)f(resem)o +(bling)e(the)j(name)f(structure)g(is)h(in)149 1190 y(fact)d(a)f(more)f +(realistic)g(arrangemen)o(t,)g(namely)f(a)j(shallo)o(w)f(tree.)149 +1350 y(2.3.4)49 b(Generalit)o(y)223 1473 y(Pragmatic)15 b(reasons)i(called)e +(for)i(generalit)o(y)l(.)i(Impleme)o(n)o(tation)13 b(costs)k(and)g(the)f +(amoun)o(t)f(of)149 1563 y(administrativ)o(e)9 b(e\013ort)i(in)g(supp)q +(orting)h(the)f(system)f(dictated)g(a)i(general)f(usefulness.)19 +b(Therefore)149 1653 y(the)j(system)e(do)q(es)i(not)g(con)o(tain)g(an)o(y)f +(unnecessary)h(restrictions)f(regarding)h(its)g(purp)q(ose)g(or)149 +1744 y(applications.)30 b(This)19 b(goal)g(can)h(b)q(e)f(reform)o(ulated)e +(as)i(the)g(desire)f(to)h(allo)o(w)g(augmen)o(tation)f(of)149 +1834 y(the)e(data)i(basis)e(b)o(y)g(new)g(data)h(structures.)149 +1994 y(2.3.5)49 b(Indep)q(endence)223 2116 y(The)16 b(system)g(w)o(as)h +(designed)g(to)g(b)q(e)g(indep)q(enden)o(t)f(of)h(underlying)f(hardw)o(are,)h +(b)q(e)g(it)g(of)g(the)149 2207 y(lo)q(cal)24 b(mac)o(hine)d(or)j(the)f(net)o +(w)o(ork)g(in)o(terface.)42 b(F)l(urthermore,)23 b(the)g(transactions)h +(should)g(b)q(e)149 2297 y(indep)q(enden)o(t)17 b(of)g(the)g(comm)o(uni)o +(cation)d(system)i(that)h(carries)g(them.)k(Therefore,)c(all)f(p)q(ossible) +149 2387 y(kinds)23 b(of)f(pac)o(k)o(et)g(switc)o(hing)g(are)g(suitable,)h +(suc)o(h)f(as)i(store{and{forw)o(ard)g(switc)o(hing)e(using)149 +2478 y(datagrams,)17 b(virtual)e(circuits,)g(or)h(p)q(ossibly)h(h)o(ybrid)e +(approac)o(hes.)p eop +%%Page: 12 21 +20 bop 1901 -100 a Fo(12)149 75 y(2.4)50 b(DNS)16 b(En)o(tities)223 +214 y(The)11 b(Domain)h(Name)e(System)g(consists)i(of)g(sev)o(eral)f(en)o +(tities:)17 b(resolv)o(ers,)12 b(name)e(serv)o(ers,)i(and)149 +305 y(resource)i(records)g(\(RR\).)g(W)l(e)g(\014rst)g(describ)q(e)g(the)f +(domain)h(name)f(space)h(and)h(resource)e(records)149 395 y(that)k(are)e +(sections)h(in)f(DNS)h(messages.)21 b(They)15 b(serv)o(e)g(for)h(the)f(exc)o +(hange)g(of)h(data)h(b)q(et)o(w)o(een)e(the)149 485 y(in)o(teracting)k(name)g +(serv)o(ers)g(and)i(resolv)o(ers.)32 b(W)l(e)19 b(then)h(describ)q(e)f(purp)q +(oses)j(and)e(features)g(of)149 575 y(name)c(serv)o(ers)f(and)i(resolv)o +(ers.)149 735 y(2.4.1)49 b(Domain)16 b(Name)f(Space)223 858 +y(The)d(Domain)f(Name)g(Space)h(is)f(the)h(sp)q(eci\014cation)g(of)h(a)f +(tree{structured)g(name)f(space.)19 b(The)149 948 y(ro)q(ot)i(of)f(the)f +(tree)f(is)i(the)f(ro)q(ot)h(domain)f(follo)o(w)o(ed)f(b)o(y)h(its)g(c)o +(hildren,)f(the)h(top{lev)o(el)f(domains,)149 1039 y(whic)o(h)i(can)h(con)o +(tain)g(sev)o(eral)e(lev)o(els)g(of)i(sub)q(domains.)35 b(Figure)20 +b(2.1)h(sho)o(ws)g(the)g(structure)f(of)149 1129 y(suc)o(h)d(a)g(tree.)k +(Host)c(names)e(consist)i(of)g(a)f(concatenation)h(of)g(the)f(lab)q(els)h(of) +g(eac)o(h)f(no)q(de)h(on)g(the)149 1219 y(path)f(from)d(the)i(leaf)f(that)h +(represen)o(ts)f(the)h(actual)f(host)i(up)f(to)g(the)f(ro)q(ot.)22 +b(Adjacen)o(t)14 b(lab)q(els)g(are)149 1309 y(separated)i(b)o(y)e(a)i(dot.)21 +b(Domains)15 b(are)g(simply)e(subtrees)i(of)g(the)g(Domain)f(Name)f(Space.)21 +b(In)15 b(our)149 1400 y(example)f(\\purdue.edu")j(is)f(a)h(domain)e(name.) +524 2188 y @beginspecial 0 @llx 0 @lly 239 @urx 134 @ury 2390 +@rwi @setspecial +%%BeginDocument: pictures/dom_purd.ps +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/l {lineto} bind def +/m {moveto} bind def +/s {stroke} bind def +/n {newpath} bind def +/gs {gsave} bind def +/gr {grestore} bind def +/clp {closepath} bind def +/graycol {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul +4 -2 roll mul setrgbcolor} bind def +/col-1 {} def +/col0 {0 0 0 setrgbcolor} bind def +/col1 {0 0 1 setrgbcolor} bind def +/col2 {0 1 0 setrgbcolor} bind def +/col3 {0 1 1 setrgbcolor} bind def +/col4 {1 0 0 setrgbcolor} bind def +/col5 {1 0 1 setrgbcolor} bind def +/col6 {1 1 0 setrgbcolor} bind def +/col7 {1 1 1 setrgbcolor} bind def + /DrawEllipse { + /endangle exch def + /startangle exch def + /yrad exch def + /xrad exch def + /y exch def + /x exch def + /savematrix mtrx currentmatrix def + x y translate xrad yrad scale 0 0 1 startangle endangle arc + savematrix setmatrix + } def + + end +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def + +$F2psBegin +0 setlinecap 0 setlinejoin +-4.0 139.0 translate 0.900 -0.900 scale +0.500 setlinewidth +n 74 114 70 40 0 360 DrawEllipse gs 0.95 setgray fill gr +gs col-1 s gr +n 189 14 m 189 44 l gs col-1 s gr +n 189 14 m 269 44 l gs col-1 s gr +n 189 14 m 109 44 l gs col-1 s gr +n 109 59 m 79 84 l gs col-1 s gr +n 79 99 m 109 124 l gs col-1 s gr +n 79 99 m 69 124 l gs col-1 s gr +n 79 99 m 29 124 l gs col-1 s gr +/Times-Bold findfont 12.00 scalefont setfont +99 54 m +gs 1 -1 scale (edu) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +179 54 m +gs 1 -1 scale (com) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +259 54 m +gs 1 -1 scale (org) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +184 14 m +gs 1 -1 scale (" ") col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +59 94 m +gs 1 -1 scale (purdue) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +19 134 m +gs 1 -1 scale (cs) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +59 134 m +gs 1 -1 scale (cc) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +99 134 m +gs 1 -1 scale (ecn) col-1 show gr +$F2psEnd +%%EndDocument + @endspecial 714 2433 a(Figure)h(2.1)33 b(Domain)15 b(purdue.edu)p +eop +%%Page: 13 22 +21 bop 1901 -100 a Fo(13)223 75 y(A)14 b(part)h(of)g(the)f(Domain)g(Name)f +(Space)i(that)g(is)f(con)o(trolled)g(completely)e(b)o(y)i(a)h(name)f(serv)o +(er)149 165 y(is)23 b(called)f(a)i(zone.)42 b(The)23 b(delicate)e +(di\013erence)h(b)q(et)o(w)o(een)h(a)g(domain)f(and)i(a)g(zone)f(is)g(that)g +(a)149 255 y(zone)16 b(con)o(tains)g(all)g(the)g(domain)f(names)g(and)i(data) +g(that)f(a)h(domain)e(con)o(tains,)g(except)g(for)i(the)149 +346 y(domain)h(names)f(and)i(data)g(that)f(are)g(delegated)g(elsewhere)f +(\(see)h(Figure)f(2.2\).)28 b(Viewing)17 b(the)149 436 y(domains)f(\(no)q +(des\))g(and)g(hosts)h(\(lea)o(v)o(es\))d(as)j(the)e(conceptual)g(arrangemen) +o(t)g(yields)f(a)j(tree)e(with)149 526 y(greater)i(heigh)o(t)f(than)i +(viewing)e(the)g(zones)h(as)g(no)q(des.)24 b(The)16 b(latter)h(is)f(a)h(more) +f(realistic)f(la)o(y)o(out)149 616 y(of)i(the)f(tree)g(in)f(terms)g(of)i +(e\016ciency)l(.)223 707 y(An)e(example)e(for)i(the)g(di\013erence)f(b)q(et)o +(w)o(een)h(domain)f(and)i(zone)f(is)g(the)g(follo)o(wing)g(scenario.)149 +797 y(A)i(lo)q(cal)h(authorit)o(y)f(manages)h(the)f(domain)f(\\alpha.dom".)25 +b(\\alpha.dom")18 b(has)g(three)f(sub)q(do-)149 887 y(mains)e(\\phi,")g(\\c)o +(hi,")g(and)h(\\psi")h(that)e(con)o(tain)h(sev)o(eral)e(hosts,)i(but)g(no)g +(further)f(sub)q(domains.)149 978 y(If)g(the)g(authorit)o(y)g(for)g(sub)q +(domain)g(\\psi")h(is)f(transferred)g(to)h(\\psi.alpha.dom,")e(t)o(w)o(o)h +(zones)g(are)149 1068 y(the)j(result.)27 b(The)18 b(authorit)o(y)g(for)h +(\\alpha.dom")f(could)g(additionally)f(transfer)i(the)f(authorit)o(y)149 +1158 y(for)k(\\c)o(hi")g(to)g(the)g(same)e(authorit)o(y)i(that)g(administers) +e(\\psi".)39 b(This)22 b(example)d(sho)o(ws)k(that)149 1248 +y(zones)17 b(do)g(not)f(ha)o(v)o(e)g(to)g(b)q(e)h(connected)e(b)o(y)h(edges)g +(in)g(the)g(tree)g(structured)g(domain)f(tree.)524 2037 y @beginspecial +0 @llx 0 @lly 248 @urx 126 @ury 2480 @rwi @setspecial +%%BeginDocument: pictures/dom_zone.ps +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/l {lineto} bind def +/m {moveto} bind def +/s {stroke} bind def +/n {newpath} bind def +/gs {gsave} bind def +/gr {grestore} bind def +/clp {closepath} bind def +/graycol {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul +4 -2 roll mul setrgbcolor} bind def +/col-1 {} def +/col0 {0 0 0 setrgbcolor} bind def +/col1 {0 0 1 setrgbcolor} bind def +/col2 {0 1 0 setrgbcolor} bind def +/col3 {0 1 1 setrgbcolor} bind def +/col4 {1 0 0 setrgbcolor} bind def +/col5 {1 0 1 setrgbcolor} bind def +/col6 {1 1 0 setrgbcolor} bind def +/col7 {1 1 1 setrgbcolor} bind def + /DrawEllipse { + /endangle exch def + /startangle exch def + /yrad exch def + /xrad exch def + /y exch def + /x exch def + /savematrix mtrx currentmatrix def + x y translate xrad yrad scale 0 0 1 startangle endangle arc + savematrix setmatrix + } def + + /DrawSplineSection { + /y3 exch def + /x3 exch def + /y2 exch def + /x2 exch def + /y1 exch def + /x1 exch def + /xa x1 x2 x1 sub 0.666667 mul add def + /ya y1 y2 y1 sub 0.666667 mul add def + /xb x3 x2 x3 sub 0.666667 mul add def + /yb y3 y2 y3 sub 0.666667 mul add def + x1 y1 lineto + xa ya xb yb x3 y3 curveto + } def + + end +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def + +$F2psBegin +0 setlinecap 0 setlinejoin +-4.0 139.0 translate 0.900 -0.900 scale +0.500 setlinewidth +n 139 94 135 60 0 360 DrawEllipse gs col-1 s gr +n 219 14 m 219 34 l gs col-1 s gr +n 219 14 m 259 34 l gs col-1 s gr + 1 setlinecap [1 3.000000] 3.000000 setdash +n 259 34 m 279 44 l gs col-1 s gr + [] 0 setdash 0 setlinecap + 1 setlinecap [1 3.000000] 3.000000 setdash +n 219 34 m 219 44 l gs col-1 s gr + [] 0 setdash 0 setlinecap +n 219 14 m 139 54 l gs col-1 s gr +n 139 54 m 79 94 l gs col-1 s gr +n 139 54 m 139 94 l gs col-1 s gr +n 139 54 m 199 94 l gs col-1 s gr +n 199 94 m 179 134 l gs col-1 s gr +n 199 94 m 199 134 l gs col-1 s gr +n 199 94 m 219 134 l gs col-1 s gr +n 139 94 m 119 134 l gs col-1 s gr +n 139 94 m 139 134 l gs col-1 s gr +n 139 94 m 159 134 l gs col-1 s gr +n 79 94 m 59 134 l gs col-1 s gr +n 79 94 m 79 134 l gs col-1 s gr +n 79 94 m 99 134 l gs col-1 s gr + [4.000000] 0 setdash +n 49.000 104.000 m 49.000 89.000 l + 49.000 89.000 49.000 74.000 84.000 62.500 DrawSplineSection + 84.000 62.500 119.000 51.000 139.000 51.000 DrawSplineSection + 139.000 51.000 159.000 51.000 194.000 62.500 DrawSplineSection + 194.000 62.500 229.000 74.000 229.000 89.000 DrawSplineSection + 229.000 89.000 229.000 104.000 226.500 119.000 DrawSplineSection + 226.500 119.000 224.000 134.000 211.500 139.000 DrawSplineSection + 211.500 139.000 199.000 144.000 186.500 139.000 DrawSplineSection + 186.500 139.000 174.000 134.000 161.500 109.000 DrawSplineSection + 161.500 109.000 149.000 84.000 139.000 84.000 DrawSplineSection + 139.000 84.000 129.000 84.000 116.500 109.000 DrawSplineSection + 116.500 109.000 104.000 134.000 91.500 139.000 DrawSplineSection + 91.500 139.000 79.000 144.000 66.500 139.000 DrawSplineSection + 66.500 139.000 54.000 134.000 51.500 119.000 DrawSplineSection + 49.000 104.000 l gs col-1 s gr + [] 0 setdash +/Times-Bold findfont 12.00 scalefont setfont +219 69 m +gs 1 -1 scale (domain) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +59 89 m +gs 1 -1 scale (zone) col-1 show gr +$F2psEnd +%%EndDocument + @endspecial 746 2281 a(Figure)h(2.2)32 b(Domain)16 b(vs.)21 +b(zone)p eop +%%Page: 14 23 +22 bop 1901 -100 a Fo(14)149 75 y(2.4.2)49 b(DNS)17 b(Messages)223 +197 y(DNS)e(messages)h(are)f(the)h(data)g(units)g(that)g(are)g(transmitted)f +(b)q(et)o(w)o(een)f(name)h(serv)o(ers)g(and)149 287 y(resolv)o(ers.)22 +b(A)16 b(DNS)g(message)g(consists)h(of)g(the)f(header)h(and)g(up)g(to)f(four) +h(sections)g(\(see)f(Figure)149 378 y(2.3\).)22 b(The)16 b(header)g(con)o +(tains)h(the)f(follo)o(wing)g(\014elds:)337 2219 y @beginspecial +0 @llx 0 @lly 333 @urx 387 @ury 3330 @rwi @setspecial +%%BeginDocument: pictures/dns_mesg.ps +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/l {lineto} bind def +/m {moveto} bind def +/s {stroke} bind def +/n {newpath} bind def +/gs {gsave} bind def +/gr {grestore} bind def +/clp {closepath} bind def +/graycol {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul +4 -2 roll mul setrgbcolor} bind def +/col-1 {} def +/col0 {0 0 0 setrgbcolor} bind def +/col1 {0 0 1 setrgbcolor} bind def +/col2 {0 1 0 setrgbcolor} bind def +/col3 {0 1 1 setrgbcolor} bind def +/col4 {1 0 0 setrgbcolor} bind def +/col5 {1 0 1 setrgbcolor} bind def +/col6 {1 1 0 setrgbcolor} bind def +/col7 {1 1 1 setrgbcolor} bind def + end +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def + +$F2psBegin +0 setlinecap 0 setlinejoin +-4.0 391.0 translate 0.900 -0.900 scale +0.500 setlinewidth +n 149 169 m 149 149 l 369 149 l 369 169 l gs col-1 s gr +n 149 189 m 369 189 l gs col-1 s gr + 1 setlinecap [1 4.000000] 4.000000 setdash +n 369 169 m 369 189 l gs col-1 s gr + [] 0 setdash 0 setlinecap + 1 setlinecap [1 4.000000] 4.000000 setdash +n 149 169 m 149 189 l gs col-1 s gr + [] 0 setdash 0 setlinecap +/Courier-Bold findfont 12.00 scalefont setfont +154 164 m +gs 1 -1 scale (QNAME) col-1 show gr +n 9 189 m 9 169 l 89 169 l 89 189 l gs col-1 s gr +n 9 269 m 89 269 l gs col-1 s gr +n 9 249 m 89 249 l gs col-1 s gr +n 9 229 m 89 229 l gs col-1 s gr +n 9 209 m 89 209 l gs col-1 s gr +n 9 189 m 89 189 l gs col-1 s gr + 1 setlinecap [1 3.000000] 3.000000 setdash +n 89 189 m 89 269 l gs col-1 s gr + [] 0 setdash 0 setlinecap + 1 setlinecap [1 3.000000] 3.000000 setdash +n 9 189 m 9 269 l gs col-1 s gr + [] 0 setdash 0 setlinecap +/Courier-Bold findfont 12.00 scalefont setfont +14 184 m +gs 1 -1 scale (HEADER) col-1 show gr +/Courier-Bold findfont 12.00 scalefont setfont +14 204 m +gs 1 -1 scale (QUESTION) col-1 show gr +/Courier-Bold findfont 12.00 scalefont setfont +14 224 m +gs 1 -1 scale (ANSWER) col-1 show gr +/Courier-Bold findfont 12.00 scalefont setfont +14 244 m +gs 1 -1 scale (AUTHORITY) col-1 show gr +/Courier-Bold findfont 12.00 scalefont setfont +14 264 m +gs 1 -1 scale (ADDITIONAL) col-1 show gr +n 369 129 m 369 9 l 149 9 l 149 129 l clp gs col-1 s gr +n 149 29 m 369 29 l gs col-1 s gr +n 149 49 m 369 49 l gs col-1 s gr +n 149 69 m 369 69 l gs col-1 s gr +n 149 89 m 369 89 l gs col-1 s gr +n 149 109 m 369 109 l gs col-1 s gr +n 149 189 m 149 229 l 369 229 l 369 189 l gs col-1 s gr +n 149 209 m 369 209 l gs col-1 s gr +n 149 269 m 149 249 l 369 249 l 369 269 l gs col-1 s gr +n 149 289 m 369 289 l gs col-1 s gr + 1 setlinecap [1 4.000000] 4.000000 setdash +n 369 269 m 369 289 l gs col-1 s gr + [] 0 setdash 0 setlinecap + 1 setlinecap [1 4.000000] 4.000000 setdash +n 149 269 m 149 289 l gs col-1 s gr + [] 0 setdash 0 setlinecap + 1 setlinecap [1 4.000000] 4.000000 setdash +n 369 409 m 369 429 l gs col-1 s gr + [] 0 setdash 0 setlinecap + 1 setlinecap [1 4.000000] 4.000000 setdash +n 149 409 m 149 429 l gs col-1 s gr + [] 0 setdash 0 setlinecap +n 149 289 m 149 409 l gs col-1 s gr +n 369 289 m 369 409 l gs col-1 s gr +n 149 429 m 369 429 l gs col-1 s gr +n 149 389 m 369 389 l gs col-1 s gr +n 149 369 m 369 369 l gs col-1 s gr +n 149 329 m 369 329 l gs col-1 s gr +n 149 309 m 369 309 l gs col-1 s gr +n 151 4 m 144 4 144 127 7 arcto 4 {pop} repeat 144 134 367 134 7 arcto 4 {pop} repeat 374 134 374 11 7 arcto 4 {pop} repeat 374 4 151 4 7 arcto 4 {pop} repeat clp gs col-1 s gr +n 151 144 m 144 144 144 227 7 arcto 4 {pop} repeat 144 234 367 234 7 arcto 4 {pop} repeat 374 234 374 151 7 arcto 4 {pop} repeat 374 144 151 144 7 arcto 4 {pop} repeat clp gs col-1 s gr +n 151 244 m 144 244 144 427 7 arcto 4 {pop} repeat 144 434 367 434 7 arcto 4 {pop} repeat 374 434 374 251 7 arcto 4 {pop} repeat 374 244 151 244 7 arcto 4 {pop} repeat clp gs col-1 s gr +n 11 164 m 4 164 4 267 7 arcto 4 {pop} repeat 4 274 87 274 7 arcto 4 {pop} repeat 94 274 94 171 7 arcto 4 {pop} repeat 94 164 11 164 7 arcto 4 {pop} repeat clp gs col-1 s gr +1.000 setlinewidth +n 94 179 m 144 29 l gs col-1 s gr +n 135.146 42.914 m 144.000 29.000 l 142.735 45.444 l gs 2 setlinejoin col-1 s gr +n 94 199 m 144 169 l gs col-1 s gr +n 128.222 173.802 m 144.000 169.000 l 132.338 180.662 l gs 2 setlinejoin col-1 s gr +0.500 setlinewidth +n 94 209 m 99 214 l 99 234 l 104 239 l 99 244 l 99 264 l + 94 269 l gs col-1 s gr +1.000 setlinewidth +n 104 239 m 144 269 l gs col-1 s gr +n 133.600 256.200 m 144.000 269.000 l 128.800 262.600 l gs 2 setlinejoin col-1 s gr +/Courier-Bold findfont 12.00 scalefont setfont +154 24 m +gs 1 -1 scale (ID) col-1 show gr +/Courier-Bold findfont 12.00 scalefont setfont +154 44 m +gs 1 -1 scale (QR/OPCODE/AA/TC/RD/RA/Z/RCODE) col-1 show gr +/Courier-Bold findfont 12.00 scalefont setfont +154 64 m +gs 1 -1 scale (QDCOUNT) col-1 show gr +/Courier-Bold findfont 12.00 scalefont setfont +154 84 m +gs 1 -1 scale (ANCOUNT) col-1 show gr +/Courier-Bold findfont 12.00 scalefont setfont +154 104 m +gs 1 -1 scale (NSCOUNT) col-1 show gr +/Courier-Bold findfont 12.00 scalefont setfont +154 124 m +gs 1 -1 scale (ARCOUNT) col-1 show gr +/Courier-Bold findfont 12.00 scalefont setfont +154 204 m +gs 1 -1 scale (QTYPE) col-1 show gr +/Courier-Bold findfont 12.00 scalefont setfont +154 224 m +gs 1 -1 scale (QCLASS) col-1 show gr +/Courier-Bold findfont 12.00 scalefont setfont +154 264 m +gs 1 -1 scale (NAME) col-1 show gr +/Courier-Bold findfont 12.00 scalefont setfont +154 304 m +gs 1 -1 scale (TYPE) col-1 show gr +/Courier-Bold findfont 12.00 scalefont setfont +154 324 m +gs 1 -1 scale (CLASS) col-1 show gr +/Courier-Bold findfont 12.00 scalefont setfont +154 344 m +gs 1 -1 scale (TTL) col-1 show gr +/Courier-Bold findfont 12.00 scalefont setfont +154 384 m +gs 1 -1 scale (RDLENGTH) col-1 show gr +/Courier-Bold findfont 12.00 scalefont setfont +154 404 m +gs 1 -1 scale (RDATA) col-1 show gr +$F2psEnd +%%EndDocument + @endspecial 781 2464 a(Figure)g(2.3)33 b(DNS)16 b(message)p +eop +%%Page: 15 24 +23 bop 1901 -100 a Fo(15)222 75 y Fj(\017)24 b Fo(a)17 b(16)g(bit)f(iden)o +(ti\014er)f(is)h(assigned)g(b)o(y)g(the)g(program)g(that)h(generates)f(an)o +(y)g(kind)g(of)h(query)222 207 y Fj(\017)24 b Fo(the)18 b(\\QR")g(bit)g(sp)q +(eci\014es)f(whether)h(the)f(message)g(is)h(a)g(query)f(\(v)m(alue)g(0\))h +(or)h(a)f(resp)q(onse)271 297 y(\(v)m(alue)e(1\))222 429 y +Fj(\017)24 b Fo(the)12 b(\\OPCODE")i(is)d(a)i(four)f(bit)g(\014eld)f(that)i +(sp)q(eci\014es)e(the)h(kind)g(of)g(query)f(in)h(the)g(message.)271 +519 y(It)k(can)h(con)o(tain)f(the)g(follo)o(wing)g(v)m(alues:)326 +651 y Fi({)25 b Fo(0)16 b(for)h(a)f(standard)i(query)d(\(QUER)l(Y\))326 +762 y Fi({)25 b Fo(1)16 b(for)h(an)g(in)o(v)o(erse)d(query)i(\(IQUER)l(Y\)) +326 873 y Fi({)25 b Fo(2)16 b(for)h(a)f(serv)o(er)g(status)h(request)e(\(ST)l +(A)l(TUS\))326 984 y Fi({)25 b Fo(3)16 b(-)h(15)g(reserv)o(ed)e(for)h(future) +g(use)222 1116 y Fj(\017)24 b Fo(the)16 b(next)g(bit)f(\\AA")h(is)g(only)g(v) +m(alid)f(in)h(a)g(resp)q(onse)h(and)g(sp)q(eci\014es)e(that)i(the)e(resp)q +(onding)271 1206 y(name)g(serv)o(er)h(is)g(an)g(authorit)o(y)g(for)h(the)f +(domain)f(name)g(in)h(the)g(question)g(section)222 1338 y Fj(\017)24 +b Fo(the)16 b(\\TC")i(bit)e(sp)q(eci\014es)g(if)f(a)i(message)e(w)o(as)i +(truncated)222 1469 y Fj(\017)24 b Fo(the)16 b(\\RD")i(bit)d(sp)q(eci\014es)h +(if)g(recursion)g(is)g(desired)g(b)o(y)f(a)i(query)222 1601 +y Fj(\017)24 b Fo(the)16 b(\\RA")h(bit)f(sp)q(eci\014es)g(if)f(recursion)h +(is)g(a)o(v)m(ailable)222 1733 y Fj(\017)24 b Fo(the)16 b(follo)o(wing)g +(three)g(bits)g(in)g(the)g(\\Z")h(\014eld)e(are)i(reserv)o(ed)e(for)h(future) +g(use)222 1865 y Fj(\017)24 b Fo(the)c(last)f(four)h(bits)g(determine)d(the)i +(resp)q(onse)i(co)q(de)e(\\R)o(CODE".)h(P)o(ossible)g(v)m(alues)f(for)271 +1955 y(the)d(resp)q(onse)h(co)q(de)g(are:)326 2087 y Fi({)25 +b Fo(0)16 b(for)h(\\No)f(Error)h(Condition")326 2198 y Fi({)25 +b Fo(1)16 b(to)h(indicate)e(a)i(\\F)l(ormat)f(Error")326 2309 +y Fi({)25 b Fo(2)16 b(to)h(indicate)e(a)i(\\Serv)o(er)e(F)l(ailure")326 +2420 y Fi({)25 b Fo(3)16 b(to)h(indicate)e(a)i(\\Name)e(Error")326 +2531 y Fi({)25 b Fo(4)16 b(to)h(indicate)e(that)i(the)f(requested)f(feature)h +(is)g(\\Not)h(Implem)o(en)n(ted")p eop +%%Page: 16 25 +24 bop 1901 -100 a Fo(16)326 75 y Fi({)25 b Fo(5)f(to)g(indicate)f(that)i +(the)e(name)g(serv)o(er)g(\\Refused")h(to)g(p)q(erform)f(the)h(sp)q +(eci\014ed)379 165 y(op)q(eration)326 276 y Fi({)h Fo(6)16 +b(-)h(15)g(are)f(reserv)o(ed)f(for)i(future)f(use)222 408 y +Fj(\017)24 b Fo(The)17 b(follo)o(wing)f(four)g(unsigned)h(16)g(bit)f(in)o +(teger)f(v)m(alues)i(sp)q(ecify)e(the)h(n)o(um)o(b)q(er)f(of)i(en)o(tries)271 +498 y(in)f(the)g(follo)o(wing)g(question,)g(answ)o(er,)g(authorit)o(y)l(,)f +(and)i(additional)g(sections.)223 642 y(The)i(con)o(ten)o(ts)g(of)g(these)g +(four)h(sections)f(serv)o(e)f(di\013eren)o(t)g(purp)q(oses.)32 +b(The)19 b(order)g(of)h(these)149 733 y(section)f(is)g(alw)o(a)o(ys)g(the)g +(same.)30 b(Some)18 b(of)h(the)g(sections)g(can)h(b)q(e)f(empt)o(y)e(in)i(a)g +(DNS)h(message.)149 823 y(The)d(format)e(of)i(the)f(answ)o(er,)g(authorit)o +(y)g(and)h(additional)f(section)g(is)g(the)g(same.)223 913 +y(The)e(question)g(section)g(carries)g(query)g(name,)f(query)h(t)o(yp)q(e)g +(and)h(query)f(class.)21 b(V)l(alid)13 b(query)149 1004 y(t)o(yp)q(es)g(are)g +(all)f(the)g(co)q(des)h(for)g(resource)f(record)h(t)o(yp)q(es,)g(whic)o(h)f +(w)o(e)g(will)f(explain)h(in)g(the)h(follo)o(wing)149 1094 +y(Section)h(2.4.3,)h(and)g(some)f(more)f(general)h(ones)h(for)g(zone)g +(transfer,)f(mail)f(handling)i(tasks,)g(and)149 1184 y(wild{carding.)223 +1274 y(The)h(follo)o(wing)g(class)g(mnemonics)d(and)k(v)m(alues)g(are)f +(curren)o(tly)e(de\014ned:)222 1406 y Fj(\017)24 b Fo(1)17 +b(for)g(\\IN")f({)g(In)o(ternet)222 1538 y Fj(\017)24 b Fo(2)17 +b(for)g(\\CS")g({)g(CSNET)222 1670 y Fj(\017)24 b Fo(3)17 b(for)g(\\CH")f({)h +(CHA)o(OS)222 1802 y Fj(\017)24 b Fo(4)17 b(for)g(\\HS")f({)h(Hesio)q(d)222 +1933 y Fj(\017)24 b Fo(255)18 b(for)e(wild{carding)223 2065 +y(The)k(answ)o(er)h(section)f(carries)g(resource)g(records)h(that)g(directly) +d(answ)o(er)j(the)f(query)l(,)h(the)149 2155 y(authorit)o(y)g(section)f +(carries)g(resource)g(records)h(that)f(describ)q(e)g(other)h(authoritativ)o +(e)f(serv)o(ers,)149 2246 y(and)g(the)e(additional)h(section)g(carries)f +(resource)g(records)h(that)g(are)g(not)g(explicitly)d(requested)149 +2336 y(but)h(migh)o(t)d(b)q(e)j(helpful)e(in)h(using)h(the)f(resource)g +(records)g(in)g(the)g(other)g(sections.)223 2426 y(The)k(authoritativ)o(e)h +(section)f(con)o(tains)h(name)f(serv)o(er)f(data)j(in)e(the)h(follo)o(wing)f +(case:)31 b(if)20 b(a)149 2517 y(name)14 b(serv)o(er)g(tries)g(to)h(resolv)o +(e)f(a)h(name)e(and)j(he)e(kno)o(ws)h(of)g(an)h(authoritativ)o(e)e(name)f +(serv)o(er)h(for)149 2607 y(the)h(domain)g(in)g(whic)o(h)f(the)h(name)f(lies) +g(that)i(has)g(to)f(b)q(e)g(resolv)o(ed,)f(he)h(puts)h(the)f(name)f(serv)o +(er's)p eop +%%Page: 17 26 +25 bop 1901 -100 a Fo(17)149 75 y(name)13 b(in)o(to)h(the)f(authorit)o(y)h +(section)g(of)g(the)f(reply)l(.)20 b(This)14 b(is)g(the)f(approac)o(h)i(in)e +(the)h(DNS)g(to)g(refer)149 165 y(clien)o(ts)h(to)i(others)f(serv)o(ers)g(in) +g(the)g(not)g(recursiv)o(e)f(mo)q(de.)223 255 y(The)g(additional)g(section)g +(pla)o(ys)g(an)g(imp)q(ortan)o(t)g(role)f(in)h(the)g(same)f(case.)21 +b(If)15 b(a)h(name)e(serv)o(er)149 346 y(refers)19 b(a)h(resolv)o(er)e(to)i +(another)g(name)e(serv)o(er,)g(he)h(b)q(etter)g(also)h(pro)o(vides)f(the)g +(address)h(of)g(the)149 436 y(other)f(name)e(serv)o(er,)h(b)q(ecause)h(that)g +(is)f(the)g(next)h(information)e(the)h(resolv)o(er)g(needs)g(in)g(order)149 +526 y(to)f(pro)q(ceed)e(with)h(his)f(queries.)20 b(Another)c(reason)g(to)g +(ha)o(v)o(e)f(the)h(additional)f(section)h(is)f(to)h(ha)o(v)o(e)149 +616 y(space)j(for)f(extra,)g(not)g(requested)f(information.)26 +b(If)17 b(a)i(resolv)o(er)e(receiv)o(es)f(additional)i(records,)149 +707 y(and)25 b(cac)o(hes)e(them,)h(he)g(migh)o(t)e(b)q(e)i(able)g(to)g(use)g +(them)e(later.)44 b(That)25 b(w)o(ould)f(result)f(in)h(an)149 +797 y(increased)14 b(p)q(erformance)f(of)h(the)g(system,)e(b)q(ecause)i(the)g +(resolution)g(of)g(data)h(that)f(is)g(already)g(in)149 887 +y(the)k(lo)q(cal)g(cac)o(he)g(is)g(considerably)f(more)g(e\016cien)o(t)f +(than)j(a)f(remote)f(resolution)h(that)h(requires)149 978 y(net)o(w)o(ork)d +(tra\016c.)223 1068 y(These)g(three)f(t)o(yp)q(es)h(of)h(DNS)f(message)g +(sections)g(share)g(the)g(same)g(format.)k(They)c(ha)o(v)o(e:)222 +1182 y Fj(\017)24 b Fo(a)17 b(name)222 1306 y Fj(\017)24 b +Fo(a)17 b(t)o(yp)q(e)f(as)h(in)f(a)g(query)222 1430 y Fj(\017)24 +b Fo(a)17 b(class)f(as)h(in)f(a)h(query)222 1555 y Fj(\017)24 +b Fo(a)17 b(32)g(bit)f(time)e(to)j(liv)o(e)d(\014eld)i(giv)o(en)f(in)h +(seconds)h(\(TTL\))222 1679 y Fj(\017)24 b Fo(an)15 b(unsigned)g(16)g(bit)f +(in)o(teger)g(that)h(sp)q(eci\014es)f(the)g(length)g(of)h(the)g(RD)o(A)l(T)l +(A)e(\014eld)h(in)g(b)o(ytes)222 1803 y Fj(\017)24 b Fo(a)17 +b(v)m(ariable)f(length)g(string)g(of)h(b)o(ytes)f(that)g(describ)q(es)g(the)g +(resource.)149 1967 y(2.4.3)49 b(Resource)16 b(Records)223 +2089 y(Data)g(that)h(is)e(asso)q(ciated)i(with)f(the)g(no)q(des)g(and)h(lea)o +(v)o(es)d(of)i(this)g(tree)f(is)h(exc)o(hanged)f(in)h(the)149 +2180 y(RD)o(A)l(T)l(A)f(p)q(ortion)i(of)g(the)e(last)h(three)g(sections)g(in) +f(a)i(DNS)e(message.)21 b(These)16 b(resource)f(records)149 +2270 y(are)i(tagged)g(according)g(to)f(the)g(t)o(yp)q(e)g(of)h(data)g(they)f +(con)o(tain.)21 b(W)l(e)16 b(men)o(tion)f(only)h(those)h(t)o(yp)q(es)149 +2360 y(that)h(pro)o(vide)f(necessary)g(information)g(for)h(understanding)g +(this)f(thesis.)25 b(A)17 b(complete)e(list)i(of)149 2451 y(t)o(yp)q(es)f +(and)h(classes)g(can)f(b)q(e)g(found)h(in)f(RF)o(C)g(1035)i(\([Mo)q(c87b]\).) +222 2560 y Fj(\017)24 b Fo(an)16 b(\\A")f(record)g(con)o(tains)f(a)i(host)f +(address;)h(a)f(32-bit)h(In)o(ternet)d(address)j(when)f(the)f(class)271 +2650 y(is)i(\\IN")p eop +%%Page: 18 27 +26 bop 1901 -100 a Fo(18)222 75 y Fj(\017)24 b Fo(an)18 b(\\NS")f(record)f +(sp)q(eci\014es)g(a)h(host)h(whic)o(h)e(should)h(b)q(e)g(authoritativ)o(e)f +(for)h(the)f(sp)q(eci\014ed)271 165 y(class)h(and)g(domain)222 +294 y Fj(\017)24 b Fo(an)18 b(\\SO)o(A")g(record)f(is)h(the)f(\014rst)h(en)o +(try)e(in)i(eac)o(h)f(of)h(the)f(database)i(\014les)e(and)h(sp)q(eci\014es)f +(a)271 385 y(serv)o(er)f(to)g(b)q(e)h(the)f(authoritativ)o(e)f(source)i(of)f +(information)f(within)h(the)g(domain)222 514 y Fj(\017)24 b +Fo(a)e(\\PTR")h(record)f(pro)o(vides)f(a)h(p)q(oin)o(ter)f(to)i(another)f(lo) +q(cation)g(in)f(the)h(domain)f(name)271 604 y(space)222 734 +y Fj(\017)j Fo(an)d(\\HINF)o(O")d(record)i(iden)o(ti\014es)e(the)h(CPU)h(t)o +(yp)q(e)f(and)h(op)q(erating)h(system)d(t)o(yp)q(e)h(used)271 +824 y(b)o(y)d(a)h(host)222 954 y Fj(\017)24 b Fo(a)14 b(\\CNAME")g(record)f +(sp)q(eci\014es)h(the)f(canonical)g(or)h(primary)e(name)h(for)h(the)f(o)o +(wner)h({)g(the)271 1044 y(o)o(wner)j(is)f(an)g(alias)222 1173 +y Fj(\017)24 b Fo(a)17 b(\\MX")g(record)g(sp)q(eci\014es)f(a)h(host)g +(willing)f(to)h(act)g(as)g(a)g(mail)e(exc)o(hange)h(for)h(the)f(o)o(wner)271 +1264 y(name)f(and)i(a)g(preference)e(giv)o(en)g(among)h(other)g(resource)g +(records)h(at)f(the)g(same)g(o)o(wner)222 1393 y Fj(\017)24 +b Fo(an)18 b(\\X25")h(record)e(con)o(tains)h(a)f(c)o(haracter)g(string)h +(whic)o(h)f(iden)o(ti\014es)f(a)i(public)e(switc)o(hed)271 +1483 y(data)h(net)o(w)o(ork)f(address)222 1613 y Fj(\017)24 +b Fo(an)14 b(\\ISDN")g(record)f(con)o(tains)g(a)h(c)o(haracter)e(string)i +(whic)o(h)e(iden)o(ti\014es)g(an)i(ISDN)1756 1595 y Fm(7)1788 +1613 y Fo(n)o(um)o(b)q(er)271 1703 y(of)j(the)f(o)o(wner)g(and)h(the)f(DDI)g +(\(Direct)g(Dial)g(In\),)f(if)h(an)o(y)149 1899 y(2.4.4)49 +b(Name)15 b(Serv)o(ers)223 2021 y(The)k(whole)h(database)h(is)f(divided)f(in) +o(to)g(zones)h(that)g(are)g(distributed)f(among)h(the)g(name)149 +2111 y(serv)o(ers.)34 b(The)20 b(essen)o(tial)g(task)g(of)h(a)g(name)e(serv)o +(er)h(is)g(to)h(answ)o(er)g(queries)e(using)i(data)h(in)e(its)149 +2202 y(zone.)38 b(T)l(o)23 b(ensure)e(a)h(higher)g(degree)f(of)i(reliabilit)o +(y)c(of)j(the)f(system,)h(the)f(de\014nition)h(of)g(the)149 +2292 y(Domain)17 b(Name)f(System)g(requires)g(that)i(at)g(least)f(t)o(w)o(o)h +(name)e(serv)o(ers)h(con)o(tain)g(authoritativ)o(e)149 2382 +y(data)23 b(for)f(a)g(giv)o(en)f(zone.)37 b(Some)20 b(sites)i(run)g(more)e +(than)i(t)o(w)o(o)g(name)e(serv)o(ers:)31 b(one)22 b(of)g(them)149 +2473 y(usually)d(outside)h(of)f(the)h(a\013ected)f(net)o(w)o(ork)g(to)g +(guaran)o(tee)h(name)e(service)g(if)h(the)g(net)o(w)o(ork)g(is)149 +2563 y(unreac)o(hable)12 b(for)f(some)g(reason.)21 b(The)11 +b(main)g(name)f(serv)o(er)h(is)g(called)g(the)g(primary)f(name)h(serv)o(er,)p +149 2604 720 2 v 206 2635 a Fl(7)224 2650 y Fk(In)o(tegrated)k(Services)g +(Digital)d(Net)o(w)o(ork)p eop +%%Page: 19 28 +27 bop 1901 -100 a Fo(19)731 101 y(T)l(able)16 b(2.1)33 b(Subset)16 +b(of)h(QTYPEs)452 232 y(QTYPE)p 662 259 2 91 v 60 w(v)m(alue)p +821 259 V 49 w(meaning)p 427 261 1246 2 v 452 324 a(A)p 662 +351 2 91 v 199 w(1)p 821 351 V 135 w(a)g(host)g(address)452 +414 y(NS)p 662 441 V 172 w(2)p 821 441 V 135 w(an)g(authoritativ)o(e)f(name)f +(serv)o(er)452 505 y(SO)o(A)p 662 532 V 135 w(6)p 821 532 V +135 w(start)i(of)f(authorit)o(y)452 595 y(PTR)p 662 622 V 132 +w(12)p 821 622 V 111 w(a)h(domain)e(name)g(p)q(oin)o(ter)452 +685 y(HINF)o(O)p 662 712 V 75 w(13)p 821 712 V 111 w(host)i(information)e +(CPU)i(and)f(OS)452 775 y(CNAME)p 662 802 V 49 w(14)p 821 802 +V 111 w(canonical)g(name)f(\(alias\))452 866 y(MX)p 662 893 +V 154 w(15)p 821 893 V 111 w(mail)g(exc)o(hange)452 956 y(X25)p +662 983 V 151 w(19)p 821 983 V 111 w(public)g(switc)o(hed)h(data)h(net)o(w)o +(ork)f(address)452 1046 y(ISDN)p 662 1073 V 117 w(20)p 821 +1073 V 111 w(in)o(tegrated)g(services)f(digital)h(net)o(w)o(ork)149 +1302 y(and)j(the)g(bac)o(kup)f(serv)o(ers)g(are)g(called)f(secondary)i(name)e +(serv)o(ers.)27 b(Secondary)19 b(authoritativ)o(e)149 1392 +y(name)d(serv)o(ers)g(up)q(date)i(the)f(data)h(base)f(for)g(their)f(zone)h(p) +q(erio)q(dically)f(with)h(data)h(p)q(olled)f(from)149 1482 +y(their)g(primary)e(serv)o(ers.)22 b(Primary)16 b(name)f(serv)o(ers)h(load)i +(the)e(database)j(\014les)d(pro)o(vided)g(b)o(y)h(the)149 1573 +y(zone)f(administrator)e(and)i(main)o(tain)e(a)i(cac)o(he)f(of)g(data)i(that) +f(w)o(as)g(acquired)e(through)j(resource)149 1663 y(records.)39 +b(Serv)o(ers)22 b(w)o(an)o(t)g(to)g(adapt)i(dynamically)19 +b(to)k(c)o(hanges)f(in)g(the)g(setup)g(of)h(the)f(name)149 +1753 y(space)f(of)g(other)g(authorities.)35 b(Therefore,)21 +b(eac)o(h)f(resource)h(record)f(con)o(tains)h(a)g(time)e(to)i(liv)o(e)149 +1843 y(\014eld)16 b(whic)o(h)g(ensures)g(that)h(name)e(serv)o(ers)g(do)i(not) +g(cac)o(he)e(data)i(without)g(time)d(b)q(ound.)223 1934 y(The)22 +b(actual)g(algorithm)f(name)g(serv)o(ers)g(use)h(dep)q(ends)h(on)f(the)g(lo)q +(cal)g(op)q(erating)h(system)149 2024 y(and)c(data)g(structures)f(used)g(to)g +(store)g(resource)g(records.)26 b(A)18 b(basic)g(outline)f(can)h(b)q(e)g +(found)h(in)149 2114 y([Mo)q(c87a)q(,)d(section)g(4.3.2])g(and)h(in)f +(section)g(2.9.2)g(of)h(this)f(thesis.)149 2274 y(2.4.5)49 +b(Resolv)o(ers)223 2397 y(The)16 b(in)o(terface)f(b)q(et)o(w)o(een)h(the)g +(Domain)g(Name)f(System)g(and)j(user)e(programs)h(is)f(the)h(name)149 +2487 y(resolv)o(er.)29 b(In)19 b(the)g(simplest)e(case,)i(a)g(resolv)o(er)f +(receiv)o(es)f(a)j(request)e(from)g(a)i(user)f(program)g(in)149 +2577 y(the)c(form)f(of)h(a)h(system)d(call)h(or)i(subroutine)f(call)f(and)i +(returns)f(the)f(desired)h(information.)k(The)p eop +%%Page: 20 29 +28 bop 1901 -100 a Fo(20)149 75 y(resolv)o(er)12 b(is)g(lo)q(cated)h(on)g +(the)g(same)e(mac)o(hine)g(as)i(the)f(user)h(program,)g(but)f(con)o(tacts)h +(one)g(or)g(more)149 165 y(name)19 b(serv)o(ers)h(on)h(\(usually\))e(remote)g +(mac)o(hines)f(if)i(the)g(requested)f(data)j(is)e(not)g(obtainable)149 +255 y(from)c(the)g(lo)q(cal)g(cac)o(he.)223 346 y(The)j(t)o(ypical)g(resolv)o +(er{clien)o(t)e(in)o(terface)h(has)i(a)g(triple)f(functionalit)o(y:)27 +b(host)20 b(name)f(to)h(IP)149 436 y(address)j(translation,)g(IP)e(address)h +(to)g(host)g(name)f(translation,)i(and)f(a)g(lo)q(okup)g(of)g(general)149 +526 y(information)f(sp)q(ecifying)h(query)f(name,)h(t)o(yp)q(e,)g(and)h +(class.)39 b(The)22 b(follo)o(wing)f(results)h(can)g(b)q(e)149 +616 y(obtained)e(after)e(the)h(resolv)o(er)e(p)q(erformed)h(the)h(indicated)f +(function:)26 b(the)18 b(data)i(requested,)e(a)149 707 y(name)e(error)g(in)g +(case)g(the)g(referenced)f(name)g(do)q(es)i(not)f(exist,)f(or)i(a)g(data)g +(not)f(found)h(error.)223 797 y(T)l(o)i(obtain)f(higher)h(e\016ciency)l(,)d +(it)i(is)g(reasonable)h(to)f(ha)o(v)o(e)g(all)g(resolv)o(ers)f(on)i(one)g +(mac)o(hine)149 887 y(share)i(their)f(cac)o(he.)32 b(An)20 +b(algorithm)g(outline)f(for)i(the)f(resolv)o(er)f(can)i(b)q(e)f(found)h(in)f +([Mo)q(c87a)q(,)149 978 y(section)c(5.3.3])g(and)h(in)f(section)g(2.9.3)g(of) +h(this)f(thesis.)149 1143 y(2.5)50 b(F)l(orw)o(ard)16 b(and)h(In)o(v)o(erse)e +(Mapping)h(T)l(ree)223 1283 y(The)d(Domain)f(Name)f(Space)i(consists)h(of)f +(a)h(hierarc)o(h)o(y)d(of)j(domain)e(names.)19 b(As)13 b(the)g(decimal)149 +1373 y(n)o(um)o(b)q(ers)j(in)h(the)g(dotted)h(quad)f(notation)h(for)g(IP)f +(addresses)h(can)f(b)q(e)h(view)o(ed)e(as)i(names,)e(it)h(is)149 +1463 y(only)j(one)f(step)h(to)g(construct)f(a)h(tree)f(that)h(consists)g(of)g +(these)f(n)o(um)o(b)q(ers)f(as)i(domain)f(names.)149 1553 y(This)g(in)o(v)o +(erse)e(mapping)g(tree)h(is)g(moun)o(ted)f(on)i(the)f(domain)g(in-addr.arpa.) +28 b(The)19 b(IP)f(address)149 1644 y(128.46.152.78)24 b(for)d(zo)q +(o.ecn.purdue.edu)e(has)j(the)e(corresp)q(onding)i(name)d(78.152.46.128.in-) +149 1734 y(addr.arpa)f(whic)o(h)d(maps)h(bac)o(k)g(to)g(zo)q +(o.ecn.purdue.edu)f(\(see)h(Figure)g(2.4\).)223 1824 y(The)j(reason)h(for)f +(the)g(n)o(um)o(b)q(ers)f(of)h(the)g(IP)g(address)h(app)q(earing)g(in)f(rev)o +(erse)f(order)h(in)g(the)149 1915 y(rev)o(erse)d(mapping)g(tree)g(is)g(the)h +(follo)o(wing:)22 b(Domain)16 b(names)f(read)i(from)f(left)g(to)h(righ)o(t)f +(get)h(less)149 2005 y(sp)q(eci\014c,)12 b(whereas)h(IP)f(addresses)h(get)f +(more)f(sp)q(eci\014c)h(from)f(left)g(to)i(righ)o(t)f(\(see)f(Figure)h +(2.5\).)20 b(The)149 2095 y(task)f(of)g(delegating)g(authorit)o(y)f(for)h +(in-addr.arpa)h(domains)e(to)h(zone)f(administrators)g(w)o(ould)149 +2185 y(b)q(e)f(imp)q(ossible)d(if)i(the)g(en)o(tries)f(app)q(eared)i(in)f +(the)g(original)g(order.)223 2276 y(In)h(case)g(someone)g(w)o(an)o(ted)g(to)h +(index)e(an)i(arbitrary)g(piece)e(of)h(data)i(in)e(the)g(domain)f(space)149 +2366 y(\(something)j(aside)h(from)f(IP)h(addresses)g(or)g(host)h(names\),)e +(an)i(additional)f(sub)q(domain)g(suc)o(h)149 2456 y(as)g(the)f(in-addr.arpa) +h(domain)f(is)f(necessary)l(.)30 b(A)19 b(so)h(called)e(in)o(v)o(erse)f(lo)q +(okup)j(\(an)g(exhaustiv)o(e)149 2547 y(searc)o(h)c(of)g(the)f(whole)h +(domain)f(name)f(space\),)i(is)f(also)h(p)q(ossible,)g(but)g(not)g(feasible)e +(for)i(regular)149 2637 y(usage.)21 b(An)o(y)13 b(one)g(name)f(serv)o(er)g +(only)h(kno)o(ws)g(ab)q(out)h(part)g(of)f(the)g(o)o(v)o(erall)f(domain)g +(name)g(space.)p eop +%%Page: 21 30 +29 bop 1901 -100 a Fo(21)524 979 y @beginspecial 0 @llx 0 @lly +261 @urx 212 @ury 2610 @rwi @setspecial +%%BeginDocument: pictures/rev_tree.ps +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/l {lineto} bind def +/m {moveto} bind def +/s {stroke} bind def +/n {newpath} bind def +/gs {gsave} bind def +/gr {grestore} bind def +/clp {closepath} bind def +/graycol {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul +4 -2 roll mul setrgbcolor} bind def +/col-1 {} def +/col0 {0 0 0 setrgbcolor} bind def +/col1 {0 0 1 setrgbcolor} bind def +/col2 {0 1 0 setrgbcolor} bind def +/col3 {0 1 1 setrgbcolor} bind def +/col4 {1 0 0 setrgbcolor} bind def +/col5 {1 0 1 setrgbcolor} bind def +/col6 {1 1 0 setrgbcolor} bind def +/col7 {1 1 1 setrgbcolor} bind def + end +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def + +$F2psBegin +0 setlinecap 0 setlinejoin +-4.0 216.0 translate 0.900 -0.900 scale +0.500 setlinewidth +n 194 64 m 254 84 l gs col-1 s gr +n 194 64 m 244 84 l gs col-1 s gr +n 194 64 m 234 84 l gs col-1 s gr +n 194 64 m 224 84 l gs col-1 s gr +n 194 64 m 214 84 l gs col-1 s gr +n 194 64 m 204 84 l gs col-1 s gr +n 194 64 m 134 84 l gs col-1 s gr +n 194 64 m 144 84 l gs col-1 s gr +n 194 64 m 154 84 l gs col-1 s gr +n 194 64 m 164 84 l gs col-1 s gr +n 194 64 m 174 84 l gs col-1 s gr +n 194 64 m 184 84 l gs col-1 s gr +n 194 64 m 194 84 l gs col-1 s gr +n 194 104 m 254 124 l gs col-1 s gr +n 194 104 m 244 124 l gs col-1 s gr +n 194 104 m 234 124 l gs col-1 s gr +n 194 104 m 224 124 l gs col-1 s gr +n 194 104 m 214 124 l gs col-1 s gr +n 194 104 m 204 124 l gs col-1 s gr +n 194 104 m 134 124 l gs col-1 s gr +n 194 104 m 144 124 l gs col-1 s gr +n 194 104 m 154 124 l gs col-1 s gr +n 194 104 m 164 124 l gs col-1 s gr +n 194 104 m 174 124 l gs col-1 s gr +n 194 104 m 184 124 l gs col-1 s gr +n 194 104 m 194 124 l gs col-1 s gr +1.000 setlinewidth +n 194 104 m 114 144 l gs col-1 s gr +0.500 setlinewidth +n 114 144 m 174 164 l gs col-1 s gr +n 114 144 m 164 164 l gs col-1 s gr +n 114 144 m 154 164 l gs col-1 s gr +n 114 144 m 144 164 l gs col-1 s gr +n 114 144 m 134 164 l gs col-1 s gr +n 114 144 m 124 164 l gs col-1 s gr +n 114 144 m 54 164 l gs col-1 s gr +n 114 144 m 64 164 l gs col-1 s gr +n 114 144 m 74 164 l gs col-1 s gr +n 114 144 m 84 164 l gs col-1 s gr +n 114 144 m 94 164 l gs col-1 s gr +n 114 144 m 104 164 l gs col-1 s gr +n 114 144 m 114 164 l gs col-1 s gr +1.000 setlinewidth +n 114 144 m 154 184 l gs col-1 s gr +0.500 setlinewidth +n 154 184 m 214 204 l gs col-1 s gr +n 154 184 m 204 204 l gs col-1 s gr +n 154 184 m 194 204 l gs col-1 s gr +n 154 184 m 184 204 l gs col-1 s gr +n 154 184 m 174 204 l gs col-1 s gr +n 154 184 m 164 204 l gs col-1 s gr +n 154 184 m 94 204 l gs col-1 s gr +n 154 184 m 104 204 l gs col-1 s gr +n 154 184 m 114 204 l gs col-1 s gr +n 154 184 m 124 204 l gs col-1 s gr +n 154 184 m 134 204 l gs col-1 s gr +n 154 184 m 144 204 l gs col-1 s gr +n 154 184 m 154 204 l gs col-1 s gr +1.000 setlinewidth +n 154 184 m 114 224 l gs col-1 s gr +n 194 64 m 194 104 l gs col-1 s gr +0.500 setlinewidth + 1 setlinecap [1 3.000000] 3.000000 setdash +n 294 44 m 294 54 l gs col-1 s gr + [] 0 setdash 0 setlinecap +n 94 4 m 194 64 l gs col-1 s gr +n 94 4 m 94 44 l gs col-1 s gr +n 94 4 m 39 39 l gs col-1 s gr + 1 setlinecap [1 3.000000] 3.000000 setdash +n 39 39 m 4 59 l gs col-1 s gr + [] 0 setdash 0 setlinecap + 1 setlinecap [1 3.000000] 3.000000 setdash +n 94 44 m 94 59 l gs col-1 s gr + [] 0 setdash 0 setlinecap +/Times-Bold findfont 12.00 scalefont setfont +199 99 m +gs 1 -1 scale (128) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +154 179 m +gs 1 -1 scale (152) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +134 219 m +gs 1 -1 scale (78) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +139 144 m +gs 1 -1 scale (46) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +64 239 m +gs 1 -1 scale (zoo.ecn.purdue.edu) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +69 54 m +gs 1 -1 scale (edu) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +189 54 m +gs 1 -1 scale (in-addr.arpa) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +29 54 m +gs 1 -1 scale (ca) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +139 19 m +gs 1 -1 scale (IP address 128.46.152.78) col-1 show gr +$F2psEnd +%%EndDocument + @endspecial 657 1224 a(Figure)16 b(2.4)32 b(The)17 b(in-addr.arpa)g(domain) +787 1645 y @beginspecial 0 @llx 0 @lly 126 @urx 65 @ury 1260 +@rwi @setspecial +%%BeginDocument: pictures/nameaddr.ps +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/l {lineto} bind def +/m {moveto} bind def +/s {stroke} bind def +/n {newpath} bind def +/gs {gsave} bind def +/gr {grestore} bind def +/clp {closepath} bind def +/graycol {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul +4 -2 roll mul setrgbcolor} bind def +/col-1 {} def +/col0 {0 0 0 setrgbcolor} bind def +/col1 {0 0 1 setrgbcolor} bind def +/col2 {0 1 0 setrgbcolor} bind def +/col3 {0 1 1 setrgbcolor} bind def +/col4 {1 0 0 setrgbcolor} bind def +/col5 {1 0 1 setrgbcolor} bind def +/col6 {1 1 0 setrgbcolor} bind def +/col7 {1 1 1 setrgbcolor} bind def + end +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def + +$F2psBegin +0 setlinecap 0 setlinejoin +0.0 72.0 translate 0.900 -0.900 scale +0.500 setlinewidth +n 139 24 m -1 24 l gs col-1 s gr +n 7.000 26.000 m -1.000 24.000 l 7.000 22.000 l gs 2 setlinejoin col-1 s gr +n -1 64 m 139 64 l gs col-1 s gr +n 131.000 62.000 m 139.000 64.000 l 131.000 66.000 l gs 2 setlinejoin col-1 s gr +/Times-Bold findfont 16.00 scalefont setfont +-1 44 m +gs 1 -1 scale 360.0 rotate (uther.cs.purdue.edu) col-1 show gr +/Times-Bold findfont 16.00 scalefont setfont +29 59 m +gs 1 -1 scale 360.0 rotate (128.10.4.20) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +-1 19 m +gs 1 -1 scale 360.0 rotate (more specific) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +74 79 m +gs 1 -1 scale 360.0 rotate (more specific) col-1 show gr +$F2psEnd +%%EndDocument + @endspecial 686 1890 a(Figure)e(2.5)33 b(Degree)16 b(of)h(sp)q +(eci\014cation)149 2074 y(Therefore,)d(an)g(in)o(v)o(erse)f(query)g(is)h(nev) +o(er)e(guaran)o(teed)j(to)f(return)g(an)g(answ)o(er.)21 b(If)13 +b(a)i(name)e(serv)o(er)149 2165 y(receiv)o(es)i(an)i(in)o(v)o(erse)e(query)g +(for)i(an)g(IP)g(address)g(it)f(kno)o(ws)h(nothing)g(ab)q(out,)g(it)f(cannot) +i(return)149 2255 y(an)f(answ)o(er;)f(but)h(it)f(also)h(do)q(es)g(not)g(kno)o +(w)f(if)g(the)g(IP)g(address)h(do)q(es)g(not)g(exist,)e(b)q(ecause)i(it)f +(has)149 2345 y(only)f(its)g(part)h(of)g(the)f(DNS)g(database)h(to)g(w)o(ork) +f(with.)21 b(Additionally)l(,)13 b(the)i(implem)o(en)o(tati)o(on)e(of)149 +2435 y(in)o(v)o(erse)i(queries)g(is)h(optional)h(according)f(to)h(the)f(DNS)g +(sp)q(eci\014cation.)p eop +%%Page: 22 31 +30 bop 1901 -100 a Fo(22)149 75 y(2.6)50 b(Recursion)15 b(and)i(Iteration)223 +214 y(When)i(there)g(is)h(the)f(need)g(for)h(resolving)f(a)h(name)f(in)g(the) +g(Domain)g(Name)f(System,)h(the)149 305 y(follo)o(wing)i(steps)f(are)h(tak)o +(en.)33 b(Who)q(ev)o(er)20 b(w)o(an)o(ts)h(to)g(resolv)o(e)e(a)i(name)e(in)o +(v)o(ok)o(es)g(a)i(lo)q(cal)f(clien)o(t)149 395 y(program,)13 +b(the)g(resolv)o(er.)19 b(The)12 b(resolv)o(er)g(form)o(ulates)f(a)i(query)f +(according)h(to)g(the)f(DNS)h(proto)q(col)149 485 y(and)k(con)o(tacts)g(its)f +(lo)q(cal)g(name)f(serv)o(er.)223 575 y(These)h(queries)f(can)h(come)f(in)h +(t)o(w)o(o)g(di\013eren)o(t)f(\015a)o(v)o(ors:)22 b(\\recursiv)o(e")15 +b(and)i(\\iterativ)o(e".)223 666 y(In)g(recursiv)o(e)f(resolution,)h(a)h +(resolv)o(er)e(sends)i(a)g(recursiv)o(e)e(query)g(to)i(a)g(name)f(serv)o(er.) +23 b(The)149 756 y(queried)13 b(name)f(serv)o(er)h(then)g(has)i(the)e +(obligation)h(to)g(resp)q(ond)h(with)e(the)g(answ)o(er)h(to)g(that)g(query) +149 846 y(or)20 b(with)g(an)g(error)f(co)q(de.)31 b(The)20 +b(name)e(serv)o(er)g(cannot)i(refer)f(the)g(resolv)o(er)g(to)h(another)g +(name)149 937 y(serv)o(er.)28 b(In)18 b(case)g(the)h(queried)e(name)g(serv)o +(er)h(is)g(not)h(authoritativ)o(e)f(for)h(the)f(requested)g(data,)149 +1027 y(it)k(has)g(to)g(resolv)o(e)f(the)g(query)g(again;)k(recursiv)o(e)19 +b(or)j(iterativ)o(e.)36 b(Curren)o(t)21 b(implem)o(en)o(tations)149 +1117 y(resolv)o(e)16 b(the)g(query)f(iterativ)o(e)f(and)j(do)g(not)g(pass)g +(the)f(w)o(ork)g(to)h(another)g(serv)o(er.)223 1207 y(Iterativ)o(e)9 +b(resolution)j(do)q(es)g(not)g(require)f(nearly)g(as)h(m)o(uc)o(h)d(w)o(ork)j +(on)g(the)f(part)h(of)g(the)g(queried)149 1298 y(name)k(serv)o(er.)23 +b(In)17 b(iterativ)o(e)e(resolution)i(a)g(name)f(serv)o(er)g(simply)f +(returns)i(the)g(b)q(est)h(answ)o(er)f(it)149 1388 y(is)h(capable)g(of)h +(giving.)26 b(No)18 b(additional)g(querying)f(of)i(other)f(name)f(serv)o(ers) +g(is)h(required.)25 b(The)149 1478 y(queried)14 b(name)f(serv)o(er)g(only)h +(consults)g(its)g(lo)q(cal)h(data)g(lo)q(oking)g(for)f(the)g(data)h +(requested.)20 b(If)14 b(the)149 1569 y(data)k(is)e(not)h(there,)f(it)g(mak)o +(es)f(its)h(b)q(est)h(attempt)e(to)i(giv)o(e)f(the)g(querier)f(data)j(that)f +(will)e(help)h(it)149 1659 y(con)o(tin)o(ue)i(the)g(resolution)g(pro)q(cess.) +28 b(This)19 b(data)g(usually)f(con)o(tains)h(names)e(and)i(addresses)g(of) +149 1749 y(name)d(serv)o(ers)f(that)i(are)f(\\closer")g(to)h(the)f(data)h +(its)f(seeking.)223 1839 y(After)10 b(p)q(ossibly)j(man)o(y)d(referrals,)h +(the)h(lo)q(cal)g(name)e(serv)o(er)h(queries)g(the)g(authoritativ)o(e)h(name) +149 1930 y(serv)o(er,)j(whic)o(h)h(returns)g(an)h(answ)o(er)f(or)h(an)g +(error)f(co)q(de.)149 2095 y(2.7)50 b(Filling)14 b(in)i(the)g(Blanks)223 +2235 y(This)h(section)g(con)o(tains)h(features)f(that)h(w)o(ere)e(brie\015y)h +(touc)o(hed)g(in)g(the)g(previous)g(sections,)149 2325 y(but)e(that)g(need)f +(further)g(explanations:)21 b(the)14 b(cen)o(tral)f(role)h(of)h(cac)o(hes)f +(for)h(system)e(p)q(erformance)149 2415 y(enhancemen)o(t,)h(the)i(role)f(of)h +(administrativ)o(e)e(authorities,)h(and)i(the)f(t)o(yp)q(es)f(of)i(errors)f +(that)g(can)149 2506 y(o)q(ccur)h(during)f(name)f(serv)o(er)h(op)q(eration.)p +eop +%%Page: 23 32 +31 bop 1901 -100 a Fo(23)149 75 y(2.7.1)49 b(Role)16 b(of)h(Cac)o(hes)223 +197 y(The)d(whole)h(resolution)f(pro)q(cess)h(ma)o(y)e(seem)g(con)o(v)o +(oluted)h(and)h(cum)o(b)q(ersome)d(compared)h(to)149 287 y(simple)h(seeks)h +(through)h(a)g(host)g(table)f(database.)22 b(Ho)o(w)o(ev)o(er,)14 +b(it)h(is)g(fast,)h(sp)q(eeded)f(up)g(consider-)149 378 y(ably)h(b)o(y)g(cac) +o(hing.)223 468 y(As)11 b(our)h(example)d(in)i(Section)g(2.8)h(sho)o(ws,)h +(name)d(serv)o(ers)h(ma)o(y)f(need)h(sev)o(eral)g(DNS)g(messages)149 +558 y(to)21 b(\014nd)f(the)f(answ)o(er)i(to)f(a)g(query)l(.)31 +b(During)21 b(successiv)o(e)d(resolution)i(attempts)f(name)f(serv)o(ers)149 +649 y(disco)o(v)o(er)f(information)g(ab)q(out)i(the)e(Domain)g(Name)f(Space.) +26 b(This)18 b(information)f(can)g(b)q(e)h(used)149 739 y(for)e(future)f +(resolutions.)21 b(If)15 b(a)g(name)f(serv)o(er)g(cac)o(hes)h(the)g(data,)h +(it)e(builds)h(up)h(a)f(data)h(base)g(that)149 829 y(helps)i(sp)q(eed)g(up)g +(the)f(pro)q(cessing)i(of)f(further)g(querying.)25 b(The)18 +b(next)f(time)f(a)i(resolv)o(er)e(queries)149 919 y(the)21 +b(name)e(serv)o(er)h(for)h(data)g(ab)q(out)h(a)f(domain)f(name)f(the)h(name)g +(serv)o(er)f(kno)o(ws)i(something)149 1010 y(ab)q(out,)16 b(the)d(pro)q(cess) +i(is)f(shortened)g(considerably)l(.)20 b(Ev)o(en)13 b(if)g(a)i(name)e(serv)o +(er)f(do)q(es)j(not)g(ha)o(v)o(e)e(the)149 1100 y(answ)o(er)f(to)f(the)g +(query)f(in)h(its)f(cac)o(he)h(it)f(migh)o(t)g(ha)o(v)o(e)g(learned)g(the)h +(iden)o(tities)e(of)i(the)g(authoritativ)o(e)149 1190 y(name)i(serv)o(ers)f +(for)i(the)f(zone)g(the)g(domain)g(name)f(is)h(in,)h(and)g(it)f(migh)o(t)e(b) +q(e)j(able)f(to)h(resolv)o(e)e(them)149 1281 y(directly)l(.)223 +1371 y(It)19 b(is)h(di\016cult)f(to)h(determine)d(the)j(optimal)f(time)e(to)k +(liv)o(e)d(v)m(alue)i(for)g(data)h(that)f(is)g(to)g(b)q(e)149 +1461 y(cac)o(hed.)i(There)16 b(is)h(a)g(trade-o\013)h(b)q(et)o(w)o(een)e +(enhanced)g(p)q(erformance)f(once)i(data)g(is)g(cac)o(hed)f(and)149 +1551 y(the)g(p)q(ossibilit)o(y)g(that)g(the)g(cac)o(hed)g(data)h(migh)o(t)e +(b)q(e)h(out)h(of)f(date)h(b)o(y)e(the)h(time)e(it)i(is)g(used.)149 +1711 y(2.7.2)49 b(Role)16 b(of)h(Authorities)223 1834 y(Manageabilit)o(y)f +(of)h(the)g(administration)f(of)h(the)g(Domain)g(Name)e(Space)i(is)g(an)g +(imp)q(ortan)o(t)149 1924 y(issue)g(b)q(ecause)g(of)g(the)g(large)f(n)o(um)o +(b)q(er)f(of)i(hosts)h(in)e(the)h(In)o(ternet.)k(The)c(k)o(ey)f(concept)g(to) +h(solv)o(e)149 2014 y(this)23 b(problem)f(is)h(the)g(delegation)f(of)i +(authorit)o(y)f(along)h(the)e(edges)i(of)f(the)g(Domain)f(Name)149 +2105 y(Space)d(tree.)27 b(Lo)q(cal)19 b(authorities)g(administer)d(their)i(o) +o(wn)h(zones.)28 b(They)18 b(k)o(eep)f(the)i(data)g(base)149 +2195 y(consisten)o(t)12 b(and)g(ha)o(v)o(e)f(autonomous)h(con)o(trol)g(of)g +(name)e(assignmen)o(ts.)19 b(This)12 b(delegation)g(sc)o(heme)149 +2285 y(tak)o(es)k(a)o(w)o(a)o(y)g(the)g(load)h(from)e(cen)o(tral)g +(authorities.)223 2376 y(It)e(is)h(imp)q(ortan)o(t)f(to)h(understand)h(that)g +(the)e(organizational)i(to)q(ol)g(of)f(delegation)g(of)g(author-)149 +2466 y(it)o(y)f(includes)g(the)g(resp)q(onsibilit)o(y)f(for)i(the)f +(delegated)g(en)o(tit)o(y)l(.)19 b(There)13 b(is)h(no)g(delegation)f(without) +149 2556 y(resp)q(onsibilit)o(y)l(.)p eop +%%Page: 24 33 +32 bop 1901 -100 a Fo(24)149 75 y(2.7.3)49 b(Occurrence)15 +b(of)i(Errors)223 197 y(Sev)o(eral)12 b(error)i(situations)g(can)g(o)q(ccur)g +(during)h(name)d(serv)o(er)h(and)h(resolv)o(er)f(op)q(eration.)21 +b(The)149 287 y(header)13 b(section)g(of)g(ev)o(ery)f(DNS)h(message)f(con)o +(tains)h(the)g(\014eld)g(\\R)o(CODE,")g(a)h(4)f(bit)g(\014eld)f(that)i(is)149 +378 y(part)h(of)f(a)h(resp)q(onse)g(\(see)f(section)f(2.4.2\).)21 +b(The)14 b(con)o(ten)o(ts)g(of)g(the)g(\\R)o(CODE")h(\014eld)f(determines)149 +468 y(whic)o(h)i(error)g(has)h(o)q(ccurred)f(while)g(pro)q(cessing)h(the)f +(query:)222 600 y Fj(\017)24 b Fo(if)16 b(a)h(name)e(serv)o(er)g(is)h(unable) +g(to)h(in)o(terpret)e(a)h(query)l(,)f(it)h(\015ags)h(a)g(\\F)l(ormat)f +(Error")222 732 y Fj(\017)24 b Fo(if)19 b(a)g(name)f(serv)o(er)g(is)h(unable) +g(to)h(pro)q(cess)f(a)h(query)e(b)q(ecause)i(of)f(a)h(problem)d(with)i(that) +271 822 y(serv)o(er,)c(it)h(\015ags)h(a)g(\\Serv)o(er)e(F)l(ailure")222 +954 y Fj(\017)24 b Fo(if)16 b(an)g(authoritativ)o(e)f(name)f(serv)o(er)h(for) +h(a)g(zone)g(determines)d(that)j(the)f(referenced)g(name)271 +1044 y(do)q(es)i(not)g(exist,)e(a)i(\\Name)e(Error")i(is)f(\015agged.)222 +1176 y Fj(\017)24 b Fo(if)f(a)h(serv)o(er)e(do)q(es)i(not)g(supp)q(ort)g(the) +f(requested)f(kind)h(of)h(query)l(,)f(it)g(returns)g(a)h(\\Not)271 +1266 y(Impleme)o(n)o(ted")13 b(error)222 1398 y Fj(\017)24 +b Fo(if)17 b(a)h(name)e(serv)o(er)g(do)q(es)i(not)f(w)o(an)o(t)h(to)f(pro)o +(vide)f(the)h(information)g(a)g(resolv)o(er)f(ask)o(ed)h(for)271 +1488 y(in)j(a)h(query)l(,)f(it)g(returns)g(the)g(\\Refused")h(co)q(de.)33 +b(This)20 b(is)g(one)h(example)d(of)j(the)f(serv)o(er)271 1578 +y(refusing)d(to)f(p)q(erform)f(a)i(sp)q(eci\014ed)f(op)q(eration)h(for)f(p)q +(olicy)g(reasons)149 1744 y(2.8)50 b(Example:)19 b(Name)c(Resolution)223 +1883 y(This)h(section)h(con)o(tains)f(a)h(simple)e(example)f(for)j(a)g(name)e +(resolution)i(using)g(a)g(mec)o(hanism)149 1974 y(based)e(on)f(the)f(clien)o +(t{serv)o(er)e(paradigm.)20 b(A)13 b(generic)g(resolution)g(example)f(is)h +(sho)o(wn)i(in)e(Figure)149 2064 y(2.6)k(with)f(a)h(short)g(explanation)f(of) +g(the)g(steps)h(in)f(table)g(2.2.)223 2154 y(A)10 b(resolv)o(er)g(forms)g(a)h +(query)g(of)g(some)f(kind)g(and)i(w)o(an)o(ts)f(to)g(retriev)o(e)e(the)i +(resp)q(onse)h(con)o(taining)149 2245 y(the)i(answ)o(er)g(to)g(its)f(query)g +(from)f(the)i(name)e(serv)o(er)h(A.)f(This)i(name)e(serv)o(er)h(A)g(could)g +(b)q(e)h(running)149 2335 y(on)21 b(the)f(same)f(host)i(with)e(the)h(resolv)o +(er)f(soft)o(w)o(are,)i(on)f(a)h(host)f(in)g(the)g(lo)q(cal)g(net)o(w)o(ork)f +(of)i(the)149 2425 y(resolv)o(er,)h(on)g(a)g(host)g(somewhere)e(in)h(the)h +(net,)g(or)g(on)g(one)f(of)h(the)f(hosts)i(serving)e(the)g(ro)q(ot)149 +2515 y(domains.)42 b(Assuming)22 b(that)i(A)f(do)q(es)h(not)g(kno)o(w)f(the)g +(requested)g(information,)h(it)e(tries)h(to)149 2606 y(retriev)o(e)16 +b(it)i(from)e(other)i(name)f(serv)o(ers.)25 b(The)18 b(selection)f(of)h(whic) +o(h)f(name)f(serv)o(ers)h(to)i(con)o(tact)p eop +%%Page: 25 34 +33 bop 1901 -100 a Fo(25)374 1345 y @beginspecial 0 @llx 0 +@lly 309 @urx 294 @ury 3090 @rwi @setspecial +%%BeginDocument: pictures/res_expl.ps +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/l {lineto} bind def +/m {moveto} bind def +/s {stroke} bind def +/n {newpath} bind def +/gs {gsave} bind def +/gr {grestore} bind def +/clp {closepath} bind def +/graycol {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul +4 -2 roll mul setrgbcolor} bind def +/col-1 {} def +/col0 {0 0 0 setrgbcolor} bind def +/col1 {0 0 1 setrgbcolor} bind def +/col2 {0 1 0 setrgbcolor} bind def +/col3 {0 1 1 setrgbcolor} bind def +/col4 {1 0 0 setrgbcolor} bind def +/col5 {1 0 1 setrgbcolor} bind def +/col6 {1 1 0 setrgbcolor} bind def +/col7 {1 1 1 setrgbcolor} bind def + /DrawEllipse { + /endangle exch def + /startangle exch def + /yrad exch def + /xrad exch def + /y exch def + /x exch def + /savematrix mtrx currentmatrix def + x y translate xrad yrad scale 0 0 1 startangle endangle arc + savematrix setmatrix + } def + + end +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def + +$F2psBegin +0 setlinecap 0 setlinejoin +-7.0 301.0 translate 0.900 -0.900 scale +1.000 setlinewidth +n 253.000 163.000 m 249.000 179.000 l 245.000 163.000 l gs 2 setlinejoin col-1 s gr + [6.000000] 0 setdash +n 179.000 179.000 70.000 180.000 0.000 arc +gs col-1 s gr + [] 0 setdash +n 39 179 32 32 0 360 DrawEllipse gs col-1 s gr +n 179 39 32 32 0 360 DrawEllipse gs col-1 s gr +n 179 179 32 32 0 360 DrawEllipse gs col-1 s gr +n 319 179 32 32 0 360 DrawEllipse gs col-1 s gr +n 149 184 m 69 184 l gs col-1 s gr +n 85.000 188.000 m 69.000 184.000 l 85.000 180.000 l gs 2 setlinejoin col-1 s gr +n 69 174 m 149 174 l gs col-1 s gr +n 133.000 170.000 m 149.000 174.000 l 133.000 178.000 l gs 2 setlinejoin col-1 s gr +n 209 174 m 289 174 l gs col-1 s gr +n 273.000 170.000 m 289.000 174.000 l 273.000 178.000 l gs 2 setlinejoin col-1 s gr +n 289 184 m 209 184 l gs col-1 s gr +n 225.000 188.000 m 209.000 184.000 l 225.000 180.000 l gs 2 setlinejoin col-1 s gr +n 174 284 m 174 209 l gs col-1 s gr +n 170.000 225.000 m 174.000 209.000 l 178.000 225.000 l gs 2 setlinejoin col-1 s gr +n 184 209 m 184 284 l gs col-1 s gr +n 188.000 268.000 m 184.000 284.000 l 180.000 268.000 l gs 2 setlinejoin col-1 s gr +n 174 149 m 174 69 l gs col-1 s gr +n 170.000 85.000 m 174.000 69.000 l 178.000 85.000 l gs 2 setlinejoin col-1 s gr +n 184 69 m 184 149 l gs col-1 s gr +n 188.000 133.000 m 184.000 149.000 l 180.000 133.000 l gs 2 setlinejoin col-1 s gr +n 146 284 m 139 284 139 327 7 arcto 4 {pop} repeat 139 334 212 334 7 arcto 4 {pop} repeat 219 334 219 291 7 arcto 4 {pop} repeat 219 284 146 284 7 arcto 4 {pop} repeat clp gs col-1 s gr +/Times-Bold findfont 12.00 scalefont setfont +174 169 m +gs 1 -1 scale (A) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +174 29 m +gs 1 -1 scale (C) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +314 169 m +gs 1 -1 scale (D) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +34 169 m +gs 1 -1 scale (B) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +24 199 m +gs 1 -1 scale (server) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +24 184 m +gs 1 -1 scale (name) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +164 199 m +gs 1 -1 scale (server) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +164 184 m +gs 1 -1 scale (name) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +304 199 m +gs 1 -1 scale (server) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +304 184 m +gs 1 -1 scale (name) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +164 59 m +gs 1 -1 scale (server) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +164 44 m +gs 1 -1 scale (name) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +154 314 m +gs 1 -1 scale (resolver) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +139 249 m +gs 1 -1 scale (query) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +189 249 m +gs 1 -1 scale (answer) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +89 169 m +gs 1 -1 scale (referral) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +144 104 m +gs 1 -1 scale (query) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +214 169 m +gs 1 -1 scale (query) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +189 104 m +gs 1 -1 scale (referral) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +99 199 m +gs 1 -1 scale (query) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +229 199 m +gs 1 -1 scale (answer) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +79 199 m +gs 1 -1 scale (2) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +134 169 m +gs 1 -1 scale (3) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +159 84 m +gs 1 -1 scale (4) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +274 169 m +gs 1 -1 scale (6) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +194 279 m +gs 1 -1 scale (8) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +194 144 m +gs 1 -1 scale (5) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +219 199 m +gs 1 -1 scale (7) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +159 224 m +gs 1 -1 scale (1) col-1 show gr +$F2psEnd +%%EndDocument + @endspecial 654 1590 a(Figure)16 b(2.6)33 b(Example)15 b(name)g(resolution) +149 1774 y(dep)q(ends)i(on)g(the)f(name)g(to)g(b)q(e)h(resolv)o(ed.)k(The)16 +b(decision)g(pro)q(cess)h(ab)q(out)h(this)e(c)o(hoice)f(is)h(giv)o(en)149 +1864 y(in)f(sections)f(2.9.2)h(and)g(2.9.3)g(where)g(w)o(e)f(explain)f(the)i +(algorithms)f(used)g(b)o(y)h(name)e(serv)o(ers)h(and)149 1954 +y(resolv)o(ers.)223 2045 y(The)f(con)o(tacted)g(name)g(serv)o(ers)g(return)g +(an)h(answ)o(er)g(to)g(the)f(query)g(to)h(the)g(requesting)f(name)149 +2135 y(serv)o(er,)f(or)i(they)e(return)h(a)g(referral)f(to)h(another)h(name)e +(serv)o(er)f(that)j(is)e(more)g(lik)o(ely)e(to)k(kno)o(w)f(the)149 +2225 y(answ)o(er.)27 b(W)l(e)17 b(neither)g(consider)h(the)f(o)q(ccurrence)g +(of)i(exceptions)e(or)h(errors)g(in)f(this)h(example,)149 2316 +y(nor)g(cac)o(hing)f(issues.)26 b(P)o(ossible)17 b(return)g(co)q(des)h(in)f +(resp)q(onses)i(are)e(giv)o(en)g(in)g(section)g(2.4.2)h(and)149 +2406 y(are)f(further)f(explained)f(in)h(section)g(2.7.3.)223 +2496 y(As)e(so)q(on)j(as)e(one)g(of)g(the)g(con)o(tacted)f(name)g(serv)o(ers) +g(returns)h(an)g(answ)o(er)h(to)f(A,)f(A)g(resp)q(onds)149 +2586 y(to)j(the)f(original)g(query)g(of)g(the)g(resolv)o(er)f(with)h(the)g +(retriev)o(ed)f(answ)o(er.)p eop +%%Page: 26 35 +34 bop 1901 -100 a Fo(26)574 101 y(T)l(able)17 b(2.2)32 b(Example)15 +b(steps)h(in)g(name)f(resolution)452 232 y(Step)p 571 259 2 +91 v 49 w(Action)p 427 261 1246 2 v 452 324 a(1)p 571 351 2 +91 v 120 w(Name)g(serv)o(er)g(A)h(receiv)o(es)e(a)j(query)e(from)g(the)h +(resolv)o(er)452 414 y(2)p 571 441 V 120 w(A)g(queries)f(B)452 +505 y(3)p 571 532 V 120 w(B)h(refers)g(A)g(to)g(other)h(name)e(serv)o(ers,)g +(incl.)20 b(C)452 595 y(4)p 571 622 V 120 w(A)c(queries)f(C)452 +685 y(5)p 571 712 V 120 w(C)i(refers)f(A)f(to)i(other)f(name)f(serv)o(ers,)g +(incl.)20 b(D)452 775 y(6)p 571 802 V 120 w(A)c(queries)f(D)452 +866 y(7)p 571 893 V 120 w(D)i(answ)o(ers)452 956 y(8)p 571 +983 V 120 w(D)g(returns)f(the)g(answ)o(er)h(to)f(the)g(resolv)o(er)149 +1211 y(2.9)50 b(The)16 b(Domain)f(Name)g(System)g(Proto)q(col)223 +1351 y(The)f(o\016cial)f(design)h(do)q(cumen)o(ts)f([Mo)q(c87a)q(])h(and)h +([Mo)q(c87b])f(state)g(and)h(describ)q(e)f(concepts)149 1441 +y(and)23 b(facilities,)d(implem)o(en)o(tati)o(on)g(and)i(sp)q(eci\014cation.) +36 b(In)22 b(the)f(follo)o(wing)g(sections,)h(w)o(e)g(will)149 +1532 y(discuss)c(topics)g(related)f(to)h(the)g(data)h(structures)e(and)i +(data)f(organization,)h(and)g(presen)o(t)e(the)149 1622 y(name)c(serv)o(er)g +(and)i(the)f(resolv)o(er)f(algorithm)g(on)h(a)h(fairly)e(high)h(lev)o(el.)19 +b(W)l(e)14 b(get)g(in)o(to)f(more)g(detail)149 1712 y(where)j(it)g(is)g +(necessary)g(to)h(examine)d(the)i(w)o(eak)g(p)q(oin)o(ts)g(of)h(the)f(proto)q +(col.)223 1802 y(The)11 b(data)g(structures)g(and)h(the)e(algorithms)h(are)g +(the)f(basis)i(for)f(the)g(analysis)g(of)g(the)g(proto)q(col)149 +1893 y(later)16 b(in)g(this)g(thesis.)149 2053 y(2.9.1)49 b(Data)18 +b(Structures)223 2175 y(Tw)o(o)f(principal)e(kinds)h(of)h(data)g(app)q(ear)h +(in)e(the)g(Domain)g(Name)f(System:)20 b(zone)d(data)g(and)149 +2265 y(cac)o(he)f(data.)223 2356 y(A)11 b(zone)i(con)o(tains)f(a)h(complete)d +(database)j(for)g(a)f(particular)g(pruned)h(subtree)f(of)g(the)g(domain)149 +2446 y(name)19 b(space.)32 b(This)20 b(data)h(can)f(b)q(e)g(authoritativ)o(e) +f(if)g(it)h(is)f(the)h(original)g(database)h(managed)149 2536 +y(for)16 b(this)g(particular)f(zone)h(b)o(y)f(a)h(primary)e(or)i(secondary)g +(name)f(serv)o(er.)20 b(Otherwise)15 b(it)g(is)g(non{)149 2627 +y(authoritativ)o(e)i(data.)24 b(Secondary)17 b(serv)o(ers)f(main)o(tain)f +(zone)i(data)h(as)f(copies)g(from)f(the)h(master)p eop +%%Page: 27 36 +35 bop 1901 -100 a Fo(27)149 75 y(\014les.)21 b(Name)13 b(serv)o(ers)g(c)o +(hec)o(k)g(p)q(erio)q(dically)h(for)h(c)o(hanges)g(\(for)g(a)g(c)o(hanged)f +(serial)g(n)o(um)o(b)q(er)f(in)i(the)149 165 y(SO)o(A)h(records\))g(and)h(up) +q(date)f(their)g(data)h(b)o(y)e(reading)i(the)f(master)f(\014les,)g(or)h(via) +g(zone)g(transfer)149 255 y(op)q(erations.)223 346 y(As)f(w)o(e)g(will)f +(describ)q(e)h(in)g(Section)g(2.3.2,)h(the)f(tec)o(hnology)g(of)h(cac)o(hing) +f(is)g(a)h(k)o(ey)f(concept)g(in)149 436 y(the)k(Domain)f(Name)f(System.)27 +b(The)19 b(cac)o(hed)f(data)i(usually)e(represen)o(ts)g(only)h(an)g +(incomplete)149 526 y(view)d(of)h(zone)g(information.)k(It)16 +b(impro)o(v)o(es)e(the)j(p)q(erformance)e(of)i(the)g(retriev)m(al)e(pro)q +(cess)i(when)149 616 y(non{lo)q(cal)e(data)f(is)f(rep)q(eatedly)g(accessed.) +20 b(Zone)13 b(data)i(is)e(ev)o(en)o(tually)e(discarded)i(b)o(y)g(a)h +(timeout)149 707 y(mec)o(hanism.)223 797 y(The)h(implem)o(en)n(tation)e(of)j +(the)f(Domain)f(Name)g(System)g(is)h(not)g(limited)e(to)i(a)h(certain)f(data) +149 887 y(structure,)i(but)g(is)f(free)g(to)h(c)o(ho)q(ose)h(an)o(y)e(in)o +(ternal)g(data)i(structure.)k(Ho)o(w)o(ev)o(er,)15 b(it)h(is)h(suggested)149 +978 y(b)o(y)e(the)g(standard)i(that)f(a)f(separate)h(instance)f(of)h(the)f +(data)h(structure)f(b)q(e)g(used)h(for)f(eac)o(h)g(zone,)149 +1068 y(a)20 b(data)g(structure)e(for)h(the)g(catalog,)h(and)f(one)h(for)f +(the)f(cac)o(hed)h(data.)30 b(It)18 b(is)h(imp)q(ortan)o(t)f(that)149 +1158 y(resolv)o(er)g(and)h(name)f(serv)o(er)f(can)i(concurren)o(tly)f(access) +g(the)h(same)e(cac)o(he)h(when)h(they)f(are)h(on)149 1248 y(the)d(same)g(mac) +o(hine.)j(In)d(Section)f(2.10.1)i(w)o(e)f(go)h(in)o(to)f(more)f(detail)g(on)i +(this)f(p)q(oin)o(t.)149 1408 y(2.9.2)49 b(Name)15 b(Serv)o(er)g(Algorithm) +223 1531 y(The)k(impleme)o(n)o(tation)e(of)j(the)g(name)e(serv)o(er)h +(algorithm,)g(whic)o(h)g(is)h(giv)o(en)e(in)i(Figure)f(2.7)149 +1621 y(dep)q(ends)g(on)g(the)f(lo)q(cal)g(op)q(erating)h(system)e(and)i(data) +g(structures)f(used)g(to)h(store)f(RRs.)27 b(The)149 1711 y(algorithms)14 +b(of)i(the)e(name)g(serv)o(er)g(and)h(the)g(resolv)o(er)e(assume)h(an)i +(organization)f(of)h(the)e(data)i(as)149 1802 y(describ)q(ed)g(in)g(the)g +(previous)g(section:)21 b(sev)o(eral)15 b(tree)h(structures,)f(one)i(for)f +(eac)o(h)g(zone.)223 1892 y(In)c(the)h(follo)o(wing)g(presen)o(tation)f(of)i +(the)f(algorithm)e(w)o(e)i(sta)o(y)g(close)g(to)g(the)g(outline)f(sp)q +(eci\014ed)149 1982 y(in)k([Mo)q(c87a)q(].)209 2127 y(1.)24 +b(Set)13 b(or)h(clear)e(the)h(RA)g(bit)g(in)g(the)g(resp)q(onse)h(dep)q +(ending)f(on)h(whether)f(the)g(name)f(serv)o(er)g(is)271 2217 +y(willing)f(to)g(pro)o(vide)g(recursiv)o(e)e(service.)18 b(If)11 +b(recursiv)o(e)f(service)g(is)h(a)o(v)m(ailable)f(and)i(requested)271 +2307 y(via)k(the)g(RD)h(bit)f(in)f(the)h(query)l(,)f(branc)o(h)i(to)f(step)h +(5,)f(otherwise)g(step)g(2.)209 2439 y(2.)24 b(Searc)o(h)e(the)g(a)o(v)m +(ailable)f(zones)i(for)f(the)g(zone)g(whic)o(h)g(is)f(the)h(nearest)h +(ancestor)f(to)h(the)271 2529 y(queried)15 b(name.)20 b(If)c(suc)o(h)g(a)h +(zone)f(is)g(found,)g(branc)o(h)h(to)f(step)h(3,)f(otherwise)g(step)g(4.)p +eop +%%Page: 28 37 +36 bop 1901 -100 a Fo(28)187 2020 y @beginspecial 0 @llx 0 +@lly 378 @urx 436 @ury 3780 @rwi @setspecial +%%BeginDocument: pictures/ns_alg.ps +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/l {lineto} bind def +/m {moveto} bind def +/s {stroke} bind def +/n {newpath} bind def +/gs {gsave} bind def +/gr {grestore} bind def +/clp {closepath} bind def +/graycol {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul +4 -2 roll mul setrgbcolor} bind def +/col-1 {} def +/col0 {0 0 0 setrgbcolor} bind def +/col1 {0 0 1 setrgbcolor} bind def +/col2 {0 1 0 setrgbcolor} bind def +/col3 {0 1 1 setrgbcolor} bind def +/col4 {1 0 0 setrgbcolor} bind def +/col5 {1 0 1 setrgbcolor} bind def +/col6 {1 1 0 setrgbcolor} bind def +/col7 {1 1 1 setrgbcolor} bind def + end +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def + +$F2psBegin +0 setlinecap 0 setlinejoin +-18.0 454.0 translate 0.900 -0.900 scale +0.500 setlinewidth +n 194 149 m 209 149 l gs col-1 s gr +n 201.000 147.000 m 209.000 149.000 l 201.000 151.000 l gs 2 setlinejoin col-1 s gr +1.000 setlinewidth +n 19 39 m 379 39 l gs col-1 s gr +n 19 79 m 379 79 l gs col-1 s gr +n 19 119 m 379 119 l gs col-1 s gr +n 39 359 m 39 139 l 379 139 l gs col-1 s gr +n 39 199 m 379 199 l gs col-1 s gr +n 39 259 m 379 259 l gs col-1 s gr +n 19 359 m 379 359 l gs col-1 s gr +n 19 419 m 379 419 l gs col-1 s gr +n 19 459 m 379 459 l gs col-1 s gr +n 19 504 m 19 19 l 379 19 l 379 504 l 19 504 l gs col-1 s gr +n 19 499 m 379 499 l gs col-1 s gr +0.500 setlinewidth +n 369 169 m 399 169 l 399 44 l 379 44 l gs col-1 s gr +n 387.000 46.000 m 379.000 44.000 l 387.000 42.000 l gs 2 setlinejoin col-1 s gr +n 289 69 m 419 69 l 419 424 l 379 424 l gs col-1 s gr +n 387.000 426.000 m 379.000 424.000 l 387.000 422.000 l gs 2 setlinejoin col-1 s gr +n 24 34 m 24 44 l gs col-1 s gr +n 26.000 36.000 m 24.000 44.000 l 22.000 36.000 l gs 2 setlinejoin col-1 s gr +n 24 74 m 24 84 l gs col-1 s gr +n 26.000 76.000 m 24.000 84.000 l 22.000 76.000 l gs 2 setlinejoin col-1 s gr +n 24 114 m 24 124 l gs col-1 s gr +n 26.000 116.000 m 24.000 124.000 l 22.000 116.000 l gs 2 setlinejoin col-1 s gr +n 24 354 m 24 364 l gs col-1 s gr +n 26.000 356.000 m 24.000 364.000 l 22.000 356.000 l gs 2 setlinejoin col-1 s gr +n 24 454 m 24 464 l gs col-1 s gr +n 26.000 456.000 m 24.000 464.000 l 22.000 456.000 l gs 2 setlinejoin col-1 s gr +n 179 109 m 439 109 l 439 364 l 379 364 l gs col-1 s gr +n 387.000 366.000 m 379.000 364.000 l 387.000 362.000 l gs 2 setlinejoin col-1 s gr +n 349 189 m 399 189 l 399 464 l 379 464 l gs col-1 s gr +n 387.000 466.000 m 379.000 464.000 l 387.000 462.000 l gs 2 setlinejoin col-1 s gr +n 264 249 m 439 249 l gs col-1 s gr +n 431.000 247.000 m 439.000 249.000 l 431.000 251.000 l gs 2 setlinejoin col-1 s gr +n 209 349 m 399 349 l gs col-1 s gr +n 391.000 347.000 m 399.000 349.000 l 391.000 351.000 l gs 2 setlinejoin col-1 s gr +n 309 409 m 399 409 l gs col-1 s gr +n 391.000 407.000 m 399.000 409.000 l 391.000 411.000 l gs 2 setlinejoin col-1 s gr +n 259 209 m 274 209 l gs col-1 s gr +n 266.000 207.000 m 274.000 209.000 l 266.000 211.000 l gs 2 setlinejoin col-1 s gr +/Times-Roman findfont 12.00 scalefont setfont +24 54 m +gs 1 -1 scale (1.\)) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +39 54 m +gs 1 -1 scale (set or clear recursion available flag) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +39 74 m +gs 1 -1 scale (If recursive service available and requested, then ) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +24 94 m +gs 1 -1 scale (2.\)) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +39 114 m +gs 1 -1 scale (If no such zone found, then) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +24 134 m +gs 1 -1 scale (3.\)) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +39 134 m +gs 1 -1 scale (match down, label by label, in the zone. Termination of process:) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +54 154 m +gs 1 -1 scale (whole QNAME is matched) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +214 154 m +gs 1 -1 scale (node is found.) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +54 174 m +gs 1 -1 scale (If data in node is CNAME \(!= QTYPE\), expand QNAME and) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +54 214 m +gs 1 -1 scale (match takes us out of authoritative data ) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +279 214 m +gs 1 -1 scale (referral) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +54 234 m +gs 1 -1 scale (copy RR of NS-record in authority section, and put available ) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +54 274 m +gs 1 -1 scale (match is impossible. look for wildcard "*". If no "*" exists) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +64 294 m +gs 1 -1 scale (then: If name is original QNAME, set authoritative name error) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +79 314 m +gs 1 -1 scale (in the response and exit, otherwise just exit.) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +64 334 m +gs 1 -1 scale (else: match RRs at that node against QTYPE, copy matches) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +79 354 m +gs 1 -1 scale (into answer section and) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +24 374 m +gs 1 -1 scale (4.\)) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +39 374 m +gs 1 -1 scale (match down in the cache. If CNAME is found, copy all RRs into) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +39 394 m +gs 1 -1 scale (answer section. If there was no delegation from auth. data, put) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +39 414 m +gs 1 -1 scale (best one from the cache into the authoritative section.) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +24 434 m +gs 1 -1 scale (5.\)) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +39 434 m +gs 1 -1 scale (use local resolver, or copy of the algorithm to answer query.) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +39 454 m +gs 1 -1 scale (Store the results \(incl. interm. CNAMEs\) in the answer section.) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +24 474 m +gs 1 -1 scale (6.\)) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +39 474 m +gs 1 -1 scale (use local data only, attempt to add other RRs which may be useful) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +39 494 m +gs 1 -1 scale (to the additional section of the query. Exit.) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +369 164 m +gs 1 -1 scale (1) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +294 64 m +gs 1 -1 scale (5) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +184 104 m +gs 1 -1 scale (4) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +269 244 m +gs 1 -1 scale (4) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +354 184 m +gs 1 -1 scale (6) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +314 404 m +gs 1 -1 scale (6) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +39 154 m +gs 1 -1 scale ( a\)) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +39 214 m +gs 1 -1 scale ( b\)) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +39 274 m +gs 1 -1 scale ( c\)) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +24 34 m +gs 1 -1 scale (0.\)) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +39 34 m +gs 1 -1 scale (incoming query) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +39 94 m +gs 1 -1 scale (search available zones for zone that is nearest answer to QNAME) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +54 194 m +gs 1 -1 scale (copy all RRs that match QTYPE into answer section and) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +214 344 m +gs 1 -1 scale (6) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +54 254 m +gs 1 -1 scale (addresses in the additional section, and) col-1 show gr +$F2psEnd +%%EndDocument + @endspecial 682 2265 a(Figure)16 b(2.7)32 b(Name)15 b(serv)o(er)g(algorithm) +209 2449 y(3.)24 b(Start)16 b(matc)o(hing)d(the)h(name)g(in)h(the)f(zone,)h +(lab)q(el)f(b)o(y)g(lab)q(el.)21 b(The)15 b(matc)o(hing)e(pro)q(cess)i(can) +271 2539 y(terminate)g(sev)o(eral)g(w)o(a)o(ys:)p eop +%%Page: 29 38 +37 bop 1901 -100 a Fo(29)292 75 y(\(a\))25 b(If)15 b(the)h(whole)h(queried)e +(name)g(is)h(matc)o(hed,)e(w)o(e)i(ha)o(v)o(e)f(found)i(the)f(no)q(de.)379 +186 y(If)21 b(the)h(data)g(at)h(the)e(no)q(de)i(is)e(a)i(canonical)e(name,)h +(and)g(the)g(queried)f(t)o(yp)q(e)g(w)o(as)379 277 y(not)f(CNAME,)f(cop)o(y)h +(the)g(canonical)g(name)f(resource)h(records)g(in)o(to)g(the)g(answ)o(er)379 +367 y(section)14 b(of)h(the)g(resp)q(onse,)g(c)o(hange)g(the)f(queried)g +(name)f(to)i(the)g(canonical)f(name)g(in)379 457 y(the)i(CNAME)f(RR)h(and)h +(go)g(bac)o(k)f(to)h(step)f(1.)379 569 y(Otherwise)e(cop)o(y)g(all)g +(resource)g(records)g(whic)o(h)g(matc)o(h)f(the)h(queried)g(t)o(yp)q(e)g(in)o +(to)g(the)379 659 y(answ)o(er)i(section)g(and)h(go)g(to)g(step)f(6.)289 +770 y(\(b\))25 b(If)15 b(a)g(matc)o(h)f(w)o(ould)i(tak)o(e)e(us)i(out)g(of)g +(the)f(authoritativ)o(e)g(data,)g(w)o(e)g(ha)o(v)o(e)g(a)h(referral.)379 +861 y(This)d(happ)q(ens)h(when)e(w)o(e)h(encoun)o(ter)f(a)h(no)q(de)h(with)e +(name)g(serv)o(er)g(resource)g(records)379 951 y(marking)j(cuts)h(along)h +(the)f(b)q(ottom)g(of)h(a)f(zone.)379 1063 y(Cop)o(y)h(the)f(name)g(serv)o +(er)g(resource)g(records)h(for)g(the)g(subzone)g(in)o(to)f(the)h(authorit)o +(y)379 1153 y(section)h(of)i(the)f(reply)l(.)29 b(Put)19 b(whatev)o(er)g +(addresses)h(are)f(a)o(v)m(ailable)f(in)o(to)h(the)g(addi-)379 +1243 y(tional)13 b(section,)h(using)g(glue)f(resource)g(records)h(if)f(the)g +(addresses)h(are)g(not)g(a)o(v)m(ailable)379 1334 y(from)h(authoritativ)o(e)g +(data)j(or)e(the)g(cac)o(he.)21 b(Go)c(to)f(step)g(4.)295 1445 +y(\(c\))24 b(If)15 b(at)i(some)e(lab)q(el,)h(a)g(matc)o(h)f(is)h(imp)q +(ossible,)e(lo)q(ok)j(to)g(see)e(if)h(a)h(\\)p Fq(\003)p Fo(")g(lab)q(el)f +(exists.)379 1556 y(If)e(the)h(\\)p Fq(\003)p Fo(")h(lab)q(el)f(do)q(es)h +(not)f(exist,)g(c)o(hec)o(k)e(whether)i(the)g(name)f(w)o(e)g(are)i(lo)q +(oking)f(for)379 1647 y(is)i(the)h(original)g(name)e(in)i(the)g(query)l(,)e +(or)j(a)f(name)f(w)o(e)g(ha)o(v)o(e)g(follo)o(w)o(ed)g(b)q(ecause)h(of)379 +1737 y(a)e(CNAME.)g(If)g(the)g(name)f(is)h(original,)g(set)g(an)h +(authoritativ)o(e)f(name)f(error)i(in)f(the)379 1827 y(resp)q(onse)h(and)g +(exit.)j(Otherwise)15 b(just)i(exit.)379 1939 y(If)i(the)h(\\)p +Fq(\003)p Fo(")g(lab)q(el)g(do)q(es)h(exist,)e(matc)o(h)g(resource)g(records) +h(at)h(that)f(no)q(de)g(against)379 2029 y(the)f(queried)g(t)o(yp)q(e.)31 +b(If)20 b(an)o(y)f(matc)o(h,)g(cop)o(y)g(them)f(in)o(to)i(the)f(answ)o(er)h +(section,)g(but)379 2119 y(set)d(the)g(o)o(wner)g(of)h(the)f(resource)g +(record)g(to)h(b)q(e)f(the)g(queried)f(name,)g(and)i(not)g(the)379 +2210 y(no)q(de)f(with)f(the)g(\\)p Fq(\003)p Fo(")h(lab)q(el.)j(Go)d(to)g +(step)f(6.)209 2342 y(4.)24 b(Start)e(matc)o(hing)f(do)o(wn)h(in)f(the)h(cac) +o(he.)36 b(If)22 b(the)f(name)g(is)g(found)h(in)g(the)f(cac)o(he,)h(cop)o(y) +271 2432 y(all)d(resource)f(records)h(attac)o(hed)g(to)g(it)g(that)g(matc)o +(h)e(the)i(query)f(t)o(yp)q(e)g(in)o(to)h(the)f(answ)o(er)271 +2522 y(section.)30 b(If)19 b(there)g(w)o(as)h(no)f(delegation)g(from)g +(authoritativ)o(e)f(data,)j(lo)q(ok)f(for)f(the)g(b)q(est)271 +2612 y(one)d(from)e(the)g(cac)o(he,)g(and)i(put)f(it)g(in)o(to)g(the)g +(authoritativ)o(e)f(section.)20 b(Branc)o(h)15 b(to)g(step)h(6.)p +eop +%%Page: 30 39 +38 bop 1901 -100 a Fo(30)209 75 y(5.)24 b(Use)16 b(the)g(lo)q(cal)f(resolv)o +(er)g(or)h(a)h(cop)o(y)e(of)i(its)e(algorithm)g(to)h(answ)o(er)h(the)e(query) +l(.)21 b(Store)16 b(the)271 165 y(results,)21 b(including)e(an)o(y)h(in)o +(termediate)d(canonical)j(names,)g(in)g(the)g(answ)o(er)g(section)g(of)271 +255 y(the)c(resp)q(onse.)209 387 y(6.)24 b(Use)15 b(lo)q(cal)f(data)i(only)l +(,)e(attempt)f(to)i(add)g(other)g(resource)f(records)h(whic)o(h)f(ma)o(y)f(b) +q(e)i(useful)271 477 y(to)i(the)f(additional)g(section)g(of)h(the)f(query)l +(.)k(Exit.)149 637 y(2.9.3)49 b(Resolv)o(er)16 b(Algorithm)187 +1974 y @beginspecial 0 @llx 0 @lly 378 @urx 238 @ury 3780 @rwi +@setspecial +%%BeginDocument: pictures/res_alg.ps +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/l {lineto} bind def +/m {moveto} bind def +/s {stroke} bind def +/n {newpath} bind def +/gs {gsave} bind def +/gr {grestore} bind def +/clp {closepath} bind def +/graycol {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul +4 -2 roll mul setrgbcolor} bind def +/col-1 {} def +/col0 {0 0 0 setrgbcolor} bind def +/col1 {0 0 1 setrgbcolor} bind def +/col2 {0 1 0 setrgbcolor} bind def +/col3 {0 1 1 setrgbcolor} bind def +/col4 {1 0 0 setrgbcolor} bind def +/col5 {1 0 1 setrgbcolor} bind def +/col6 {1 1 0 setrgbcolor} bind def +/col7 {1 1 1 setrgbcolor} bind def + end +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def + +$F2psBegin +0 setlinecap 0 setlinejoin +-18.0 256.0 translate 0.900 -0.900 scale +1.000 setlinewidth +n 19 279 m 379 279 l gs col-1 s gr +n 39 199 m 379 199 l gs col-1 s gr +n 39 239 m 379 239 l gs col-1 s gr +n 39 159 m 379 159 l gs col-1 s gr +n 39 119 m 379 119 l gs col-1 s gr +n 19 99 m 379 99 l gs col-1 s gr +n 19 79 m 379 79 l gs col-1 s gr +n 19 59 m 379 59 l gs col-1 s gr +n 19 39 m 379 39 l gs col-1 s gr +n 19 19 m 19 284 l 379 284 l 379 19 l 19 19 l gs col-1 s gr +n 39 119 m 39 279 l gs col-1 s gr +0.500 setlinewidth +n 189 149 m 399 149 l 399 64 l 379 64 l gs col-1 s gr +n 387.000 66.000 m 379.000 64.000 l 387.000 62.000 l gs 2 setlinejoin col-1 s gr +n 329 229 m 419 229 l 419 44 l 379 44 l gs col-1 s gr +n 387.000 46.000 m 379.000 44.000 l 387.000 42.000 l gs 2 setlinejoin col-1 s gr +n 229 269 m 439 269 l 439 84 l 379 84 l gs col-1 s gr +n 387.000 86.000 m 379.000 84.000 l 387.000 82.000 l gs 2 setlinejoin col-1 s gr +n 24 34 m 24 44 l gs col-1 s gr +n 26.000 36.000 m 24.000 44.000 l 22.000 36.000 l gs 2 setlinejoin col-1 s gr +n 24 54 m 24 64 l gs col-1 s gr +n 26.000 56.000 m 24.000 64.000 l 22.000 56.000 l gs 2 setlinejoin col-1 s gr +n 24 74 m 24 84 l gs col-1 s gr +n 26.000 76.000 m 24.000 84.000 l 22.000 76.000 l gs 2 setlinejoin col-1 s gr +n 24 94 m 24 104 l gs col-1 s gr +n 26.000 96.000 m 24.000 104.000 l 22.000 96.000 l gs 2 setlinejoin col-1 s gr +/Times-Roman findfont 12.00 scalefont setfont +24 34 m +gs 1 -1 scale (0.\)) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +24 54 m +gs 1 -1 scale (1.\)) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +39 54 m +gs 1 -1 scale (If the answer is in the local information, return it to the client) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +24 74 m +gs 1 -1 scale (2.\)) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +24 94 m +gs 1 -1 scale (3.\)) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +39 94 m +gs 1 -1 scale (Send them queries until one returns a response.) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +24 114 m +gs 1 -1 scale (4.\)) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +39 114 m +gs 1 -1 scale (Analyze the response:) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +54 134 m +gs 1 -1 scale (if the response contains an answer or a name error, cache it) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +54 154 m +gs 1 -1 scale (and return it to the client.) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +54 174 m +gs 1 -1 scale (if the response contains a better delegation to other servers,) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +54 194 m +gs 1 -1 scale (cache the delegation, and) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +54 214 m +gs 1 -1 scale (if the response shows a CNAME and that is not the answer ) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +54 234 m +gs 1 -1 scale (itself, cache it, change SNAME to canonical name and ) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +54 254 m +gs 1 -1 scale (if the response shows a servers failure or bizarre results,) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +54 274 m +gs 1 -1 scale (delete the server from SLIST and) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +334 224 m +gs 1 -1 scale (1) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +194 144 m +gs 1 -1 scale (2) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +234 264 m +gs 1 -1 scale (3) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +39 134 m +gs 1 -1 scale ( a\)) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +39 174 m +gs 1 -1 scale ( b\)) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +39 214 m +gs 1 -1 scale ( c\)) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +39 254 m +gs 1 -1 scale ( d\)) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +39 34 m +gs 1 -1 scale (incoming query) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +39 74 m +gs 1 -1 scale (Find the best servers to ask) col-1 show gr +$F2psEnd +%%EndDocument + @endspecial 724 2219 a(Figure)g(2.8)33 b(Resolv)o(er)15 b(algorithm)223 +2434 y(The)k(resolv)o(er)g(acts)h(as)g(the)f(in)o(terface)g(b)q(et)o(w)o(een) +f(a)i(user)g(program)f(and)i(the)e(name)g(serv)o(er)149 2524 +y(describ)q(ed)j(in)g(Figure)g(2.9)h(and)g(p)q(erforms)f(three)f(main)g +(actions)i(to)g(map)e(the)i(query)e(to)i(an)149 2614 y(answ)o(er.)f(The)17 +b(algorithm)e(\(see)h(Figure)g(2.8)h(and)g(the)f(follo)o(wing)g(list)g(for)h +(details\))f(tries)f(to)i(\014nd)p eop +%%Page: 31 40 +39 bop 1901 -100 a Fo(31)149 75 y(the)17 b(information)e(lo)q(cally)h +(\014rst.)23 b(If)16 b(that)h(do)q(es)g(not)g(succeed,)f(it)g(sends)h(the)f +(query)g(to)h(the)f(b)q(est)149 165 y(serv)o(er)d(to)h(ask.)20 +b(As)14 b(so)q(on)h(as)f(a)g(reply)e(returns,)i(it)f(c)o(hec)o(ks)f(for)h +(answ)o(er,)h(name)f(error,)g(delegation,)149 255 y(canonical)j(name)e +(expansion,)h(or)h(failure)e(of)i(the)f(serv)o(er)f(and)i(reacts)f(prop)q +(erly)l(.)20 b(The)c(follo)o(wing)149 346 y(steps)h(describ)q(e)f(the)g +(algorithm)f(in)h(more)f(detail.)20 b(They)c(are)g(deriv)o(ed)f(from)g([Mo)q +(c87a)q(]:)209 486 y(1.)24 b(See)15 b(if)g(the)g(answ)o(er)h(to)f(the)h +(query)e(is)h(in)g(the)g(lo)q(cal)h(information,)e(and)i(if)e(so,)i(return)f +(it)g(to)271 576 y(the)h(clien)o(t.)209 707 y(2.)24 b(Find)16 +b(the)g(b)q(est)h(serv)o(ers)e(to)i(ask.)209 838 y(3.)24 b(Send)17 +b(them)d(queries)h(un)o(til)h(one)g(returns)g(a)h(resp)q(onse.)209 +969 y(4.)24 b(Analyze)15 b(the)h(resp)q(onse:)292 1111 y(\(a\))25 +b(if)18 b(the)h(resp)q(onse)g(answ)o(ers)h(the)e(question)h(or)g(con)o(tains) +g(a)h(name)d(error,)j(cac)o(he)e(the)379 1202 y(data)f(as)g(w)o(ell)e(as)h +(return)g(it)g(to)h(the)f(clien)o(t.)289 1312 y(\(b\))25 b(if)d(the)h(resp)q +(onse)g(con)o(tains)g(a)h(b)q(etter)e(delegation)h(to)g(other)g(serv)o(ers,)h +(cac)o(he)e(the)379 1402 y(delegation)16 b(information,)e(and)j(go)g(to)g +(step)f(2.)295 1512 y(\(c\))24 b(if)16 b(the)h(resp)q(onse)h(sho)o(ws)g(a)f +(CNAME)f(whic)o(h)h(is)f(not)i(the)f(answ)o(er)g(itself,)f(cac)o(he)g(the)379 +1602 y(CNAME,)e(c)o(hange)i(the)f(queried)f(name)h(to)h(the)f(canonical)g +(name)g(in)g(the)g(CNAME)379 1693 y(RR)h(and)h(go)g(to)f(step)g(1.)289 +1803 y(\(d\))25 b(if)16 b(the)h(resp)q(onse)g(sho)o(ws)h(a)g(serv)o(er)d +(failure)h(or)i(other)f(bizarre)f(con)o(ten)o(ts,)g(delete)g(the)379 +1893 y(serv)o(er)f(from)g(the)h(serv)o(er)f(list)h(and)h(go)g(bac)o(k)e(to)i +(step)f(3.)149 2059 y(2.10)50 b(In)o(teraction)15 b(of)i(Name)d(Serv)o(er)h +(and)i(Resolv)o(er)223 2198 y(Name)e(serv)o(er)g(and)j(resolv)o(er)d(in)o +(teract)h(mainly)f(b)o(y)h(passing)i(data)g(bac)o(k)e(and)i(forth.)23 +b(There)149 2289 y(is)16 b(at)g(most)e(indirect)g(con)o(trol)i(\015o)o(w)f +(at)h(step)g(\014v)o(e)e(in)i(the)f(name)f(serv)o(er)g(algorithm)h(\(see)g +(Section)149 2379 y(2.9.2\).)28 b(In)18 b(the)g(case)h(that)g(a)f(resolv)o +(er)g(requests)f(recursiv)o(e)g(name)g(resolution)i(and)g(the)f(name)149 +2469 y(serv)o(er)h(pro)o(vides)g(this)g(service,)f(the)h(name)f(serv)o(er)h +(passes)h(the)f(query)g(to)h(the)f(lo)q(cal)g(resolv)o(er.)149 +2560 y(This)f(can)f(b)q(e)g(seen)f(as)i(pure)f(data)h(\015o)o(w,)f(but)g(b)q +(ecause)g(the)g(execution)f(of)h(the)g(whole)f(query)h(is)149 +2650 y(passed)g(to)g(the)f(resolv)o(er,)f(w)o(e)h(in)o(terpret)e(it)i(as)h +(con)o(trol)f(\015o)o(w.)p eop +%%Page: 32 41 +40 bop 1901 -100 a Fo(32)149 75 y(2.10.1)50 b(Data)17 b(Flo)o(w)149 +2152 y @beginspecial 0 @llx 0 @lly 432 @urx 416 @ury 4320 @rwi +@setspecial +%%BeginDocument: pictures/dns_flow.ps +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/l {lineto} bind def +/m {moveto} bind def +/s {stroke} bind def +/n {newpath} bind def +/gs {gsave} bind def +/gr {grestore} bind def +/clp {closepath} bind def +/graycol {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul +4 -2 roll mul setrgbcolor} bind def +/col-1 {} def +/col0 {0 0 0 setrgbcolor} bind def +/col1 {0 0 1 setrgbcolor} bind def +/col2 {0 1 0 setrgbcolor} bind def +/col3 {0 1 1 setrgbcolor} bind def +/col4 {1 0 0 setrgbcolor} bind def +/col5 {1 0 1 setrgbcolor} bind def +/col6 {1 1 0 setrgbcolor} bind def +/col7 {1 1 1 setrgbcolor} bind def + end +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def + +$F2psBegin +0 setlinecap 0 setlinejoin +0.0 432.0 translate 0.900 -0.900 scale +1.000 setlinewidth + [6.000000] 0 setdash +n 68.375 129.000 70.625 -97.628 97.628 arc +gs col-1 s gr + [] 0 setdash +0.500 setlinewidth +n 196 99 m 189 99 189 152 7 arcto 4 {pop} repeat 189 159 282 159 7 arcto 4 {pop} repeat 289 159 289 106 7 arcto 4 {pop} repeat 289 99 196 99 7 arcto 4 {pop} repeat clp gs col-1 s gr +n 99 119 m 189 119 l gs col-1 s gr +n 181.000 117.000 m 189.000 119.000 l 181.000 121.000 l gs 2 setlinejoin col-1 s gr +n 289 119 m 379 119 l gs col-1 s gr +n 371.000 117.000 m 379.000 119.000 l 371.000 121.000 l gs 2 setlinejoin col-1 s gr +n 379 139 m 289 139 l gs col-1 s gr +n 297.000 141.000 m 289.000 139.000 l 297.000 137.000 l gs 2 setlinejoin col-1 s gr +n 189 139 m 99 139 l gs col-1 s gr +n 107.000 141.000 m 99.000 139.000 l 107.000 137.000 l gs 2 setlinejoin col-1 s gr +n 196 199 m 189 199 189 252 7 arcto 4 {pop} repeat 189 259 282 259 7 arcto 4 {pop} repeat 289 259 289 206 7 arcto 4 {pop} repeat 289 199 196 199 7 arcto 4 {pop} repeat clp gs col-1 s gr +n 386 299 m 379 299 379 352 7 arcto 4 {pop} repeat 379 359 472 359 7 arcto 4 {pop} repeat 479 359 479 306 7 arcto 4 {pop} repeat 479 299 386 299 7 arcto 4 {pop} repeat clp gs col-1 s gr +n 6 299 m -1 299 -1 352 7 arcto 4 {pop} repeat -1 359 92 359 7 arcto 4 {pop} repeat 99 359 99 306 7 arcto 4 {pop} repeat 99 299 6 299 7 arcto 4 {pop} repeat clp gs col-1 s gr +n 269 199 m 269 159 l gs col-1 s gr +n 267.000 167.000 m 269.000 159.000 l 271.000 167.000 l gs 2 setlinejoin col-1 s gr +n 269 259 m 269 299 l gs col-1 s gr +n 271.000 291.000 m 269.000 299.000 l 267.000 291.000 l gs 2 setlinejoin col-1 s gr +n 209 299 m 209 259 l gs col-1 s gr +n 207.000 267.000 m 209.000 259.000 l 211.000 267.000 l gs 2 setlinejoin col-1 s gr +n 209 159 m 209 199 l gs col-1 s gr +n 211.000 191.000 m 209.000 199.000 l 207.000 191.000 l gs 2 setlinejoin col-1 s gr +n 289 319 m 379 319 l gs col-1 s gr +n 371.000 317.000 m 379.000 319.000 l 371.000 321.000 l gs 2 setlinejoin col-1 s gr +n 379 339 m 289 339 l gs col-1 s gr +n 297.000 341.000 m 289.000 339.000 l 297.000 337.000 l gs 2 setlinejoin col-1 s gr +n 269 359 m 269 419 l 379 419 l gs col-1 s gr +n 371.000 417.000 m 379.000 419.000 l 371.000 421.000 l gs 2 setlinejoin col-1 s gr +n 379 439 m 209 439 l 209 359 l gs col-1 s gr +n 207.000 367.000 m 209.000 359.000 l 211.000 367.000 l gs 2 setlinejoin col-1 s gr +n 99 329 m 189 329 l gs col-1 s gr +n 181.000 327.000 m 189.000 329.000 l 181.000 331.000 l gs 2 setlinejoin col-1 s gr +n 11 304 m 4 304 4 347 7 arcto 4 {pop} repeat 4 354 87 354 7 arcto 4 {pop} repeat 94 354 94 311 7 arcto 4 {pop} repeat 94 304 11 304 7 arcto 4 {pop} repeat clp gs col-1 s gr +n 201 204 m 194 204 194 247 7 arcto 4 {pop} repeat 194 254 277 254 7 arcto 4 {pop} repeat 284 254 284 211 7 arcto 4 {pop} repeat 284 204 201 204 7 arcto 4 {pop} repeat clp gs col-1 s gr +n 6 99 m -1 99 -1 152 7 arcto 4 {pop} repeat -1 159 92 159 7 arcto 4 {pop} repeat 99 159 99 106 7 arcto 4 {pop} repeat 99 99 6 99 7 arcto 4 {pop} repeat clp gs col-1 s gr +1.000 setlinewidth + [6.000000] 0 setdash +n 334 19 m 334 479 l gs col-1 s gr + [] 0 setdash +0.500 setlinewidth +n 386 99 m 379 99 379 152 7 arcto 4 {pop} repeat 379 159 472 159 7 arcto 4 {pop} repeat 479 159 479 106 7 arcto 4 {pop} repeat 479 99 386 99 7 arcto 4 {pop} repeat clp gs 0.95 setgray fill gr +gs col-1 s gr +n 386 404 m 379 404 379 457 7 arcto 4 {pop} repeat 379 464 472 464 7 arcto 4 {pop} repeat 479 464 479 411 7 arcto 4 {pop} repeat 479 404 386 404 7 arcto 4 {pop} repeat clp gs 0.95 setgray fill gr +gs col-1 s gr +n 196 299 m 189 299 189 352 7 arcto 4 {pop} repeat 189 359 282 359 7 arcto 4 {pop} repeat 289 359 289 306 7 arcto 4 {pop} repeat 289 299 196 299 7 arcto 4 {pop} repeat clp gs 0.95 setgray fill gr +gs col-1 s gr +1.000 setlinewidth +n 34 44 m 159 44 l gs col-1 s gr +n 374 44 m 464 44 l gs col-1 s gr + [6.000000] 0 setdash +n -1 59 m 59 59 l gs col-1 s gr + [] 0 setdash + [6.000000] 0 setdash +n -1 199 m 59 199 l gs col-1 s gr + [] 0 setdash + [6.000000] 0 setdash +n -1 229 m 334 229 l gs col-1 s gr + [] 0 setdash +/Times-Bold findfont 24.00 scalefont setfont +39 39 m +gs 1 -1 scale (Local Host) col-1 show gr +/Times-Bold findfont 24.00 scalefont setfont +194 139 m +gs 1 -1 scale (resolver) col-1 show gr +/Times-Bold findfont 24.00 scalefont setfont +9 324 m +gs 1 -1 scale (master) col-1 show gr +/Times-Bold findfont 24.00 scalefont setfont +194 249 m +gs 1 -1 scale (database) col-1 show gr +/Times-Bold findfont 24.00 scalefont setfont +204 349 m +gs 1 -1 scale (server) col-1 show gr +/Times-Bold findfont 24.00 scalefont setfont +389 324 m +gs 1 -1 scale (foreign) col-1 show gr +/Times-Bold findfont 24.00 scalefont setfont +384 349 m +gs 1 -1 scale (resolver) col-1 show gr +/Times-Bold findfont 24.00 scalefont setfont +399 139 m +gs 1 -1 scale (name) col-1 show gr +/Times-Bold findfont 24.00 scalefont setfont +399 444 m +gs 1 -1 scale (name) col-1 show gr +/Times-Bold findfont 24.00 scalefont setfont +379 39 m +gs 1 -1 scale (Foreign) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +104 154 m +gs 1 -1 scale (user responses) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +274 184 m +gs 1 -1 scale (references) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +124 184 m +gs 1 -1 scale (cache additions) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +114 114 m +gs 1 -1 scale (user queries) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +209 454 m +gs 1 -1 scale (maintenance responses) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +274 284 m +gs 1 -1 scale (references) col-1 show gr +/Times-Bold findfont 24.00 scalefont setfont +394 459 m +gs 1 -1 scale (server) col-1 show gr +/Times-Bold findfont 24.00 scalefont setfont +394 154 m +gs 1 -1 scale (server) col-1 show gr +/Times-Bold findfont 24.00 scalefont setfont +389 119 m +gs 1 -1 scale (foreign) col-1 show gr +/Times-Bold findfont 24.00 scalefont setfont +389 424 m +gs 1 -1 scale (foreign) col-1 show gr +/Times-Bold findfont 24.00 scalefont setfont +209 324 m +gs 1 -1 scale (name) col-1 show gr +/Times-Bold findfont 24.00 scalefont setfont +204 224 m +gs 1 -1 scale (shared) col-1 show gr +/Times-Bold findfont 24.00 scalefont setfont +24 144 m +gs 1 -1 scale (prg.) col-1 show gr +/Times-Bold findfont 24.00 scalefont setfont +24 124 m +gs 1 -1 scale (user) col-1 show gr +/Times-Bold findfont 24.00 scalefont setfont +24 349 m +gs 1 -1 scale (files) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +309 154 m +gs 1 -1 scale (responses) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +314 114 m +gs 1 -1 scale (queries) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +309 314 m +gs 1 -1 scale (responses) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +314 354 m +gs 1 -1 scale (queries) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +294 414 m +gs 1 -1 scale (maintenance) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +309 434 m +gs 1 -1 scale (queries) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +154 284 m +gs 1 -1 scale (refreshes) col-1 show gr +$F2psEnd +%%EndDocument + @endspecial 584 2396 a(Figure)f(2.9)33 b(Data)17 b(\015o)o(w)g(b)q(et)o(w)o +(een)e(DNS)h(en)o(tities)p eop +%%Page: 33 42 +41 bop 1901 -100 a Fo(33)223 75 y(The)21 b(data)i(\015o)o(w)f(b)q(et)o(w)o +(een)f(Domain)g(Name)f(System)h(en)o(tities)f(is)h(not)i(limited)c(to)j +(simple)149 165 y(queries)f(and)h(resp)q(onses,)i(illustrated)c(in)i(Figure)f +(2.9.)37 b(W)l(e)22 b(distinguish)f(among)h(four)g(parts)149 +255 y(that)d(in)o(teract)e(with)h(eac)o(h)f(other:)25 b(the)18 +b(user)g(program,)g(the)g(resolv)o(er,)f(the)h(name)f(serv)o(er,)g(and)149 +346 y(an)g(unkno)o(wn)g(subnet)f(that)h(can)f(con)o(tain)g(foreign)h(name)e +(serv)o(ers)g(and)i(resolv)o(ers.)223 436 y(User)12 b(program)h(and)h(resolv) +o(er)e(exc)o(hange)g(user)i(queries)e(and)h(user)h(resp)q(onses.)21 +b(In)13 b(the)f(BIND)149 526 y(impleme)o(n)o(tation)17 b(of)k(the)f(Domain)f +(Name)f(System,)h(this)h(exc)o(hange)g(is)g(done)g(b)o(y)f(calling)h(the)149 +616 y(system)h(calls)g(\\gethostb)o(y)o(addr\(\)")i(and)f(\\gethostb)o +(yname\(\)".)37 b(As)22 b(can)f(b)q(e)h(seen)g(here,)g(the)149 +707 y(usage)14 b(of)f(the)g(Domain)f(Name)f(System)h(is)g(completely)e +(transparen)o(t)j(to)h(the)e(user)h(who)h(requests)149 797 +y(name)f(resolution.)20 b(The)14 b(same)f(system)f(call)h(in)o(terface)f(can) +i(b)q(e)g(used)g(when)g(the)f(Domain)g(Name)149 887 y(System)i(is)h(replaced) +g(b)o(y)f(another)i(mapping)f(mec)o(hanism)d(\(for)j(example)e(static)i +(mapping\).)223 978 y(Lo)q(cal)d(resolv)o(ers)f(comm)o(unic)o(ate)e(with)j +(foreign)f(name)g(serv)o(ers)g(via)g(the)g(exc)o(hange)h(of)f(queries)149 +1068 y(and)22 b(resp)q(onses,)g(as)g(do)q(es)f(a)h(lo)q(cal)e(name)g(serv)o +(er)g(with)g(foreign)h(name)f(serv)o(ers)g(or)h(resolv)o(ers.)149 +1158 y(Queries)i(are)g(alw)o(a)o(ys)g(sen)o(t)g(to)g(a)h(name)e(serv)o(er)g +(and)h(resp)q(onses)h(go)g(the)f(rev)o(erse)f(direction.)149 +1248 y(When)d(name)f(serv)o(ers)g(comm)o(uni)o(cate,)e(they)i(exc)o(hange)g +(zone)h(data)h(or)f(main)o(tenance)d(queries)149 1339 y(and)h(resp)q(onses.)k +(Under)15 b(the)h(assumption)f(that)h(the)f(lo)q(cal)g(name)g(serv)o(er)f(is) +h(a)h(primary)e(serv)o(er,)149 1429 y(it)i(gets)h(its)f(primary)e(zone)i +(data)i(from)d(the)h(master)f(\014les.)223 1519 y(Both)j(name)f(serv)o(er)g +(and)h(resolv)o(er)f(usually)h(main)o(tain)f(a)h(cac)o(he.)26 +b(It)18 b(is)g(not)g(un)o(usual)h(for)f(a)149 1610 y(name)e(serv)o(er)f(and)i +(a)f(resolv)o(er)f(that)i(run)f(on)h(a)g(single)f(host)g(to)h(share)g(this)f +(database.)149 1770 y(2.10.2)50 b(Shared)16 b(Information)223 +1892 y(A)d(shared)i(cac)o(he)e(can)i(b)q(e)f(accessed)g(b)o(y)g(resolv)o(er)f +(and)i(name)e(serv)o(er.)19 b(Resolv)o(ers)13 b(pro)o(vide)h(as)149 +1982 y(cac)o(he)k(additions)h(whatev)o(er)f(they)h(learn)f(from)g(the)g(resp) +q(onses)i(to)f(their)f(queries.)27 b(They)19 b(also)149 2073 +y(consult)d(the)f(cac)o(he)g(and)h(retriev)o(e)d(data)k(from)d(it.)21 +b(Name)14 b(serv)o(ers)g(also)i(reference)e(the)h(cac)o(he)g(to)149 +2163 y(answ)o(er)i(queries)e(and)i(pro)o(vide)e(refreshes)h(from)f(lo)q(cal)h +(authoritativ)o(e)g(data.)223 2253 y(A)g(database)j(that)f(is)f(shared)h +(concurren)o(tly)d(b)o(y)i(man)o(y)f(pro)q(cesses)i(m)o(ust)e(b)q(e)h +(protected)g(b)o(y)149 2343 y(sync)o(hronization)c(mec)o(hanism)o(s.)18 +b(The)12 b(additional)h(complexit)o(y)c(in)k(dealing)f(with)g(the)h(problems) +149 2434 y(a)g(shared)f(database)h(brings)f(with)f(it)g(is)h(amortized)e(b)o +(y)h(the)g(gain)i(in)e(p)q(erformance)f(and)j(e\016ciency)149 +2524 y(of)21 b(the)f(system)f(in)h(total.)34 b(It)19 b(is)i(ob)o(vious)f +(that)h(successful)e(lo)q(okups)j(in)e(the)g(lo)q(cal)g(cac)o(he)f(are)149 +2614 y(preferred)13 b(o)o(v)o(er)g(sending)h(queries)f(to)i(remote)d(mac)o +(hines)g(with)h(no)i(b)q(ounds)g(on)g(ho)o(w)f(long)g(it)g(will)p +eop +%%Page: 34 43 +42 bop 1901 -100 a Fo(34)149 75 y(tak)o(e)16 b(them)e(to)i(reply)l(.)k(Main)o +(taining)c(a)g(larger)g(cac)o(he)f(shared)h(b)q(et)o(w)o(een)f(t)o(w)o(o)h +(en)o(tities)e(increases)149 165 y(the)i(probabilit)o(y)g(of)g(\014nding)h(a) +g(matc)o(h)d(in)i(the)g(cac)o(he.)p eop +%%Page: 35 44 +43 bop 1901 -100 a Fo(35)323 342 y(3.)33 b(DESCRIPTION)16 b(AND)g(DEMONSTRA)l +(TION)e(OF)i(WEAKNESSES)223 516 y(This)22 b(c)o(hapter)f(concen)o(trates)g +(on)i(the)f(description)f(and)h(demonstration)g(of)g(the)f(cen)o(tral)149 +606 y(problem)15 b(of)i(this)f(thesis.)223 696 y(W)l(e)22 b(\014rst)h(giv)o +(e)f(an)h(abstract)g(statemen)o(t)e(of)i(the)f(problem.)39 +b(W)l(e)23 b(state)g(it)f(again)h(in)g(the)149 787 y(follo)o(wing)h(section,) +i(but)e(in)g(a)h(more)e(concrete)g(fashion)i(directly)e(related)g(to)i(the)f +(Domain)149 877 y(Name)14 b(System.)20 b(W)l(e)15 b(talk)g(ab)q(out)i(the)e +(general)g(features)h(in)f(the)g(Domain)g(Name)f(System)g(that)149 +967 y(facilitate)h(the)h(exploitation)g(of)g(the)g(problem.)223 +1057 y(The)i(follo)o(wing)h(section)f(giv)o(es)g(details)g(of)h(regular)f +(remote)f(mac)o(hine)g(access)h(and)i(sev)o(eral)149 1148 y(approac)o(hes)k +(of)f(ho)o(w)h(to)f(exploit)f(the)h(problem)e(to)j(gain)f(unauthorized)g +(access.)42 b(W)l(e)23 b(then)149 1238 y(talk)f(ab)q(out)h(our)f(implem)o(en) +o(tation)d(test)j(en)o(vironmen)o(t)d(and)j(describ)q(e)f(the)h(exp)q(erimen) +o(ts)d(w)o(e)149 1328 y(p)q(erformed)14 b(to)h(supp)q(ort)i(the)d(claim)f +(that)i(this)g(securit)o(y)e(\015a)o(w)j(is)e(exploitable.)20 +b(The)15 b(concluding)149 1419 y(section)h(of)h(this)f(c)o(hapter)g(presen)o +(ts)g(the)g(exp)q(eriences)e(w)o(e)i(gained)h(from)e(our)h(exp)q(erimen)o +(ts.)223 1509 y(Figure)i(3.1)g(sho)o(ws)i(the)e(setup)g(of)h(mac)o(hines)d +(and)j(their)f(names.)27 b(It)18 b(serv)o(es)f(as)i(a)g(running)149 +1599 y(example)11 b(in)i(this)g(c)o(hapter.)20 b(A)12 b(detailed)g +(description)h(of)g(this)g(setup)g(is)g(giv)o(en)f(in)h(Section)f(3.5.1.)149 +1765 y(3.1)50 b(Statemen)o(t)14 b(of)i(the)g(Problem)223 1904 +y(Authen)o(ticit)o(y)11 b(is)j(based)h(on)g(the)f(iden)o(tit)o(y)f(of)h(some) +g(en)o(tit)o(y)l(.)k(This)d(en)o(tit)o(y)e(has)i(to)f(pro)o(v)o(e)g(that)149 +1994 y(it)19 b(is)g(gen)o(uine.)30 b(In)19 b(man)o(y)f(net)o(w)o(ork)h +(applications)g(the)g(iden)o(tit)o(y)e(of)j(participating)f(en)o(tities)f(is) +149 2085 y(simply)f(determined)f(b)o(y)j(their)f(names)f(or)j(addresses.)29 +b(High)18 b(lev)o(el)f(applications)i(use)f(mainly)149 2175 +y(names)f(for)h(authen)o(tication)f(purp)q(oses,)i(b)q(ecause)e(address)i +(lists)e(are)g(m)o(uc)o(h)f(harder)i(to)g(create,)149 2265 +y(understand,)f(and)g(main)o(tain)d(than)j(name)e(lists.)223 +2356 y(Assuming)f(an)i(en)o(tit)o(y)e(w)o(an)o(ts)i(to)f(sp)q(o)q(of)j(the)d +(iden)o(tit)o(y)e(of)j(some)f(other)g(en)o(tit)o(y)l(,)f(it)h(is)g(in)g(some) +149 2446 y(cases)j(enough)f(to)g(c)o(hange)g(the)g(mapping)f(b)q(et)o(w)o +(een)g(its)h(lo)o(w)f(lev)o(el)f(address)j(and)f(its)g(high)g(lev)o(el)149 +2536 y(name.)j(That)d(means)e(that)i(an)f(attac)o(k)o(er)f(can)i(fak)o(e)e +(the)h(name)f(of)h(someone)f(b)o(y)h(mo)q(difying)f(the)149 +2626 y(asso)q(ciation)j(of)e(his)h(address)g(from)e(his)h(o)o(wn)g(name)g(to) +g(the)g(name)f(he)h(w)o(an)o(ts)h(to)f(imp)q(ersonate.)p eop +%%Page: 36 45 +44 bop 1901 -100 a Fo(36)224 1204 y @beginspecial 0 @llx 0 +@lly 378 @urx 265 @ury 3780 @rwi @setspecial +%%BeginDocument: pictures/d_z_setup.ps +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/l {lineto} bind def +/m {moveto} bind def +/s {stroke} bind def +/n {newpath} bind def +/gs {gsave} bind def +/gr {grestore} bind def +/clp {closepath} bind def +/graycol {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul +4 -2 roll mul setrgbcolor} bind def +/col-1 {} def +/col0 {0 0 0 setrgbcolor} bind def +/col1 {0 0 1 setrgbcolor} bind def +/col2 {0 1 0 setrgbcolor} bind def +/col3 {0 1 1 setrgbcolor} bind def +/col4 {1 0 0 setrgbcolor} bind def +/col5 {1 0 1 setrgbcolor} bind def +/col6 {1 1 0 setrgbcolor} bind def +/col7 {1 1 1 setrgbcolor} bind def + end +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def + +$F2psBegin +0 setlinecap 0 setlinejoin +-9.0 270.0 translate 0.900 -0.900 scale +1.000 setlinewidth + [6.000000] 0 setdash +n 379 19 m 419 19 l gs col-1 s gr + [] 0 setdash + [6.000000] 0 setdash +n 379 299 m 419 299 l gs col-1 s gr + [] 0 setdash +n 99 19 m 99 39 l gs col-1 s gr +n 99 279 m 99 299 l gs col-1 s gr +n 339 19 m 339 39 l gs col-1 s gr +n 339 279 m 339 299 l gs col-1 s gr +0.500 setlinewidth +n 159 59 m 279 59 l gs col-1 s gr +n 271.000 57.000 m 279.000 59.000 l 271.000 61.000 l gs 2 setlinejoin col-1 s gr +n 77.000 107.000 m 79.000 99.000 l 81.000 107.000 l gs 2 setlinejoin col-1 s gr +n 79 99 m 79 219 l gs col-1 s gr +n 81.000 211.000 m 79.000 219.000 l 77.000 211.000 l gs 2 setlinejoin col-1 s gr +n 46 39 m 39 39 39 92 7 arcto 4 {pop} repeat 39 99 152 99 7 arcto 4 {pop} repeat 159 99 159 46 7 arcto 4 {pop} repeat 159 39 46 39 7 arcto 4 {pop} repeat clp gs 0.95 setgray fill gr +gs col-1 s gr +n 286 39 m 279 39 279 92 7 arcto 4 {pop} repeat 279 99 392 99 7 arcto 4 {pop} repeat 399 99 399 46 7 arcto 4 {pop} repeat 399 39 286 39 7 arcto 4 {pop} repeat clp gs 0.95 setgray fill gr +gs col-1 s gr +n 286 219 m 279 219 279 272 7 arcto 4 {pop} repeat 279 279 392 279 7 arcto 4 {pop} repeat 399 279 399 226 7 arcto 4 {pop} repeat 399 219 286 219 7 arcto 4 {pop} repeat clp gs 0.95 setgray fill gr +gs col-1 s gr +n 46 219 m 39 219 39 272 7 arcto 4 {pop} repeat 39 279 152 279 7 arcto 4 {pop} repeat 159 279 159 226 7 arcto 4 {pop} repeat 159 219 46 219 7 arcto 4 {pop} repeat clp gs 0.95 setgray fill gr +gs col-1 s gr +1.000 setlinewidth +n 379 19 m 39 19 l gs col-1 s gr +n 19 39 m 19 279 l gs col-1 s gr +n 39 299 m 379 299 l gs col-1 s gr +0.500 setlinewidth + [3.000000] 0 setdash +n 9 189 m 429 189 l gs col-1 s gr + [] 0 setdash +1.000 setlinewidth +n 19 279 m + 20.353 287.853 21.603 291.603 24 294 curveto + 26.397 296.397 30.147 297.647 39 299 curveto +gs col-1 s gr +n 39 19 m + 30.147 20.353 26.397 21.603 24 24 curveto + 21.603 26.397 20.353 30.147 19 39 curveto +gs col-1 s gr + 1 setlinecap [1 6.000000] 6.000000 setdash +n 319 219 m + 322.096 196.474 322.096 186.474 319 179 curveto + 316.081 171.953 306.047 161.919 299 159 curveto + 259.136 142.488 178.864 175.512 139 159 curveto + 131.953 156.081 121.919 146.047 119 139 curveto + 115.904 131.526 115.904 121.526 119 99 curveto +gs col-1 s gr + [] 0 setdash 0 setlinecap +n 112.859 114.306 m 119.000 99.000 l 120.784 115.396 l gs 2 setlinejoin col-1 s gr +/Times-Roman findfont 24.00 scalefont setfont +79 74 m +gs 1 -1 scale (NS) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +109 79 m +gs 1 -1 scale (A) col-1 show gr +/Times-Roman findfont 24.00 scalefont setfont +329 74 m +gs 1 -1 scale (H) col-1 show gr +/Times-Roman findfont 24.00 scalefont setfont +329 254 m +gs 1 -1 scale (H) col-1 show gr +/Times-Roman findfont 24.00 scalefont setfont +79 254 m +gs 1 -1 scale (NS) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +349 79 m +gs 1 -1 scale (A) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +109 259 m +gs 1 -1 scale (B) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +349 259 m +gs 1 -1 scale (B) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +139 14 m +gs 1 -1 scale (Ethernet) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +339 179 m +gs 1 -1 scale (attacked side) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +339 209 m +gs 1 -1 scale (attacking side) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +44 94 m +gs 1 -1 scale (name server) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +284 94 m +gs 1 -1 scale (host) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +44 274 m +gs 1 -1 scale (name server) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +284 274 m +gs 1 -1 scale (host) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +84 184 m +gs 1 -1 scale (exchange of DNS packets) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +144 149 m +gs 1 -1 scale (Hi! I am Bob from H) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +179 54 m +gs 1 -1 scale (Alice trusts Bob) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +44 54 m +gs 1 -1 scale (user: Alice) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +284 54 m +gs 1 -1 scale (user: Bob) col-1 show gr +/Times-Roman findfont 8.00 scalefont setfont +244 154 m +gs 1 -1 scale (A) col-1 show gr +$F2psEnd +%%EndDocument + @endspecial 717 1449 a(Figure)15 b(3.1)33 b(Exp)q(erimen)o(tal)14 +b(setup)223 1633 y(Once)k(an)i(attac)o(k)o(er)e(has)i(done)g(that,)g(an)f +(authen)o(ticator)h(can)f(no)h(longer)f(distinguish)g(b)q(e-)149 +1723 y(t)o(w)o(een)d(the)g(true)g(and)g(the)g(fak)o(ed)g(en)o(tit)o(y)l(.)223 +1813 y(This)23 b(describ)q(es)f(the)h(fundamen)o(tal)e(problem)h(on)h(whic)o +(h)f(this)h(thesis)g(is)g(based.)41 b(If)23 b(the)149 1904 +y(binding)f(pro)q(cess)f(b)q(et)o(w)o(een)g(names)f(and)i(addresses)g(cannot) +g(b)q(e)f(trusted)g(fully)l(,)g(no)h(one)f(can)149 1994 y(rely)16 +b(on)g(an)h(authen)o(tication)f(pro)q(cess)h(on)g(a)f(high)h(lev)o(el.)149 +2159 y(3.2)50 b(The)16 b(Problem)f(in)g(the)h(DNS)223 2299 +y(Man)o(y)i(securit)o(y)f(problems)h(of)h(the)g(TCP/IP)g(proto)q(col)h(suite) +e(rely)g(on)i(the)e(abilit)o(y)g(of)h(the)149 2389 y(attac)o(k)o(er)g(to)i +(sp)q(o)q(of)g(the)f(IP)g(address)g(of)h(a)f(trusted)g(mac)o(hine,)e(as)j +(describ)q(ed)e(in)h([Bel89)o(].)32 b(As)149 2479 y(hosts)19 +b(trust)f(eac)o(h)f(other,)h(usually)f(on)i(the)e(basis)h(of)g(host)h(names,) +e(an)h(attac)o(k)o(er)f(can)h(tak)o(e)f(the)149 2570 y(easier)f(approac)o(h)h +(and)g(sp)q(o)q(of)h(a)f(host's)f(name)f(instead)i(of)f(its)g(IP)g(address.)p +eop +%%Page: 37 46 +45 bop 1901 -100 a Fo(37)223 75 y(If)22 b(a)i(host)g(named)e(H)640 +82 y Fm(A)691 75 y Fo(accesses)h(another)g(host)h(named)e(NS)1409 +82 y Fm(A)1437 75 y Fo(,)j(host)f(NS)1652 82 y Fm(A)1704 75 +y Fo(accepts)f(the)149 165 y(connection)e(and)g(retriev)o(es)e(address)j +(information)e(ab)q(out)i(the)e(connecting)h(host)g(H)1773 +172 y Fm(A)1801 165 y Fo(.)35 b(Host)149 255 y(NS)213 262 y +Fm(A)260 255 y Fo(reads)19 b(host)h(H)536 262 y Fm(A)564 255 +y Fo('s)e(IP)h(address)g(and)g(con)o(v)o(erts)f(it)g(in)o(to)h(a)g(regular)g +(host)g(name.)27 b(T)l(o)20 b(bind)149 346 y(the)d(righ)o(t)g(name)e(to)j +(the)e(IP)h(address,)g(host)h(NS)1055 353 y Fm(A)1100 346 y +Fo(starts)g(a)f(Domain)f(Name)f(System)h(query)g(in)149 436 +y(the)g(rev)o(erse)f(lo)q(okup)i(tree.)223 526 y(F)l(or)j(a)g(pair)h(of)f +(mac)o(hines)e(NS)800 533 y Fm(B)847 526 y Fo(and)j(H)983 533 +y Fm(B)1030 526 y Fo(under)f(the)g(p)q(o)o(w)o(er)g(of)g(an)h(attac)o(k)o +(er,)f(with)g(NS)1922 533 y Fm(B)149 616 y Fo(running)14 b(a)f(primary)e +(name)h(serv)o(er)g(for)h(a)g(certain)f(zone,)h(and)h(H)1330 +623 y Fm(B)1369 616 y Fo(trying)f(to)g(fak)o(e)f(H)1702 623 +y Fm(A)1730 616 y Fo('s)h(iden)o(tit)o(y)l(,)149 707 y(it)20 +b(is)f(easy)h(to)g(mak)o(e)d(NS)622 714 y Fm(A)670 707 y Fo(b)q(eliev)o(e)h +(H)872 714 y Fm(B)918 707 y Fo(w)o(as)i(H)1052 714 y Fm(A)1080 +707 y Fo(.)32 b(H)1163 714 y Fm(B)1209 707 y Fo(connects)20 +b(to)g(NS)1537 714 y Fm(A)1585 707 y Fo(and)h(claims)c(to)j(b)q(e)149 +797 y(H)186 804 y Fm(A)215 797 y Fo(,)d(NS)310 804 y Fm(A)356 +797 y Fo(retriev)o(es)f(H)590 804 y Fm(B)616 797 y Fo('s)i(IP)f(address)i +(111.22.33.4)g(and)g(queries)d(the)i(name)e(4.33.22.111.in-)149 +887 y(addr.arpa)24 b(from)e(the)g(Domain)g(Name)f(System.)39 +b(One)22 b(single)h(en)o(try)e(in)i(the)f(authoritativ)o(e)149 +978 y(data)i(for)g(the)e(rev)o(erse)g(lo)q(okup)i(tree)e(for)h(NS)1025 +985 y Fm(B)1052 978 y Fo('s)g(zone)g(sp)q(eci\014es)f(the)h(IP)g +(address{to{name)149 1068 y(mapping)17 b(b)q(et)o(w)o(een)f +(4.33.22.111.in-addr.arpa)k(and)e(H)1203 1075 y Fm(B)1229 1068 +y Fo(.)25 b(If)16 b(the)h(attac)o(k)o(er)g(replaces)f(this)i(line)149 +1158 y(b)o(y)j(a)h(mapping)f(b)q(et)o(w)o(een)f(4.33.22.111.in-addr.arpa)k +(and)e(H)1338 1165 y Fm(A)1366 1158 y Fo(,)g(NS)1466 1165 y +Fm(A)1494 1158 y Fo('s)f(resolution)h(attempt)149 1248 y(will)16 +b(\014nally)f(gran)o(t)i(H)555 1255 y Fm(B)598 1248 y Fo(access)f(to)h(NS)865 +1255 y Fm(A)894 1248 y Fo(.)223 1339 y(This)d(sho)o(ws)i(the)e(simplicit)o(y) +d(of)k(an)g(attac)o(k)g(that)g(is)f(based)h(up)q(on)h(trust)f(placed)f(in)g +(the)h(data)149 1429 y(pro)o(vided)h(b)o(y)f(DNS.)g(It)h(is)g(based)g(on)g(a) +h(w)o(eakness)e(in)h(the)g(DNS,)f(not)h(an)h(easily)e(\014xable)g(bug)i(in) +149 1519 y(the)f(impleme)o(n)o(tation)e(of)i(a)h(particular)f(net)o(w)o(ork)f +(service.)223 1610 y(One)k(widely)g(accepted)h(w)o(a)o(y)f(of)i(dealing)e +(with)h(this)g(problem)f(is)g(the)h(Berk)o(eley)d(soft)o(w)o(are)149 +1700 y(patc)o(h)e(describ)q(ed)g(in)g(section)f(4.5.)22 b(Ho)o(w)o(ev)o(er,) +13 b(adding)i(an)h(additional)f(Domain)g(Name)e(System)149 +1790 y(query)19 b(of)g(the)g(determined)e(host)j(name)e(to)h(the)g(serv)o(er) +f(co)q(de)i(and)g(comparing)e(the)h(returned)149 1880 y(IP)f(addresses)g +(against)g(the)f(original)h(IP)f(address)h(for)g(a)g(matc)o(h)e(only)h(adds)h +(to)g(the)f(qualit)o(y)f(of)149 1971 y(securit)o(y;)e(it)g(do)q(es)h(not)g +(pro)o(vide)e(complete)g(securit)o(y)l(.)19 b(An)14 b(attac)o(k)o(er)g(can)g +(piggybac)o(k)g(additional)149 2061 y(resource)e(records)g(to)g(the)g(answ)o +(er)g(pac)o(k)o(et)f(to)i(the)e(\014rst)i(query)l(.)19 b(Doing)12 +b(so,)h(the)f(attac)o(k)o(er)f(p)q(oisons)149 2151 y(the)21 +b(victim')o(s)d(cac)o(he)i(with)g(false)g(information,)g(suc)o(h)g(that)h +(the)f(forw)o(ard)h(lo)q(okup)h(w)o(ould)e(not)149 2242 y(disclose)g(the)g +(attac)o(k.)33 b(In)20 b(Section)f(3.5.6)i(w)o(e)f(go)h(in)o(to)e(more)g +(detail)h(on)h(this)f(issue)g(when)g(w)o(e)149 2332 y(describ)q(e)c(our)h +(concrete)e(approac)o(h)i(of)g(cac)o(he)e(corruption.)p eop +%%Page: 38 47 +46 bop 1901 -100 a Fo(38)149 75 y(3.3)50 b(W)l(eaknesses)223 +214 y(In)15 b(this)h(section)g(w)o(e)f(describ)q(e)h(the)f(conditions)h(that) +h(m)o(ust)d(hold)j(to)f(facilitate)f(a)h(break{in.)149 305 +y(The)k(Domain)f(Name)f(System)f(is)j(w)o(eak)f(in)g(sev)o(eral)g(places.)30 +b(W)l(e)19 b(examine)f(the)h(problems)f(of)149 395 y(name{based)h(authen)o +(tication)g(pro)q(cesses,)h(trusting)f(information)f(that)i(comes)d(from)h +(an)i(un-)149 485 y(trust)o(w)o(orth)o(y)e(authorit)o(y)l(,)f(and)h +(accepting)f(additional,)g(p)q(ossibly)h(incorrect)f(information)f(that)149 +575 y(w)o(as)h(not)g(requested,)e(but)h(that)h(seems)e(to)h(pro)o(vide)g(adv) +m(an)o(tages)h(for)g(run)o(time)d(p)q(erformance.)149 735 y(3.3.1)49 +b(Assumptions)16 b(to)g(F)l(acilitate)f(Break{ins)223 858 y(In)g(our)g(setup) +h(w)o(e)f(assume)f(that)i(the)f(attac)o(k)o(er)f(has)i(complete)d(con)o(trol) +i(o)o(v)o(er)g(mac)o(hine)e(NS)1922 865 y Fm(B)149 948 y Fo(running)19 +b(a)g(legitimate)c(primary)i(name)g(serv)o(er)g(for)i(a)g(DNS)f(zone.)27 +b(This)18 b(strong)i(assumption)149 1039 y(do)q(es)g(not)f(alw)o(a)o(ys)g +(need)f(to)h(b)q(e)g(satis\014ed.)30 b(It)18 b(is)h(simply)d(the)j(easiest)f +(w)o(a)o(y)h(for)g(an)g(attac)o(k)o(er)f(if)149 1129 y(he)e(con)o(trols)f(a)h +(primary)e(name)g(serv)o(er,)g(b)q(ecause)i(of)g(its)f(capabilities)g(and)h +(the)f(fact)g(that)h(other)149 1219 y(mac)o(hines)f(b)q(eliev)o(e)f(name)h +(serv)o(ers.)223 1309 y(Dep)q(ending)g(on)g(the)g(top)q(ology)i(of)e(a)g +(real)g(net)o(w)o(ork)f(it)h(is)g(su\016cien)o(t)e(if)i(an)g(attac)o(k)o(er)g +(con)o(trols)149 1400 y(one)i(of)f(the)g(authoritativ)o(e)f(name)g(serv)o +(ers)g(for)h(the)g(particular)f(zone;)h(the)f(one)i(that)f(is)g(queried)149 +1490 y(\014rst)e(b)o(y)f(the)g(remote)e(resolv)o(er.)19 b(It)13 +b(is)g(not)h(m)o(uc)o(h)d(easier)i(for)g(an)h(attac)o(k)o(er)e(to)i(satisfy)f +(this)g(second)149 1580 y(assumption)j(than)h(the)f(\014rst)h(one.)223 +1671 y(The)c(con)o(trol)f(m)o(ust)g(include)g(the)h(asso)q(ciated)h(in)o(v)o +(erse)d(mapping)h(tree.)20 b(The)13 b(attac)o(k)o(er)f(migh)o(t)149 +1761 y(ha)o(v)o(e)j(successfully)g(sub)o(v)o(erted)g(suc)o(h)g(a)h(mac)o +(hine)e(or)i(simply)e(b)q(e)h(a)i(renegade)e(system)g(adminis-)149 +1851 y(trator.)22 b(Both)17 b(ha)o(v)o(e)e(happ)q(ened)i(in)f(the)g(past)h +(\(i.e.)j([Sto89,)c(Mad92)q(]\).)223 1941 y(W)l(e)f(can)h(relax)f(this)h +(assumption)g(further.)k(If)c(an)g(attac)o(king)g(mac)o(hine)d(manages)j(to)g +(some-)149 2032 y(ho)o(w)k(obtain)g(the)g(ID)f(n)o(um)o(b)q(er)f(of)i(a)g +(curren)o(t)f(DNS)g(query)g(to)h(a)g(legitimate)d(name)h(serv)o(er,)h(it)149 +2122 y(could)h(run)g(some)e(co)q(de)i(\(e.g.)31 b(a)20 b(to)q(ol)g(that)g +(constructs)g(the)f(resp)q(onse)h(pac)o(k)o(et)f(and)h(uses)g(the)149 +2212 y(source)e(route)f(option)g(to)h(send)f(it)g(to)g(the)g(originator)h(of) +f(a)h(query\))e(to)h(answ)o(er)h(the)f(query)f(and)149 2303 +y(supply)j(additional)g(records)g(to)h(p)q(oison)g(the)f(cac)o(he.)28 +b(The)19 b(ID)g(n)o(um)o(b)q(er)e(prediction)h(could)h(b)q(e)149 +2393 y(based)h(on)f(previously)g(receiv)o(ed)d(queries)i(and)i(kno)o(wledge)e +(on)i(ho)o(w)f(a)h(resolv)o(er)e(mo)q(di\014es)g(the)149 2483 +y(iden)o(ti\014er.)i(An)15 b(attac)o(k)h(based)g(on)h(TCP)f(sequence)f(n)o +(um)o(b)q(er)f(prediction)h(to)i(construct)f(a)g(TCP)149 2573 +y(pac)o(k)o(et)h(sequence)f(that)h(allo)o(ws)h(an)f(attac)o(k)o(er)g(to)g(sp) +q(o)q(of)i(a)f(trusted)f(host's)h(iden)o(tit)o(y)d(on)j(a)g(lo)q(cal)p +eop +%%Page: 39 48 +47 bop 1901 -100 a Fo(39)149 75 y(net)o(w)o(ork)17 b(w)o(as)h(describ)q(ed)e +(in)h([Mor85)q(].)23 b(This)18 b(example)d(sho)o(ws)j(the)f(feasibilit)o(y)e +(of)i(ID)g(n)o(um)o(b)q(er)149 165 y(prediction.)223 255 y(In)e(the)g(follo)o +(wing)h(discussion)g(w)o(e)f(will)f(assume)h(that)i(the)e(attac)o(k)o(er)g +(has)h(indeed)f(sup)q(eruser)149 346 y(access)22 b(to)f(a)h(primary)e(name)g +(serv)o(er.)35 b(With)21 b(that)h(assumption)f(in)g(place)g(w)o(e)g(decrease) +g(the)149 436 y(complexit)o(y)13 b(of)k(the)f(follo)o(wing)g(discussions.)149 +596 y(3.3.2)49 b(Authen)o(tication)15 b(via)h(Host)h(Names)223 +718 y(W)l(e)c(explained)g(in)g(the)h(in)o(tro)q(duction)f(that)h(users)g(ha)o +(v)o(e)f(to)h(b)q(e)g(authorized)g(b)o(y)f(net)o(w)o(ork)g(ser-)149 +809 y(vice)k(pro)o(viders)h(b)q(efore)g(they)g(can)g(use)g(the)g(service.)26 +b(This)18 b(authen)o(tication)g(is)g(usually)g(based)149 899 +y(on)h(the)f(v)o(eri\014cation)f(of)h(the)g(user's)g(login)g(name)f(along)i +(with)f(the)g(asso)q(ciated)h(passw)o(ord)h(and)149 989 y(the)e(host)h(name)e +(of)i(the)f(mac)o(hine)e(on)i(whic)o(h)g(the)g(user)g(starts)h(his)f +(requests.)27 b(Net)o(w)o(orks)17 b(ma)o(y)149 1079 y(b)q(e)d(classi\014ed)f +(in)o(to)g(di\013eren)o(t)f(partitions)905 1061 y Fm(1)925 +1079 y Fo(:)20 b(Closed)14 b(Net)o(w)o(orks,)e(Op)q(en)i(Net)o(w)o(orks,)e +(and)i(T)l(rusted)149 1170 y(Net)o(w)o(orks)k([PL91)q(].)26 +b(Closed)19 b(Net)o(w)o(orks)e(can)h(b)q(e)h(accessed)f(only)g(within)f +(certain)h(b)q(oundaries.)149 1260 y(Sessions)f(are)g(con)o(trolled)e(and)i +(secured)f(in)g(accordance)g(with)g(the)g(rules)g(implied)d(b)o(y)j(an)h +(orga-)149 1350 y(nization's)i(business)h(goals.)31 b(In)19 +b(a)h(Closed)g(Net)o(w)o(ork,)e(the)h(lo)q(cation)h(of)g(all)e(resources)i +(is)f(w)o(ell)149 1441 y(kno)o(wn)e(and)g(sp)q(eci\014ed.)223 +1531 y(Op)q(en)e(Net)o(w)o(orks)f(are)h(regions)h(separated)g(b)o(y)e(b)q +(oundaries)j(from)d(their)g(surroundings,)i(but)149 1621 y(the)f(transfer)g +(of)f(information)g(across)i(these)e(b)q(oundaries)h(is)g(admitted.)k(They)14 +b(are)h(augmen)o(ted)149 1711 y(b)o(y)g(publicly)f(accessible)g(parts)i(or)g +(connections)f(to)h(net)o(w)o(orks)f(o)o(wned)h(b)o(y)e(other)i(companies)e +(or)149 1802 y(organizations.)22 b(These)13 b(t)o(w)o(o)h(extensions)f(mak)o +(e)f(this)h(t)o(yp)q(e)g(of)h(net)o(w)o(ork)f(vulnerable)f(to)i(external)149 +1892 y(threats.)223 1982 y(T)l(rusted)j(Net)o(w)o(orks)g(in)o(tro)q(duce)g +(the)g(concept)h(that)f(net)o(w)o(ork)g(access)h(is)f(con)o(trolled)g(at)h +(the)149 2073 y(en)o(try)k(no)q(de.)40 b(In)22 b(the)h(case)f(of)h(large)f +(in)o(ternational)g(net)o(w)o(orks,)h(main)o(tainabilit)o(y)c(and)k(con-)149 +2163 y(trollabilit)o(y)17 b(are)h(imp)q(ortan)o(t)g(issues.)27 +b(Adopting)19 b(the)f(T)l(rusted)g(Net)o(w)o(ork)f(concept)h(allo)o(ws)h(the) +149 2253 y(decomp)q(osition)13 b(of)g(a)h(large)f(net)o(w)o(ork,)g(gro)o +(wing)h(to)o(w)o(ards)g(an)g(unmanageable)f(complexit)o(y)-5 +b(,)11 b(in)o(to)149 2343 y(relativ)o(ely)h(small)h(national)h(or)h(regional) +f(net)o(w)o(orks,)g(eac)o(h)g(supp)q(orted)h(b)o(y)f(lo)q(cal)g(sta\013,)h +(and)g(eac)o(h)149 2434 y(pro)o(vided)h(with)g(its)g(o)o(wn)g(net)o(w)o(ork)g +(access)g(con)o(trol.)21 b(The)16 b(adv)m(an)o(tages)i(are)e(increased)g(con) +o(trol-)149 2524 y(labilit)o(y)l(,)e(main)o(tainabilit)o(y)l(,)e +(manageabilit)o(y)l(,)i(and)i(simpli\014cation)e(of)i(c)o(hange)g(managemen)o +(t.)j(A)p 149 2568 720 2 v 206 2598 a Fl(1)224 2613 y Fk(A)14 +b(v)o(ery)g(similar)e(classi\014cation)h(is)h(applicable)f(to)h(systems)g(in) +f(general.)p eop +%%Page: 40 49 +48 bop 1901 -100 a Fo(40)149 75 y(T)l(rusted)12 b(Net)o(w)o(ork)f(can)h(b)q +(e)g(regarded)g(globally)g(as)g(a)g(single)g(Closed)g(Net)o(w)o(ork,)f(but)h +(from)e(a)j(lo)q(cal)149 165 y(p)q(oin)o(t)j(of)g(view,)f(the)h(in)o +(terconnected)e(net)o(w)o(orks)h(stand)i(widely)d(op)q(en)j(with)f(all)f(the) +g(applicable)149 255 y(securit)o(y)g(threats.)223 346 y(The)f(In)o(ternet)f +(is)i(a)g(system)e(of)i(T)l(rusted)g(Net)o(w)o(orks)e(within)h(Op)q(en)h(Net) +o(w)o(orks.)20 b(This)14 b(allo)o(ws)149 436 y(the)20 b(danger)f(that)h(once) +f(someone)g(has)h(falsely)e(gained)i(access)f(to)h(one)f(mac)o(hine,)f(it)h +(is)g(m)o(uc)o(h)149 526 y(simpler)12 b(to)i(sub)o(v)o(ert)e(others.)21 +b(Within)13 b(T)l(rusted)h(Net)o(w)o(orks)f(users)h(are)f(authen)o(ticated)g +(solely)g(b)o(y)149 616 y(their)j(login)h(name)e(and)i(connecting)f(host)h +(name.)k(The)c(login)f(name)g(is)g(sp)q(eci\014ed)g(b)o(y)g(the)g(con-)149 +707 y(necting)h(site,)e(and)j(therefore)e(can)g(b)q(e)h(falsi\014ed,)f(suc)o +(h)h(that)g(the)f(only)h(\\reliable")f(information)149 797 +y(left)c(for)h(the)g(addressed)g(mac)o(hine)d(is)j(the)f(connecting)g(mac)o +(hine's)f(IP)h(address)22 b(that)13 b(is)f(pro)o(vided)149 +887 y(b)o(y)17 b(an)h(op)q(erating)g(system)e(call.)24 b(The)17 +b(addressed)h(mac)o(hine)d(then)i(maps)g(the)g(IP)g(address)h(in)o(to)149 +978 y(a)e(host)g(name)e(using)i(the)f(Domain)f(Name)g(System.)19 +b(If)c(an)g(attac)o(k)o(er)g(manages)g(to)g(sub)o(v)o(ert)g(this)149 +1068 y(name)g(binding)h(call,)f(he)h(can)g(falsify)g(the)f(name)g(of)i(a)f +(mac)o(hine)e(within)i(the)f(T)l(rusted)i(Net)o(w)o(ork)149 +1158 y(and)g(therefore)f(succeed)f(in)h(his)g(attac)o(k.)149 +1318 y(3.3.3)49 b(T)l(rusting)17 b(a)g(Not)f(T)l(rust)o(w)o(orth)o(y)g +(Source)223 1441 y(Using)i(the)g(Domain)g(Name)f(System)g(to)i(map)e(the)i +(IP)f(address)h(pro)o(vided)f(b)o(y)g(lo)o(w)o(er)g(lev)o(el)149 +1531 y(proto)q(col)i(la)o(y)o(ers)d(in)o(to)h(the)g(applicable)f(host)i +(name,)f(the)g(addressed)h(host)g(blindly)e(trusts)i(the)149 +1621 y(information)e(that)h(is)f(pro)o(vided)g(b)o(y)g(the)g(Domain)g(Name)e +(System.)23 b(Information)17 b(that)h(comes)149 1711 y(from)f(sources)g +(outside)h(of)f(the)g(trusted)g(area)h(is)f(trusted.)25 b(That)18 +b(is)f(a)g(sev)o(ere)f(violation)h(of)h(the)149 1802 y(partitioning)f +(concept.)k(Only)15 b(truly)h(authoritativ)o(e)f(information)h(should)g(b)q +(e)h(trusted.)149 1962 y(3.3.4)49 b(Believing)15 b(Additional,)g(Not)h +(Authoritativ)o(e)f(Information)223 2084 y(E\016ciency)i(is)i(one)h(of)f(the) +g(stated)h(goals)g(of)g(the)f(Domain)g(Name)e(System,)h(as)i(w)o(e)f(sa)o(w)h +(in)149 2174 y(Section)13 b(2.3.2.)20 b(The)13 b(DNS)g(pac)o(k)o(et)f(con)o +(tains)h(an)h(additional)f(answ)o(er)g(section)g(\(see)f(Figure)h(2.3\),)149 +2265 y(where)19 b(name)f(serv)o(ers)g(can)h(pro)o(vide)f(resource)h(records)g +(con)o(taining)f(information)g(that)i(could)149 2355 y(come)c(in)h(handy)h +(in)f(future)g(requests,)g(but)h(that)g(w)o(ere)e(not)i(explicitly)d +(requested.)23 b(There)17 b(are)149 2445 y(situations)f(where)g(these)f +(additional)g(records)h(yield)e(in)h(system)f(e\016ciency)l(,)f(for)j +(example)e(after)149 2536 y(the)h(lo)q(okup)h(of)g(\\NS")f(records)g(when)h +(\\A")f(records)g(sp)q(ecifying)g(the)g(addresses)g(of)h(the)f(queried)149 +2626 y(name)k(serv)o(ers)f(are)i(found)g(in)f(the)g(additional)h(answ)o(er)f +(section.)31 b(That)20 b(sa)o(v)o(es)f(the)g(lo)q(okup)h(of)p +eop +%%Page: 41 50 +49 bop 1901 -100 a Fo(41)149 75 y(the)18 b(IP)g(addresses,)g(once)f(the)h +(name)f(of)h(the)f(applicable)g(name)g(serv)o(er)f(is)i(found.)26 +b(Additional)149 165 y(resource)16 b(records)h(are)f(cac)o(hed)f(for)i +(future)f(use.)223 255 y(As)j(w)o(e)g(rely)f(on)i(the)f(correctness)g(of)h +(these)f(additional)h(records)f(once)g(w)o(e)g(use)h(them,)e(w)o(e)149 +346 y(trust)23 b(information)e(that)h(comes)f(from)g(a)h(source)g(p)q +(ossibly)g(outside)g(of)h(the)e(trusted)h(scop)q(e.)149 436 +y(That)17 b(is)f(another)h(violation)f(of)h(the)f(partitioning)g(concept.)149 +601 y(3.4)50 b(Exploiting)15 b(the)h(Fla)o(ws)223 741 y(The)21 +b(follo)o(wing)h(sections)f(are)h(the)g(most)f(concrete)g(description)g(of)h +(ho)o(w)g(to)g(exploit)f(the)149 831 y(securit)o(y)f(\015a)o(w)g(in)h(the)f +(Domain)g(Name)f(System.)32 b(In)20 b(this)h(c)o(hapter)f(w)o(e)g(concen)o +(trate)g(on)h(the)149 921 y(\\rlogin")16 b(command)e(of)h(Berk)o(eley)e +(UNIX.)g(W)l(e)i(do)g(not)h(explain)f(the)g(whole)g(\\rlogin")h(proto)q(col) +149 1012 y(in)g(detail,)f(but)i(only)f(state)g(the)g(parts)h(and)g(commands)e +(that)h(are)g(related)g(to)h(our)f(in)o(terest.)149 1172 y(3.4.1)49 +b(Regular)17 b(Access)780 1414 y(T)l(able)f(3.1)33 b(Regular)16 +b(access)451 1491 y(host)h(NS)621 1498 y Fm(A)665 1491 y Fo(\()p +Fh(rlogind)p Fo(\))p 1223 1518 2 91 v 408 w(Bob@H)1409 1498 +y Fm(A)p 426 1520 1247 2 v 1223 1610 2 91 v 1248 1583 a Fg(rlogin)f +Fo(NS)1450 1590 y Fm(A)1495 1583 y Fg(-l)g(Alice)451 1673 y +Ff(getpeernam)o(e\(\))c Fj(!)k Fo(IP)917 1680 y Fm(H)943 1686 +y Fe(A)p 1223 1701 V 451 1764 a Ff(gethostbya)o(ddr)o(\()p +Fo(I)o(P)861 1771 y Fm(H)887 1777 y Fe(A)913 1764 y Ff(\))g +Fj(!)g Fo(H)1058 1771 y Fm(A)p 1223 1791 V 451 1854 a Fo(\014nd)g(en)o(try)g +(H)713 1861 y Fm(A)767 1854 y Ff(Bob)f Fo(in)h Fh(~Alice/.rhosts)p +1223 1881 V 451 1944 a Fo(gran)o(t)h(access)p 1223 1971 V 223 +2230 a(T)l(able)g(3.1)h(giv)o(es)f(the)h(pro)q(cedure)g(follo)o(w)o(ed)e +(during)i(a)g(regular)g(remote)e(login.)26 b(Time)16 b(pro-)149 +2321 y(ceeds)j(from)e(top)i(to)g(b)q(ottom)g(of)g(the)f(table.)28 +b(User)19 b(Bob)f(on)i(mac)o(hine)c(H)1536 2328 y Fm(A)1583 +2321 y Fo(w)o(an)o(ts)j(to)g(log)g(in)o(to)149 2411 y(mac)o(hine)g(NS)409 +2418 y Fm(A)437 2411 y Fo(.)36 b(The)21 b(underlying)f(proto)q(cols)i(create) +f(a)g(connection)g(b)q(et)o(w)o(een)f(the)h(\\rlogin")149 2501 +y(program)d(and)h(the)e(\\rlogind")i(daemon.)26 b(During)18 +b(the)f(authen)o(tication)h(pro)q(cess)g(the)g(daemon)149 2592 +y(retriev)o(es)f(the)g(IP)h(address)h(of)f(the)g(connecting)g(mac)o(hine:)k +(IP)1330 2599 y Fm(H)1356 2605 y Fe(A)1383 2592 y Fo(.)27 b(It)17 +b(then)h(uses)g(the)g(Domain)p eop +%%Page: 42 51 +50 bop 1901 -100 a Fo(42)149 75 y(Name)12 b(System)f(to)j(map)e(this)h +(address)g(to)h(a)f(host)h(name.)19 b(The)13 b(call)f(of)i(\\gethostb)o(y)o +(addr\(IP)1853 82 y Fm(H)1879 88 y Fe(A)1906 75 y Fo(\)")149 +165 y(do)q(es)j(that)g(and)g(returns)f(H)665 172 y Fm(A)693 +165 y Fo(.)223 255 y(The)21 b(daemon)f(then)h(c)o(hec)o(ks)f(whether)h(the)f +(user)i(from)e(the)h(mac)o(hine)d(with)j(name)f(H)1867 262 +y Fm(A)1917 255 y Fo(is)149 346 y(allo)o(w)o(ed)k(access)g(b)o(y)g(scanning)h +(the)f(en)o(tries)f(in)i(the)f(\\.rhosts")h(\014le)f(of)h(user)f(Alice.)44 +b(If)24 b(the)149 436 y(appropriate)19 b(en)o(try)d(is)i(found,)g(access)f +(is)g(gran)o(ted.)26 b(If)17 b(the)g(system)f(administrator)h(of)h(system)149 +526 y(NS)213 533 y Fm(A)258 526 y Fo(has)f(installed)f(the)g +(\\/etc/hosts.equiv")g(\014le)g(and)h(en)o(tered)e(the)i(name)e(of)h(host)i +(H)1797 533 y Fm(A)1825 526 y Fo(,)e(then)149 616 y(access)h(is)f(gran)o(ted) +g(ev)o(en)f(without)i(a)f(user)h(main)o(tained)d(en)o(try)h(in)h(\014le)g +(\\.rhosts.")149 778 y(3.4.2)49 b(The)17 b(\\Database)h(Mo)q(di\014cation")f +(Approac)o(h)514 1014 y(T)l(able)g(3.2)32 b(The)17 b(\\Database)h(Mo)q +(di\014cation")f(approac)o(h)451 1091 y(host)g(NS)621 1098 +y Fm(A)665 1091 y Fo(\()p Fh(rlogind)p Fo(\))p 1223 1118 2 +91 v 408 w(Bob@H)1409 1098 y Fm(B)p 426 1120 1247 2 v 1223 +1210 2 91 v 1248 1183 a Fg(rlogin)f Fo(NS)1450 1190 y Fm(A)1495 +1183 y Fg(-l)g(Alice)451 1273 y Ff(getpeernam)o(e\(\))c Fj(!)k +Fo(IP)917 1280 y Fm(H)943 1286 y Fe(B)p 1223 1301 V 451 1364 +a Ff(gethostbya)o(ddr)o(\()p Fo(I)o(P)861 1371 y Fm(H)887 1377 +y Fe(B)912 1364 y Ff(\))g Fj(!)g Fo(H)1057 1371 y Fm(A)p 1223 +1391 V 451 1454 a Fo(\014nd)g(en)o(try)g(H)713 1461 y Fm(A)767 +1454 y Ff(Bob)f Fo(in)h Fh(~Alice/.rhosts)p 1223 1481 V 451 +1544 a Fo(gran)o(t)h(access)p 1223 1571 V 223 1824 a(This)f(is)h(the)f +(\014rst)h(example)d(of)j(ho)o(w)g(an)h(attac)o(k)o(er)d(can)i(sp)q(o)q(of)h +(someone)e(else's)g(host)h(name.)149 1914 y(Host)22 b(H)307 +1921 y Fm(B)355 1914 y Fo(b)q(eha)o(v)o(es)e(as)i(if)f(it)g(w)o(ere)f(host)i +(H)975 1921 y Fm(A)1003 1914 y Fo(.)36 b(The)21 b(access)h(pattern)f(is)g(v)o +(ery)f(similar)f(to)j(the)149 2005 y(previous,)g(regular)f(one,)h(except)e +(that)h(the)g(call)f(of)h(\\getp)q(eername\(\)")g(no)o(w)g(returns)g(the)g +(IP)149 2095 y(address)i(of)f(host)h(H)539 2102 y Fm(B)566 +2095 y Fo(.)38 b(If)21 b(the)h(DNS)g(database)h(is)f(mo)q(di\014ed)e(b)o(y)i +(the)f(attac)o(k)o(er,)h(the)g(call)f(of)149 2185 y(\\gethostb)o(y)o +(addr\(\)")g(do)q(es)f(not)f(return)g(the)g(name)f(H)1169 2192 +y Fm(B)1215 2185 y Fo(as)h(it)g(w)o(ould)g(with)g(a)h(database)g(in)f(an)149 +2276 y(unimpaired)c(state,)h(but)g(the)g(name)f(H)880 2283 +y Fm(A)908 2276 y Fo(.)22 b(Bob@H)1105 2283 y Fm(B)1148 2276 +y Fo(\014nally)15 b(gets)i(access)f(to)h(NS)1663 2283 y Fm(A)1692 +2276 y Fo(.)149 2437 y(3.4.3)49 b(The)17 b(\\Cac)o(he)f(P)o(oisoning")h +(Approac)o(h)223 2560 y(In)j(this)h(approac)o(h)g(the)g(\\rlogind")g(daemon)f +(tries)h(to)g(enhance)f(securit)o(y)f(b)o(y)i(calling)f(the)149 +2650 y(function)g(\\gethostb)o(yname\(\)")f(to)g(v)o(erify)f(the)h(mapping)g +(from)f(IP)1431 2657 y Fm(H)1457 2663 y Fe(B)1502 2650 y Fo(to)h(H)1601 +2657 y Fm(A)1630 2650 y Fo(.)30 b(The)19 b(attac)o(k)o(er)p +eop +%%Page: 43 52 +51 bop 1901 -100 a Fo(43)580 101 y(T)l(able)16 b(3.3)33 b(The)16 +b(\\Cac)o(he)h(P)o(oisoning")g(approac)o(h)451 178 y(host)g(NS)621 +185 y Fm(A)665 178 y Fo(\()p Fh(rlogind)p Fo(\))p 1223 205 +2 91 v 408 w(Bob@H)1409 185 y Fm(B)p 426 207 1247 2 v 1223 +297 2 91 v 1248 270 a Fg(rlogin)f Fo(NS)1450 277 y Fm(A)1495 +270 y Fg(-l)g(Alice)451 360 y Ff(getpeernam)o(e\(\))c Fj(!)k +Fo(IP)917 367 y Fm(H)943 373 y Fe(B)p 1223 387 V 451 451 a +Ff(gethostbya)o(ddr)o(\()p Fo(I)o(P)861 458 y Fm(H)887 464 +y Fe(B)912 451 y Ff(\))g Fj(!)g Fo(H)1057 458 y Fm(A)p 1223 +478 V 516 541 a Fo(and)h(H)648 548 y Fm(A)692 541 y Fj(!)f +Fo(IP)809 548 y Fm(H)835 554 y Fe(B)877 541 y Fo(mapping)p +1223 568 V 451 631 a Ff(gethostbyn)o(ame)o(\()p Fo(H)849 638 +y Fm(A)875 631 y Ff(\))g Fj(!)g Fo(IP)1034 638 y Fm(H)1060 +644 y Fe(B)p 1223 658 V 451 721 a Fo(\014nd)g(en)o(try)g(H)713 +728 y Fm(A)767 721 y Ff(Bob)f Fo(in)h Fh(~Alice/.rhosts)p 1223 +749 V 451 812 a Fo(gran)o(t)h(access)p 1223 839 V 149 1067 +a(ho)o(w)o(ev)o(er)i(has)i(a)g(w)o(a)o(y)f(of)h(sub)o(v)o(erting)e(this)h +(additional)h(securit)o(y)d(feature.)33 b(He)20 b(can)g(send)h(the)149 +1157 y(additional)d(mapping)e(of)i(H)676 1164 y Fm(A)721 1157 +y Fo(to)f(IP)832 1164 y Fm(H)858 1170 y Fe(B)901 1157 y Fo(along)h(with)f +(the)g(answ)o(er)g(to)h(the)f(query)f(for)i(IP)1799 1164 y +Fm(H)1825 1170 y Fe(B)1851 1157 y Fo(.)24 b(By)149 1248 y(the)17 +b(time)d(the)i(daemon)g(calls)g(\\gethostb)o(yname\(\),")f(it)h(already)h +(has)g(the)f(necessary)g(mapping)149 1338 y(information)g(in)g(its)g(cac)o +(he.)22 b(The)16 b(daemon)g(b)q(eliev)o(es)f(the)h(cac)o(hed)g(data)h(and)g +(again)g(gran)o(ts)h(the)149 1428 y(attac)o(k)o(er)e(access.)149 +1588 y(3.4.4)49 b(The)17 b(\\Ask)f(Me!")21 b(Approac)o(h)223 +1711 y(In)16 b(the)g(previous)g(sections)h(w)o(e)f(exploited)f(the)h(securit) +o(y)f(w)o(eakness)h(of)h(the)f(Domain)g(Name)149 1801 y(System)f(according)i +(to)f(S.)g(Bello)o(vin's)e(suggestions.)223 1891 y(W)l(e)i(though)o(t)h(of)g +(another)h(w)o(a)o(y)e(to)h(exploit)f(the)g(w)o(eakness.)23 +b(If)16 b(some)g(en)o(tit)o(y)f(sen)o(t)h(a)h(source)149 1982 +y(routed)e(datagram,)f(con)o(taining)g(a)h(DNS)f(message)f(with)h(false)g +(additional)g(resource)g(records)g(to)149 2072 y(a)i(name)e(serv)o(er,)g(w)o +(ould)h(that)h(name)e(serv)o(er)g(accept)h(the)g(data?)22 b(The)15 +b(idea)g(here)g(is)g(to)h(p)q(oison)g(a)149 2162 y(name)h(serv)o(er's)f(cac)o +(he)g(with)i(all)f(necessary)g(information)f(\(for)i(rev)o(erse)e(and)i(forw) +o(ard)g(lo)q(okup\))149 2252 y(b)q(efore)f(the)f(\\rlogin")h(attac)o(k)f(is)g +(launc)o(hed.)223 2343 y(W)l(e)21 b(will)f(explain)g(in)h(Section)g(4.1)h(wh) +o(y)f(this)g(cannot)h(w)o(ork)f(using)h(source)f(routed)h(DNS)149 +2433 y(messages)14 b(directly)l(.)19 b(This)c(depriv)o(es)e(us)i(of)g(the)f +(c)o(hance)g(of)h(eliminating)d(the)i(basic)h(assumption)149 +2523 y(of)g(the)f(attac)o(k)o(er)f(ha)o(ving)h(sup)q(eruser)h(priorit)o(y)e +(on)i(a)f(primary)f(name)g(serv)o(er)g(in)h(order)g(to)h(launc)o(h)149 +2614 y(an)i(attac)o(k.)p eop +%%Page: 44 53 +52 bop 1901 -100 a Fo(44)223 75 y(Nev)o(ertheless,)13 b(the)j(idea)g(can)h(b) +q(e)f(exploited)f(in)h(another)h(w)o(a)o(y)l(,)e(on)i(a)g(higher)f(lev)o(el,) +d(and)k(far)149 165 y(more)c(elegan)o(tly)f(than)i(creating)g(and)g(sending)g +(datagrams)g(man)o(ually)l(.)k(Imagine)12 b(the)i(follo)o(wing)149 +255 y(scenario:)223 346 y(The)j(attac)o(k)o(er)f(on)i(name)e(serv)o(er)g(NS) +918 353 y Fm(B)963 346 y Fo(whishes)h(to)g(giv)o(e)g(NS)1368 +353 y Fm(A)1414 346 y Fo(wrong)h(information)e(ab)q(out)149 +436 y(the)g(mappings)222 568 y Fj(\017)24 b Fo(IP)322 575 y +Fm(H)348 581 y Fe(B)390 568 y Fj(!)16 b Fo(H)493 575 y Fm(B)520 +568 y Fo(.sub.domain.dom)149 699 y(and)222 831 y Fj(\017)24 +b Fo(H)308 838 y Fm(B)335 831 y Fo(.sub.domain.dom)14 b Fj(!)i +Fo(IP)831 838 y Fm(H)857 844 y Fe(B)883 831 y Fo(.)149 963 +y(NS)213 970 y Fm(B)256 963 y Fo(w)o(an)o(ts)h(NS)459 970 y +Fm(A)503 963 y Fo(to)g(b)q(eliev)o(e)d(the)i(mappings)222 1095 +y Fj(\017)24 b Fo(IP)322 1102 y Fm(H)348 1108 y Fe(B)390 1095 +y Fj(!)16 b Fo(H)493 1102 y Fm(A)521 1095 y Fo(.domain.dom)149 +1227 y(and)222 1358 y Fj(\017)24 b Fo(H)308 1365 y Fm(A)336 +1358 y Fo(.domain.dom)14 b Fj(!)i Fo(IP)746 1365 y Fm(H)772 +1371 y Fe(B)798 1358 y Fo(.)223 1490 y(As)21 b(NS)363 1497 +y Fm(B)412 1490 y Fo(cannot)g(simply)f(send)h(the)g(false)g(information)f(to) +i(NS)1455 1497 y Fm(A)1513 1490 y Fo(it)f(could)g(ask)h(NS)1856 +1497 y Fm(A)1906 1490 y Fo(to)149 1581 y(resolv)o(e)14 b(a)h(mapping)f(that)h +(only)f(NS)819 1588 y Fm(B)861 1581 y Fo(can)h(resolv)o(e.)k(NS)1191 +1588 y Fm(B)1232 1581 y Fo(w)o(ould)c(then)g(app)q(end)g(the)f(additional)149 +1671 y(incorrect)j(information)g(to)i(the)f(resp)q(onse)h(to)f(NS)1092 +1678 y Fm(A)1120 1671 y Fo('s)g(query)l(.)26 b(Doing)18 b(so,)h(NS)1611 +1678 y Fm(A)1639 1671 y Fo('s)f(cac)o(he)f(w)o(ould)149 1761 +y(b)q(e)h(p)q(oisoned)h(with)e(the)g(necessary)h(information)e(to)i(allo)o(w) +f(H)1326 1768 y Fm(B)1371 1761 y Fo(to)h(imp)q(ersonate)e(H)1745 +1768 y Fm(A)1791 1761 y Fo(and)i(log)149 1851 y(in)o(to)e(NS)312 +1858 y Fm(A)341 1851 y Fo(.)223 1942 y(W)l(e)i(call)g(this)h(the)g(\\Ask)g +(Me!")29 b(approac)o(h,)20 b(b)q(ecause)f(name)f(serv)o(er)g(NS)1596 +1949 y Fm(B)1642 1942 y Fo(implici)o(tly)d(tells)149 2032 y(name)21 +b(serv)o(er)f(NS)495 2039 y Fm(A)545 2032 y Fo(to)i(send)g(a)g(query)f(to)h +(NS)1043 2039 y Fm(B)1070 2032 y Fo(.)37 b(NS)1185 2039 y Fm(B)1234 +2032 y Fo(therefore)21 b(tells)f(NS)1616 2039 y Fm(A)1666 2032 +y Fo(to)i(ask)g(him)e(a)149 2122 y(question.)223 2213 y(W)l(e)15 +b(did)h(not)h(implem)o(e)o(n)o(t)c(this)j(attac)o(k.)21 b(Using)16 +b(the)f(standard)j(to)q(ol)e(\\nslo)q(okup,")i(NS)1833 2220 +y Fm(B)1876 2213 y Fo(can)149 2303 y(force)i(NS)335 2310 y +Fm(A)383 2303 y Fo(to)h(create)e(a)i(query)l(,)f(and)g(using)h(the)f(name)f +(serv)o(er)g(mo)q(di\014cations)g(describ)q(ed)h(in)149 2393 +y(3.5.6,)c(NS)343 2400 y Fm(B)386 2393 y Fo(can)g(app)q(end)h(the)f(t)o(w)o +(o)g(false)g(resource)f(records)h(to)h(the)f(additional)g(section)f(of)i(the) +149 2483 y(resp)q(onse)g(to)g(the)f(query)l(.)p eop +%%Page: 45 54 +53 bop 1901 -100 a Fo(45)149 75 y(3.5)50 b(Implem)o(e)o(n)o(tation)14 +b(and)j(Exp)q(erimen)o(ts)223 214 y(This)24 b(section)g(describ)q(es)f(our)i +(main)e(exp)q(erimen)o(t)e(step)j(b)o(y)f(step.)45 b(W)l(e)24 +b(start)h(with)f(the)149 305 y(description)12 b(of)g(the)f(setup)h(of)g(our)g +(test)g(zones)g(and)g(the)f(mac)o(hines)f(used.)20 b(W)l(e)12 +b(con)o(tin)o(ue)e(with)i(the)149 395 y(name)k(serv)o(er)f(and)i(resolv)o(er) +e(setups.)21 b(The)16 b(UNIX)f(concept)h(of)g(trusted)h(hosts)g(is)f +(fundamen)o(tal)149 485 y(in)j(exploiting)f(this)h(\015a)o(w.)30 +b(W)l(e)19 b(explain)f(this)h(particular)g(instance)f(of)i(the)e(T)l(rusted)i +(Net)o(w)o(ork)149 575 y(concept)h(follo)o(w)o(ed)g(b)o(y)g(the)g(authen)o +(tication)g(pro)q(cess)h(using)g(the)f(Berk)o(eley)e(\\r{commands.")149 +666 y(Then)j(w)o(e)e(describ)q(e)h(the)g(manipulation)f(in)g(the)h +(authoritativ)o(e)g(data)h(of)f(the)g(name)f(serv)o(er's)149 +756 y(rev)o(erse)14 b(lo)q(okup)i(tree.)k(W)l(e)15 b(also)h(describ)q(e)e +(the)h(\014nal)g(step,)g(the)g(cac)o(he)g(corruption,)g(in)g(the)f(case)149 +846 y(that)j(the)f(Berk)o(eley)e(patc)o(h)i(is)g(already)g(installed.)149 +1006 y(3.5.1)49 b(Domain)16 b(and)h(Zone)f(Setup)223 1129 y(The)i(setup)h(of) +g(our)h(exp)q(erimen)o(tal)15 b(\014eld)k(consisted)f(of)h(t)o(w)o(o)g(zones) +g(\(see)f(Figure)h(3.1\).)29 b(All)149 1219 y(mac)o(hines,)21 +b(the)h(attac)o(k)o(ed)f(mac)o(hine)f(NS)933 1226 y Fm(A)961 +1219 y Fo(,)j(the)f(imitated)d(mac)o(hine)h(H)1522 1226 y Fm(A)1550 +1219 y Fo(,)j(and)g(the)e(attac)o(k)o(er)149 1309 y(mac)o(hines)13 +b(NS)422 1316 y Fm(B)463 1309 y Fo(and)i(H)593 1316 y Fm(B)620 +1309 y Fo(,)f(w)o(ere)g(part)h(of)g(the)f(domain)g(sub.domain.dom.)19 +b(Ho)o(w)o(ev)o(er,)12 b(NS)1828 1316 y Fm(A)1871 1309 y Fo(and)149 +1400 y(H)186 1407 y Fm(A)231 1400 y Fo(con)o(tacted)k(another)g(name)g(serv)o +(er)f(\(NS)984 1407 y Fm(A)1013 1400 y Fo(\))h(than)h(NS)1226 +1407 y Fm(B)1269 1400 y Fo(and)g(H)1401 1407 y Fm(B)1444 1400 +y Fo(\(NS)1526 1407 y Fm(B)1553 1400 y Fo(\).)223 1490 y(In)g(realit)o(y)g +(the)h(attac)o(k)o(er)f(and)i(attac)o(k)o(ed)e(hosts)i(w)o(ould)f(not)h +(reside)e(in)h(the)g(same)f(domain,)149 1580 y(but)25 b(b)q(ecause)f(w)o(e)f +(are)h(solely)f(observing)h(the)g(Domain)f(Name)f(System)h(proto)q(col)h(b)q +(et)o(w)o(een)149 1671 y(name)15 b(serv)o(ers,)g(it)g(did)g(not)i(mak)o(e)d +(a)i(di\013erence)e(as)j(long)f(as)g(the)g(authoritativ)o(e)f(data)i(that)f +(had)149 1761 y(to)j(b)q(e)f(corrupted)h(remained)d(in)i(the)g(attac)o(king)g +(name)f(serv)o(er's)g(zone,)h(outside)g(the)g(attac)o(k)o(ed)149 +1851 y(mac)o(hine's)c(zone.)149 2011 y(3.5.2)49 b(Name)15 b(Serv)o(er)g(and)i +(Resolv)o(er)e(Setup)223 2134 y(Name)i(serv)o(er)h(NS)573 2141 +y Fm(A)621 2134 y Fo(w)o(as)h(set)g(up)h(to)f(con)o(tain)g(primary)f +(information)g(ab)q(out)i(the)f(domain)149 2224 y(domain.dom,)k(whereas)h +(name)e(serv)o(er)g(NS)992 2231 y Fm(B)1043 2224 y Fo(con)o(tained)h(primary) +f(information)g(ab)q(out)j(the)149 2314 y(domain)e(sub.domain.dom.)41 +b(The)24 b(resolv)o(ers)f(of)g(NS)1177 2321 y Fm(A)1229 2314 +y Fo(and)h(NS)1395 2321 y Fm(B)1446 2314 y Fo(w)o(ere)e(set)i(up)g(to)g(con)o +(tact)149 2404 y(the)19 b(name)f(serv)o(ers)h(running)g(on)h(the)f(lo)q(cal)g +(hosts)h(exclusiv)o(ely)l(.)27 b(This)19 b(k)o(ept)g(the)g(information)149 +2495 y(requests)d(on)h(con)o(trollable,)e(w)o(ell{kno)o(wn)g(paths.)p +eop +%%Page: 46 55 +54 bop 1901 -100 a Fo(46)149 75 y(3.5.3)49 b(T)l(rusting)17 +b(Hosts)223 197 y(In)f(Berk)o(eley)e(UNIX)h(and)i(deriv)m(ativ)o(es,)d +(system)i(administrators)g(and)h(users)g(ha)o(v)o(e)e(the)i(op-)149 +287 y(tion)i(to)g(trust)g(other)f(systems,)f(or)i(to)g(trust)g(certain)f +(user)g(accoun)o(ts)h(on)g(remote)e(systems)g(b)o(y)149 378 +y(pro)o(viding)11 b(a)h(\\remote)e(authen)o(tication")i(database.)21 +b(W)l(e)11 b(in)o(tro)q(duced)g(\\trust")h(in)g(section)f(3.3.2.)149 +468 y(The)20 b(\\/etc/hosts.equiv")g(\014le)f(applies)g(to)h(the)g(en)o(tire) +e(system,)g(while)h(individual)f(users)i(can)149 558 y(main)o(tain)15 +b(their)h(o)o(wn)g(\\.rhosts")i(\014les)d(in)h(their)g(home)f(directories.) +223 649 y(The)h(\014le)g(\\/etc/hosts.equiv")g(is)g(main)o(tainable)e(only)j +(b)o(y)e(the)h(sup)q(eruser.)22 b(It)16 b(can)h(con)o(tain)149 +739 y(host)j(names)f(from)f(whic)o(h)g(users)i(can)f(remotely)e(access)i(lo)q +(cal)g(accoun)o(ts)g(without)h(ha)o(ving)f(to)149 829 y(pro)o(vide)h(a)g +(passw)o(ord)i(for)e(authen)o(tication.)32 b(The)20 b(user)h(has)f(to)h(ha)o +(v)o(e)e(the)h(same)f(login)h(id)g(on)149 919 y(b)q(oth)g(mac)o(hines.)27 +b(Access)18 b(is)g(gran)o(ted)h(on)g(basis)h(of)f(the)f(login)h(name)e(and)j +(the)e(host)i(name)d(of)149 1010 y(the)f(connecting)g(mac)o(hine.)223 +1100 y(Eac)o(h)h(user)g(can)h(create)e(a)i(\014le)f(named)f(\\.rhosts")i(in)f +(his)g(home)g(directory)l(.)23 b(In)17 b(this)g(\014le)g(he)149 +1190 y(can)g(sp)q(ecify)f(trusted)g(users)h(on)g(other)g(mac)o(hines.)j(It)c +(is)g(also)i(p)q(ossible)e(to)h(force)f(remote)f(users)149 +1281 y(to)k(alw)o(a)o(ys)f(supply)g(a)h(passw)o(ord)g(when)g(using)f(the)g +(\\r{commands,")g(b)o(y)g(pre\014xing)g(en)o(tries)f(in)149 +1371 y(\\.rhosts")h(b)o(y)e(a)g(dash.)271 1515 y(These)d(\014les)g(b)o(ypass) +g(the)f(standard)i(passw)o(ord-based)h(user)e(authen)o(tication)g(mec)o(h-) +271 1605 y(anism.)25 b(T)l(o)19 b(main)o(tain)d(system)g(securit)o(y)l(,)h +(care)g(m)o(ust)g(b)q(e)g(tak)o(en)h(in)f(creating)h(and)271 +1696 y(main)o(taining)d(these)h(\014les.)21 b([Sun91,)16 b(HOSTS.EQUIV\(5\)]) +223 1840 y(These)22 b(features)g(ha)o(v)o(e)f(caused)i(man)o(y)d(securit)o(y) +h(breac)o(hes)h(in)g(the)g(past,)i(but)e(still)f(most)149 1930 +y(system)13 b(administrators)h(do)g(not)h(disable)e(them.)19 +b(T)l(rust)c(in)e(net)o(w)o(orks)h(is)g(a)g(transitiv)o(e)f(relation,)149 +2021 y(in)19 b(the)g(sense)g(that)h(if)f(A)f(trusts)i(B,)e(and)i(B)f(trusts)g +(C,)g(then)g(A)g(trusts)h(C.)f(This)g(relationship)149 2111 +y(can)j(do)h(great)f(harm.)37 b(Once)21 b(an)i(in)o(truder)d(has)j +(successfully)d(sub)o(v)o(erted)h(one)h(mac)o(hine,)f(he)149 +2201 y(can)15 b(hop)g(to)g(other)g(mac)o(hines,)e(exploiting)g(trust.)21 +b(Examining)13 b(the)i(trade{o\013)h(b)q(et)o(w)o(een)d(con)o(v)o(e-)149 +2291 y(nience)i(and)i(p)q(ossibly)f(unauthorized)g(access,)f(most)h(system)e +(administrators)h(decide)g(in)h(fa)o(v)o(or)149 2382 y(of)h(con)o(v)o +(enience.)223 2472 y(In)g(our)h(setup,)g(host)h(NS)690 2479 +y Fm(A)737 2472 y Fo(trusts)f(host)h(H)1022 2479 y Fm(A)1067 +2472 y Fo(via)f(the)f(\014le)h(\\/etc/hosts.equiv")g(con)o(taining)149 +2562 y(host)f(H)292 2569 y Fm(A)320 2562 y Fo('s)g(host)f(name.)p +eop +%%Page: 47 56 +55 bop 1901 -100 a Fo(47)149 75 y(3.5.4)49 b(Authen)o(tication)15 +b(in)h(Berk)o(eley)e(\\r{Commands")223 197 y(The)20 b(main)g(t)o(w)o(o)h +(\\r{command")f(applications)g(w)o(e)h(deal)f(with)h(are)g(\\rlogin")g(and)h +(\\rsh,")149 287 y(b)q(oth)i(of)f(whic)o(h)f(consist)g(of)h(a)g(clien)o(t)e +(and)i(a)g(serv)o(er)f(side.)39 b([Ste90,)24 b(Chapter)f(14])g(giv)o(es)f(an) +149 378 y(o)o(v)o(erview)c(of)h(remote)f(command)f(execution)h(under)h(UNIX)f +(and)i([Ste90,)f(Chapter)h(15])f(giv)o(es)149 468 y(man)o(y)c(details)h(ab)q +(out)h(the)f(remote)f(login)h(pro)q(cedure.)223 558 y(Examining)f(the)h +(source)h(co)q(de)f(for)h(the)f(clien)o(t)f(\\rlogin")i(and)h(the)e(serv)o +(er)f(\\rlogind")j(yields)149 649 y(the)e(follo)o(wing)g(securit)o(y)f(c)o +(hec)o(k)g(pro)q(cedure:)209 793 y(1.)24 b(Chec)o(k)16 b(if)f(the)h(clien)o +(t)f(uses)h(a)h(reserv)o(ed)e(TCP)i(p)q(ort.)22 b(Ab)q(ort)16 +b(if)g(not.)209 925 y(2.)24 b(Chec)o(k)13 b(for)g(a)h(passw)o(ord)g(\014le)f +(en)o(try)f(on)i(the)f(serv)o(er)f(for)i(the)f(sp)q(eci\014ed)f(serv)o +(er{user{name.)271 1015 y(Ab)q(ort)17 b(if)f(not.)209 1147 +y(3.)24 b(If)16 b(not)h(ro)q(ot)g(login:)k(Chec)o(k)16 b(the)g +(\\/etc/hosts.equiv")g(\014le)g(for)g(the)g(clien)o(t's)e(system.)209 +1279 y(4.)24 b(If)15 b(not)h(ro)q(ot)h(login:)k(Chec)o(k)14 +b(the)h(\\.rhosts")i(\014le)e(in)g(the)g(home)f(directory)h(of)h(serv)o +(er{user{)271 1369 y(name)f(for)i(the)f(clien)o(t's)e(system.)209 +1501 y(5.)24 b(If)16 b(ro)q(ot)h(login:)22 b(Chec)o(k)15 b(the)h(\\/.rhosts") +i(\014le)d(for)i(the)f(clien)o(t's)e(system.)209 1632 y(6.)24 +b(Prompt)16 b(user)g(for)h(his)f(passw)o(ord)h(if)f(none)h(of)f(the)g(tests)g +(3-5)i(passed.)223 1777 y(It)23 b(ma)o(y)f(seem)g(that)i(a)g(system)f(is)g(m) +o(uc)o(h)f(safer)i(if)f(only)g(\\.rhosts")i(\014les)e(exist)g(with)h(no)149 +1867 y(\\/etc/hosts.equiv")d(\014le,)e(b)q(ecause)h(\\.rhosts")i(\014les)d +(create)g(the)h(additional)g(constrain)o(t)g(that)149 1957 +y(user)g(login)f(names)f(ha)o(v)o(e)h(to)g(matc)o(h:)26 b(the)19 +b(user)g(name)g(on)g(the)g(attac)o(king)g(host)h(and)g(the)f(one)149 +2048 y(on)k(the)e(attac)o(k)o(ed)g(host.)38 b(That)22 b(is)g(not)g(the)f +(case.)37 b(In)22 b(Section)f(3.6.1)h(w)o(e)f(will)f(discuss)i(ho)o(w)149 +2138 y(to)16 b(acquire)f(information)g(ab)q(out)h(whic)o(h)f(host)i(name)d +(and)i(whic)o(h)f(user)h(name)e(to)i(imp)q(ersonate.)149 2228 +y(Once)d(w)o(e)g(ha)o(v)o(e)f(that)i(information,)e(it)h(mak)o(es)e(no)j +(di\013erence)e(at)i(all.)19 b(In)13 b(the)g(\\rlogin")h(proto)q(col,)149 +2318 y(the)f(clien)o(t)f(connects)g(to)i(p)q(ort)g(IPPOR)l(T)p +906 2318 15 2 v 17 w(LOGINSER)-5 b(VER)1278 2300 y Fm(2)1310 +2318 y Fo(of)14 b(the)f(remote)e(host)j(and)g(sends)f(a)149 +2409 y(pac)o(k)o(et)f(consisting)g(of)h Fn(<)p Fo(lo)q(cal{user{name)p +Fn(>)p Fo(,)f Fn(<)p Fo(remote{user{name)p Fn(>)p Fo(,)e(and)j +Fn(<)p Fo(command)p Fn(>)d Fo(to)149 2499 y(the)j(serv)o(er.)20 +b(Because)12 b(the)h(clien)o(t)e(is)i(under)h(full)e(con)o(trol)h(of)g(the)g +(attac)o(k)o(er,)g(it)g(is)g(not)g(di\016cult)f(for)p 149 2543 +720 2 v 206 2573 a Fl(2)224 2588 y Fk(in)i(\\netinet/in.h")f(curren)o(tly)i +(sp)q(eci\014ed)g(as)f(TCP)g(p)q(ort)g(513)p eop +%%Page: 48 57 +56 bop 1901 -100 a Fo(48)149 75 y(the)12 b(attac)o(k)o(er)e(to)i(mo)q(dify)f +(the)g(\\rlogin")h(co)q(de,)h(suc)o(h)e(that)h(lo)q(cal{user{name)f(and)h +(remote{user{)149 165 y(name)17 b(con)o(tain)h(the)g(appropriate)h(v)m +(alues.)26 b(The)18 b(attac)o(k)o(er)f(can)i(then)f(recompile)d(the)j +(\\rlogin")149 255 y(co)q(de)f(and)g(use)f(the)g(mo)q(di\014ed)f(v)o(ersion)h +(instead)g(of)h(the)f(original)g(one.)149 415 y(3.5.5)49 b(Rev)o(erse)15 +b(Lo)q(okup)j(T)l(ree)e(Manipulation)223 538 y(Because)f(the)h(attac)o(k)o +(er)f(con)o(trols)h(the)g(primary)e(domain)h(sub.domain.dom,)f(he)h(can)i(mo) +q(d-)149 628 y(ify)i(the)f(data)i(of)f(the)g(rev)o(erse)e(lo)q(okup)j(tree)e +(of)i(his)e(domain.)29 b(In)18 b(the)h(\\rlogin")h(proto)q(col,)g(the)149 +718 y(serv)o(er)d(retriev)o(es)f(the)i(IP)g(address)h(of)f(the)g(connecting)f +(site)h(with)g(the)f(system)g(call)g(\\getp)q(eer-)149 809 +y(name\(\)".)25 b(The)18 b(serv)o(er)f(then)g(maps)g(the)h(IP)f(address)i(in) +o(to)e(the)h(host)g(name)f(with)g(the)h(system)149 899 y(call)f(\\gethostb)o +(y)o(addr\(\)".)27 b(In)18 b(Section)f(2.5)h(w)o(e)f(explained)g(that)h(the)g +(IP)f(address)i(111.22.33.4)149 989 y(gets)g(con)o(v)o(erted)f(in)o(to)g(the) +g(name)g(4.33.22.111.in-addr.arpa,)j(whic)o(h)d(is)g(then)h(queried)e(in)i +(the)149 1079 y(rev)o(erse)e(lo)q(okup)i(tree)e(via)g(the)h(Domain)f(Name)g +(System)f(proto)q(col.)27 b(In)18 b(an)g(unimpaired)e(state)149 +1170 y(of)j(the)g(database,)h(the)e(lo)q(okup)h(returns)g(the)f(name)f(of)i +(the)g(attac)o(k)o(er)e(H)1523 1177 y Fm(B)1550 1170 y Fo(.)28 +b(But)18 b(if)g(one)h(single)149 1260 y(record)d(in)g(the)g(rev)o(erse)f(lo)q +(okup)i(tree)f(is)g(c)o(hanged)g(from)284 1350 y(4.33.22.111.in-addr.arpa)153 +b(IN)c(PTR)i(H)1443 1357 y Fm(B)1470 1350 y Fo(.sub.domain.dom)149 +1441 y(to)284 1531 y(4.33.22.111.in-addr.arpa)i(IN)c(PTR)i(H)1443 +1538 y Fm(A)1471 1531 y Fo(.sub.domain.dom)149 1621 y(the)16 +b(query)g(yields)f(the)h(name)f(of)i(H)813 1628 y Fm(A)857 +1621 y Fo(after)f(the)g(zones)g(are)h(reloaded)f(in)o(to)g(the)g(name)f(serv) +o(er.)149 1781 y(3.5.6)49 b(Cac)o(he)16 b(Corruption)223 1904 +y(Section)21 b(3.1)i(already)f(men)o(tioned)f(the)h(Berk)o(eley)d(soft)o(w)o +(are)k(patc)o(h)f(that)h(adds)g(a)g(higher)149 1994 y(degree)d(of)g(securit)o +(y)f(to)h(the)g(remote)e(login)j(pro)q(cedure.)32 b(The)20 +b(patc)o(h)g(w)o(orks)g(as)h(follo)o(ws:)29 b(the)149 2084 +y(system)22 b(call)g(\\gethostb)o(y)o(addr\(\)")i(in)f(\\rlogind")g(and)h +(\\rshd")g(is)f(implem)o(e)o(n)o(ted)d(b)o(y)i(a)i(DNS)149 +2174 y(request)16 b(for)h(a)g(PTR)g(record.)23 b(The)16 b(serv)o(er)g(that)h +(supplies)f(the)g(PTR)h(record)g(is)f(under)h(con)o(trol)149 +2265 y(of)f(the)g(attac)o(k)o(er)f(and)h(can)g(return)g(a)g(falsi\014ed)f +(record.)21 b(The)16 b(system)e(call)h(\\gethostb)o(yname\(\)")149 +2355 y(requests)i(A)g(records)g(from)f(the)h(name,)e(serv)o(er)h(whic)o(h)g +(is)h(not)h(con)o(trolled)e(b)o(y)g(the)h(attac)o(k)o(er.)23 +b(If)149 2445 y(the)e(comparison)e(of)i(the)f(retriev)o(ed)e(IP)j(addresses)g +(and)g(the)f(original)g(IP)g(address)h(fails,)g(the)149 2536 +y(patc)o(h)d(has)h(succeeded)d(in)i(detecting)f(an)h(attempted)e(imp)q +(ersonation.)26 b(Figure)17 b(3.2)h(sho)o(ws)h(an)149 2626 +y(o)o(v)o(erview)c(of)i(the)f(algorithm)f(used)h(in)g(the)g(patc)o(h.)p +eop +%%Page: 49 58 +57 bop 1901 -100 a Fo(49)449 754 y @beginspecial 0 @llx 0 @lly +288 @urx 148 @ury 2880 @rwi @setspecial +%%BeginDocument: pictures/patch_alg.ps +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/l {lineto} bind def +/m {moveto} bind def +/s {stroke} bind def +/n {newpath} bind def +/gs {gsave} bind def +/gr {grestore} bind def +/clp {closepath} bind def +/graycol {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul +4 -2 roll mul setrgbcolor} bind def +/col-1 {} def +/col0 {0 0 0 setrgbcolor} bind def +/col1 {0 0 1 setrgbcolor} bind def +/col2 {0 1 0 setrgbcolor} bind def +/col3 {0 1 1 setrgbcolor} bind def +/col4 {1 0 0 setrgbcolor} bind def +/col5 {1 0 1 setrgbcolor} bind def +/col6 {1 1 0 setrgbcolor} bind def +/col7 {1 1 1 setrgbcolor} bind def + end +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def + +$F2psBegin +0 setlinecap 0 setlinejoin +0.0 148.0 translate 0.900 -0.900 scale +0.500 setlinewidth +n -1 19 m -1 19 l 319 19 l gs col-1 s gr +n -1 39 m 319 39 l gs col-1 s gr +n 19 59 m 319 59 l gs col-1 s gr +n 19 59 m 169 89 l 319 59 l gs col-1 s gr +n 19 89 m 319 89 l gs col-1 s gr +n -1 109 m 319 109 l gs col-1 s gr +n 169 89 m 169 109 l gs col-1 s gr +n 19 59 m 19 109 l gs col-1 s gr +n -1 109 m 159 139 l 319 109 l gs col-1 s gr +n -1 139 m 319 139 l gs col-1 s gr +n -1 -1 m -1 164 l 319 164 l 319 -1 l -1 -1 l gs col-1 s gr +n -1 159 m 319 159 l gs col-1 s gr +n 159 139 m 159 159 l gs col-1 s gr +/Times-Roman findfont 12.00 scalefont setfont +4 14 m +gs 1 -1 scale (call gethostbyaddr\(\) with IP addr, get host name) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +4 34 m +gs 1 -1 scale (call gethostbyname\(\) with host name, get list of IP addresses) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +4 54 m +gs 1 -1 scale (for each A of these IP addresses do) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +129 74 m +gs 1 -1 scale (if \(IP addr == A\)) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +24 104 m +gs 1 -1 scale (then host ok. and break) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +84 124 m +gs 1 -1 scale (if \(no A has matched IP addr\)) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +4 154 m +gs 1 -1 scale (syslog impersonation attempt) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +29 79 m +gs 1 -1 scale (Y) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +299 79 m +gs 1 -1 scale (N) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +9 129 m +gs 1 -1 scale (Y) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +299 129 m +gs 1 -1 scale (N) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +234 154 m +gs 1 -1 scale (. /.) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +239 104 m +gs 1 -1 scale (. /.) col-1 show gr +$F2psEnd +%%EndDocument + @endspecial 580 999 a(Figure)16 b(3.2)33 b(Algorithm)14 b(of)j(the)f(Berk)o +(eley)d(patc)o(h)223 1183 y(In)h(the)h(case)f(that)i(the)e(attac)o(k)o(ed)g +(site)g(has)i(the)e(patc)o(h)h(in)f(place,)g(the)h(attac)o(k)o(er)f(has)h(to) +g(use)g(a)149 1273 y(more)d(sophisticated)h(approac)o(h)g(to)g(succeed)f +(with)h(his)f(in)o(trusion)h(attempt.)19 b(The)12 b(second)h(query)149 +1363 y(go)q(es)21 b(to)f(the)g(lo)q(cal)f(mac)o(hine's)e(name)i(serv)o(er)f +(\014rst.)32 b(This)20 b(name)e(serv)o(er)h(has)h(a)g(cac)o(he)f(whic)o(h)149 +1454 y(can)h(b)q(e)f(p)q(oisoned)h(b)o(y)e(the)h(attac)o(k)o(er)f(b)o(y)g +(adding)i(a)f(false)g(\\A")g(record)g(to)h(the)e(DNS)h(message)149 +1544 y(con)o(taining)14 b(the)f(PTR)h(record.)20 b(This)14 +b(additional)g(\\A")g(record)f(mak)o(es)f(the)h(remote)f(site)h(b)q(eliev)o +(e)149 1634 y(the)j(rev)o(erse)f(lo)q(okup)i(w)o(as)g(correct.)223 +1724 y(In)j(our)h(setup,)g(w)o(e)f(mo)q(di\014ed)g(the)g(name)f(serv)o(er)h +(co)q(de)g(of)h(the)g(attac)o(king)f(mac)o(hine.)32 b(W)l(e)149 +1815 y(added)22 b(statemen)o(ts)d(to)i(determine)e(when)i(the)f(rev)o(erse)g +(lo)q(okup)h(query)f(for)h(the)g(mapping)f(of)149 1905 y +(4.33.22.111.in-addr.arpa)26 b(w)o(as)e(issued.)43 b(T)l(o)24 +b(the)f(resp)q(onse)i(to)e(that)h(query)f(w)o(e)g(added)h(an)149 +1995 y(additional)c(record)f(pro)o(viding)g(a)g(fak)o(ed)g(forw)o(ard)h +(mapping)e(from)g(111.22.33.4)j(to)f(H)1788 2002 y Fm(A)1835 +1995 y Fo({)g(not)149 2086 y(H)186 2093 y Fm(B)213 2086 y Fo(.)38 +b(Figure)21 b(3.3)h(sho)o(ws)h(the)e(con)o(ten)o(ts)h(of)g(the)f(additional)h +(record.)38 b(It)21 b(w)o(as)h(imp)q(ortan)o(t)f(to)149 2176 +y(piggybac)o(k)12 b(the)g(unrequested)g(record)g(on)h(an)f(otherwise)g(v)m +(alid)g(pac)o(k)o(et,)f(b)q(ecause)i(a)g(name)e(serv)o(er)149 +2266 y(examines)i(receiv)o(ed)g(pac)o(k)o(ets)h(for)h(their)f(id)g(n)o(um)o +(b)q(er)f(and)j(other)e(criteria)g(b)q(efore)h(it)f(accepts)h(the)149 +2356 y(pac)o(k)o(ets)h(at)i(all)e(\(w)o(e)g(will)g(examine)e(these)j +(criteria)e(in)i(Section)f(4.1.)23 b(F)l(or)17 b(no)o(w)h(it)e(is)h(enough)g +(to)149 2447 y(kno)o(w)d(that)h(although)g(a)f(name)f(serv)o(er)f(do)q(es)j +(not)f(blindly)f(accept)g(an)o(ything,)h(it)g(is)f(nev)o(ertheless)149 +2537 y(easy)j(to)g(fo)q(ol\).)21 b(T)l(o)c(camou\015age)e(the)g(attac)o(k,)g +(w)o(e)g(supplied)g(a)h(short)g(time)e(to)i(liv)o(e)d(v)m(alue)j(in)f(the)149 +2627 y(resource)f(record.)21 b(Ho)o(w)o(ev)o(er,)12 b(the)i(BIND)f(co)q(de)h +(con)o(tains)g(a)h(hard{co)q(ded)g(constan)o(t)f(that)h(limits)p +eop +%%Page: 50 59 +58 bop 1901 -100 a Fo(50)562 1054 y @beginspecial 0 @llx 0 +@lly 239 @urx 229 @ury 2390 @rwi @setspecial +%%BeginDocument: pictures/add_rec_high.ps +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/l {lineto} bind def +/m {moveto} bind def +/s {stroke} bind def +/n {newpath} bind def +/gs {gsave} bind def +/gr {grestore} bind def +/clp {closepath} bind def +/graycol {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul +4 -2 roll mul setrgbcolor} bind def +/col-1 {} def +/col0 {0 0 0 setrgbcolor} bind def +/col1 {0 0 1 setrgbcolor} bind def +/col2 {0 1 0 setrgbcolor} bind def +/col3 {0 1 1 setrgbcolor} bind def +/col4 {1 0 0 setrgbcolor} bind def +/col5 {1 0 1 setrgbcolor} bind def +/col6 {1 1 0 setrgbcolor} bind def +/col7 {1 1 1 setrgbcolor} bind def + end +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def + +$F2psBegin +0 setlinecap 0 setlinejoin +-4.0 234.0 translate 0.900 -0.900 scale +1.000 setlinewidth + 1 setlinecap [1 4.500000] 4.500000 setdash +n 89 104 m 124 104 l gs col-1 s gr + [] 0 setdash 0 setlinecap + 1 setlinecap [1 4.500000] 4.500000 setdash +n 89 84 m 124 84 l gs col-1 s gr + [] 0 setdash 0 setlinecap + 1 setlinecap [1 4.500000] 4.500000 setdash +n 89 64 m 124 64 l gs col-1 s gr + [] 0 setdash 0 setlinecap + 1 setlinecap [1 4.500000] 4.500000 setdash +n 89 44 m 124 44 l gs col-1 s gr + [] 0 setdash 0 setlinecap + 1 setlinecap [1 4.500000] 4.500000 setdash +n 89 124 m 124 124 l gs col-1 s gr + [] 0 setdash 0 setlinecap +n 84 114 m 204 114 l gs col-1 s gr +n 84 74 m 204 74 l gs col-1 s gr +n 84 54 m 204 54 l gs col-1 s gr +n 84 94 m 204 94 l gs col-1 s gr + [6.000000] 0 setdash +n 84 134 m 204 134 l gs col-1 s gr + [] 0 setdash +0.500 setlinewidth + [4.000000] 0 setdash +n 84 174 m 204 174 l gs col-1 s gr + [] 0 setdash + [4.000000] 0 setdash +n 84 194 m 204 194 l gs col-1 s gr + [] 0 setdash + [4.000000] 0 setdash +n 84 214 m 204 214 l gs col-1 s gr + [] 0 setdash + [4.000000] 0 setdash +n 84 234 m 204 234 l gs col-1 s gr + [] 0 setdash +1.000 setlinewidth +n 91 34 m 84 34 84 247 7 arcto 4 {pop} repeat 84 254 197 254 7 arcto 4 {pop} repeat 204 254 204 41 7 arcto 4 {pop} repeat 204 34 91 34 7 arcto 4 {pop} repeat clp gs col-1 s gr +n 86 29 m 79 29 79 252 7 arcto 4 {pop} repeat 79 259 202 259 7 arcto 4 {pop} repeat 209 259 209 36 7 arcto 4 {pop} repeat 209 29 86 29 7 arcto 4 {pop} repeat clp gs col-1 s gr +0.500 setlinewidth + [4.000000] 0 setdash +n 84 154 m 204 154 l gs col-1 s gr + [] 0 setdash +/Courier-Bold findfont 12.00 scalefont setfont +4 89 m +gs 1 -1 scale (ANSWER) col-1 show gr +/Courier-Bold findfont 12.00 scalefont setfont +4 49 m +gs 1 -1 scale (HEADER) col-1 show gr +/Courier-Bold findfont 12.00 scalefont setfont +4 69 m +gs 1 -1 scale (QUESTION) col-1 show gr +/Courier-Bold findfont 12.00 scalefont setfont +4 109 m +gs 1 -1 scale (AUTHORITY) col-1 show gr +/Courier-Bold findfont 12.00 scalefont setfont +4 129 m +gs 1 -1 scale (ADDITIONAL) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +4 14 m +gs 1 -1 scale (Sections) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +84 14 m +gs 1 -1 scale (Packet contents) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +204 14 m +gs 1 -1 scale (Fields) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +89 189 m +gs 1 -1 scale (IN = Internet) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +89 209 m +gs 1 -1 scale (5 seconds) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +89 229 m +gs 1 -1 scale (4 Bytes) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +89 249 m +gs 1 -1 scale (111.22.33.4) col-1 show gr +/Courier-Bold findfont 12.00 scalefont setfont +214 149 m +gs 1 -1 scale (NAME) col-1 show gr +/Courier-Bold findfont 12.00 scalefont setfont +214 169 m +gs 1 -1 scale (TYPE) col-1 show gr +/Courier-Bold findfont 12.00 scalefont setfont +214 189 m +gs 1 -1 scale (CLASS) col-1 show gr +/Courier-Bold findfont 12.00 scalefont setfont +214 209 m +gs 1 -1 scale (TTL) col-1 show gr +/Courier-Bold findfont 12.00 scalefont setfont +214 229 m +gs 1 -1 scale (RDLENGTH) col-1 show gr +/Courier-Bold findfont 12.00 scalefont setfont +214 249 m +gs 1 -1 scale (RDATA) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +89 149 m +gs 1 -1 scale (H sub.domain.edu) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +89 169 m +gs 1 -1 scale (A = address record) col-1 show gr +/Times-Roman findfont 8.00 scalefont setfont +99 154 m +gs 1 -1 scale (A) col-1 show gr +$F2psEnd +%%EndDocument + @endspecial 588 1299 a(Figure)15 b(3.3)33 b(Additional)16 +b(false)g(resource)g(record)149 1483 y(the)21 b(minim)n(um)c(time)i(to)j(liv) +o(e)d(v)m(alue)i(to)g(\\min)p 1041 1483 15 2 v 16 w(cac)o(he)p +1173 1483 V 17 w(ttl")1263 1465 y Fm(3)1283 1483 y Fo(.)36 +b(In)20 b(case)h(the)g(remote)f(site)g(NS)1921 1490 y Fm(A)149 +1573 y Fo(con)o(tacts)e(the)g(attac)o(king)f(name)g(serv)o(er)g(NS)981 +1580 y Fm(B)1026 1573 y Fo(again)i(within)e(these)h(\014v)o(e)e(min)o(utes,)g +(NS)1791 1580 y Fm(B)1836 1573 y Fo(could)149 1663 y(o)o(v)o(erwrite)f(the)h +(fak)o(ed)g(records)g(b)o(y)g(supplying)g(new)g(ones)h(with)f(the)g(correct)g +(information.)223 1754 y(W)l(e)g(included)g(the)h(feature)g(that)g(the)g +(name)f(serv)o(er)g(can)h(understand)h(an)f(additional)g(user)149 +1844 y(issued)f(signal.)22 b(Using)15 b(this)h(toggle)g(signal,)g(the)g +(attac)o(k)o(er)f(can)h(switc)o(h)f(on)i(the)e(malicious)f(co)q(de)149 +1934 y(b)q(efore)h(the)g(attac)o(k)g(starts,)g(and)h(switc)o(h)e(o\013)i(the) +f(distribution)f(of)h(the)g(malicious)e(records)i(righ)o(t)149 +2024 y(after)22 b(access)f(w)o(as)g(gran)o(ted)h(b)o(y)f(the)g(attac)o(k)o +(ed)f(site.)36 b(This)21 b(ensures)g(a)h(directed)e(attac)o(k)h(and)149 +2115 y(minim)o(um)12 b(p)q(ossible)k(un)o(w)o(an)o(ted)g(auditing.)149 +2280 y(3.6)50 b(Exp)q(eriences)15 b(Gained)223 2420 y(This)k(section)h +(states)g(the)g(pieces)e(of)i(information)f(necessary)h(to)g(launc)o(h)f(an)h +(attac)o(k)g(and)149 2510 y(describ)q(es)c(the)g(exp)q(eriences)f(gained)h +(while)g(w)o(orking)g(with)g(the)g(test)g(en)o(vironmen)o(t.)p +149 2554 720 2 v 206 2584 a Fl(3)224 2599 y Fk(in)e(BIND)g(v)o(ersion)g +(4.8.3)e(\(5*60\))h(seconds)i(=)f(\014v)o(e)h(min)o(utes)p +eop +%%Page: 51 60 +59 bop 1901 -100 a Fo(51)262 1129 y @beginspecial 0 @llx 0 +@lly 378 @urx 256 @ury 3780 @rwi @setspecial +%%BeginDocument: pictures/ns_req_mod.ps +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/l {lineto} bind def +/m {moveto} bind def +/s {stroke} bind def +/n {newpath} bind def +/gs {gsave} bind def +/gr {grestore} bind def +/clp {closepath} bind def +/graycol {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul +4 -2 roll mul setrgbcolor} bind def +/col-1 {} def +/col0 {0 0 0 setrgbcolor} bind def +/col1 {0 0 1 setrgbcolor} bind def +/col2 {0 1 0 setrgbcolor} bind def +/col3 {0 1 1 setrgbcolor} bind def +/col4 {1 0 0 setrgbcolor} bind def +/col5 {1 0 1 setrgbcolor} bind def +/col6 {1 1 0 setrgbcolor} bind def +/col7 {1 1 1 setrgbcolor} bind def + end +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def + +$F2psBegin +0 setlinecap 0 setlinejoin +0.0 256.0 translate 0.900 -0.900 scale +0.500 setlinewidth +n 19 79 m 219 109 l 419 79 l gs col-1 s gr +n -1 59 m 419 59 l gs col-1 s gr +n -1 39 m 419 39 l gs col-1 s gr +n -1 19 m 419 19 l gs col-1 s gr +n 419 109 m 19 109 l gs col-1 s gr +n 419 79 m 19 79 l gs col-1 s gr +n 19 79 m 19 149 l gs col-1 s gr +n 419 129 m 19 129 l gs col-1 s gr +n -1 169 m 209 199 l 419 169 l gs col-1 s gr +n -1 149 m 419 149 l gs col-1 s gr +n -1 199 m 419 199 l gs col-1 s gr +n -1 239 m 419 239 l gs col-1 s gr +n -1 259 m 419 259 l gs col-1 s gr +n -1 279 m 419 279 l gs col-1 s gr +n -1 169 m 419 169 l gs col-1 s gr +n 419 284 m 419 -1 l -1 -1 l -1 284 l clp gs col-1 s gr +n 209 199 m 209 239 l gs col-1 s gr +n -1 219 m 209 219 l gs col-1 s gr +n 219 109 m 219 129 l gs col-1 s gr +/Times-Roman findfont 12.00 scalefont setfont +4 74 m +gs 1 -1 scale (case QUERY:) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +129 94 m +gs 1 -1 scale (if query is 4.33.22.111.in-addr.arpa) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +24 144 m +gs 1 -1 scale (...) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +4 164 m +gs 1 -1 scale (...) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +4 214 m +gs 1 -1 scale (add bogus record to additional section) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +4 234 m +gs 1 -1 scale (increase HEADER.ARCOUNT) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +4 254 m +gs 1 -1 scale (send packet to socket) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +4 34 m +gs 1 -1 scale ({ ...) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +4 274 m +gs 1 -1 scale (... }) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +4 14 m +gs 1 -1 scale (... ns_req\(...\)) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +29 99 m +gs 1 -1 scale (Y) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +399 99 m +gs 1 -1 scale (N) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +9 189 m +gs 1 -1 scale (Y) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +399 189 m +gs 1 -1 scale (N) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +224 124 m +gs 1 -1 scale (. /.) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +214 234 m +gs 1 -1 scale (. /.) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +4 54 m +gs 1 -1 scale (declare flag Eureka = false) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +24 124 m +gs 1 -1 scale (set flag Eureka = true) col-1 show gr +/Times-Roman findfont 12.00 scalefont setfont +164 184 m +gs 1 -1 scale (if \(Eureka == true\)) col-1 show gr +$F2psEnd +%%EndDocument + @endspecial 561 1374 a(Figure)16 b(3.4)33 b(Mo)q(di\014cations)16 +b(in)g(name)f(serv)o(er)h(co)q(de)149 1558 y(3.6.1)49 b(Acquiring)15 +b(Information)223 1680 y(An)20 b(attac)o(k)o(er)g(needs)h(to)g(ha)o(v)o(e)f +(three)g(pieces)g(of)h(information)f(b)q(efore)h(he)g(can)g(launc)o(h)f(an) +149 1770 y(attac)o(k:)222 1902 y Fj(\017)k Fo(target)17 b(host)g(name)e(NS) +715 1909 y Fm(A)222 2034 y Fj(\017)24 b Fo(user)17 b(name\(s\))e(on)i(hosts)g +(NS)818 2041 y Fm(A)863 2034 y Fo(and)g(H)995 2041 y Fm(A)1039 +2034 y Fo(to)g(imp)q(ersonate)222 2166 y Fj(\017)24 b Fo(host)17 +b(name)e(H)544 2173 y Fm(A)589 2166 y Fo(trusted)h(b)o(y)g(target)g(host)223 +2298 y(In)d(some)f(en)o(vironmen)o(ts,)f(the)i(lo)q(cal)g(and)h(remote)e +(login)h(names)g(for)g(one)h(user)f(are)h(iden)o(tical.)149 +2388 y(A)h(user)g(has)g(the)g(p)q(ossibilit)o(y)f(to)h(sp)q(ecify)f(other)h +(user)g(names)f(as)i(trusted)f(users)g(of)g(his)g(accoun)o(t.)149 +2478 y(In)h(that)h(case,)f(the)g(login)g(names)f(are)i(most)e(lik)o(ely)f +(di\013eren)o(t.)p eop +%%Page: 52 61 +60 bop 1901 -100 a Fo(52)223 75 y(In)12 b(our)h(setup,)g(w)o(e)f(w)o(ere)f +(not)i(in)f(need)h(of)f(acquiring)g(host)h(name)f(pairs)h(and)g(the)f +(appropriate)149 165 y(login)17 b(names.)23 b(Section)16 b(4.7)h(pro)o(vides) +f(metho)q(ds)h(to)g(obtain)g(this)g(information,)f(follo)o(w)o(ed)g(b)o(y)g +(a)149 255 y(discussion.)149 415 y(3.6.2)49 b(Complexit)o(y)14 +b(of)j(Mo)q(di\014cations)223 538 y(Most)d(of)g(the)g(w)o(ork)f(that)i(w)o +(as)f(done)g(during)g(the)g(exp)q(erimen)o(ts)d(w)o(en)o(t)i(in)o(to)h(the)g +(setup)g(of)g(the)149 628 y(zones)h(for)g(the)f(name)g(serv)o(ers,)g(the)g +(source)h(co)q(de)f(mo)q(di\014cations)h(of)g(the)f(remote)f(login)h(and)i +(the)149 718 y(name)i(serv)o(er,)g(and)h(some)f(shell)g(scripts)h(to)g +(automatize)f(the)g(break{in.)29 b(The)19 b(mo)q(di\014cations)149 +809 y(to)i(facilitate)e(a)i(break{in)f(are)h(minim)o(al)c(in)j(the)g(simpler) +f(case)h(that)h(the)f(Berk)o(eley)d(patc)o(h)k(is)149 899 y(not)f(installed.) +29 b(Only)18 b(one)i(record)f(in)f(the)h(database)i(for)e(the)g(rev)o(erse)e +(lo)q(okup)j(tree)f(m)o(ust)e(b)q(e)149 989 y(c)o(hanged.)223 +1079 y(If,)d(ho)o(w)o(ev)o(er,)f(the)h(patc)o(h)h(is)f(installed,)g(the)g +(name)f(serv)o(er)h(co)q(de)h(m)o(ust)e(b)q(e)i(c)o(hanged)f(to)h(en)o(ter) +149 1170 y(the)k(false)g(resource)f(record)h(in)o(to)g(the)f(additional)h +(answ)o(er)g(section.)29 b(These)19 b(c)o(hanges)g(are)g(not)149 +1260 y(di\016cult,)12 b(but)h(they)f(require)f(a)i(go)q(o)q(d)i +(understanding)e(of)g(the)g(Domain)f(Name)f(System)g(proto)q(col)149 +1350 y(and)17 b(the)f(name)f(serv)o(er)h(source)g(co)q(de.)223 +1441 y(F)l(urthermore,)h(there)i(are)g(some)f(c)o(hanges)h(to)g(the)g +(\\rlogin")h(program.)29 b(In)19 b(the)g(case)g(that)149 1531 +y(user)g(Alice)e(on)i(host)g(NS)622 1538 y Fm(A)669 1531 y +Fo(trusts)g(user)g(Bob)g(on)g(host)g(H)1236 1538 y Fm(A)1264 +1531 y Fo(,)g(the)f(attac)o(king)g(host)h(w)o(ould)g(need)149 +1621 y(a)e(legitimate)d(user)i(Bob)g(that)h(logs)g(in)o(to)f(NS)989 +1628 y Fm(A)1018 1621 y Fo(.)21 b(But)16 b(that)h(w)o(ould)f(require)f +(adding)i(a)f(new)g(user)149 1711 y(id)i(to)g(the)g(attac)o(king)g(system)e +(ev)o(ery)g(time)g(the)i(attac)o(k)o(er)f(w)o(an)o(ts)h(to)g(imp)q(ersonate)f +(a)h(di\013eren)o(t)149 1802 y(user)i(name,)e(regardless)h(of)h(the)f(view)o +(able)f(c)o(hanges)h(in)g(the)g(passw)o(ord)h(\014le.)30 b(A)19 +b(m)o(uc)o(h)e(neater)149 1892 y(approac)o(h)23 b(requires)e(few)h(c)o +(hanges)g(in)f(the)h(\\rlogin")g(co)q(de.)39 b(F)l(or)22 b(the)f(target)h +(host)h(it)e(is)h(not)149 1982 y(imp)q(ortan)o(t)c(that)g(the)g(remote)e +(user)j(Bob)f(exists;)g(it)f(is)h(su\016cien)o(t)f(to)i(pass)g(Bob's)f(login) +g(name)149 2073 y(in)f(the)g(\014rst)g(pac)o(k)o(et)f(\(see)g(section)h +(3.5.4\))g(from)f(the)g(\\rlogin")i(clien)o(t)d(to)i(the)g(\\rlogind")h(serv) +o(er)149 2163 y(to)f(mak)o(e)d(the)i(target)h(host)g(b)q(eliev)o(e)d(Bob)i +(is)h(\\real".)223 2253 y(Ov)o(erall,)c(the)j(attac)o(k)f(requires)g(only)g +(a)h(few)g(c)o(hanges)g(and)g(can)g(b)q(e)g(ac)o(hiev)o(ed)e(easily)l(.)20 +b(What)149 2343 y(mak)o(es)11 b(the)h(break{in)f(di\016cult)g(is)h(obtaining) +g(the)g(necessary)g(information)f(ab)q(out)i(remote)d(users)149 +2434 y(and)20 b(mac)o(hine)e(names,)g(ha)o(ving)i(sup)q(eruser)f(privileges)f +(on)i(a)g(system)e(with)h(a)h(primary)e(name)149 2524 y(serv)o(er,)13 +b(and)i(ha)o(ving)f(the)g(pro\014ciency)f(of)i(making)d(the)i(c)o(hanges)h +(in)e(the)h(name)f(serv)o(er)g(database)149 2614 y(and)k(co)q(de.)p +eop +%%Page: 53 62 +61 bop 1901 -100 a Fo(53)149 75 y(3.6.3)49 b(Detecting)16 b(a)h(DNS)f(based)h +(Break{in)223 197 y(During)j(an)g(attac)o(k,)f(an)h(attac)o(k)o(er)f(usually) +g(w)o(an)o(ts)h(to)g(op)q(erate)g(as)g(furtiv)o(ely)e(as)i(p)q(ossible.)149 +287 y(After)14 b(an)h(attac)o(k,)g(an)g(attac)o(k)o(er)e(w)o(an)o(ts)i(to)g +(lea)o(v)o(e)e(b)q(ehind)i(as)g(few)g(clues)e(as)j(p)q(ossible)f(that)g +(could)149 378 y(p)q(oin)o(t)i(to)f(him)f(or)i(his)f(actions.)223 +468 y(W)l(e)j(distinguish)h(b)q(et)o(w)o(een)f(where)h(the)f(attac)o(k)o +(er's)g(presence)g(or)h(his)g(actions)g(can)g(b)q(e)g(de-)149 +558 y(tected)c(or)g(observ)o(ed:)21 b(On)16 b(the)g(attac)o(k)o(ed)g(mac)o +(hine)e(and)j(on)g(the)f(attac)o(k)o(er's)f(mac)o(hine.)223 +649 y(In)e(the)h(follo)o(wing)g(w)o(e)f(assume)h(that)g(the)g(attac)o(k)o(er) +f(has)i(not)f(\(y)o(et\))f(done)h(an)o(y)g(ob)o(vious)g(harm)149 +739 y(to)f(the)f(attac)o(k)o(ed)f(system.)19 b(In)12 b(our)g(examination)f(w) +o(e)h(only)g(treat)g(the)g(detection)f(of)i(the)f(break-in)149 +829 y(directly)l(,)h(not)i(of)g(its)f(consequences,)g(once)g(an)h(attac)o(k)o +(er)f(has)h(gained)g(access.)21 b(The)14 b(false)h(record)149 +919 y(in)k(the)g(cac)o(he)g(has)g(a)h(minim)n(um)15 b(lifetime)h(of)j(curren) +o(tly)f(\014v)o(e)g(min)o(utes)f(and)j(can)f(b)q(e)h(detected)149 +1010 y(only)15 b(in)f(that)i(short)f(p)q(erio)q(d)g(of)g(time.)k(The)c(false) +f(mapping)g(could)h(b)q(e)f(detected)g(b)o(y)g(examining)149 +1100 y(a)j(cac)o(he)f(dump)f(of)i(the)f(name)f(serv)o(er,)g(or)i(in)f(case)h +(a)g(user)f(tried)g(to)h(resolv)o(e)e(one)h(of)h(the)f(names)149 +1190 y(in)o(v)o(olv)o(ed)e(in)i(the)g(tamp)q(ering.)223 1281 +y(The)11 b(simple)e(fact)i(that)h(the)f(attac)o(k)o(er)f(is)h(logged)h(in)f +(could)g(b)q(e)g(observ)o(ed.)20 b(In)10 b(an)i(en)o(vironmen)o(t)149 +1371 y(where)19 b(man)o(y)f(users)h(access)g(a)g(system)e(at)j(the)f(same)e +(time,)g(this)i(seems)f(unlik)o(ely)l(.)27 b(Ho)o(w)o(ev)o(er,)149 +1461 y(if)19 b(the)g(compromised)d(mac)o(hine)h(is)i(w)o(atc)o(hed)f(closely) +g(b)o(y)h(a)g(system)f(administrator)g(or)i(users,)149 1551 +y(the)e(c)o(hance)g(of)h(detecting)e(the)h(login)g(is)g(higher.)27 +b(If)18 b(the)g(attac)o(k)o(er)f(logs)i(in)f(as)h(sup)q(eruser,)g(the)149 +1642 y(c)o(hances)i(of)h(detection)f(are)g(ev)o(en)f(higher,)i(b)q(ecause)g +(logins)f(of)h(privileged)e(users)i(are)f(logged)149 1732 y(separately)l(.) +223 1822 y(It)c(is)h(also)h(p)q(ossible)f(to)h(mo)q(dify)e(the)h +(\\rlogin"{co)q(de)h(to)f(log)h(all)f(remote)e(logins)i(to)h(gather)149 +1913 y(more)c(information)h(ab)q(out)h(connections)f(in)o(v)o(olving)f(the)h +(o)o(wn)h(host.)223 2003 y(On)e(the)h(attac)o(k)o(er's)f(mac)o(hine,)e(w)o(e) +i(ha)o(v)o(e)g(to)h(distinguish)g(b)q(et)o(w)o(een)f(the)g(p)q(ossible)h +(iden)o(tities)149 2093 y(of)21 b(an)g(attac)o(k)o(er.)33 b(If)20 +b(he)h(is)f(a)h(rogue)g(system)e(administrator)h(and)h(has)g(no)g(higher)g +(authorit)o(y)149 2183 y(ab)q(o)o(v)o(e)c(him)d(in)j(his)f(organization,)h +(there)e(is)i(hardly)f(an)o(y)g(c)o(hance)g(that)h(an)o(y)o(one)f(on)h(his)f +(system)149 2274 y(could)h(detect)e(his)h(malicious)e(deeds.)223 +2364 y(If)i(he)g(has)i(sub)o(v)o(erted)d(the)i(system)e(and)i(has)g(gained)g +(the)g(necessary)f(sup)q(eruser)h(privileges)149 2454 y(on)e(the)f(attac)o +(king)g(mac)o(hine,)e(the)i(c)o(hances)f(of)i(detecting)e(him)f(are)i(b)q +(etter,)g(though)h(still)e(prett)o(y)149 2545 y(small.)27 b(Because)18 +b(the)h(attac)o(k)o(er)e(has)j(sub)o(v)o(erted)d(the)i(attac)o(king)f(mac)o +(hine)f(in)h(the)h(\014rst)g(place,)p eop +%%Page: 54 63 +62 bop 1901 -100 a Fo(54)149 75 y(ev)o(erything)17 b(w)o(e)g(said)h(ab)q(out) +h(the)f(p)q(ossibilities)f(of)h(detecting)f(an)o(ything)h(on)g(an)g(attac)o +(k)o(ed)f(ma-)149 165 y(c)o(hine)f(is)g(applicable)g(here)h(as)g(w)o(ell.)k +(W)l(e)c(could)f(also)i(observ)o(e)e(the)g(mo)q(di\014ed)g(executable)f +(\014les,)149 255 y(that)j(are)g(necessary)f(for)g(the)h(\\rlogin")g(and)g +(the)f(mo)q(di\014ed)f(name)g(serv)o(er)g(op)q(eration.)26 +b(But)17 b(all)149 346 y(c)o(hanges)j(in)f(binaries)f(can)i(b)q(e)f(made)f +(using)i(lo)q(cal)f(copies)f(of)i(the)f(source)g(co)q(de)g(that)h(is)f(read-) +149 436 y(ily)g(a)o(v)m(ailable.)31 b(Some)19 b(sites)g(run)h(monitors)f +(that)h(detect)f(on)h(a)g(daily)f(basis)i(if)e(binaries)g(w)o(ere)149 +526 y(c)o(hanged)c(or)g(touc)o(hed.)20 b(Using)14 b(lo)q(cal)h(copies)f(a)o +(v)o(oids)g(detection)g(b)o(y)g(this)g(t)o(yp)q(e)g(of)h(monitor.)k(The)149 +616 y(executables)c(can)h(ev)o(en)f(b)q(e)h(started)g(from)f(lo)q(cal)h +(directories,)f(w)o(ell{hidden)f(from)h(others.)21 b(The)149 +707 y(name)15 b(serv)o(er)g(that)i(is)f(already)g(running)g(has)h(to)f(b)q(e) +g(replaced)f(b)o(y)h(the)g(lo)q(cal)g(cop)o(y)l(,)f(but)h(that)h(is)149 +797 y(a)g(job)g(that)f(tak)o(es)g(less)g(than)h(a)g(second.)223 +887 y(T)l(amp)q(ering)h(with)g(the)h(log)g(\014les)f(also)h(aids)g(the)g +(attac)o(k)o(er)f(in)g(sta)o(ying)h(undetected.)28 b(With)149 +978 y(the)16 b(mo)q(di\014ed)e(\\rlogin")i(v)o(ersion,)f(there)g(are)h(no)g +(additional)f(passw)o(ord)i(\014le)e(en)o(tries)f(necessary)l(,)149 +1068 y(whic)o(h)i(otherwise)g(could)g(b)q(e)g(observ)o(ed.)223 +1158 y(Ov)o(erall,)k(the)g(attac)o(k)o(er)g(has)i(v)o(ery)e(go)q(o)q(d)j(c)o +(hances)d(of)h(hiding)g(his)g(activities)e(completely)l(.)149 +1248 y(Most)h(of)g(these)g(metho)q(ds)f(of)h(getting)f(a)h(glimpse)e(of)i +(his)f(doing)h(seem)e(farfetc)o(hed)h(to)h(us)g(and)149 1339 +y(their)14 b(o)q(dds)i(of)f(success)g(are)f(quite)g(small.)19 +b(The)c(highest)f(c)o(hances)g(of)h(detecting)f(the)g(tamp)q(ering)149 +1429 y(is)d(b)o(y)g(catc)o(hing)f(the)h(false)g(record)g(during)g(its)g +(short)h(lifetime)7 b(or)12 b(b)o(y)e(simply)f(\014nding)j(the)e(attac)o(k)o +(er)149 1519 y(logged)17 b(in.)p eop +%%Page: 55 64 +63 bop 1901 -100 a Fo(55)540 342 y(4.)33 b(SECURITY)16 b(ANAL)l(YSIS)e(AND)i +(SOLUTIONS)223 516 y(Most)e(of)g(the)g(prop)q(osed)i(\\solutions")f(in)f +(this)g(c)o(hapter)f(are)h(not)h(complete)d(solutions)i(to)h(the)149 +606 y(problem.)27 b(Some)18 b(of)h(them)e(are)h(v)m(alid)g(under)h +(additional)g(assumptions)f(that)h(cannot)h(alw)o(a)o(ys)149 +696 y(b)q(e)d(met;)d(others)j(are)f(applicable)f(to)i(parts)g(of)f(the)g +(problem.)223 787 y(Because)e(man)o(y)g(factors)i(con)o(tribute)e(to)i(the)f +(securit)o(y)f(breac)o(h)g(encoun)o(tered)h(in)g(this)g(thesis)149 +877 y(and)k(all)e(of)g(them)f(are)i(necessary)l(,)f(it)g(is)g(su\016cien)o(t) +g(to)g(eliminate)e(one)j(of)g(them.)23 b(That)18 b(sounds)149 +967 y(easy)j(to)f(accomplish,)f(but)h(is)g(a)h(di\016cult)d(task)j(in)f +(practice,)f(b)q(ecause)i(eliminating)c(an)o(y)j(one)149 1057 +y(of)f(the)e(factors)h(brings)g(a)h(trade{o\013)g(with)e(functionalit)o(y)l +(,)g(e\016ciency)l(,)e(or)j(simply)e(con)o(v)o(enience)149 +1148 y(with)h(it.)223 1238 y(W)l(e)h(presen)o(t)h(for)g(eac)o(h)f(of)i(our)f +(solutions)g(the)g(necessary)g(bac)o(kground,)h(if)e(it)g(w)o(as)i(not)f(al-) +149 1328 y(ready)j(giv)o(en)f(in)g(one)h(of)g(the)g(previous)f(c)o(hapters,)i +(follo)o(w)o(ed)e(b)o(y)g(a)h(description)f(of)h(the)g(idea)149 +1419 y(of)d(the)g(solution.)29 b(The)19 b(solution)g(is)f(then)h(examined)e +(and)i(discussed)g(using)g(criteria)e(suc)o(h)i(as)149 1509 +y(feasibilit)o(y)c(of)j(its)e(implem)o(en)o(tation,)e(qualit)o(y)i(of)h(the)g +(solution,)g(complexit)o(y)c(of)18 b(the)e(idea,)h(and)149 +1599 y(compatibilit)o(y)d(with)i(the)g(original)g(design)g(goals.)223 +1689 y(It)10 b(is)h(imp)q(ortan)o(t)f(to)h(view)f(these)h(solutions)g(as)h +(not)f(stand)h(alone.)19 b(In)11 b(di\013eren)o(t)f(com)o(binations)149 +1780 y(they)i(ac)o(hiev)o(e)f(sev)o(eral)g(degrees)h(of)h(securit)o(y)l(.)19 +b(The)12 b(concluding)g(c)o(hapter)g(of)h(this)f(thesis)g(con)o(tains)149 +1870 y(a)k(high)f(lev)o(el)d(discussion)j(ab)q(out)i(com)o(binations)c(of)i +(our)h(solutions,)f(to)g(obtain,)g(if)g(not)g(absolute)149 +1960 y(securit)o(y)l(,)c(at)h(least)f(a)h(high)g(lev)o(el)e(of)i +(con\014dence)f(in)g(the)g(securit)o(y)f(of)i(the)g(Domain)f(Name)f(System.) +149 2126 y(4.1)50 b(Securit)o(y)14 b(Considerations)j(in)f(the)g(RF)o(C)g +(1035)223 2265 y(In)h(the)g(design)g(of)h(the)f(Domain)g(Name)e(System,)h +(securit)o(y)g(considerations)i(w)o(ere)e(not)i(for-)149 2356 +y(gotten,)i(and)f(the)f(RF)o(Cs)h(sho)o(w)g(that)g(the)g(in)o(tegrit)o(y)e +(of)i(the)f(cac)o(he)g(w)o(as)h(an)g(imp)q(ortan)o(t)f(issue.)149 +2446 y(The)g(eagerness)h(to)f(impro)o(v)o(e)d(p)q(erformance)i(led)g(to)h +(the)g(nast)o(y)g(logic)g(b)q(om)o(b)f(of)h(adding)h(unau-)149 +2536 y(thorized)d(records)g(to)g(the)g(additional)g(section)g(and)g(|)g(in)g +(absence)g(of)g(strong)h(authen)o(tication)149 2626 y(|)f(b)q(elieving)f +(their)h(correctness.)p eop +%%Page: 56 65 +64 bop 1901 -100 a Fo(56)223 75 y(Before)22 b(resp)q(onses)j(are)e(further)g +(pro)q(cessed,)i(a)f(n)o(um)o(b)q(er)e(of)h(prepro)q(cessing)h(steps)g(tak)o +(es)149 165 y(place.)34 b(These)21 b(include)e(a)j(c)o(hec)o(k)c(for)j(the)g +(plausibilit)o(y)d(of)j(the)g(header)g(\(id)f(n)o(um)o(b)q(er)f(c)o(hec)o +(k\),)149 255 y(the)i(correctness)g(of)g(the)g(resource)g(records')g(format,) +g(and)h(time)d(to)i(liv)o(e)f(v)m(alues.)35 b(If)21 b(a)h(time)149 +346 y(to)e(liv)o(e)e(v)m(alue)i(exceeds)e(one)i(w)o(eek,)f(the)g(sp)q +(eci\014cation)h(allo)o(ws)f(the)h(implem)o(en)n(tor)d(to)j(discard)149 +436 y(this)g(record,)g(or)g(limit)c(its)k(lifetime)c(to)k(one)f(w)o(eek.)31 +b(The)19 b(id)g(in)h(the)f(header)h(of)f(the)h(resp)q(onse)149 +526 y(m)o(ust)h(matc)o(h)f(the)h(id)g(of)h(the)f(query)l(.)37 +b(A)21 b(name)f(serv)o(er)h(exp)q(ects)g(the)g(reply)g(from)f(the)h(same)149 +616 y(IP)e(address)h(where)e(he)h(sen)o(t)g(the)f(query)l(.)29 +b(This)19 b(can)g(cause)g(some)f(confusion)h(if)f(replies)g(come)149 +707 y(from)13 b(m)o(ultihome)o(d)e(hosts)j(that)g(use)g(other)g(p)q(orts)g +(for)g(sending)g(the)f(resp)q(onse,)i(b)q(ecause)f(of)g(lo)q(cal)149 +797 y(routing)j(information.)j(This)d(w)o(as)f(a)h(common)d(bug)j(in)f(name)f +(serv)o(ers.)223 887 y(The)j(standard)i(states)f(sev)o(eral)f(situations)h +(in)f(whic)o(h)g(data)h(should)h(not)f(b)q(e)f(cac)o(hed.)28 +b(If)18 b(a)149 978 y(pac)o(k)o(et)e(is)g(truncated)h(\(TC)g(\015ag)g(in)f +(the)g(header)h(is)f(set\),)g(its)h(resource)f(records)g(should)h(not)g(b)q +(e)149 1068 y(cac)o(hed,)i(although)h(they)f(can)g(b)q(e)g(used)g(for)h(the)e +(curren)o(t)h(mapping.)28 b(The)20 b(reason)f(for)h(this)f(is)149 +1158 y(that)e(a)g(cac)o(he)f(should)g(not)h(con)o(tain)f(incomplete)e +(information.)21 b(The)16 b(information)f(in)h(a)h(cac)o(he)149 +1248 y(migh)o(t)12 b(b)q(e)i(out)h(of)f(date)g(whic)o(h)f(will)f(ev)o(en)o +(tually)g(b)q(e)i(corrected;)f(but)h(the)f(cac)o(he)g(sta)o(ys)h(alw)o(a)o +(ys)g(in)149 1339 y(a)19 b(consisten)o(t)f(state,)h(b)q(ecause)f(incomplete)e +(mappings)i(are)g(nev)o(er)f(en)o(tered.)27 b(A)17 b(cac)o(he)h(should)149 +1429 y(nev)o(er)c(prefer)f(cac)o(he)h(data)h(o)o(v)o(er)f(authoritativ)o(e)g +(data.)21 b(Resp)q(onses)16 b(to)e(in)o(v)o(erse)f(queries)g(are)i(also)149 +1519 y(tab)q(o)q(o)21 b(b)q(ecause)d(of)h(their)f(incomplete)d(information)j +(c)o(haracter.)26 b(Name)17 b(serv)o(ers)h(or)g(resolv)o(ers)149 +1610 y(ha)o(v)o(e)g(to)h(do)f(all)g(correctness)g(c)o(hec)o(ks)f(b)q(efore)h +(they)g(can)g(cac)o(he)g(data.)28 b(Resp)q(onses)19 b(of)g(dubious)149 +1700 y(reliabilit)o(y)f(ha)o(v)o(e)i(to)i(b)q(e)f(examined)d(carefully)l(.)33 +b(It)21 b(is)f(ho)o(w)o(ev)o(er)g(not)h(easy)g(to)g(decide)f(criteria)149 +1790 y(suc)o(h)c(as)h(\\dubious)h(origin,")e(or)g(\\reliable)f(source.")223 +1880 y(Before)i(cac)o(hing)g(a)i(newly)e(receiv)o(ed)e(record,)j(the)g(name)f +(serv)o(er)g(should)h(c)o(hec)o(k)e(for)i(an)h(ex-)149 1971 +y(isting)h(record)f(in)g(the)g(cac)o(he.)29 b(Dep)q(ending)20 +b(on)g(the)f(circumstances,)e(either)i(the)g(data)h(in)f(the)149 +2061 y(resp)q(onse,)k(or)e(the)f(cac)o(he)g(is)h(preferred,)f(but)h(the)g(t)o +(w)o(o)f(should)h(nev)o(er)f(b)q(e)h(com)o(bined.)32 b(If)21 +b(the)149 2151 y(data)c(in)f(the)g(resp)q(onse)h(is)f(mark)o(ed)e(as)j +(authoritativ)o(e)f(data)h(in)f(the)g(answ)o(er)g(section,)f(it)h(should)149 +2242 y(alw)o(a)o(ys)h(b)q(e)f(preferred.)p eop +%%Page: 57 66 +65 bop 1901 -100 a Fo(57)149 75 y(4.2)50 b(Analysis)15 b(of)i(the)f(Name)e +(Serv)o(er)h(Algorithm)223 214 y(In)k(this)g(section)h(w)o(e)f(review)f(the)i +(name)e(serv)o(er)h(algorithm)f(stated)i(in)g(section)f(2.9.2)h(and)149 +305 y(analyze)d(it)f(step)h(b)o(y)f(step.)24 b(W)l(e)16 b(are)h(esp)q +(ecially)e(lo)q(oking)j(for)f(w)o(eak)f(assumptions)h(that)h(do)f(not)149 +395 y(alw)o(a)o(ys)g(hold.)k(These)16 b(assumptions)g(could)g(b)q(e)h +(exploited)e(b)o(y)g(attac)o(k)o(ers.)209 539 y(1.)24 b(In)14 +b(step)h(one)f(the)g(algorithm)f(determines)f(if)i(a)g(recursiv)o(e)f(name)g +(resolution)h(is)g(requested)271 629 y(and)k(a)o(v)m(ailable.)j(If)c(so,)g +(it)f(branc)o(hes)g(to)i(step)e(\014v)o(e,)g(where)g(a)h(cop)o(y)f(of)h(the)g +(resolv)o(er)e(algo-)271 720 y(rithm)e(or)h(the)g(lo)q(cal)g(resolv)o(er)f +(is)h(in)o(v)o(ok)o(ed.)19 b(When)14 b(the)g(resolv)o(er)f(returns)i(an)f +(answ)o(er,)h(the)271 810 y(name)f(serv)o(er)g(algorithm)g(b)q(eliev)o(es)f +(this)h(answ)o(er)h(to)g(b)q(e)g(correct)g(and)g(copies)f(it)h(as)g(is)g(in)o +(to)271 900 y(the)g(according)g(answ)o(er)g(sections)f(of)h(the)g(o)o(wn)g +(reply)l(.)20 b(This)15 b(answ)o(er)g(could)f(con)o(tain)h(false)271 +991 y(records)i(not)g(only)g(in)f(the)g(additional)h(section,)f(but)h(also)g +(in)f(the)g(answ)o(er)h(or)g(authorita-)271 1081 y(tiv)o(e)h(section.)31 +b(This)19 b(is)h(a)f(w)o(eak)h(assumption)f(b)q(ecause)g(the)h(resp)q(onse)g +(of)f(an)h(arbitrary)271 1171 y(name)15 b(serv)o(er)h(cannot)g(alw)o(a)o(ys)h +(b)q(e)f(trusted.)209 1303 y(2.)24 b(In)12 b(step)g(t)o(w)o(o)g(the)g(name)f +(serv)o(er)g(searc)o(hes)h(the)g(a)o(v)m(ailable)f(zones)h(for)h(the)e +(nearest)h(ancestor.)271 1393 y(It)k(assumes)f(that)h(its)f(zone)h(data)g(is) +g(accurate.)k(This)c(should)g(usually)g(b)q(e)f(the)h(case.)21 +b(But)271 1484 y(there)14 b(is)g(a)h(p)q(ossibilit)o(y)e(that)h(its)g(data)h +(base)g(is)f(not)h(consisten)o(t.)20 b(This)14 b(inconsistency)f(can)271 +1574 y(lead)20 b(to)g(malfunction)d(as)k(it)e(has)h(in)f(the)g(past,)i(and)f +(in)f(the)h(w)o(orst)g(case)f(to)h(a)g(securit)o(y)271 1664 +y(threat.)209 1796 y(3.)k(In)17 b(step)h(three)e(the)h(serv)o(er)g(tries)f +(to)i(matc)o(h)e(the)h(query)f(in)h(its)g(o)o(wn)h(authoritativ)o(e)f(data) +271 1886 y(base.)22 b(In)16 b(principle)e(the)i(same)g(problem)e(as)j(in)f +(the)g(previous)g(step)g(exists.)209 2018 y(4.)24 b(Step)18 +b(four)g(is)f(resp)q(onsible)h(for)f(\014nding)h(data)h(in)e(the)g(cac)o(he)g +(once)h(the)f(matc)o(hing)f(phase)271 2108 y(in)k(step)g(three)g(is)f(not)i +(successful.)32 b(If)20 b(the)f(QNAME)h(is)f(found)i(in)f(one)g(of)g(the)g +(cac)o(hed)271 2199 y(records,)c(all)e(resource)i(records)f(matc)o(hing)f +(the)h(QTYPE)h(of)f(the)h(query)e(are)i(copied)f(in)o(to)271 +2289 y(the)21 b(answ)o(er)g(section.)35 b(If)20 b(there)g(is)h(no)g +(delegation)g(found)h(in)e(its)h(authoritativ)o(e)f(data,)271 +2379 y(the)f(algorithm)g(puts)g(the)g(b)q(est)h(referral)f(found)g(in)g(the)h +(cac)o(he)e(in)o(to)h(the)g(authoritativ)o(e)271 2469 y(section.)30 +b(In)19 b(these)g(cases,)h(the)f(algorithm)g(b)q(eliev)o(es)e(the)i(data)h +(that)g(it)f(retriev)o(es)f(from)271 2560 y(the)e(cac)o(he)g(to)g(b)q(e)h +(unimpaired.)i(As)d(w)o(e)g(sho)o(w)o(ed,)g(this)g(do)q(es)h(not)g +(necessarily)e(hold.)p eop +%%Page: 58 67 +66 bop 1901 -100 a Fo(58)209 75 y(5.)24 b(Step)17 b(\014v)o(e)e(is)i(the)f +(call)f(to)i(another)g(resolv)o(er.)k(The)c(problem)d(here)i(is)h(that)f(the) +h(resp)q(onse)271 165 y(is)f(blindly)f(b)q(eliev)o(ed,)f(cac)o(hed)i(and)h +(used.)209 297 y(6.)24 b(Step)d(six)e(do)q(es)j(not)e(con)o(tain)h(a)f(\015a) +o(w)h(itself,)f(but)g(it)g(demonstrates)g(ho)o(w)h(easy)f(it)g(is)g(to)271 +387 y(add)h(records)f(to)h(the)f(reply)l(,)f(and)i(that)g(a)f(name)f(serv)o +(er)g(accepts)h(that)g(without)h(man)o(y)271 477 y(constrain)o(ts.)149 +643 y(4.3)50 b(Analysis)15 b(of)i(the)f(Resolv)o(er)f(Algorithm)223 +782 y(In)e(this)g(section)g(w)o(e)f(review)h(the)g(resolv)o(er)f(algorithm)g +(stated)i(in)f(section)f(2.9.3)i(and)g(analyze)149 873 y(it)k(step)g(b)o(y)g +(step.)26 b(W)l(e)18 b(are)g(esp)q(ecially)f(lo)q(oking)h(for)g(w)o(eak)g +(assumptions)g(that)h(do)f(not)h(alw)o(a)o(ys)149 963 y(hold.)j(These)16 +b(assumptions)g(could)g(b)q(e)h(exploited)e(b)o(y)g(attac)o(k)o(ers.)209 +1107 y(1.)24 b(Step)17 b(one)f(in)g(the)h(resolv)o(er's)e(algorithm)g(sho)o +(ws)j(one)e(of)h(the)f(securit)o(y)f(\015a)o(ws)i(in)f(the)h(pro-)271 +1197 y(to)q(col.)33 b(The)20 b(resolv)o(er)f(searc)o(hes)h(the)f(cac)o(he)g +(for)i(the)e(desired)h(data.)33 b(If)19 b(the)h(data)h(is)f(in)271 +1288 y(the)g(cac)o(he,)f(the)g(resolv)o(er)f(\\assumes")i(it)f(to)h(b)q(e)f +(go)q(o)q(d)j(enough)e(for)g(regular)f(use.)31 b(This)271 1378 +y(assumption)15 b(can)g(lead)f(to)i(the)e(use)h(of)g(false)g(records)g(and)g +(aid)g(an)g(attac)o(k)o(er)f(in)h(his)g(unau-)271 1468 y(thorized)h(attempt)f +(to)i(access)f(another)h(mac)o(hine.)271 1579 y(Some)k(resolv)o(ers)g +(o\013er)i(the)f(option)g(at)h(the)f(user)g(in)o(terface)e(to)j(force)e(the)h +(resolv)o(er)f(to)271 1670 y(ignore)e(cac)o(hed)f(data)h(and)h(alw)o(a)o(ys)e +(consult)h(an)g(authoritativ)o(e)f(serv)o(er.)27 b(Although)19 +b(this)271 1760 y(approac)o(h)c(w)o(ould)e(solv)o(e)g(the)g(problem,)f(it)h +(is)h(not)g(recomme)o(nded)d(as)j(the)f(default,)g(as)i(this)271 +1850 y(is)h(v)o(ery)f(ine\016cien)o(t.)209 1982 y(2.)24 b(In)19 +b(step)g(t)o(w)o(o)h(the)e(resolv)o(er)h(lo)q(oks)g(for)h(a)f(name)f(serv)o +(er)h(to)g(ask)h(for)f(the)g(required)f(data.)271 2072 y(The)13 +b(general)e(strategy)i(is)f(to)g(lo)q(ok)h(for)f(lo)q(cally)g(a)o(v)m +(ailable)f(name)g(serv)o(er)g(resource)h(records,)271 2163 +y(starting)k(at)g(SNAME,)f(to)o(w)o(ards)h(the)f(ro)q(ot.)22 +b(The)16 b(resolv)o(er)e(has)i(man)o(y)e(c)o(hoices)h(here)g(and)271 +2253 y(dep)q(ending)k(on)g(whic)o(h)e(c)o(hoice)g(it)h(mak)o(es)f(it)h(can)g +(con)o(tact)g(sound)h(name)f(serv)o(ers)f(or)i(the)271 2343 +y(attac)o(k)o(er's)14 b(name)g(serv)o(er.)20 b(Ho)o(w)o(ev)o(er,)13 +b(if)i(w)o(e)f(assume,)h(that)g(the)g(attac)o(k)o(er)f(has)i(set)f(up)h(his) +271 2433 y(zones)c(suc)o(h)g(that)g(his)f(name)g(serv)o(er)g(is)g(the)h(only) +f(one)h(with)g(the)f(necessary)g(information)g(to)271 2524 +y(answ)o(er)16 b(the)f(attac)o(k)o(ed)g(mac)o(hine's)e(query)l(,)h(the)i +(resolv)o(er)e(has)i(certainly)e(no)i(other)g(c)o(hoice)271 +2614 y(than)h(\014nally)f(con)o(tacting)g(him.)p eop +%%Page: 59 68 +67 bop 1901 -100 a Fo(59)209 75 y(3.)24 b(Step)d(three)g(sends)g(out)h +(queries)e(un)o(til)g(a)h(resp)q(onse)h(is)f(receiv)o(ed.)33 +b(The)21 b(strategy)g(is)g(to)271 165 y(cycle)c(around)h(all)g(of)g(the)g +(addresses)g(for)g(all)g(of)g(the)f(serv)o(ers)g(with)h(a)g(timeout)e(b)q(et) +o(w)o(een)271 255 y(eac)o(h)g(transmission.)209 387 y(4.)24 +b(In)17 b(step)h(four)f(the)g(resolv)o(er)f(accepts)i(answ)o(er)f(pac)o(k)o +(ets)f(from)h(name)f(serv)o(ers)g(it)h(has)h(con-)271 477 y(tacted.)33 +b(These)20 b(pac)o(k)o(ets)f(can)h(con)o(tain)g(records)g(in)f(the)h +(additional)g(section.)33 b(The)20 b(re-)271 568 y(solv)o(er)15 +b(p)q(erforms)g(some)g(prepro)q(cessing)h(on)g(these)g(pac)o(k)o(ets)e(and)j +(the)e(con)o(tained)g(records)271 658 y(\(see)h(4.1)g(for)g(detailed)f +(description\),)f(but)i(v)o(ery)f(lik)o(ely)e(accepts)i(them)g(and)h(cac)o +(hes)f(their)271 748 y(con)o(ten)o(ts.)41 b(Cac)o(hing)23 b(unrequested)f +(data)i(pro)o(vided)e(b)o(y)g(some)g(unkno)o(wn)h(source)g(can)271 +839 y(lead)18 b(to)g(a)f(ma)s(jor)g(problem)f(but)i(is)f(also)h(necessary)f +(to)h(obtain)g(a)g(go)q(o)q(d)i(o)o(v)o(erall)c(system)271 +929 y(p)q(erformance.)223 1073 y(If)g(the)h(resolv)o(er)f(has)i(direct)e +(access)h(to)h(a)f(name)f(serv)o(er's)g(zone,)h(it)g(should)g(c)o(hec)o(k)f +(to)h(see)g(if)149 1163 y(the)e(desired)e(data)i(is)f(presen)o(t)g(in)g +(authoritativ)o(e)g(form,)f(and)i(if)f(so,)g(use)h(the)f(authoritativ)o(e)g +(data)149 1254 y(in)i(preference)f(to)i(the)f(cac)o(he.)223 +1344 y(One)k(could)h(ask)g(where)g(exactly)e(the)i(problem)e(lies:)30 +b(in)21 b(b)q(elieving)e(the)i(cac)o(hed)f(data)i(in)149 1434 +y(step)e(one,)g(or)g(earlier)f(in)g(blindly)f(cac)o(hing)h(additional)h +(information)f(throughout)i(step)f(four.)149 1524 y(Ob)o(viously)l(,)12 +b(the)h(data)h(should)f(b)q(e)g(correct)g(b)q(efore)g(it)f(is)h(en)o(tered)e +(in)o(to)i(the)g(cac)o(he.)19 b(That)13 b(ensures)149 1615 +y(the)20 b(in)o(tegrit)o(y)d(of)j(the)f(in)o(ternal)f(data)i(structures,)g +(whic)o(h)f(is)g(an)g(imp)q(ortan)o(t)g(precondition)g(in)149 +1705 y(most)d(systems.)223 1795 y(But)h(this)g(answ)o(er)h(only)f(shifts)h +(the)f(question)h(to)f(the)h(origin)f(of)h(these)f(records.)26 +b(Where)17 b(is)149 1886 y(the)g(righ)o(t)g(p)q(oin)o(t)g(to)g(ensure)g(the)g +(in)o(tegrit)o(y)e(of)j(transmitted)d(resource)i(records?)24 +b(In)17 b(the)g(name)149 1976 y(serv)o(er)h(that)h(writes)g(the)f(records)h +(in)o(to)f(the)h(additional)g(section?)29 b(That)19 b(can)g(b)q(e)g(violated) +f(b)o(y)149 2066 y(an)e(attac)o(k)o(er,)e(as)i(w)o(e)f(ha)o(v)o(e)f(pro)o(v)o +(ed)g(in)h(our)h(exp)q(erimen)o(ts.)i(Or)d(in)g(the)g(name)f(serv)o(er)g(or)i +(resolv)o(er)149 2156 y(that)i(accepts)e(the)h(resource)g(records,)f(b)q +(efore)h(they)f(are)h(added)h(to)f(the)f(cac)o(he?)23 b(The)17 +b(problem)149 2247 y(here)e(is)g(that)g(the)g(receiving)e(en)o(tit)o(y)h(has) +i(no)f(w)o(a)o(y)g(of)g(deciding)f(what)i(is)f(reasonable)h(to)f(b)q(eliev)o +(e,)149 2337 y(and)i(what)g(can)g(lead)f(to)g(trouble.)223 +2427 y(Neither)d(of)i(the)f(approac)o(hes)h(is)g(feasible)f({)h(the)f(cen)o +(tral)g(dilemm)o(a)e(in)i(the)g(curren)o(t)g(Domain)149 2518 +y(Name)h(System)g(design.)p eop +%%Page: 60 69 +68 bop 1901 -100 a Fo(60)149 75 y(4.4)50 b(Ev)m(aluation)16 +b(Criteria)223 214 y(The)j(follo)o(wing)g(sections)h(presen)o(t)f(solutions)h +(that)f(address)i(the)e(stated)h(problem.)29 b(Most)149 305 +y(of)17 b(the)f(solutions)h(are)f(based)h(on)g(the)f(Domain)g(Name)e(System)h +(and)i(are)f(not)h(solutions)g(to)g(the)149 395 y(abstract)g(problem.)223 +485 y(As)g(w)o(e)h(ha)o(v)o(e)f(already)h(men)o(tioned,)e(the)i(presen)o(ted) +f(approac)o(hes)i(are)f(not)g(complete)e(solu-)149 575 y(tions)g(to)g(the)g +(problem.)j(Most)d(of)g(them)e(w)o(ork)h(only)h(under)f(certain)g(additional) +h(assumptions,)149 666 y(but)j(then)g(reliably)l(.)27 b(A)19 +b(go)q(o)q(d)i(approac)o(h)e(is)g(probably)g(to)g(not)g(limit)d(a)j(system)f +(to)h(the)g(appli-)149 756 y(cation)f(of)h(one)f(solution,)g(but)g(to)g +(impleme)o(n)o(t)d(a)j(reasonable)h(v)m(ariet)o(y)e(of)h(them.)24 +b(This)18 b(v)m(ariet)o(y)149 846 y(should)k(co)o(v)o(er)d(as)j(man)o(y)d +(cases)i(as)g(p)q(ossible,)h(with)e(few)h(o)o(v)o(erlaps.)34 +b(Some)20 b(of)h(the)f(presen)o(ted)149 937 y(solutions)d(are)f(already)g(in) +f(use)h(in)g(some)f(systems,)f(while)h(others)h(are)g(in)g(their)f(early)g +(stages)i(of)149 1027 y(design)g(or)f(dev)o(elopmen)o(t.)223 +1117 y(Our)e(presen)o(tation)h(of)g(eac)o(h)f(solution)h(con)o(tains)g(a)g +(description)f(and)h(a)g(discussion.)21 b(W)l(e)14 b(use)149 +1207 y(sev)o(eral)i(criteria)f(that)h(are)h(imp)q(ortan)o(t)e(in)h(an)h(ev)m +(aluation)f(of)g(solutions)h(to)g(our)g(problem:)222 1352 y +Fj(\017)24 b Fo(The)16 b(\\qualit)o(y")f(of)i(the)e(solution)h(is)g(a)g +(measuremen)o(t)d(of)j(the)f(radius)h(of)g(applicabilit)o(y)e(of)271 +1442 y(the)g(solution.)21 b(This)13 b(v)m(alue)h(cannot)g(easily)f(b)q(e)h +(sp)q(eci\014ed,)f(b)q(ecause)h(the)g(set)f(of)h(applicable)271 +1532 y(cases)g(is)e(not)i(precisely)d(giv)o(en.)19 b(W)l(e)13 +b(men)o(tion)e(the)i(cases)g(that)h(are)f(co)o(v)o(ered)e(b)o(y)i(a)g +(solution)271 1623 y(and)k(try)f(to)h(deriv)o(e)d(from)i(that)g(a)h(judgemen) +o(t)d(ab)q(out)k(the)e(qualit)o(y)f(of)h(the)g(solution.)222 +1754 y Fj(\017)24 b Fo(The)12 b(\\feasibilit)o(y)e(of)i(the)f(implem)o(en)o +(t)o(ation")f(of)i(a)g(solution)g(determines)d(ho)o(w)j(m)o(uc)o(h)d +(e\013ort)271 1845 y(is)19 b(needed)f(to)i(apply)e(the)h(solution)g(to)h(an)f +(unmo)q(di\014ed)f(v)o(ersion)g(of)i(a)f(state)g(of)g(the)g(art)271 +1935 y(name)c(serv)o(er.)222 2067 y Fj(\017)24 b Fo(The)19 +b(\\complexit)o(y)d(of)j(its)g(implem)o(e)o(n)o(tation")e(measures)g(if)i(mo) +q(di\014cations)f(in)g(di\013eren)o(t)271 2157 y(areas)c(are)f(in)o(v)o(olv)o +(ed)d(and)k(ho)o(w)f(complicated)d(their)i(in)o(teraction)g(is.)20 +b(A)12 b(solution)h(can)g(ha)o(v)o(e)271 2247 y(a)h(v)o(ery)f(lo)o(w)g +(degree)g(of)h(complexit)o(y)-5 b(,)11 b(but)j(require)e(considerable)h +(implem)o(en)o(tati)o(on)e(e\013ort.)271 2338 y(A)16 b(complex)e(implem)o(en) +o(tation)f(do)q(es)k(not)g(has)g(to)g(result)f(in)f(a)i(large)f(amoun)o(t)g +(of)g(co)q(ding.)222 2469 y Fj(\017)24 b Fo(In)18 b(solving)f(the)g(problem)f +(w)o(e)h(are)h(striving)f(for)h(\\compatibilit)o(y)c(with)k(the)f(original)g +(de-)271 2560 y(sign.")22 b(A)16 b(solution)g(that)h(do)q(es)g(not)f(require) +f(c)o(hanges)i(to)f(the)g(DNS)g(proto)q(col)h(is)f(usually)271 +2650 y(preferred)g(o)o(v)o(er)f(one)h(that)h(do)q(es)g({)g(ev)o(en)e(if)h +(this)g(conformit)o(y)e(has)j(other)f(disadv)m(an)o(tages.)p +eop +%%Page: 61 70 +69 bop 1901 -100 a Fo(61)222 75 y Fj(\017)24 b Fo(The)d(Domain)f(Name)f +(System)g(is)i(a)g(system)e(that)i(resolv)o(es)f(mappings)g(on{line.)34 +b(The)271 165 y(e\016ciency)14 b(of)j(the)e(system)g(and)i(its)f(p)q +(erformance)f(are)h(imp)q(ortan)o(t)f(factors)i(of)f(in\015uence.)271 +255 y(The)g(compliance)d(of)j(the)f(solution's)h(\\e\016ciency")e(with)h +(that)h(of)g(the)f(system)f(is)i(equally)271 346 y(imp)q(ortan)o(t.)222 +477 y Fj(\017)24 b Fo(Some)f(of)g(the)g(solutions)h(in)o(v)o(olv)o(e)d(users) +j(in)f(general.)42 b(F)l(or)23 b(example)e(if)i(the)g(solution)271 +568 y(requires)12 b(a)i(c)o(hange)f(in)f(the)h(user)g(in)o(terface,)f(or)h +(in)g(an)g(organization's)h(p)q(olicy)e(of)h(handling)271 658 +y(trust.)21 b(The)15 b(user)f(has)h(to)g(learn)f(to)h(handle)f(the)g(c)o +(hanges,)g(and)h(his)g(appro)o(v)m(al)g(is)f(a)h(crucial)271 +748 y(p)q(oin)o(t.)22 b(W)l(e)16 b(com)o(bine)e(these)i(asp)q(ects)h(in)e +(the)h(term)f(\\acceptabilit)o(y)g(b)o(y)g(the)h(user.")222 +880 y Fj(\017)24 b Fo(Solutions)15 b(migh)o(t)e(not)i(b)q(e)g(applicable)f +(in)g(ev)o(ery)f(organizational)i(en)o(vironmen)o(t.)j(W)l(e)c(call)271 +970 y(this)i(criterion)g(\\applicabilit)o(y)e(in)i(an)h(organization.")222 +1102 y Fj(\017)24 b Fo(An)15 b(imp)q(ortan)o(t)e(p)q(oin)o(t)i(in)f(the)h(in) +o(tro)q(duction)f(of)h(c)o(hanges)g(to)g(systems)e(is)h(the)h(\\transition) +271 1192 y(pro)q(cess")f(from)e(the)h(original)f(state)h(\(b)q(efore)g(the)g +(solution)g(is)g(applied\))f(to)h(the)g(new)g(state.)271 1283 +y(In)18 b(case)g(of)g(minor)e(c)o(hanges)i(this)f(transition)h(p)q(erio)q(d)h +(can)f(b)q(e)f(v)o(ery)g(short)h({)g(sometimes)271 1373 y(hardly)h +(noticeable.)27 b(If)18 b(c)o(hanges)h(of)f(considerable)g(degree)g(are)h(in) +o(v)o(olv)o(ed,)d(this)j(pro)q(cess)271 1463 y(pla)o(ys)d(a)h(ma)s(jor)e +(role)h(in)g(the)g(c)o(hange)g(managemen)o(t.)222 1595 y Fj(\017)24 +b Fo(The)16 b(\\transparency)g(of)g(the)f(solution")h(in)o(v)o(olv)o(es)d +(the)j(user)f(in)o(terface)f(and)i(the)f(soft)o(w)o(are)271 +1685 y(in)o(terface)e(to)i(the)f(system.)19 b(This)c(p)q(oin)o(t)f(examines)f +(another)i(notion)g(than)f(the)h(\\compat-)271 1776 y(ibilit)o(y)h(with)i +(the)g(original)f(design,")i(whic)o(h)e(only)h(in)o(v)o(olv)o(es)e(the)i +(proto)q(col)g(issue)g(|)g(not)271 1866 y(the)e(user.)149 2031 +y(4.5)50 b(The)16 b(Berk)o(eley)d(P)o(atc)o(h)223 2171 y(W)l(e)i(already)h +(men)o(tioned)d(the)j(Berk)o(eley)d(soft)o(w)o(are)j(patc)o(h)f(in)h(some)e +(sections)i(of)g(this)g(thesis)149 2261 y(and)h(explained)e(it)h(in)g(detail) +g(in)f(Section)h(3.5.6.)223 2351 y(This)11 b(\014rst)h(attempted)e(defense,)i +(dev)o(elop)q(ed)f(at)h(the)f(Univ)o(ersit)o(y)e(of)j(Berk)o(eley)l(,)d(CA)j +(,)f(consists)149 2442 y(of)16 b(mo)q(di\014cations)e(of)h(the)g(\\rlogind")h +(and)g(\\rshd")g(co)q(de.)21 b(The)15 b(idea)g(is)f(to)i(v)m(alidate)e(the)h +(in)o(v)o(erse)149 2532 y(mapping)h(tree)g(b)o(y)f(lo)q(oking)i(at)g(the)f +(corresp)q(onding)h(no)q(de)g(on)g(the)f(forw)o(ard)h(mapping)e(tree.)21 +b(S.)149 2622 y(Bello)o(vin)e(describ)q(es)h(the)g(metho)q(d)g(used)h(b)o(y)f +(the)g(patc)o(h)h(in)f([Bel92)o(])g(as)h(follo)o(ws:)30 b(\\T)l(o)21 +b(detect)p eop +%%Page: 62 71 +70 bop 1901 -100 a Fo(62)149 75 y(this,)19 b(w)o(e)f(p)q(erform)g(a)h +(cross{c)o(hec)o(k;)f(using)h(the)f(returned)g(name,)g(w)o(e)g(do)h(a)g(forw) +o(ard)g(c)o(hec)o(k)e(to)149 165 y(learn)e(the)g(legal)g(address)h(for)f +(that)h(host.)21 b(If)15 b(that)h(name)e(is)h(not)g(listed,)f(or)i(if)e(the)h +(addresses)h(do)149 255 y(not)h(matc)o(h,)d(alarms,)h(gongs,)j(and)f(to)q +(csins)f(are)h(sounded.")223 346 y(Refer)e(to)i(the)f(description)f(of)i(the) +f(algorithm)f(in)h(Section)g(3.5.6)g(and)h(Figure)f(3.2.)223 +436 y(The)c(\014x)g(is)g(easily)f(installed)h(and)h(not)f(v)o(ery)f(complex.) +18 b(Its)12 b(compatibilit)o(y)d(with)j(the)g(existing)149 +526 y(Domain)i(Name)e(System)h(proto)q(col)h(is)g(another)h(adv)m(an)o(tage.) +21 b(The)14 b(transition)h(pro)q(cess)f(to)h(mo)o(v)o(e)149 +616 y(to)k(a)g(name)e(serv)o(er)g(that)i(con)o(tains)f(the)h(patc)o(h)f(is)g +(not)h(di\016cult)e(or)h(complex.)26 b(A)18 b(few)g(lines)f(of)149 +707 y(co)q(de)i(ha)o(v)o(e)f(to)h(b)q(e)g(inserted)e(in)o(to)i(the)f(name)f +(serv)o(er)h(co)q(de,)h(and)g(the)f(name)g(serv)o(er)f(has)i(to)g(b)q(e)149 +797 y(recompiled)14 b(and)j(started.)223 887 y(Although)22 +b(w)o(e)g(regard)h(this)f(patc)o(h)g(as)h(an)g(obligatory)g(mo)q +(di\014cation)e(to)i(\\rlogind")g(and)149 978 y(\\rshd,")15 +b(it)e(is)g(limited)d(in)j(its)g(scop)q(e.)21 b(It)13 b(can)g(easily)g(b)q(e) +g(coun)o(tered)g(using)g(the)h(metho)q(ds)e(demon-)149 1068 +y(strated)j(throughout)h(Section)e(3.5.6.)21 b(Because)14 b(a)h(name)e(serv)o +(er)h(alw)o(a)o(ys)g(prefers)g(authoritativ)o(e)149 1158 y(data)i(o)o(v)o(er) +d(non{authoritativ)o(e)i(records,)g(it)f(is)g(imp)q(ossible)f(to)i(p)q(oison) +g(the)g(cac)o(he)e(of)i(a)g(primary)149 1248 y(or)h(secondary)f(serv)o(er)g +(for)g(a)h(zone.)k(Th)o(us,)c(an)f(additional)g(false)g(A)g(record)g(cannot)h +(b)q(e)f(inserted)149 1339 y(in)o(to)h(the)g(cac)o(he,)f(and)i(the)f(cross{c) +o(hec)o(k)f(will)h(detect)f(the)h(tamp)q(ering.)223 1429 y(Ov)o(erall,)22 +b(the)h(patc)o(h)f(is)h(a)g(true)g(solution)g(if)f(trust)h(can)g(b)q(e)g +(extended)f(only)g(within)h(the)149 1519 y(scop)q(e)c(of)f(authoritativ)o(e)f +(data,)h(and)h(if)e(the)g(attac)o(k)o(er)g(do)q(es)i(not)f(use)g(the)f(more)g +(sophisticated)149 1610 y(attac)o(king)h(metho)q(d.)26 b(In)18 +b(case)g(the)f(attac)o(k)o(er)g(supplies)h(the)g(additional)g(\\A")g(record)g +(with)g(the)149 1700 y(answ)o(er)13 b(to)g(the)f(rev)o(erse)g(lo)q(okup,)h +(and)g(trust)g(is)f(extended)g(to)h(p)q(ossibly)g(un)o(trust)o(w)o(orth)o(y)f +(sources,)149 1790 y(this)17 b(metho)q(d)e(will)g(fail.)149 +1956 y(4.6)50 b(Examining)14 b(Berk)o(eley)g(\\r{Commands")223 +2095 y(The)19 b(Berk)o(eley)e(r{commands)i(extensiv)o(ely)e(use)i(the)h +(\\.rhosts")h(and)f(\\/etc/hosts.equiv")149 2185 y(\014les)14 +b(to)g(increase)f(con)o(v)o(enien)o(t)f(net)o(w)o(ork)i(access.)20 +b(In)14 b(Section)f(3.5.3,)h(w)o(e)g(discussed)g(the)f(T)l(rusted)149 +2276 y(Net)o(w)o(ork)j(concept.)21 b(R{commands)15 b(suc)o(h)h(as)h(remote)e +(login)i(and)g(remote)d(shell)i(o\013er)h(the)f(p)q(os-)149 +2366 y(sibilit)o(y)c(to)j(extend)e(trust)h(to)g(other)g(mac)o(hines.)19 +b(Users)14 b(and)g(system)f(administrators)g(can)h(build)149 +2456 y(individual)j(net)o(w)o(orks)h(of)h(trust.)27 b(What)18 +b(lo)q(oks)h(lik)o(e)e(a)h(go)q(o)q(d)i(idea)e(at)h(the)f(\014rst)g(glance)g +(pro)o(v)o(es)149 2547 y(v)o(ery)d(dangerous)j(in)e(some)f(cases.)p +eop +%%Page: 63 72 +71 bop 1901 -100 a Fo(63)223 75 y(The)15 b(existence)e(of)i(these)g +(structures)g(of)g(trust)g(is)g(necessary)g(for)g(the)g(break{in)g(to)g(happ) +q(en.)149 165 y(Ob)o(viously)l(,)e(the)h(break{in)g(is)g(prev)o(en)o(ted)f +(if)g(w)o(e)h(prohibit)g(the)f(usage)i(of)g(trusted)f(hosts)h(or)f(users)149 +255 y(completely)l(.)37 b(It)22 b(is)g(tec)o(hnically)e(p)q(ossible)i(to)h +(disallo)o(w)f(the)g(usage)h(of)g(\\trust")g(in)f(Berk)o(eley)149 +346 y(commands.)29 b(The)19 b(c)o(hoice)f(can)h(b)q(e)h(made)e(b)o(y)g(the)h +(system)f(administrator)h(at)g(compile)e(time.)149 436 y(Ho)o(w)o(ev)o(er,)f +(b)q(eing)h(able)g(to)h(access)f(other)g(mac)o(hines)f(without)h(passw)o +(ords)i(mak)o(es)d(the)h(w)o(ork)g(in)149 526 y(a)j(net)o(w)o(orking)f(en)o +(vironmen)o(t)e(easier.)31 b(Once)19 b(used)g(to)h(the)g(comfort,)e(not)i +(man)o(y)f(users)g(agree)149 616 y(to)f(sacri\014ce)f(their)g(con)o(v)o +(enience)e(for)j(the)f(prev)o(en)o(tion)f(of)i(\\h)o(yp)q(othetical")f +(securit)o(y)f(concerns.)149 707 y(The)21 b(trade{o\013)g(hereb)o(y)f(w)o +(ould)g(con)o(tain)g(the)g(loss)h(of)f(v)o(ery)f(con)o(v)o(enien)o(t)g(and)h +(in)g(man)o(y)f(cases)149 797 y(necessary)d(to)q(ols)i(for)e(trouble)g(free)g +(connection)f(to)i(hosts)g(that)g(are)f(accessed)g(frequen)o(tly)l(.)223 +887 y(A)i(less)h(\\safe")i(solution)e(w)o(ould)g(b)q(e)h(to)f(limit)e(trust)i +(to)h(lo)q(cally)e(administered)g(zones,)h(i.e.)149 978 y(authoritativ)o(e)i +(zones,)g(where)f(the)h(Berk)o(eley)d(patc)o(h)i(w)o(orks)h(reliably)l(.)33 +b(As)20 b(w)o(e)h(disco)o(v)o(ered)e(in)149 1068 y(Section)k(4.5,)h(limiting) +d(trust)i(to)g(certain)g(zones)g(\014xes)g(the)f(\015a)o(w.)42 +b(An)23 b(organization)h(could)149 1158 y(issue)c(the)f(p)q(olicy)g(that)g +(only)h(lo)q(cal)f(trust)h(is)f(allo)o(w)o(ed.)30 b(In)19 b(some)f +(organizations)i(this)g(can)f(b)q(e)149 1248 y(considered)13 +b(a)h(reasonable)h(approac)o(h)f(if)f(hardly)g(an)o(y)h(remote)e(accesses)h +(are)h(originated)f(outside)149 1339 y(of)i(the)g(\\o)o(wn")h(zone)e(to)h +(the)g(\\o)o(wn")h(zone.)k(Additional)14 b(to)q(ols)i(w)o(ould)f(b)q(e)g +(necessary)f(to)h(enforce)149 1429 y(the)d(p)q(olicy)l(,)f(suc)o(h)h(as)g(a)g +(script)f(that)i(p)q(erio)q(dically)d(c)o(hec)o(ks)g(en)o(tries)h(in)g +(\\.rhosts")i(\014les.)20 b(If)11 b(p)q(erio)q(dic)149 1519 +y(c)o(hec)o(ks)i(are)h(still)f(to)q(o)i(w)o(eak,)e(the)h(r{command)e(implem)o +(en)o(tati)o(ons)g(could)i(b)q(e)g(c)o(hanged)g(in)f(a)i(w)o(a)o(y)149 +1610 y(that)h(users)f(cannot)g(directly)f(mo)q(dify)f(their)h(database)i(of)g +(trusted)e(mac)o(hines)f(\(\\.rhosts"\),)j(but)149 1700 y(ha)o(v)o(e)h(to)h +(use)f(a)h(sp)q(ecial)f(program)g(to)h(manage)f(trust{en)o(tries.)24 +b(The)18 b(data)g(m)o(ust)e(b)q(e)h(k)o(ept)g(in)g(a)149 1790 +y(protected)i(data)h(area)f(of)g(the)g(op)q(erating)g(system)f(managed)g(b)o +(y)h(the)f(k)o(ernel.)28 b(This)19 b(program)149 1880 y(could)e(\014lter)g +(out{of{zone)h(en)o(tries)e(at)h(the)g(time)e(the)i(user)g(w)o(an)o(ted)f(to) +i(en)o(ter)e(them.)22 b(It)16 b(w)o(ould)149 1971 y(also)c(con)o(tain)f(the)f +(p)q(ossibilit)o(y)g(of)h(managing)g(setup)g(c)o(hanges)g(cen)o(trally)l(.)18 +b(This)11 b(solution)g(actually)149 2061 y(prop)q(oses)18 b(an)f(automatized) +e(pro)q(cedure)h(to)h(implem)o(en)n(t)d(an)i(organization's)h(p)q(olicy)l(.) +223 2151 y(If)g(the)g(nature)g(of)h(connections)f(allo)o(ws)h(a)g(p)q(olicy)e +(suc)o(h)i(as)g(describ)q(ed)e(ab)q(o)o(v)o(e,)i(implem)o(e)o(n)o(t-)149 +2242 y(ing)k(it)e(is)h(a)h(ma)s(jor)e(e\013ort.)36 b(Some)20 +b(system)g(scripts)h(ha)o(v)o(e)f(to)i(b)q(e)f(written)f(to)i(ensure)f(prop)q +(er)149 2332 y(usage,)j(op)q(erating)f(system)d(co)q(de)i(and)g(r{command)e +(co)q(de)i(m)o(ust)e(b)q(e)i(mo)q(di\014ed,)g(and)g(a)g(new)149 +2422 y(user)17 b(in)o(terface)f(has)h(to)g(b)q(e)g(dev)o(elop)q(ed.)22 +b(Users)17 b(shall)f(b)q(e)h(trained)g(ho)o(w)g(to)g(apply)g(the)f(c)o +(hanged)149 2512 y(facilit)o(y)e(and)i(ha)o(v)o(e)f(to)i(b)q(e)e(made)g +(familiar)f(with)h(the)h(new)f(p)q(olicy)h(and)g(the)f(new)h(user)g(in)o +(terface)149 2603 y(\(whic)o(h)h(could)g(easily)f(impro)o(v)o(e)e(the)j +(existing)g(one\).)24 b(Adv)m(an)o(tages)17 b(of)g(this)g(new)h(approac)o(h)f +(are)p eop +%%Page: 64 73 +72 bop 1901 -100 a Fo(64)149 75 y(the)21 b(compatibilit)o(y)d(with)k(the)e +(existing)h(Domain)f(Name)g(System)g(proto)q(col)i(and)f(additional)149 +165 y(b)q(ene\014ts)c(in)f(further)g(securit)o(y)f(related)g(issues.)223 +255 y(Ov)o(erall,)f(a)j(v)o(ery)f(w)o(eak)g(p)q(oin)o(t)h(in)f(the)h(Berk)o +(eley)c(deriv)o(ed)j(UNIX)e(systems)i(is)g(the)h(usage)g(of)149 +346 y(trust.)27 b(This)18 b(thesis)f(exploits)h(only)f(one)h(of)h(sev)o(eral) +d(kno)o(wn)i(\015a)o(ws)h(based)f(up)q(on)h(trust.)27 b(Using)149 +436 y(trust{based)c(mec)o(hanism)o(s)c(requires)h(thinking)h(ab)q(out)h(a)g +(c)o(hange)f(in)g(individual)f(p)q(olicies)g(in)149 526 y(dealing)e(with)g +(gran)o(ting)g(trust)h(to)f(others.)27 b(W)l(e)17 b(can)h(conclude,)g(b)o(y)f +(citing)g(S.)h(Bello)o(vin:)k(\\If)c(a)149 616 y(host)i(trusts)g(another)f +(host)h(not)f(named)f(in)h(a)g(lo)q(cal)g(zone,)g(its)f(name)g(serv)o(er)g +(cannot)i(protect)149 707 y(it.")i(\([Bel90b)o(]\))223 797 +y(Although)e(w)o(e)f(concen)o(trate)h(on)g(the)g(Berk)o(eley)d(\\r{commands") +j(in)f(this)h(section,)g(w)o(e)g(do)149 887 y(not)d(forget)f(that)h(there)e +(are)h(other)g(w)o(a)o(ys)g(in)g(exploiting)f(the)h(\015a)o(w.)21 +b(F)l(or)16 b(example)e(in)o(tercepting)149 978 y(electronic)f(mail)f(is)i(a) +g(target)h(of)f(attac)o(k)o(ers;)g(esp)q(ecially)e(electronic)h(mail)f(that)i +(is)g(exc)o(hanged)g(b)o(y)149 1068 y(securit)o(y)h(agencies)h(and)h(securit) +o(y)e(related)g(organizations.)149 1233 y(4.7)50 b(Restricting)15 +b(Public)g(Information)g(Access)223 1373 y(What)j(mak)o(es)d(the)i(break{in)h +(p)q(ossible)f(in)g(the)h(\014rst)f(place)g(is)g(gathering)h(necessary)f +(infor-)149 1463 y(mation)g(ab)q(out)i(host)g(names)d(of)i(trusting)g(mac)o +(hines)e(and)i(user)g(names)f(on)h(di\013eren)o(t)f(systems)149 +1553 y(trusting)h(eac)o(h)f(other.)26 b(This)18 b(section)f(discusses)g(ho)o +(w)h(to)g(obtain)g(the)g(names)e(and)j(whether)e(it)149 1644 +y(is)f(feasible)g(or)g(reasonable)h(to)g(restrict)e(access)h(to)h(this)f +(information.)223 1734 y(W)l(e)i(are)h(not)g(discussing)f(random)h(patterns)g +(of)g(trust)g(that)g(migh)o(t)d(exist)i(b)q(et)o(w)o(een)g(hosts,)149 +1824 y(but)h(t)o(w)o(o)f(common)e(patterns)j(using)f(a)h(systematic)d +(approac)o(h.)28 b(The)18 b(follo)o(wing)g(discussion)h(is)149 +1915 y(based)f(on)g(section)f(3)g(in)g([Bel90b)o(].)24 b(In)17 +b(a)h(cluster)e(of)i(time{sharing)e(mac)o(hines,)f(eac)o(h)i(mac)o(hine)149 +2005 y(is)22 b(lik)o(ely)d(to)j(extend)f(trust)g(to)h(all)f(its)h(p)q(eers.) +37 b(This)21 b(pattern)h(is)f(not)h(common)e(to)i(the)f(gen-)149 +2095 y(eral)g(user)f(p)q(opulation,)j(but)d(it)h(is)f(applicable)g(to)h +(systems)e(programming)g(and)j(op)q(erational)149 2185 y(sta\013.)g(Another) +16 b(t)o(ypical)e(pattern)h(is)g(the)h(o)q(ccurrence)e(of)i(\014le)f(serv)o +(ers)f(that)i(trust)g(their)e(clien)o(ts,)149 2276 y(who)20 +b(serv)o(e)e(as)i(a)g(source)f(of)g(extra)g(CPU)g(cycles.)29 +b(\\Dataless")20 b(clien)o(ts)e(will)g(frequen)o(tly)f(trust)149 +2366 y(administrativ)o(e)d(mac)o(hines)g(to)j(p)q(ermit)e(soft)o(w)o(are)h +(main)o(tenance.)223 2456 y(There)h(are)h(sev)o(eral)f(net)o(w)o(orking)h +(utilities)e(that)i(are)g(generally)f(a)o(v)m(ailable)h(to)g(all)g(users)g +(on)149 2547 y(a)f(system)e(to)h(sp)o(y)g(out)h(the)f(w)o(an)o(ted)g +(information.)p eop +%%Page: 65 74 +73 bop 1901 -100 a Fo(65)223 75 y(A)22 b(com)o(bined)f(usage)i(of)g +(\\snmpnetstat")g(and)g(\\\014nger")h(can)f(do)g(the)g(job.)41 +b(One)22 b(migh)o(t)149 165 y(ob)s(ject)e(that)g(\\snmpnetstat")g(is)g(not)g +(alw)o(a)o(ys)g(a)o(v)m(ailable)f(and)i(that)f(some)f(sites)h(also)g +(restrict)149 255 y(the)c(usage)g(of)g(the)f(\014nger)h(daemon)f(on)h(their)f +(mac)o(hines.)k(But)c(there)g(are)h(more)e(common)g(to)q(ols)149 +346 y(that)j(can)g(b)q(e)f(abused.)223 436 y(Examination)e(of)h(mail)e(or)j +(news)f(headers)g(giv)o(es)f(us)i(information)e(ab)q(out)i(where)f(mail)e +(orig-)149 526 y(inated)23 b(and)h(whic)o(h)e(path)i(it)f(to)q(ok.)42 +b(The)23 b(\\Receiv)o(ed:")34 b(\014elds)23 b(con)o(tain)f(a)i(complete)d +(trace)149 616 y(of)g(the)f(route.)34 b(Sometimes)18 b(this)i(route)g(con)o +(tains)h(w)o(orkstation)g(-)g(serv)o(er)e(names)g(that)i(trust)149 +707 y(eac)o(h)g(other.)37 b(A)21 b(similar)f(tric)o(k)g(is)h(p)q(ossible)h +(using)f(\\traceroute")h(once)g(w)o(e)f(kno)o(w)g(a)h(remote)149 +797 y(w)o(orkstation)17 b(name.)223 887 y(W)l(e)g(can)h(also)g(gain)g(m)o(uc) +o(h)d(insigh)o(t)i(using)h(the)f(Domain)g(Name)f(System)g(itself.)24 +b(The)17 b(SO)o(A)149 978 y(records)j(con)o(tain)f(a)g(mac)o(hine)e(name)h +(and)i(a)g(host)f(address)h(of)g(a)f(privileged)f(user.)30 +b(With)19 b(the)149 1068 y(host)c(name)e(w)o(e)h(can)g(retriev)o(e)e(the)i +(IP)g(address)h(and)f(then)g(with)g(a)h(zone)f(transfer)g(obtain)g(names)149 +1158 y(of)21 b(other)f(mac)o(hines)e(in)i(the)g(net)o(w)o(ork)g(lo)q(cal)g +(to)h(that)f(mac)o(hine.)31 b(Ev)o(en)20 b(if)f(the)h(zone)g(transfer)149 +1248 y(is)h(disabled,)g(w)o(e)f(could)h(issue)g(254)g(rev)o(erse)f(lo)q +(okups)h(to)h(collect)d(the)h(names)g(w)o(e)g(seek.)34 b(The)149 +1339 y(HINF)o(O)15 b(records)h(giv)o(e)f(additional)i(information.)223 +1429 y(F)l(urther)c(\\help")h(is)g(pro)o(vided)f(b)o(y)h(\\ftp")g(\(some)f +(serv)o(ers)g(o\013er)i(the)e(service,)g(only)g(few)h(w)o(ork-)149 +1519 y(stations)23 b(do\),)f(\\sm)o(tp")f(\(mac)o(hines)e(that)j(run)g(mail)d +(serv)o(ers\),)i(and)h(Sun's)g(\\rp)q(cinfo")g(\(what)149 1610 +y(services)f(are)g(running?\))38 b(Published)21 b(material)e(is)i(a)o(v)m +(ailable)g(from)f(some)h(univ)o(ersities)e(that)149 1700 y(describ)q(es)d +(the)g(setup)h(of)f(their)g(net)o(w)o(orks)g(on)g(a)h(high)f(lev)o(el.)223 +1790 y(Some)j(systems)h(still)f(use)i(the)g(same)e(\\/etc/hosts.equiv")i +(\014les)g(on)g(man)o(y)e(hosts)j(just)f(to)149 1880 y(simplify)14 +b(systems)h(administration.)223 1971 y(The)23 b(men)o(tioned)e(collection)h +(of)h(to)q(ols)i(sho)o(ws)f(that)f(it)g(is)g(a)h(di\016cult)e(task)h(to)h +(limit)d(in-)149 2061 y(formation)i(access)g(without)g(sacri\014cing)g(the)g +(legitimate)d(utilization)i(of)i(net)o(w)o(ork)e(services.)149 +2151 y(Prev)o(en)o(ting)d(someone)g(from)f(gathering)i(the)g(necessary)f +(information)g(is)g(nearly)h(imp)q(ossible.)149 2242 y(T)l(o)q(o)c(man)o(y)e +(services)f(rely)h(on)h(address)g(information,)f(and)h(most)f(p)q(eople)h(w)o +(ould)f(complain)g(ter-)149 2332 y(ribly)f(if)h(they)g(w)o(ere)f(depriv)o(ed) +g(of)h(useful)g(to)q(ols)h(suc)o(h)f(as)g(\014nger,)h(email,)d(and)i(news.)21 +b(The)14 b(idea)g(of)149 2422 y(op)q(en)20 b(systems)d(requires)h(op)q(en)h +(access)f(to)h(information)f(services)f(and)j(address)f(information.)149 +2512 y(Therefore,)13 b(most)f(system)f(administrators)g(ha)o(v)o(e)h(decided) +g(that)g(the)h(b)q(ene\014ts)f(of)h(these)f(utilities)149 2603 +y(out)o(w)o(eigh)k(the)g(risks.)p eop +%%Page: 66 75 +74 bop 1901 -100 a Fo(66)223 75 y(Ov)o(erall,)11 b(w)o(e)i(think)f(that)h(sh) +o(utting)g(do)o(wn)h(w)o(ell{kno)o(wn)e(and)h(widely)f(used)h(services)f(is)h +(not)g(a)149 165 y(go)q(o)q(d)k(idea.)k(The)14 b(lac)o(k)g(of)h(these)f +(services)g(w)o(ould)h(h)o(urt)f(functionalit)o(y)f(and)j(the)e(purp)q(ose)i +(of)f(the)149 255 y(In)o(ternet)h(to)i(a)f(considerable)f(degree.)24 +b(There)16 b(are)h(to)q(o)h(man)o(y)e(w)o(a)o(ys)h(to)g(gather)h(the)f +(necessary)149 346 y(information;)e(it)h(w)o(ould)g(b)q(e)h(a)f(hop)q(eless)h +(job)f(to)h(protect)f(the)g(In)o(ternet)f(against)i(abuse.)149 +511 y(4.8)50 b(Adjusting)16 b(DNS)g(Up)q(date)g(In)o(terv)m(als)223 +651 y(Some)d(sites)h(ha)o(v)o(e)f(connections)h(c)o(hie\015y)f(with)h(mac)o +(hines)e(outside)i(of)h(their)e(zones)i(that)f(sta)o(y)149 +741 y(stable)20 b(in)f(the)g(sense)g(that)h(host)g(name)e(to)i(IP)f(address)h +(mapping)f(will)f(sta)o(y)h(the)g(same)f(for)i(a)149 831 y(long)15 +b(time.)k(The)14 b(idea)g(is)g(to)g(en)o(ter)g(long)g(TTL)i(v)m(alues)e(in)o +(to)g(the)g(resource)g(records,)g(v)m(alues)g(that)149 921 +y(exceed)h(the)h(curren)o(tly)f(implem)o(en)n(ted)e(threshold)j(of)h(1)g(w)o +(eek.)j(Limits)14 b(could)i(b)q(e)h(increased)e(up)149 1012 +y(to)k(6,)g(12)g(mon)o(ths,)e(or)i(ev)o(en)e(longer,)i(dep)q(ending)f(on)h +(the)f(situation.)27 b(If)18 b(this)g(data)i(is)e(en)o(tered)149 +1102 y(with)j(great)g(care)f(to)h(ensure)g(correctness)f(of)h(the)f +(mappings,)h(the)f(DNS)h(based)g(break{in)g(is)149 1192 y(prev)o(en)o(ted.) +223 1283 y(This)g(approac)o(h)h(is)f(limited)e(b)o(y)h(its)i(scop)q(e)f(of)h +(applicabilit)o(y)l(,)e(but)h(it)g(is)g(a)h(solution)g(with)149 +1373 y(man)o(y)17 b(adv)m(an)o(tages.)27 b(It)18 b(go)q(es)g(with)g(the)g +(curren)o(t)f(Domain)g(Name)f(System)g(proto)q(col)j(and)f(can)149 +1463 y(b)q(e)c(implem)o(en)n(ted)c(without)k(m)o(uc)o(h)d(e\013ort,)i(b)o(y)g +(simply)e(c)o(hanging)j(the)f(constan)o(t)g(max)p 1732 1463 +15 2 v 17 w(cac)o(he)p 1865 1463 V 16 w(ttl)1930 1445 y Fm(1)149 +1553 y Fo(in)h(the)g(name)e(serv)o(er)h(co)q(de)h(and)g(recompiling)e(the)h +(system.)19 b(As)14 b(all)f(necessary)h(en)o(tries)e(are)i(k)o(ept)149 +1644 y(in)19 b(the)f(lo)q(cal)g(cac)o(he,)g(the)h(system)e(pro)o(vides)h(v)o +(ery)f(quic)o(k)g(replies)g(to)i(queries.)27 b(It)18 b(hardly)h(ev)o(er)149 +1734 y(uses)e(the)f(net)o(w)o(ork)g(and)g(therefore)g(sa)o(v)o(es)g +(bandwidth)h(on)f(the)g(medium)d(for)k(other)f(tasks.)223 1824 +y(This)11 b(approac)o(h)i(has)f(the)f(problem)f(of)i(v)m(alidating)g(the)f +(host)h(name)e(to)i(IP)g(address)g(mappings)149 1915 y(b)q(efore)17 +b(they)g(are)g(cac)o(hed.)23 b(Ho)o(w)16 b(can)i(it)e(b)q(e)h(ensured)g(that) +h(the)e(mappings)h(are)g(correct)f(in)h(the)149 2005 y(\014rst)k(place?)34 +b(Certainly)l(,)20 b(a)h(false)f(en)o(try)f(w)o(ould)i(sta)o(y)f(for)h(a)g +(long)g(time,)d(and)j(the)g(attac)o(k)o(er's)149 2095 y(address)e(w)o(ould)e +(b)q(e)g(\014nally)g(noted.)25 b(But)17 b(do)q(es)h(that)g(really)e(help,)h +(once)g(misc)o(hief)d(is)k(done?)25 b(It)149 2185 y(migh)o(t)15 +b(aid)h(in)g(prosecution)h(e\013orts,)f(but)h(only)f(little)e(in)i(prev)o(en) +o(tion.)223 2276 y(One)d(of)h(the)g(original)f(reasons)i(to)f(in)o(tro)q +(duce)g(the)f(Domain)g(Name)f(System)g(w)o(as)j(to)f(manage)149 +2366 y(the)21 b(dynamic)f(b)q(eha)o(vior)h(of)h(c)o(hanges)f(in)g(the)g(data) +h(base.)37 b(This)21 b(approac)o(h)h(\014xes)f(mappings)149 +2456 y(for)d(a)h(long)f(time)d(and)k(uses)f(a)g(p)q(o)o(w)o(erful)f +(distributed)g(database)i(system)d(for)i(an)h(infrequen)o(tly)149 +2547 y(happ)q(ening)h(up)q(date)g(pro)q(cess.)29 b(Although)19 +b(w)o(e)g(are)g(not)g(talking)g(ab)q(out)h(a)f(static)g(mapping)f(in)p +149 2590 720 2 v 206 2621 a Fl(1)224 2636 y Fk(in)c(BIND)g(v)o(ersion)g +(4.8.3)e(\(7*24*60*60\))g(seconds)j(=)f(one)g(w)o(eek)p eop +%%Page: 67 76 +75 bop 1901 -100 a Fo(67)149 75 y(this)14 b(section,)f(a)h(w)o(ell{main)o +(tained)d(HOSTS.TXT)i(\014le)g(w)o(ould)g(do)i(the)e(job)h(with)f(less)h(o)o +(v)o(erhead.)149 165 y(W)l(e)24 b(will)f(presen)o(t)g(the)h(discussion)g(ab)q +(out)h(abandoning)h(the)d(Domain)g(Name)g(System)f(and)149 +255 y(returning)17 b(to)f(the)g(previous)g(system)f(in)h(Section)g(4.9.)223 +346 y(Ov)o(erall,)10 b(the)h(approac)o(h)g(of)h(extending)e(TTL)i(v)m(alues)f +(to)h(a)f(long)g(p)q(erio)q(d)h(of)f(time)e(is)i(a)h(safe)f(and)149 +436 y(feasible)19 b(metho)q(d)g(in)g(en)o(vironmen)o(ts)e(where)i(the)g +(additional)h(condition)f(of)h(static)f(mappings)149 526 y(with)12 +b(long)g(lifetimes)d(is)j(giv)o(en.)19 b(Ho)o(w)o(ev)o(er,)10 +b(in)i(this)f(case)h(not)h(the)e(Domain)h(Name)e(System)g(seems)149 +616 y(to)k(b)q(e)f(the)g(righ)o(t)f(approac)o(h,)i(but)f(a)h(lo)q(cally)e(w)o +(ell{administered)e(static)i(mapping)h(mec)o(hanism)o(.)149 +782 y(4.9)50 b(Abandoning)17 b(the)f(Domain)f(Name)g(System)223 +921 y(It)c(could)g(b)q(e)h(suggested)g(to)g(abandon)h(the)e(DNS)h(and)g +(either)e(return)h(to)h(the)g(previous)f(system)149 1012 y(with)k(a)h(static) +f(host)h(table,)e(or)i(mo)o(v)o(e)d(on)j(to)f(another)h(system,)d(that)j(has) +g(y)o(et)e(to)i(b)q(e)f(dev)o(elop)q(ed.)149 1102 y(W)l(e)21 +b(are)g(not)h(going)g(to)f(talk)g(ab)q(out)h(p)q(ossible)f(future)g(dev)o +(elopmen)o(t)d(of)j(the)g(Domain)f(Name)149 1192 y(System)d(here,)g(but)h(ab) +q(out)i(returning)e(to)g(the)g(previous)g(system.)25 b(Abandoning)18 +b(the)g(Domain)149 1283 y(Name)d(System)g(is)h(not)g(an)h(extreme)c(scenario) +k(of)f(what)h(w)o(e)f(describ)q(ed)g(in)f(Section)h(4.8,)g(as)h(our)149 +1373 y(solution)g(there)f(only)g(assumed)f(slo)o(w)i(dynamic)d(b)q(eha)o +(vior.)223 1463 y(This)j(section)h(suggests)h(an)f(again)g(cen)o(tralized)e +(managemen)o(t)f(of)j(the)g(mapping)e(data.)27 b(In)149 1553 +y(this)18 b(approac)o(h,)h(mappings)f(can)g(c)o(hange)g(frequen)o(tly)l(,)e +(but)j(c)o(hanges)f(ha)o(v)o(e)f(to)i(b)q(e)f(rep)q(orted)g(to)149 +1644 y(a)h(cen)o(tral)e(authorit)o(y)h(that)g(manages)g(the)g(whole)g(Domain) +g(Name)e(Space)i(in)g(con)o(trast)g(to)h(the)149 1734 y(Domain)f(Name)e +(System)g(approac)o(h)j(of)f(managing)f(zones)h(through)h(delegated)f(lo)q +(cal)f(author-)149 1824 y(ities.)30 b(This)20 b(w)o(ould)g(not)g(solv)o(e)e +(the)i(problem,)e(b)q(ecause)i(the)f(problem)f(is)h(not)h(the)f(DNS,)g(but) +149 1915 y(inadequate)d(metho)q(ds)g(of)h(host)g(authen)o(tication.)223 +2005 y(IP)22 b(addresses)i(of)f(trusted)g(mac)o(hines)e(could)h(still)g(b)q +(e)h(imitated.)39 b(This)23 b(is)g(a)g(somewhat)149 2095 y(harder)15 +b(task,)g(but)g(the)f(kno)o(w-ho)o(w)h(has)g(b)q(een)g(published)f(for)h +(quite)e(some)h(time)e(\(see)i([Mor85]\).)223 2185 y(W)l(ould)h(it)f(b)q(e)h +(safer)g(to)g(transmit)f(up)q(dates)h(to)g(a)h(cen)o(tral)d(site?)21 +b(Email,)13 b(telephone)h(calls,)g(or)149 2276 y(con)o(v)o(en)o(tional)d(pap) +q(er)i(are)f(not)g(necessarily)f(a)i(reliable)d(w)o(a)o(y)i(to)g(transmit)f +(mapping)h(information)149 2366 y(up)q(dates.)28 b(The)18 b(long)g(time)e +(dela)o(y)h(un)o(til)g(cen)o(trally)g(made)g(c)o(hanges)h(are)g(propagated)h +(through)149 2456 y(the)g(net)o(w)o(ork)f(w)o(ould)h(condemn)e(the)i +(database)g(to)h(b)q(e)e(in)h(an)g(inheren)o(tly)e(inconsisten)o(t)h(state.) +149 2547 y(The)c(system)f(w)o(ould)h(again)h(con)o(tain)f(all)f(the)h(disadv) +m(an)o(tages)h(describ)q(ed)f(in)f(Section)h(2.2,)g(whic)o(h)149 +2637 y(w)o(ere)i(the)g(reasons)h(for)g(dev)o(eloping)e(the)h(curren)o(t)f +(Domain)h(Name)e(System.)p eop +%%Page: 68 77 +76 bop 1901 -100 a Fo(68)223 75 y(But)11 b(b)q(esides)i(these)f(ob)o(vious,)g +(tec)o(hnical,)f(and)i(w)o(ell{kno)o(wn)f(reasons,)h(there)f(is)g(a)h +(signi\014can)o(t)149 165 y(argumen)o(t)g(wh)o(y)g(no)i(one)e(can)h(p)q +(ossibly)g(b)q(e)g(in)f(fa)o(v)o(or)h(of)g(reinstalling)e(the)i(previous)f +(system:)19 b(the)149 255 y(sheer)g(size)f(of)i(the)f(In)o(ternet.)28 +b(HOSTS.TXT)19 b(w)o(as)g(abandoned)i(b)q(ecause)e(200,000)i(hosts)f(w)o(as) +149 346 y(to)q(o)k(m)o(uc)o(h)c(to)i(b)q(e)h(managed.)38 b(Are)22 +b(curren)o(tly)e(ab)q(out)k(1.5)e(million)e(\(see)i([Lot93)q(]\))f(easier)h +(to)149 436 y(handle?)g(Certainly)15 b(not.)223 526 y(Ov)o(erall,)i +(abandoning)k(the)d(Domain)g(Name)f(System)h(w)o(ould)h(drag)g(the)g(name)f +(resolution)149 616 y(task)h(in)e(the)h(In)o(ternet)e(out)j(of)f(a)g +(functioning)g(state)g(with)g(a)g(not)g(easily)f(exploitable)g(securit)o(y) +149 707 y(breac)o(h,)j(in)o(to)f(an)h(unmanageable,)g(not)g(w)o(orking)g +(state)f(of)h(prehistoric)f(system)f(design.)32 b(W)l(e)149 +797 y(think)16 b(that)h(w)o(ould)f(do)h(more)e(harm)g(than)i(doing)g(nothing) +g(at)f(all.)149 962 y(4.10)50 b(Hardening)16 b(Name)f(Serv)o(ers)223 +1102 y(This)h(section)h(con)o(tains)f(a)i(n)o(um)o(b)q(er)c(of)j(problems)f +(that)h(w)o(e)f(classify)g(in)o(to)g(t)o(w)o(o)h(groups)h(and)149 +1192 y(a)f(collection)e(of)i(p)q(ossible)g(mo)q(di\014cations)f(to)h(the)f +(name)f(serv)o(er)h(to)h(pro)o(vide)e(\(at)i(least)g(partial\))149 +1283 y(solutions)g(to)g(these)f(problems.)223 1373 y(W)l(e)i(though)o(t)i(ab) +q(out)g(organizing)g(this)f(section)f(in)h(a)g(w)o(a)o(y)g(that)h(solutions)f +(are)g(stated)h(di-)149 1463 y(rectly)g(in)h(eac)o(h)g(section)g(describing)f +(a)i(problem.)35 b(But)20 b(then)i(w)o(e)e(disco)o(v)o(ered)g(that)i(most)e +(of)149 1553 y(the)g(prop)q(osed)i(solutions)f(in)f(hardening)g(the)h(name)e +(serv)o(er)g(are)h(applicable)g(to)g(a)h(v)m(ariet)o(y)e(of)149 +1644 y(problems.)27 b(In)18 b(the)g(same)f(time,)f(it)i(is)g(necessary)g(to)h +(not)g(only)f(concen)o(trate)f(on)i(ho)o(w)g(to)g(deal)149 +1734 y(with)i(certain)f(problems,)h(but)g(with)f(all)h(of)g(them)e(sim)o +(ultaneously)l(.)33 b(W)l(e)20 b(therefore)h(decided)149 1824 +y(that)c(a)f(more)e(general)i(approac)o(h)g(is)f(to)i(state)e(a)i(list)e(of)h +(problems)e(next)h(to)h(a)g(list)f(of)h(solutions.)149 1915 +y(This)h(w)o(a)o(y)f(w)o(e)g(can)g(relate)f(problems)g(to)i(solutions)g(and)g +(vice)d(v)o(ersa.)223 2005 y(The)19 b(follo)o(wing)f(t)o(w)o(o)h(sections)g +(are)g(descriptions)f(of)i(the)e(problems,)g(group)q(ed)i(dep)q(ending)149 +2095 y(on)d(whether)f(a)h(giv)o(en)e(problem)g(exploits)g(cac)o(he)h(p)q +(oisoning,)h(or)f(not.)149 2255 y(4.10.1)50 b(Problems)15 b(Not)h(Exploiting) +g(Cac)o(he)g(P)o(oisoning)223 2378 y(In)j(Section)f(3.4.2)i(w)o(e)f(sa)o(w)h +(a)f(\014rst)h(example)d(of)i(ho)o(w)h(to)g(exploit)e(the)h(w)o(eaknesses)g +(of)h(the)149 2468 y(DNS.)e(Simple)e(c)o(hanges)j(in)e(the)h(database)i(en)o +(tries)d(of)i(a)f(mac)o(hine)e(that)j(is)f(trusted,)g(can)h(lead)149 +2558 y(to)h(a)g(break{in.)29 b(As)19 b(w)o(e)g(sho)o(w)o(ed)g(in)g(this)g +(thesis,)g(it)g(is)g(not)h(di\016cult)e(to)h(coun)o(ter)g(the)g(attac)o(k)149 +2648 y(based)e(on)g(database)g(mo)q(di\014cation.)p eop +%%Page: 69 78 +77 bop 1901 -100 a Fo(69)223 75 y(There)18 b(are)h(t)o(w)o(o)f(more)g +(problems,)f(that)i(are)g(related)f(in)g(their)g(nature.)29 +b(In)18 b(the)h(\014rst)g(one,)149 165 y(an)c(attac)o(k)o(er)f(in)o(tercepts) +f(a)h(query)g(to)h(another)g(name)e(serv)o(er)g(and)i(pro)o(vides)f(the)g +(reply)f(himself.)149 255 y(If)23 b(the)g(reply)f(con)o(tains)h(a)h(referral) +e(to)h(some)f(host)i(that)g(is)e(under)h(the)g(attac)o(k)o(er's)f(con)o +(trol,)149 346 y(the)f(originator)h(of)g(the)f(query)f(will)h(\014nally)f +(ask)i(that)g(name)e(serv)o(er)g(and)i(b)q(eliev)o(e)d(whatev)o(er)149 +436 y(is)h(returned.)30 b(If)19 b(the)g(time)f(to)i(liv)o(e)d(v)m(alues)j +(for)f(records)h(supplied)f(in)g(that)h(answ)o(er)g(are)f(zero,)149 +526 y(the)i(originator)g(will)f(not)h(cac)o(he)f(the)h(information,)f(but)h +(use)g(it)f(for)h(the)g(curren)o(t)f(resolution)149 616 y(pro)q(cess.)30 +b(The)19 b(name)e(serv)o(er)h(that)h(w)o(as)h(originally)e(addressed,)h(or)h +(its)e(net)o(w)o(ork)g(connection,)149 707 y(can)g(b)q(e)f(manipulated)f(b)o +(y)h(the)g(attac)o(k)o(er)f(in)h(a)g(w)o(a)o(y)g(that)h(they)e(either)h(not)g +(receiv)o(e)e(an)o(y)i(query)149 797 y(at)g(all,)e(or)i(that)g(their)e(resp)q +(onse)i(gets)g(lost)f(\(see)g([Mor85])g(for)h(an)f(example\).)223 +887 y(A)k(similar)e(attac)o(k)j(is)f(based)h(on)g(the)g(fact)f(that)h(the)g +(standard)h(for)f(the)f(DNS)h(implici)o(tly)149 978 y(determines)14 +b(that)i(the)f(\014rst)h(answ)o(er)f(a)h(resolv)o(er)f(receiv)o(es)e(to)j(a)g +(query)f(is)g(returned)g(to)h(the)f(user)149 1068 y(program.)21 +b(The)15 b(standard)h(states)g(in)e([Mo)q(c87a)q(])h(:)20 b(\\Get)c(the)e +(answ)o(er)h(as)h(quic)o(kly)d(as)i(p)q(ossible".)149 1158 +y(If)21 b(a)g(query)g(is)f(answ)o(ered)i(b)o(y)e(more)g(than)h(one)h(host)f +(\(and)h(one)f(of)g(the)g(hosts)h(supplying)f(an)149 1248 y(answ)o(er)j(can)f +(b)q(e)g(the)g(attac)o(k)o(er)f(who)i(has)g(in)o(tercepted)d(the)i(query)l(,) +h(lik)o(e)d(in)i(the)f(previously)149 1339 y(describ)q(ed)c(problem\))e(the)h +(fastest)h(answ)o(er)g(wins.)25 b(This)18 b(answ)o(er)g(can)g(again)g(refer)f +(to)h(another)149 1429 y(name)e(serv)o(er)f(under)h(the)g(con)o(trol)g(of)g +(the)g(attac)o(k)o(er.)149 1589 y(4.10.2)50 b(Problems)15 b(Exploiting)h(Cac) +o(he)g(P)o(oisoning)223 1711 y(In)j(the)g(Sections)h(3.4.3)g(and)g(3.4.4)g(w) +o(e)f(describ)q(ed)g(t)o(w)o(o)h(problems)e(that)i(exploit)f(the)h(fact)149 +1802 y(that)d(the)f(cac)o(he)f(of)i(a)f(name)f(serv)o(er)g(can)h(b)q(e)h(p)q +(oisoned.)22 b(W)l(e)16 b(describ)q(e)f(t)o(w)o(o)h(more)f(problems)g(in)149 +1892 y(this)i(section.)223 1982 y(Imagine)10 b(again)j(the)f(scenario)h(w)o +(e)f(describ)q(ed)f(in)h(the)g(previous)h(section,)f(where)g(the)g(origina-) +149 2073 y(tor)j(of)f(a)g(query)f(receiv)o(es)f(more)g(than)i(one)g(resp)q +(onse)h(and)f(one)g(of)g(the)g(resp)q(onses)h(con)o(tains)f(false)149 +2163 y(information)19 b(supplied)g(b)o(y)h(an)g(attac)o(k)o(er.)31 +b(The)20 b(standard)h(states)f(in)g([Mo)q(c87b,)g(7.4])g(\\When)149 +2253 y(sev)o(eral)c(RRs)h(of)g(the)f(same)g(t)o(yp)q(e)g(are)h(a)o(v)m +(ailable)f(for)h(a)g(particular)f(o)o(wner)h(name,)e(the)i(resolv)o(er)149 +2343 y(should)h(either)e(cac)o(he)g(them)f(all)h(or)h(none)h(at)f(all.")23 +b(The)17 b(fact)g(that)g(the)f(resp)q(onses)i(come)e(from)149 +2434 y(di\013eren)o(t)i(IP)f(addresses,)i(do)q(es)g(not)f(matter)f(to)h(the)g +(originator.)27 b(In)17 b([Mo)q(c87b)q(])g(the)h(standard)149 +2524 y(deals)e(with)f(the)h(fact)f(that)h(name)f(serv)o(ers)f(are)i +(sometimes)d(m)o(ulti{home)o(d)g(hosts)j(and)h(resp)q(ond)149 +2614 y(to)k(queries)e(using)i(another)f(net)o(w)o(ork)g(in)o(terface)e(than)j +(where)f(the)g(query)f(arriv)o(ed.)32 b(W)l(e)20 b(cite:)p +eop +%%Page: 70 79 +78 bop 1901 -100 a Fo(70)149 75 y(\\That)23 b(is,)f(a)g(resolv)o(er)f(cannot) +h(rely)f(that)h(a)g(resp)q(onse)g(will)e(come)g(from)h(the)g(same)g(address) +149 165 y(whic)o(h)16 b(it)g(sen)o(t)g(the)g(corresp)q(onding)h(query)e +(to."\([Mo)q(c87b)q(]\))223 255 y(Under)h(certain)g(additional)g(assumptions) +h(it)f(is)h(p)q(ossible)g(to)g(p)q(oison)h(some)d(name)h(serv)o(er's)149 +346 y(cac)o(he)24 b(b)o(y)f(simply)f(sending)i(it)f(a)i(query)e(that)h(con)o +(tains)g(the)g(corrupt)g(information)f(in)h(the)149 436 y(additional)17 +b(section.)k(This)16 b(should)h(w)o(ork)f(in)g(the)g(follo)o(wing)g(setup:) +222 568 y Fj(\017)24 b Fo(an)16 b(A)o(ttac)o(k)o(er)d(on)j(host)g(NS)772 +575 y Fm(B)814 568 y Fo(sends)g(a)g(query)e(along)i(with)g(the)f(false)g +(additional)g(RR)g(to)h(a)271 658 y(name)f(serv)o(er)h(B)f(it)h(w)o(an)o(ts)h +(to)f(compromise,)d(requesting)j(recursiv)o(e)f(resolution)222 +790 y Fj(\017)24 b Fo(the)14 b(name)g(serv)o(er)f(on)i(host)g(NS)854 +797 y Fm(A)897 790 y Fo(do)q(es)g(not)g(cac)o(he)f(incoming)e(information)i +(according)g(to)271 880 y(the)i(RF)o(C,)g(but)g(it)g(shares)h(its)f(cac)o(he) +f(with)h(the)g(lo)q(cal)h(resolv)o(er)e(on)h(the)g(same)g(mac)o(hine)222 +1012 y Fj(\017)24 b Fo(if)12 b(the)g(name)f(serv)o(er)g(on)i(host)g(NS)885 +1019 y Fm(A)925 1012 y Fo(in)o(v)o(ok)o(es)e(its)h(lo)q(cal)g(resolv)o(er)f +(that)i(will)e(\014nally)h(get)g(bac)o(k)271 1102 y(an)k(answ)o(er)g(from)e +(somewhere,)g(this)h(resolv)o(er)f(on)i(host)g(NS)1381 1109 +y Fm(A)1425 1102 y Fo(will)e(cac)o(he)h(whatev)o(er)g(data)271 +1192 y(is)g(pro)o(vided)f(according)h(to)g(the)f(rules)g({)i(including)d(the) +i(additional)g(record)f(pro)o(vided)g(b)o(y)271 1283 y(the)i(attac)o(k)o(er.) +223 1414 y(The)g(name)f(serv)o(er)g(on)i(host)g(NS)831 1421 +y Fm(A)876 1414 y Fo(inherits)f(the)g(w)o(eakness)g(of)g(its)g(o)o(wn)h +(resolv)o(er.)149 1574 y(4.10.3)50 b(Keeping)16 b(Additional)f(Information) +223 1697 y(A)f(\014rst)i(idea)f(is)g(to)g(log)h(\\rlogin")f(attempts)g(with)g +(IP)g(address)g(and)h(lo)q(cal)f(and)h(remote)d(user)149 1787 +y(names.)28 b(Or)19 b(ev)o(en)e(more:)25 b(to)19 b(tag)g(cac)o(he)f(en)o +(tries)g(with)g(their)g(origin.)29 b(The)18 b(latter)g(is)h(another)149 +1878 y(easily)f(ac)o(hiev)o(ed)f(mo)q(di\014cation)g(that)i(costs)g +(additional)f(memory)e(space)i(in)g(the)h(cac)o(he.)26 b(This)149 +1968 y(metho)q(d)18 b(mak)o(es)f(it)h(easier)f(to)i(trac)o(k,)f(for)g +(example,)f(a)h(false)g(\\A")h(record)f(for)h(the)f(purp)q(ose)h(of)149 +2058 y(debugging)e(wrong)h(zone)e(data)h(or)g(in)o(v)o(estigating)e(a)h(DNS)h +(based)f(break{in.)149 2218 y(4.10.4)50 b(Prev)o(en)o(tion)15 +b(of)h(Cac)o(he)g(P)o(oisoning)223 2341 y(Prev)o(en)o(ting)d(the)h(cac)o(he)g +(from)g(con)o(tamination)f(is)h(probably)h(not)g(feasible)f(from)g(within)g +(the)149 2431 y(name)j(serv)o(er)g(co)q(de,)h(as)g(there)g(is)f(no)i(w)o(a)o +(y)e(of)h(a)g(priori)g(determining)d(if)j(an)o(y)f(giv)o(en)g(additional)149 +2521 y(record)h(is)f(trust)o(w)o(orth)o(y)h(or)f(not.)26 b(W)l(e)18 +b(could)f(start)h(treating)g(sp)q(ecial)f(cases)h(of)g(when)g(to)g(allo)o(w) +149 2611 y(or)f(disallo)o(w)f(additional)g(information.)p eop +%%Page: 71 80 +79 bop 1901 -100 a Fo(71)223 75 y(The)17 b(default)g(safe)g(b)q(eha)o(vior)g +(w)o(ould)g(b)q(e)g(to)h(disallo)o(w)f(the)g(cac)o(hing)f(of)i(unrequested)e +(infor-)149 165 y(mation,)k(and)g(to)g(allo)o(w)g(it)f(only)h(in)g(cases)g +(where)f(the)h(information)f(is)g(necessary)l(,)h(and)h(then)149 +255 y(only)16 b(for)h(the)f(curren)o(t)f(resolution.)149 415 +y(4.10.5)50 b(Con)o(text)16 b(Cac)o(he)223 538 y(But)i(there)g(are)h(other,)h +(more)d(sophisticated)i(approac)o(hes)g(p)q(ossible:)27 b(If)19 +b(some)e(additional)149 628 y(or)f(authoritativ)o(e)f(records)g(are)h +(returned)e(together)i(with)f(a)h(resource)f(record,)g(they)g(should)g(b)q(e) +149 718 y(in)o(terpreted)j(only)g(in)g(the)h(con)o(text)f(of)h(that)g +(resource)f(record.)29 b(The)18 b(di\013erence)g(b)q(et)o(w)o(een)g(the)149 +809 y(default)13 b(safe)f(b)q(eha)o(vior)g(approac)o(h)i(and)f(this)f(one)g +(is)h(that)f(in)g(the)h(\014rst)f(one)h(resource)f(records)g(are)149 +899 y(only)17 b(cac)o(hed,)e(when)h(they)g(w)o(ere)g(requested)f(or)i +(necessary)f(additional)g(information,)f(whereas)149 989 y(in)21 +b(the)g(second)g(approac)o(h)g(the)g(new)g(en)o(tries)f(get)h(cac)o(hed,)g +(but)g(can)g(b)q(e)g(retriev)o(ed)e(from)h(the)149 1079 y(cac)o(he)g(only)h +(in)f(the)g(same)g(con)o(text)f(in)i(whic)o(h)e(they)i(w)o(ere)e(en)o(tered.) +33 b(F)l(or)21 b(example,)e(an)i(\\A")149 1170 y(record)15 +b(in)g(the)g(additional)h(section)f(of)g(a)h(resp)q(onse)g(to)f(an)h(\\MX")f +(record)g(request)g(should)h(only)149 1260 y(b)q(e)g(used)f(for)h(deliv)o +(ering)d(mail.)19 b(The)c(information)f(w)o(ould)h(not)h(b)q(e)f(acceptable)g +(for)g(an)h(\\rlogin")149 1350 y(to)h(another)g(host,)f(or)h(generally)e +(usable)i(for)f(other)g(services.)223 1441 y(A)21 b(glue)h(\\A")g(record)g +(coming)f(along)i(with)e(an)i(\\NS")f(record)g(w)o(ould)g(only)g(b)q(e)g +(used)g(for)149 1531 y(domain)16 b(hopping,)g(b)q(ecause)h(that)g(is)f(the)g +(con)o(text)f(in)h(whic)o(h)f(it)h(w)o(as)h(supplied.)223 1621 +y(\\A")h(records)f(along)i(with)e(\\PTR")i(records)f(should)g(nev)o(er)e(b)q +(e)i(cac)o(hed,)f(b)q(ecause)h(there)f(is)149 1711 y(no)g(legal)f(con)o(text) +f(in)h(whic)o(h)g(they)g(ha)o(v)o(e)f(to)i(b)q(e)f(returned)g(in)g(a)g +(single)g(resp)q(onse.)223 1802 y(This)23 b(whole)g(approac)o(h)h(leads)g(to) +f(the)g(question)g(of)h(whether)f(w)o(e)g(still)f(need)h(the)g(addi-)149 +1892 y(tional)18 b(section)g(at)g(all.)26 b(If)17 b(only)h(certain)f(com)o +(binations)g(of)h(resource)g(records)g(are)g(allo)o(w)o(ed)f(as)149 +1982 y(a)j(resp)q(onse)h(to)e(a)h(query)l(,)f(wh)o(y)h(not)g(consequen)o(tly) +e(eliminate)e(the)k(idea)f(of)h(additional)f(unre-)149 2073 +y(quested)j(information)f(completely)l(,)f(and)j(adapt)g(the)f(proto)q(col)h +(to)f(accommo)q(date)f(the)g(new)149 2163 y(ideas,)16 b(namely)f(a)h(certain) +g(limited)d(n)o(um)o(b)q(er)i(of)h(t)o(yp)q(es)g(of)h(asso)q(ciations?)223 +2253 y(First)h(of)h(all,)f(that)h(w)o(ould)g(require)f(a)h(proto)q(col)g(c)o +(hange,)g(whic)o(h)f(is)h(something)e(w)o(e)i(try)f(to)149 +2343 y(a)o(v)o(oid.)j(Some)13 b(of)i(the)f(original)h(design)g(goals)g(of)g +(the)g(Domain)f(Name)f(System)g(also)i(imply)d(that)149 2434 +y(eliminating)i(the)h(additional)h(section)g(w)o(ould)g(not)g(b)q(e)g(a)g(go) +q(o)q(d)i(approac)o(h.)k(The)16 b(system)e(w)o(ould)149 2524 +y(lose)k(some)f(of)i(its)f(generalit)o(y)l(,)e(b)q(ecause)i(the)g(additional) +g(section)g(migh)o(t)e(b)q(ecome)h(v)o(ery)g(useful)149 2614 +y(in)h(future)g(applications)g(of)g(the)f(Domain)h(Name)e(System)g(without)i +(con)o(taining)g(an)o(y)g(securit)o(y)p eop +%%Page: 72 81 +80 bop 1901 -100 a Fo(72)149 75 y(threats.)24 b(The)17 b(system)f(w)o(ould)h +(certainly)e(lose)i(e\016ciency)l(.)k(Here)16 b(w)o(e)h(see)f(again)i(an)f +(imp)q(ortan)o(t)149 165 y(trade-o\013)k(that)f(w)o(e)g(ha)o(v)o(e)e(already) +i(men)o(tioned)d(in)j(sev)o(eral)e(earlier)h(sections:)28 b(an)20 +b(increase)f(in)149 255 y(systems)e(securit)o(y)f(and)i(a)g(decline)e(in)h +(system)f(p)q(erformance)h(vs.)25 b(go)q(o)q(d)19 b(system)e(p)q(erformance) +149 346 y(and)g(a)g(p)q(ossible)f(lac)o(k)g(of)g(securit)o(y)l(.)223 +436 y(It)j(is)h(therefore)f(justi\014able)g(to)i(tak)o(e)e(the)h(approac)o(h) +g(of)h(hardening)f(the)f(name)g(serv)o(er)g(b)o(y)149 526 y(treating)j(more)e +(sp)q(ecial)h(cases,)h(and)g(b)o(y)f(increasing)g(the)g(complexit)o(y)d(of)j +(the)g(in)o(ternal)g(data)149 616 y(bases,)j(instead)e(of)h(hardening)f(it)g +(b)o(y)f(impleme)o(n)o(ti)o(ng)f(the)i(same)f(ideas)h(accepting)g(proto)q +(col)149 707 y(c)o(hanges.)149 867 y(4.10.6)50 b(Authorit)o(y)15 +b(Cac)o(he)223 989 y(A)f(further)g(approac)o(h)h(w)o(ould)g(b)q(e)f(to)h(cac) +o(he)f(data)h(only)f(if)g(the)g(source)h(of)g(a)g(record)f(is)g(kno)o(wn)149 +1079 y(to)h(b)q(e)g(authoritativ)o(e)f(for)h(that)g(zone.)21 +b(W)l(e)14 b(giv)o(e)g(an)h(example)d(for)j(that:)21 b(If)14 +b(a)h(name)f(serv)o(er)f(NS)1921 1086 y Fm(A)149 1170 y Fo(receiv)o(es)18 +b(a)h(\\PTR")i(record)e(from)f(some)h(host)h(NS)1117 1177 y +Fm(B)1144 1170 y Fo(,)f(and)h(the)f(DNS)h(message)e(also)i(con)o(tains)149 +1260 y(an)k(\\A")f(record)g(in)f(its)h(additional)g(section,)h(then)e(the)h +(name)f(serv)o(er)g(NS)1604 1267 y Fm(A)1656 1260 y Fo(w)o(ould)g(b)q(eliev)o +(e)149 1350 y(and)17 b(cac)o(he)e(this)h(information)e(only)i(if)f(it)h +(already)f(kno)o(ws)i(that)f(the)f(source)h(name)f(serv)o(er)g(NS)1922 +1357 y Fm(B)149 1441 y Fo(is)i(authoritativ)o(e)g(for)g(the)g(according)g +(zone.)23 b(A)17 b(name)f(serv)o(er)g(follo)o(wing)g(this)h(strategy)g(w)o +(ould)149 1531 y(create)11 b(its)h(o)o(wn)g(tree)f(of)h(authoritativ)o(e)f +(name)g(serv)o(ers.)18 b(This)12 b(tree)f(w)o(ould)h(ha)o(v)o(e)f(to)h(lose)f +(subtrees)149 1621 y(according)17 b(to)g(the)f(expiration)f(of)i(the)f +(lifetime)d(of)j(some)f(no)q(de)i(\(name)e(serv)o(er\).)149 +1781 y(4.10.7)50 b(Conditional)16 b(Cac)o(he)g(Use)223 1904 +y(The)f(Berk)o(eley)d(patc)o(h)k(\(see)e(Section)h(4.5\))h(can)f(fail)g(in)g +(the)g(case)g(that)h(the)f(cac)o(he)g(is)g(already)149 1994 +y(p)q(oisoned.)30 b(An)18 b(idea)h(to)g(strengthen)g(the)f(Berk)o(eley)e +(patc)o(h)j(is)f(to)h(pro)o(vide)f(the)g(p)q(ossibilit)o(y)g(to)149 +2084 y(resolv)o(e)f(queries)g(without)g(using)h(the)g(cac)o(he.)24 +b(That)19 b(could)e(b)q(e)h(used)g(b)o(y)f(the)g(Berk)o(eley)e(patc)o(h.)149 +2174 y(The)f(system)e(call)h(executing)g(the)g(forw)o(ard)h(lo)q(okup)g(w)o +(ould)g(for)g(example)d(set)j(a)g(\015ag)g(to)g(indicate)149 +2265 y(that)i(the)f(cac)o(he)f(con)o(ten)o(ts)h(should)g(not)h(b)q(e)f(used)g +(for)h(the)e(follo)o(wing)h(resolution.)21 b(This)15 b(metho)q(d)149 +2355 y(again)e(hits)e(the)g(e\016ciency)f(of)h(the)h(system,)e(but)i(it)f +(prev)o(en)o(ts)f(the)h(exploitation)g(of)h(the)f(w)o(eakness.)149 +2445 y(One)18 b(could)h(also)f(think)g(of)h(a)g(system)d(call)i(to)g(\015ush) +h(the)f(cac)o(he)g(follo)o(w)o(ed)f(b)o(y)h(a)h(reload)f(of)h(the)149 +2536 y(database,)e(similar)d(to)i(the)f(signal)h(SIGHUP)f(that)h(a)g(system)e +(administrator)h(can)h(send)g(to)g(the)149 2626 y(BIND)g(implem)o(e)o(n)o +(tation)e(of)i(the)g(name)f(serv)o(er)h(to)g(ac)o(hiev)o(e)f(the)h(same.)p +eop +%%Page: 73 82 +81 bop 1901 -100 a Fo(73)149 75 y(4.10.8)50 b(Discussion)223 +197 y(A)12 b(v)o(ery)h(thorough)h(analysis)g(of)f(the)g(proto)q(col)i(is)e +(needed)f(to)i(determine)d(the)i(cases)g(in)g(whic)o(h)149 +287 y(additional)19 b(resource)f(records)h(are)f(legal)g(and)i(cannot)f(do)g +(an)o(y)f(harm,)g(or)h(ha)o(v)o(e)f(to)g(b)q(e)h(stored)149 +378 y(in)d(di\013eren)o(t)g(con)o(texts.)223 468 y(Hardening)h(the)h(system)e +(w)o(ould)i(require)f(careful)g(design,)h(implem)o(en)o(tation,)d(and)k +(testing)149 558 y(and)k(w)o(ould)e(lead)g(to)h(a)g(higher)f(complexit)o(y)d +(of)k(the)f(co)q(de)h(and)g(the)f(system.)36 b(Our)21 b(analysis)149 +649 y(has)e(to)f(stress)g(the)g(higher)f(complexit)o(y)l(,)e(b)q(ecause)j +(design,)g(implem)o(e)o(n)o(tation)d(and)k(testing)e(are)149 +739 y(a)e(pro)q(cess)g(that)g(will)e(b)q(e)i(done)g(at)g(some)e(p)q(oin)o(t,) +h(but)h(the)f(complexit)o(y)d(of)k(a)g(system)e(is)h(a)h(feature)149 +829 y(that)k(sta)o(ys)g(with)f(it.)26 b(Higher)18 b(complexit)o(y)d(usually)j +(go)q(es)h(along)g(with)f(greater)h(insecurit)o(y)l(.)25 b(It)149 +919 y(is)16 b(therefore)g(imp)q(ortan)o(t)f(to)i(k)o(eep)e(the)h(complexit)o +(y)d(in)j(a)h(manageable)e(scop)q(e.)223 1010 y(A)20 b(decline)g(in)h(system) +f(p)q(erformance)g(w)o(ould)h(result)g(from)f(the)h(fact)g(that)h(name)e +(serv)o(ers)149 1100 y(w)o(ould)d(b)q(eliev)o(e)d(and)j(therefore)e(cac)o(he) +h(less)g(data)h(|)f(data)h(that)g(migh)o(t)d(b)q(e)j(needed)e(later.)223 +1190 y(Ov)o(erall,)i(hardening)j(name)e(serv)o(ers)g(consists)h(of)h(sev)o +(eral)e(p)q(ossible)h(mo)q(di\014cations,)f(some)149 1281 y(of)h(whic)o(h)f +(seem)f(promising,)h(ev)o(en)f(though)j(their)d(application)i(decreases)f +(the)g(system's)f(p)q(er-)149 1371 y(formance)e(and)i(increases)f(its)g +(complexit)o(y)l(,)c(whic)o(h)k(migh)o(t)f(lead)h(to)g(further)g(insecurit)o +(y)l(.)149 1536 y(4.11)50 b(Cryptographic)17 b(Metho)q(ds)g(for)f(Strong)h +(Authen)o(tication)223 1676 y(In)j(this)h(section)g(w)o(e)g(describ)q(e)f(an) +i(arc)o(hitecture)d(for)j(an)f(authen)o(ticated)g(Domain)f(Name)149 +1766 y(System.)g(The)c(outline)f(for)i(the)f(approac)o(h)g(describ)q(ed)g(b)q +(elo)o(w)g(is)g(only)g(one)g(of)g(sev)o(eral)f(p)q(ossible)149 +1856 y(scenarios.)26 b(There)17 b(are)g(systems)g(that)g(pro)o(vide)g(access) +g(authen)o(tication)h(in)f(distributed)f(en)o(vi-)149 1947 +y(ronmen)o(ts.)23 b(Some)16 b(examples)f(of)j(systems)e(that)i(use)f(tic)o(k) +o(ets)e(or)j(securit)o(y)d(certi\014cates)h(are)i(the)149 2037 +y(Kerb)q(eros)e(authen)o(tication)f(service)g(\([SNS88]\))g(and)h(pro)s(ject) +f(SESAME)g(\([P)o(ar91)q(]\).)20 b(They)15 b(are)149 2127 y(not)i(directly)e +(applicable)g(to)i(our)f(problem.)223 2218 y(Our)e(approac)o(h)i(con)o(tains) +f(three)f(ma)s(jor)g(features)h(that)g(are)g(necessary)g(to)g(ensure)f(the)h +(kind)149 2308 y(of)i(securit)o(y)e(w)o(e)h(are)g(trying)g(to)g(obtain:)209 +2452 y(1.)24 b(data)17 b(in)o(tegrit)o(y)e(of)h(a)h(message)209 +2584 y(2.)24 b(originator)17 b(authen)o(tication)p eop +%%Page: 74 83 +82 bop 1901 -100 a Fo(74)209 75 y(3.)24 b(originator's)h(pro)q(of)f(of)g(b)q +(eing)g(an)h(authoritativ)o(e)e(source)h(b)o(y)f(presen)o(ting)g(creden)o +(tials)271 165 y(signed)17 b(b)o(y)e(the)h(paren)o(t)h(domain)223 +309 y(In)g(the)g(follo)o(wing)f(w)o(e)h(will)f(elab)q(orate)i(on)g(these)f +(three)f(features)i(and)f(presen)o(t)g(tec)o(hniques)149 400 +y(and)g(ideas)f(for)h(their)f(p)q(ossible)g(implem)o(en)o(tati)o(on.)149 +560 y(4.11.1)50 b(Data)17 b(In)o(tegrit)o(y)262 1071 y @beginspecial +0 @llx 0 @lly 369 @urx 54 @ury 3690 @rwi @setspecial +%%BeginDocument: pictures/mesg_digest.ps +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/l {lineto} bind def +/m {moveto} bind def +/s {stroke} bind def +/n {newpath} bind def +/gs {gsave} bind def +/gr {grestore} bind def +/clp {closepath} bind def +/graycol {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul +4 -2 roll mul setrgbcolor} bind def +/col-1 {} def +/col0 {0 0 0 setrgbcolor} bind def +/col1 {0 0 1 setrgbcolor} bind def +/col2 {0 1 0 setrgbcolor} bind def +/col3 {0 1 1 setrgbcolor} bind def +/col4 {1 0 0 setrgbcolor} bind def +/col5 {1 0 1 setrgbcolor} bind def +/col6 {1 1 0 setrgbcolor} bind def +/col7 {1 1 1 setrgbcolor} bind def + end +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def + +$F2psBegin +0 setlinecap 0 setlinejoin +-4.0 63.0 translate 0.900 -0.900 scale +1.000 setlinewidth +n 16 29 m 9 29 9 42 7 arcto 4 {pop} repeat 9 49 87 49 7 arcto 4 {pop} repeat 94 49 94 36 7 arcto 4 {pop} repeat 94 29 16 29 7 arcto 4 {pop} repeat clp gs col-1 s gr +n 11 24 m 4 24 4 47 7 arcto 4 {pop} repeat 4 54 92 54 7 arcto 4 {pop} repeat 99 54 99 31 7 arcto 4 {pop} repeat 99 24 11 24 7 arcto 4 {pop} repeat clp gs col-1 s gr +/Times-Bold findfont 12.00 scalefont setfont +14 44 m +gs 1 -1 scale (DNS message) col-1 show gr +n 279 69 m 279 9 l 134 9 l 134 69 l clp gs col-1 s gr +n 321 29 m 314 29 314 42 7 arcto 4 {pop} repeat 314 49 407 49 7 arcto 4 {pop} repeat 414 49 414 36 7 arcto 4 {pop} repeat 414 29 321 29 7 arcto 4 {pop} repeat clp gs col-1 s gr +n 99 39 m 134 39 l gs col-1 s gr +n 118.000 35.000 m 134.000 39.000 l 118.000 43.000 l gs 2 setlinejoin col-1 s gr +n 279 39 m 314 39 l gs col-1 s gr +n 298.000 35.000 m 314.000 39.000 l 298.000 43.000 l gs 2 setlinejoin col-1 s gr +/Times-Bold findfont 12.00 scalefont setfont +139 44 m +gs 1 -1 scale (message digest algorithm) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +159 24 m +gs 1 -1 scale (MD2, MD4, MD5) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +189 64 m +gs 1 -1 scale (Snefru) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +324 44 m +gs 1 -1 scale (message digest) col-1 show gr +0.500 setlinewidth +n 139 49 m 274 49 l gs col-1 s gr +$F2psEnd +%%EndDocument + @endspecial 478 1316 a(Figure)e(4.1)33 b(Application)15 b(of)i(a)g(message)e +(digest)h(algorithm)223 1531 y(In)o(tegrit)o(y)10 b(service)g(means)h(that)h +(a)g(recipien)o(t)d(is)j(pro)o(vided)f(with)g(assurance)i(that)f(the)f(con)o +(ten)o(t)149 1621 y(of)19 b(a)f(receiv)o(ed)e(message)h(is)h(iden)o(tical)e +(to)j(the)e(con)o(ten)o(t)h(of)g(a)g(message)g(\(including)f(its)h(header\)) +149 1711 y(sen)o(t)e(b)o(y)g(its)g(originator)h(\(see)f([Ken93a]\).)223 +1802 y(In)f(our)h(case,)f(w)o(e)g(w)o(an)o(t)g(to)h(ensure)f(the)h(in)o +(tegrit)o(y)d(of)j(transmitted)e(DNS)h(messages.)21 b(There)149 +1892 y(are)15 b(sev)o(eral)f(approac)o(hes)h(to)g(protect)f(a)h(message)f +(against)i(unauthorized)f(c)o(hange:)20 b(prev)o(en)o(tion)149 +1982 y(tec)o(hniques,)e(a)o(v)o(oidance)h(tec)o(hniques,)e(and)j(detection)e +(and)i(reco)o(v)o(ery)d(tec)o(hniques.)28 b(All)18 b(these)149 +2072 y(tec)o(hniques)h(ha)o(v)o(e)h(inheren)o(t)f(adv)m(an)o(tages)j(and)f +(disadv)m(an)o(tages.)35 b(W)l(e)20 b(will)g(not)g(discuss)h(them)149 +2163 y(here,)f(but)f(concen)o(trate)g(on)h(a)g(certain)f(tec)o(hnique)f(to)i +(detect)e(unauthorized)i(message)f(alter-)149 2253 y(ation.)36 +b(W)l(e)21 b(stress)g(this)g(approac)o(h,)h(b)q(ecause)f(it)g(is)f(e\016cien) +o(t)f(and)j(considerably)e(secure.)35 b(In)149 2343 y(case)14 +b(of)g(alteration)g(detection,)e(reco)o(v)o(ery)g(actions)i(could)g(b)q(e)f +(to)h(ignore)g(the)f(DNS)h(message)f(and)149 2434 y(issue)20 +b(an)h(additional)f(query)l(.)31 b(Our)20 b(approac)o(h)h(is)f(based)g(up)q +(on)i(message)d(digest)h(algorithms.)149 2524 y(They)15 b(are)g(one-w)o(a)o +(y)g(hash)g(functions)g(that)g(compute)e(a)j(c)o(hec)o(ksum)11 +b(of)16 b(some)d(data)j(\(in)e(our)h(case)149 2614 y(the)h(DNS)h(message)e(|) +h(see)g(Figure)g(4.1\).)21 b(They)16 b(ha)o(v)o(e)g(the)g(follo)o(wing)g +(features:)p eop +%%Page: 75 84 +83 bop 1901 -100 a Fo(75)222 75 y Fj(\017)24 b Fo(they)17 b(are)g(easy)h(to)f +(compute)f(\(examples)g(are)h(the)g(MD2,)g(MD4,)h(and)g(MD5)f(algorithms)271 +165 y(in)f([Kal92,)g(Riv92a)q(,)f(Riv92b])h(and)h(the)f(Snefru)g(algorithm)f +(in)h([Mer89]\))222 289 y Fj(\017)24 b Fo(the)16 b(signature)h(\(message)e +(digest)i(or)f(\014ngerprin)o(t\))g(is)g(only)g(a)h(few)f(b)o(ytes)f(p)q(er)i +(message)222 412 y Fj(\017)24 b Fo(they)16 b(are)g(computationally)f(hard)i +(to)g(in)o(v)o(ert)222 536 y Fj(\017)24 b Fo(they)16 b(usually)g(require)f(a) +i(certain)e(size)h(of)g(input)g(data)149 648 y(An)23 b(originator)h(w)o(ould) +f(calculate)f(the)h(message)f(digest)h(of)g(a)h(DNS)f(message)f(imme)o +(diately)149 738 y(b)q(efore)15 b(it)f(is)g(sen)o(t)g(out.)21 +b(The)14 b(recipien)o(t)e(w)o(ould)j(recalculate)e(the)h(message)f(digest)i +(and)g(compare)149 828 y(the)h(resulting)g(v)m(alue)g(with)g(the)g(one)h +(calculated)e(b)o(y)h(the)g(originator.)22 b(In)16 b(case)g(of)g(a)h(mismatc) +o(h,)149 919 y(the)e(originator)g(w)o(ould)g(conclude)f(that)h(he)f(did)h +(not)g(receiv)o(e)d(an)j(unaltered)g(DNS)f(message.)20 b(He)149 +1009 y(w)o(ould)d(disp)q(ose)g(of)f(it.)223 1099 y(Ho)o(w)c(do)q(es)i(the)f +(message)f(digest)h(calculated)f(b)o(y)h(the)f(originator)i(get)f(to)g(the)g +(receiv)o(er)e(unim-)149 1190 y(paired?)35 b(The)21 b(message)f(digest)h +(algorithms)f(are)h(publicly)e(kno)o(wn)i(and)g(an)o(y)o(one)f(tamp)q(ering) +149 1280 y(with)h(a)g(message)f(could)h(easily)f(mo)q(dify)f(the)h(asso)q +(ciated)i(message)e(digest)h(accordingly)l(.)34 b(T)l(o)149 +1370 y(sho)o(w)21 b(ho)o(w)f(this)g(can)g(b)q(e)g(prev)o(en)o(ted)e(w)o(e)h +(discuss)h(a)g(metho)q(d)f(for)h(originator)h(authen)o(tication)149 +1460 y(in)h(the)g(follo)o(wing)g(section.)38 b(A)21 b(message)h(digest)g +(together)g(with)g(an)g(authorization)h(service)149 1551 y(guaran)o(tee)17 +b(the)f(in)o(tegrit)o(y)e(of)j(transmitted)e(data.)149 1715 +y(4.11.2)50 b(Originator)16 b(Authen)o(tication)223 1837 y(Originator)k +(authen)o(tication)g(service)g(p)q(ermits)f(the)h(recipien)o(t)e(of)j(a)g +(message)f(to)h(reliably)149 1928 y(determine)14 b(the)i(iden)o(tit)o(y)e(of) +j(the)f(originator)h(of)f(a)h(message.)223 2018 y(W)l(e)22 +b(demonstrate)h(a)g(pro)q(cedure)g(that)g(guaran)o(tees)h(the)f(originator's) +g(authen)o(ticit)o(y)l(.)40 b(In)149 2108 y(an)20 b(asymmetri)o(c)c(\(i.e.)27 +b(public)18 b(k)o(ey\))g(cryptoalgorithm)f(a)i(pair)g(of)g(distinct,)f(but)h +(mathemati-)149 2198 y(cally)g(related,)h(k)o(eys)e(are)i(used)g(for)g +(encryption)f(and)h(decryption.)31 b(One)19 b(k)o(ey)g(is)g(priv)m(ate)h(and) +149 2289 y(k)o(ept)f(secret)f(b)o(y)g(the)h(sender,)g(the)g(other)g(one)g(is) +f(publicly)g(kno)o(wn.)29 b(Data)20 b(encrypted)e(with)h(a)149 +2379 y(sender's)i(priv)m(ate)f(k)o(ey)g(can)h(b)q(e)g(decrypted)f(using)i +(his)e(public)g(k)o(ey)l(,)h(and)g(vice)f(v)o(ersa.)35 b(These)149 +2469 y(k)o(eys)15 b(are)g(usually)g(large)g(in)o(teger)f(n)o(um)o(b)q(ers,)g +(sev)o(eral)g(h)o(undred)h(decimal)e(digits)i(long)h(with)f(sp)q(e-)149 +2560 y(cial,)j(mathematical)d(prop)q(erties.)28 b(\(ex.)f([Den82]\).)g +(\\RSA")19 b(is)f(an)h(example)d(of)i(a)h(public)f(k)o(ey)149 +2650 y(encryption)e(algorithm)f(\([RSA78]\).)p eop +%%Page: 76 85 +84 bop 1901 -100 a Fo(76)299 970 y @beginspecial 0 @llx 0 @lly +350 @urx 206 @ury 3500 @rwi @setspecial +%%BeginDocument: pictures/dig_sig_val.ps +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/l {lineto} bind def +/m {moveto} bind def +/s {stroke} bind def +/n {newpath} bind def +/gs {gsave} bind def +/gr {grestore} bind def +/clp {closepath} bind def +/graycol {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul +4 -2 roll mul setrgbcolor} bind def +/col-1 {} def +/col0 {0 0 0 setrgbcolor} bind def +/col1 {0 0 1 setrgbcolor} bind def +/col2 {0 1 0 setrgbcolor} bind def +/col3 {0 1 1 setrgbcolor} bind def +/col4 {1 0 0 setrgbcolor} bind def +/col5 {1 0 1 setrgbcolor} bind def +/col6 {1 1 0 setrgbcolor} bind def +/col7 {1 1 1 setrgbcolor} bind def + end +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def + +$F2psBegin +0 setlinecap 0 setlinejoin +-4.0 211.0 translate 0.900 -0.900 scale +1.000 setlinewidth + 1 setlinecap [1 3.000000] 3.000000 setdash +n 159 229 m 239 229 l gs col-1 s gr + [] 0 setdash 0 setlinecap +n 231.000 227.000 m 239.000 229.000 l 231.000 231.000 l gs 2 setlinejoin col-1 s gr + 1 setlinecap [1 3.000000] 3.000000 setdash +n 159 29 m 239 29 l gs col-1 s gr + [] 0 setdash 0 setlinecap +n 231.000 27.000 m 239.000 29.000 l 231.000 31.000 l gs 2 setlinejoin col-1 s gr +n 319 39 m 319 59 l gs col-1 s gr +n 321.000 51.000 m 319.000 59.000 l 317.000 51.000 l gs 2 setlinejoin col-1 s gr +n 319 79 m 319 99 l gs col-1 s gr +n 321.000 91.000 m 319.000 99.000 l 317.000 91.000 l gs 2 setlinejoin col-1 s gr +n 319 179 m 319 159 l gs col-1 s gr +n 317.000 167.000 m 319.000 159.000 l 321.000 167.000 l gs 2 setlinejoin col-1 s gr +n 319 219 m 319 199 l gs col-1 s gr +n 317.000 207.000 m 319.000 199.000 l 321.000 207.000 l gs 2 setlinejoin col-1 s gr +n 79 39 m 79 59 l gs col-1 s gr +n 81.000 51.000 m 79.000 59.000 l 77.000 51.000 l gs 2 setlinejoin col-1 s gr +n 79 79 m 79 99 l gs col-1 s gr +n 81.000 91.000 m 79.000 99.000 l 77.000 91.000 l gs 2 setlinejoin col-1 s gr +n 79 119 m 79 179 l gs col-1 s gr +n 81.000 171.000 m 79.000 179.000 l 77.000 171.000 l gs 2 setlinejoin col-1 s gr +n 79 199 m 79 219 l gs col-1 s gr +n 81.000 211.000 m 79.000 219.000 l 77.000 211.000 l gs 2 setlinejoin col-1 s gr +n 279 19 m 359 19 l gs col-1 s gr +n 39 19 m 119 19 l gs col-1 s gr +0.500 setlinewidth +n 274 159 m 284 184 l gs col-1 s gr +n 282.886 175.829 m 284.000 184.000 l 279.172 177.315 l gs 2 setlinejoin col-1 s gr +n 108 159 m 98 184 l gs col-1 s gr +n 102.828 177.315 m 98.000 184.000 l 99.114 175.829 l gs 2 setlinejoin col-1 s gr +/Times-Bold findfont 12.00 scalefont setfont +59 14 m +gs 1 -1 scale (Sender:) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +19 34 m +gs 1 -1 scale (\(data before signature\)) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +39 74 m +gs 1 -1 scale (hash algorithm) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +54 114 m +gs 1 -1 scale (hash value) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +4 194 m +gs 1 -1 scale (asymmetric cryptoalgorithm) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +39 234 m +gs 1 -1 scale (digital signature) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +294 14 m +gs 1 -1 scale (Receiver:) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +279 34 m +gs 1 -1 scale (\(received data\)) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +279 74 m +gs 1 -1 scale (hash algorithm) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +294 114 m +gs 1 -1 scale (hash value) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +294 154 m +gs 1 -1 scale (hash value) col-1 show gr +/Times-Bold findfont 24.00 scalefont setfont +309 139 m +gs 1 -1 scale (=?) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +244 194 m +gs 1 -1 scale (asymmetric cryptoalgorithm) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +254 234 m +gs 1 -1 scale (received digital signature) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +119 154 m +gs 1 -1 scale (sender's ) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +114 169 m +gs 1 -1 scale (private key) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +224 154 m +gs 1 -1 scale (sender's ) col-1 show gr +/Times-Bold findfont 12.00 scalefont setfont +219 169 m +gs 1 -1 scale (public key) col-1 show gr +$F2psEnd +%%EndDocument + @endspecial 467 1215 a(Figure)15 b(4.2)33 b(Digital)16 b(signature)h +(generation)f(and)h(v)m(alidation)223 1399 y(The)f(follo)o(wing)g(pro)q +(cedure)h(and)g(Figure)f(4.2)g(outline)g(ho)o(w)h(w)o(e)f(w)o(ould)g(use)h +(the)f(public)g(k)o(ey)149 1489 y(cryptoalgorithm)f(to)i(ensure)f(originator) +h(authen)o(tication.)223 1579 y(The)f(pro)q(cedure)g(could)g(w)o(ork)g(as)h +(follo)o(ws:)222 1711 y Fj(\017)24 b Fo(The)17 b(sending)f(name)f(serv)o(er)g +(creates)h(the)g(digital)g(signature)h(of)f(the)g(DNS)g(message)g +Fn(m)p Fo(:)271 1802 y Fn(s)e Fo(=)g Fn(hash)p Fo(\()p Fn(m)p +Fo(\))222 1933 y Fj(\017)24 b Fo(The)13 b(sending)h(name)e(serv)o(er)g(signs) +h(the)g(message)f(digest)h(\(the)g(digital)g(signature\))g +Fn(s)g Fo(using)271 2024 y(its)j(priv)m(ate)g(k)o(ey)f Fn(K)636 +2006 y Fd(S)r(ender)632 2036 y(pr)q(iv)767 2024 y Fo(:)22 b +Fn(s)826 2006 y Fc(0)851 2024 y Fo(=)14 b Fn(E)939 2035 y Fd(K)971 +2024 y Fb(S)q(ender)969 2047 y(pr)q(iv)1075 2024 y Fo(\()p +Fn(s)p Fo(\))222 2155 y Fj(\017)24 b Fo(The)17 b(sending)f(name)f(serv)o(er)g +(transmits)h(\()p Fn(m;)8 b(s)1144 2137 y Fc(0)1155 2155 y +Fo(\))222 2287 y Fj(\017)24 b Fo(The)f(resolv)o(er)e(decrypts)h +Fn(s)789 2269 y Fc(0)822 2287 y Fo(b)o(y)g(applying)g(the)g(name)g(serv)o +(er's)f(public)g(k)o(ey)g Fn(K)1799 2269 y Fd(S)r(ender)1795 +2300 y(pub)1936 2287 y Fo(:)271 2378 y Fn(s)294 2359 y Fc(00)329 +2378 y Fo(=)14 b Fn(D)421 2389 y Fd(K)453 2378 y Fb(S)q(ender)451 +2402 y(pub)558 2378 y Fo(\()p Fn(s)600 2359 y Fc(0)611 2378 +y Fo(\))222 2509 y Fj(\017)24 b Fo(The)17 b(resolv)o(er)e(recomputes)f(the)i +(message)g(digest)g Fn(s)e Fo(=)g Fn(hash)p Fo(\()p Fn(m)p +Fo(\))p eop +%%Page: 77 86 +85 bop 1901 -100 a Fo(77)222 75 y Fj(\017)24 b Fo(If)19 b(\()p +Fn(s)g Fo(=)g Fn(s)464 57 y Fc(00)486 75 y Fo(\))g(then)g(the)g(resolv)o(er)f +(has)i(v)m(alidated)f(the)h(in)o(tegrit)o(y)d(and)j(the)f(originator)h(of)271 +165 y(the)c(DNS)h(message)223 290 y(Wh)o(y)j(do)h(w)o(e)g(calculate)f(a)h +(message)f(digest)h(at)g(all)g(and)g(not)g(simply)e(encrypt)h(and)i(then)149 +380 y(transmit)h(the)g(whole)g(message?)43 b(The)24 b(main)e(p)q(oin)o(t)h +(here)g(is)h(the)f(di\013erence)f(b)q(et)o(w)o(een)h(the)149 +470 y(run)o(time)16 b(costs)i(of)h(creating)e(a)i(message)e(digest)h(and)g +(encrypting)f(a)i(message,)e(dep)q(ending)h(on)149 560 y(the)e(length)g(of)h +(the)f(original)g(message.)223 651 y(Run)o(time)g(costs)k(for)f(public)f(k)o +(ey)g(encryption)g(are)h(rather)g(high.)29 b(Man)o(y)19 b(CPU)g(cycles)e(are) +149 741 y(needed.)j(Therefore)11 b(w)o(e)h(w)o(an)o(t)g(to)h(\014x)f(the)f +(size)h(of)g(the)g(data)h(p)q(ortion)g(that)f(has)h(to)g(b)q(e)f(encrypted:) +149 831 y(in)k(our)h(case)f(the)g(\014ngerprin)o(t,)g(the)g(output)h(of)f +(the)g(message)g(digest)g(algorithm.)223 922 y(Run)o(time)11 +b(costs)k(for)g(the)f(hash)h(functions)f(are)g(rather)h(small)d(compared)i +(to)g(those)h(of)f(public)149 1012 y(k)o(ey)k(encryption.)29 +b(It)19 b(is)f(therefore)h(imp)q(ortan)o(t)f(to)h(note,)h(that)f(it)g(is)f +(more)g(e\016cien)o(t)f(to)i(pad)h(a)149 1102 y(short)f(DNS)e(message,)f +(calculate)h(its)g(\014ngerprin)o(t,)g(and)h(then)f(encrypt)g(the)g +(\014ngerprin)o(t,)g(than)149 1193 y(simply)22 b(to)i(encrypt)f(the)g(whole)h +(DNS)f(message.)43 b(Message)24 b(digest)f(lengths)h(are)g(t)o(ypically)149 +1283 y(shorter)17 b(than)g(the)f(t)o(ypical)f(DNS)h(message.)149 +1444 y(4.11.3)50 b(P)o(assing)17 b(Creden)o(tials)e(to)i(Pro)o(v)o(e)e +(Authorit)o(y)223 1566 y(The)e(name)f(serv)o(er)g(sending)h(the)g(DNS)g +(message)f(has)i(to)f(pro)o(vide)f(creden)o(tials)g(signed)h(b)o(y)g(its)149 +1657 y(paren)o(t)18 b(domain,)f(to)i(con)o(vince)d(the)i(recipien)o(t)e(of)i +(its)f(authorit)o(y)h(o)o(v)o(er)f(the)h(domain)f(for)h(whic)o(h)149 +1747 y(it)e(just)h(resolv)o(ed)e(a)i(mapping.)223 1837 y(The)d(use)g(of)g +(suc)o(h)g(a)h(certi\014cate)e(transforms)h(the)f(problem)g(of)h +(establishing)g(the)g(credibilit)o(y)149 1928 y(of)23 b(one)g(en)o(tit)o(y)e +(in)o(to)i(the)f(problem)f(of)i(establishing)g(the)f(credibilit)o(y)e(of)j +(the)f(en)o(tit)o(y)f(issuing)149 2018 y(the)g(certi\014cate.)32 +b(This)20 b(problem)f(is)h(v)o(ery)g(closely)f(related)g(to)i(the)f(problem)f +(of)i(distributing)149 2108 y(public)14 b(k)o(ey)g(certi\014cates.)19 +b(The)c(CCITT)g(recommendation)d(X.509)j(sho)o(ws)g(a)g(w)o(a)o(y)g(to)g +(solv)o(e)f(this)149 2198 y(problem.)20 b(In)15 b(X.509,)g(a)g(certi\014cate) +f(binds)h(a)h(public)e(k)o(ey)g(to)h(a)h(directory)e(name)g(and)i(iden)o +(ti\014es)149 2289 y(a)h(part)o(y)f(that)h(v)o(ouc)o(hes)e(for)i(the)f +(binding.)223 2379 y(W)l(e)f(can)h(adopt)h(this)f(mec)o(hanism,)c(suc)o(h)k +(that)h(a)f(certi\014cate)f(binds)h(all)f(name)g(serv)o(ers)g(that)149 +2469 y(are)j(authoritativ)o(e)g(for)g(a)g(certain)f(zone)h(to)g(this)g(zone)g +(of)g(authorit)o(y)g(and)g(iden)o(ti\014es)f(the)h(zone)149 +2560 y(that)c(v)o(ouc)o(hes)d(for)i(the)g(binding.)20 b(X.509)12 +b(imp)q(oses)g(no)h(constrain)o(ts)g(on)g(the)g(seman)o(tic)d(or)j(syn)o +(tac-)149 2650 y(tic)i(relationship)g(b)q(et)o(w)o(een)f(a)i(certi\014cate)e +(issuer)h(and)g(a)h(sub)s(ject.)k(Ho)o(w)o(ev)o(er,)14 b(in)g(our)i(approac)o +(h,)p eop +%%Page: 78 87 +86 bop 1901 -100 a Fo(78)149 75 y(the)17 b(certi\014cation)f(system)f(tak)o +(es)i(the)f(form)g(of)h(a)g(single)f(ro)q(oted)i(tree.)k(Eac)o(h)17 +b(no)q(de)g(represen)o(ts)149 165 y(a)g(zone.)22 b(Sev)o(eral)15 +b(name)h(serv)o(ers)f(serv)o(e)h(as)h(certi\014cation)e(authorities)i(for)f +(eac)o(h)g(zone,)g(b)q(ecause)149 255 y(all)g(serv)o(ers)e(that)j(w)o(ere)d +(in)o(tro)q(duced)i(to)g(increase)f(the)g(reliabilit)o(y)e(of)j(the)f +(database)i(system)d(are)149 346 y(capable)j(of)f(v)m(alid)g(referrals.)223 +436 y(A)e(certi\014cate)g(for)h(a)g(zone)g(\(for)g(example)e +(sub.domain.dom\))g(consists)i(of)h(all)e(IP)h(addresses)149 +526 y(of)i(authoritativ)o(e)g(name)e(serv)o(ers)h(for)h(that)g(zone,)f +(signed)h(with)g(the)f(priv)m(ate)h(k)o(ey)e(of)i(the)g(name)149 +616 y(serv)o(ers)e(for)h(the)g(paren)o(t)g(domain)f(\(domain.dom\).)j(An)o(y) +d(resolv)o(er)g(that)h(receiv)o(es)e(a)i(DNS)g(mes-)149 707 +y(sage)24 b(receiv)o(es)c(as)j(part)g(of)g(it)f(this)h(certi\014cate.)39 +b(After)21 b(obtaining)i(the)g(public)e(k)o(ey)h(for)h(the)149 +797 y(paren)o(t)16 b(zone)f(of)h(the)f(queried)g(zone,)g(the)g(resolv)o(er)g +(can)g(then)h(v)o(erify)d(the)j(v)m(alidit)o(y)e(of)i(the)f(refer-)149 +887 y(ral.)24 b(But)17 b(to)g(v)o(erify)f(the)g(authorit)o(y)h(of)h(the)f +(paren)o(t)f(zone,)h(the)g(resolv)o(er)f(has)i(to)f(ask)h(this)f(zone)149 +978 y(for)g(creden)o(tials.)223 1068 y(This)f(v)m(alidation)g(pro)q(cess)i +(for)e(certi\014cates)f(is)i(done)f(recursiv)o(ely)e(up)j(the)f(tree,)f +(starting)i(at)149 1158 y(the)f(name)f(serv)o(er)g(that)i(pro)o(vides)e(the)h +(queried)f(mapping.)20 b(The)d(recursion)e(will)g(stop)i(at)f(some)149 +1248 y(p)q(oin)o(t,)f(either)f(at)h(the)g(ro)q(ot,)g(or)h(at)f(some)e(in)o +(termediate)f(no)q(de)k(that)f(w)o(as)g(certi\014ed)f(b)q(efore.)20 +b(The)149 1339 y(certi\014cates)f(that)h(a)f(name)g(serv)o(er)f(holds)i(are)f +(sub)s(ject)g(to)h(timeouts,)e(just)i(lik)o(e)e(the)h(resource)149 +1429 y(records)g(that)g(sp)q(ecify)f(bindings)h(of)g(this)f(name)g(serv)o +(er.)27 b(The)19 b(certi\014cate)e(for)i(the)f(ro)q(ot)i(m)o(ust)149 +1519 y(b)q(e)25 b(transmitted)d(b)o(y)i(some)f(trusted,)j(out-of-band)g(mec)o +(hanism)o(.)42 b(F)l(or)24 b(example,)g(the)f(ro)q(ot)149 1610 +y(certi\014cate)15 b(could)h(b)q(e)h(published)f(in)f(a)i(national)g(newspap) +q(er.)223 1700 y(Ev)o(en)h(if)h(an)g(attac)o(k)o(er)f(manages)h(to)h(get)f(a) +g(v)m(alid)g(certi\014cate)f(of)h(a)h(name)e(serv)o(er)g(it)g(w)o(an)o(ts)149 +1790 y(to)e(imp)q(ersonate,)e(and)i(has)g(the)g(capabilit)o(y)e(to)h(also)h +(sp)q(o)q(of)h(this)f(name)e(serv)o(er's)g(IP)h(address,)h(it)149 +1880 y(is)j(still)e(not)i(p)q(ossible)g(for)f(the)h(attac)o(k)o(er)e(to)i +(imp)q(ersonate)f(another)h(host.)28 b(As)19 b(w)o(e)f(sa)o(w)h(in)f(the)149 +1971 y(previous)g(Section)e(4.11.2,)i(a)g(DNS)f(message)g(is)g(encrypted)f +(with)h(the)h(name)e(serv)o(er's)g(priv)m(ate)149 2061 y(k)o(ey)c(b)q(efore)g +(it)g(is)g(sen)o(t)g(out.)21 b(The)12 b(creden)o(tials)f(are)h(part)h(of)g +(the)f(message)g(and)h(are)f(therefore)g(also)149 2151 y(encrypted.)29 +b(An)18 b(attac)o(k)o(er)g(cannot)i(construct)f(the)g(correctly)e(enciphered) +h(message)g(without)149 2242 y(breaking)f(the)f(public)f(k)o(ey)g(system)g +(used.)149 2402 y(4.11.4)50 b(Example)223 2524 y(W)l(e)19 b(presen)o(t)h(an)g +(example)e(to)i(sho)o(w)h(ho)o(w)f(certi\014cates)f(are)h(used)g(in)f(our)i +(approac)o(h.)33 b(W)l(e)149 2614 y(assume)18 b(that)g(all)g(hosts)h(already) +f(ha)o(v)o(e)g(the)g(public)f(k)o(eys)g(of)h(the)g(mac)o(hines)f(that)h +(participate)p eop +%%Page: 79 88 +87 bop 1901 -100 a Fo(79)149 75 y(in)22 b(this)f(example.)35 +b(Host)22 b(\\host.aim.")37 b(w)o(an)o(ts)22 b(to)g(resolv)o(e)e(the)h +(name{to{address)i(binding)149 165 y(for)e(the)f(name)g(\\host.domain.dom.".) +32 b(The)21 b(example)d(is)i(not)h(complete)d(in)i(the)h(sense)f(that)149 +255 y(all)d(p)q(ossibilities)g(are)g(not)h(co)o(v)o(ered,)d(or)j(else)e +(reasons)j(are)e(giv)o(en)f(wh)o(y)h(a)h(name)e(serv)o(er)g(returns)149 +346 y(a)k(certain)e(referral)g(and)i(not)f(another)h(one.)30 +b(But)18 b(it)h(describ)q(es)g(the)f(o)o(v)o(erall)g(in)o(teraction)g(and)149 +436 y(stresses)f(the)f(use)g(of)h(certi\014cates.)223 526 y(T)l(able)e(4.1)g +(con)o(tains)g(a)h(summary)c(of)k(the)f(zones)g(in)g(Figure)f(4.3,)h(and)h(T) +l(able)f(4.2)h(in)o(terprets)149 616 y(the)g(abbreviations)h(used)f +(through +References: <33onnr$i4u@zombie.ncsc.mil> +NNTP-Posting-Host: office.home.vix.com +In-reply-to: sjr@zombie.ncsc.mil's message of 27 Aug 1994 21:02:51 -0400 + +> (Style) Suggestions for how to layout DNS configuration files (both +> forward and reverse)? + +I've gone back and forth on the question of whether the BOG should include a +section on this topic. I know what I myself prefer, but I'm wary of ramming +my own stylistic preferences down the throat of every BOG reader. But since +you ask :-)... + +Create /var/named. If your system is too old to have a /var, either create +one or use /usr/local/adm/named instead. Put your named.boot in it, and make +/etc/named.boot a symlink to it. If your system doesn't have symlinks, you're +S-O-L (but you knew that). In named.boot, put a "directory" directive that +specifies your actual BIND working directory: + + directory /var/named + +All relative pathnames used in "primary", "secondary", and "cache" directives +will be evaluated relative to this directory. Create two subdirectories, +/var/named/pri and /var/named/sec. Whenever you add a "primary" directive +to your named.boot, use "pri/WHATEVER" as the path name. And then put the +primary zone file into "pri/WHATEVER". Likewise when you add "secondary" +directives, use "sec/WHATEVER" and BIND (really named-xfer) will create the +files in that subdirectory. + +(Variations: (1) make a midlevel directory "zones" and put "pri" and "sec" +into it; (2) if you tend to pick up a lot of secondaries from a few hosts, +group them together in their own subdirectories -- something like +/var/named/zones/uucp if you're a UUCP Project name server.) + +For your forward files, name them after the zone. dec.com becomes +"/var/named/zones/pri/dec.com". For your reverse files, name them after the +network number. 0.1.16.in-addr.arpa becomes "/var/named/zones/pri/16.1.0". + +When creating or maintaining primary zone files, try to use the same SOA +values everywhere, except for the serial number which varies per zone. Put +a $ORIGIN directive at the top of the primary zone file, not because it's +needed (it's not since the default origin is the zone named in the "primary" +directive) but because it make it easier to remember what you're working on +when you have a lot of primary zones. Put some comments up there indicating +contact information for the real owner if you're proxying. Use RCS and put +the "$Id: style.txt,v 1.1.1.1 1997/04/13 09:08:00 mrg Exp $" in a ";" comment near the top of the zone file. + +The SOA and other top level information should all be listed together. But +don't put IN on every line, it defaults nicely. For example: + +============== +@ IN SOA gw.home.vix.com. postmaster.vix.com. ( + 1994082501 ; serial + 3600 ; refresh (1 hour) + 1800 ; retry (30 mins) + 604800 ; expire (7 days) + 3600 ) ; minimum (1 hour) + + NS gw.home.vix.com. + NS ns.uu.net. + NS uucp-gw-1.pa.dec.com. + NS uucp-gw-2.pa.dec.com. + + MX 10 gw.home.vix.com. + MX 20 uucp-gw-1.pa.dec.com. + MX 20 uucp-gw-1.pa.dec.com. +============== + +I don't necessarily recommend those SOA values. Not every zone is as volatile +as the example shown. I do recommend that serial number format; it's in date +format with a 2-digit per-day revision number. This format will last us until +2147 A.D. at which point I expect a better solution will have been found :-). +(Note that it would last until 4294 A.D. except that there are some old BINDs +out there that use a signed quantity for representing serial number interally; +I suppose that as long as none of these are still running after 2047 A.D., +that we can use the above serial number format until 4294 A.D., at which point +a better solution will HAVE to be found.) + +You'll note that I use a tab stop for "IN" even though I never again specify +it. This leaves room for names longer than 7 bytes without messing up the +columns. You might also note that I've put the MX priority and destination +in the same tab stop; this is because both are part of the RRdata and both +are very different from MX which is an RRtype. Some folks seem to prefer to +group "MX" and the priority together in one tab stop. While this looks neat +it's very confusing to newcomers and for them it violates the law of least +astonishment. + +If you have a multi-level zone (one which contains names that have dots in +them), you can use additional $ORIGIN statements but I recommend against it +since there is no "back" operator. That is, given the above example you can +add: + +============= +$ORIGIN home +gw A 192.5.5.1 +============= + +The problem with this is that subsequent RR's had better be somewhere under +the "home.vix.com" name or else the $ORIGIN that introduces them will have +to use a fully qualified name. FQDN $ORIGIN's aren't bad and I won't be mad +if you use them. Unqualified ones as shown above are real trouble. I usually +stay away from them and just put the whole name in: + +============= +gw.home A 192.5.5.1 +============= + +In your reverse zones, you're usually in some good luck because the owner name +is usually a single short token or sometimes two. + +============= +$ORIGIN 5.5.192.in-addr.arpa. +@ IN SOA ... + NS ... +1 PTR gw.home.vix.com. +------------- +$ORIGIN 1.16.in-addr.arpa. +@ IN SOA ... + NS ... +2.0 PTR gatekeeper.dec.com. +============= + +It is usually pretty hard to keep your forward and reverse zones in synch. +You can avoid that whole problem by just using "h2n" (see the ORA book, DNS +and BIND, and its sample toolkit, included in the BIND distribution or on +ftp.uu.net (use the QUOTE SITE EXEC INDEX command there to find this -- I +never can remember where it's at). "h2n" and many tools like it can just +read your old /etc/hosts file and churn it into DNS zone files. (May I +recommend contrib/decwrl/mkdb.pl from the BIND distribution?) However, if +you (like me) prefer to edit these things by hand, you need to follow the +simple convention of making all of your holes consistent. If you use +192.5.5.1 and 192.5.5.3 but not (yet) 192.5.5.2, then in your forward file +you will have something like + +============= +... +gw.home A 192.5.5.1 +;avail A 192.5.5.2 +pc.home A 192.5.5.3 +============= + +and in your reverse file you will have something like + +============= +... +1 PTR gw.home.vix.com. +;2 PTR avail +3 PTR pc.home.vix.com. +============= + +This convention will allow you to keep your sanity and make fewer errors. +Any kind of automation (h2n, mkdb, or your own perl/tcl/awk/python tools) +will help you maintain a consistent universe even if it's also a complex +one. Editing by hand doesn't have to be deadly but you MUST take care. + +Anyone who wants to know how to maintain nonleaf zones, i.e., zones which +have few or no hosts in them but have hundreds or thousands of delegations, +should attend Usenix LISA in San Diego and be there for the SENDS talk. +Contact office@usenix.org for conference information. +-- +Paul Vixie +Redwood City, CA +decwrl!vixie!paul + diff --git a/usr.sbin/named/doc/misc/vixie-security.ps b/usr.sbin/named/doc/misc/vixie-security.ps new file mode 100644 index 000000000000..2cb8676bcb94 --- /dev/null +++ b/usr.sbin/named/doc/misc/vixie-security.ps @@ -0,0 +1,2915 @@ +%!PS-Adobe-3.0 +%%Creator: Basser Lout Version 3.01 (October 1994) +%%CreationDate: Tue May 2 22:39:43 1995 +%%DocumentData: Binary +%%DocumentNeededResources: (atend) +%%DocumentSuppliedResources: (atend) +%%Pages: (atend) +%%BoundingBox: 0 0 612 792 +%%EndComments + +%%BeginProlog +%%BeginResource: procset LoutStartUp +/m { 3 1 roll moveto show } bind def +/s { exch currentpoint exch pop moveto show } bind def +/k { exch neg 0 rmoveto show } bind def +/in { 1440 mul } def +/cm { 567 mul } def +/pt { 20 mul } def +/em { 120 mul } def +/sp { louts mul } def +/vs { loutv mul } def +/ft { loutf mul } def +/dg { } def + +/LoutGraphic { + /louts exch def + /loutv exch def + /loutf exch def + /ymark exch def + /xmark exch def + /ysize exch def + /xsize exch def +} def + +/LoutFont +{ findfont exch scalefont setfont +} bind def + +/LoutRecode { + { findfont dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding exch def + currentdict end definefont pop + } + stopped {} +} bind def + +/BeginEPSF { + /LoutEPSFState save def + /dict_count countdictstack def + /op_count count 1 sub def + userdict begin + /showpage { } def + 0 setgray 0 setlinecap + 1 setlinewidth 0 setlinejoin + 10 setmiterlimit [] 0 setdash newpath + /languagelevel where + { pop languagelevel + 1 ne + { false setstrokeadjust false setoverprint + } if + } if +} bind def + +/EndEPSF { + count op_count sub { pop } repeat + countdictstack dict_count sub { end } repeat + LoutEPSFState restore +} bind def +%%EndResource + +%%BeginResource encoding vec1 +/vec1 [ +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright +/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash +/zero /one /two /three /four /five /six /seven +/eight /nine /colon /semicolon /less /equal /greater /question +/at /A /B /C /D /E /F /G +/H /I /J /K /L /M /N /O +/P /Q /R /S /T /U /V /W +/X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore +/quoteleft /a /b /c /d /e /f /g +/h /i /j /k /l /m /n /o +/p /q /r /s /t /u /v /w +/x /y /z /braceleft /bar /braceright /asciitilde /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /quotedblleft /quotedblright /fi +/fl /endash /emdash /bullet /dagger /daggerdbl /florin /fraction +/dotlessi /grave /acute /circumflex /tilde /macron /breve /dotaccent +/dieresis /.notdef /ring /cedilla /.notdef /hungarumlaut /ogonek /caron +/space /exclamdown /cent /sterling /currency /yen /brokenbar /section +/dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron +/degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered +/cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown +/Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla +/Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis +/Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply +/Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls +/agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla +/egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis +/eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide +/oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis +] def +%%EndResource + +%%BeginResource: procset LoutTabPrependGraphic +% @PrependGraphic file /usr/local/share/lout/include/tab_prepend +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% PostScript @SysPrependGraphic file for @Tab % +% % +% To assist in avoiding name clashes, the names % +% of all these symbols begin with "ltab". % +% % +% Jeffrey H. Kingston % +% 24 September 1991 % +% 22 December 1992 % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% linewidth ltabhs - +% horizontal single line +/ltabhs +{ 0 0 moveto xsize 0 lineto + setlinewidth 0 setlinecap stroke +} def + +% linewidth ltabhsp - +% horizontal single line with projecting ends +/ltabhsp +{ 0 0 moveto xsize 0 lineto + setlinewidth 2 setlinecap stroke +} def + +% linewidth ltabhd - +% horizontal double line +/ltabhd +{ dup dup + 0 0 moveto xsize 0 lineto + 0 exch 3 mul moveto xsize exch 3 mul lineto + setlinewidth 0 setlinecap stroke +} def + +% linewidth ltabhdb - +% horizontal double line below mark +/ltabhdb +{ dup dup + 0 0 moveto xsize 0 lineto + 0 exch -3 mul moveto xsize exch -3 mul lineto + setlinewidth 0 setlinecap stroke +} def + +% linewidth ltabhdnw - +% horizontal double line with northwest corner +/ltabhdnw +{ dup dup dup dup + 0 0 moveto xsize 0 lineto + xsize exch 3 mul moveto + -3 mul exch 3 mul lineto + -3 mul 0 lineto + setlinewidth 0 setlinejoin 2 setlinecap stroke +} def + +% linewidth ltabhdne - +% horizontal double line with northeast corner +/ltabhdne +{ dup dup dup dup + 0 0 moveto xsize 0 lineto + 0 exch 3 mul moveto + 3 mul xsize add exch 3 mul lineto + 3 mul xsize add 0 lineto + setlinewidth 0 setlinejoin 2 setlinecap stroke +} def + +% linewidth ltabhdsw - +% horizontal double line with southwest corner +/ltabhdsw +{ dup dup dup dup + 0 0 moveto xsize 0 lineto + xsize exch -3 mul moveto + -3 mul exch -3 mul lineto + -3 mul 0 lineto + setlinewidth 0 setlinejoin 2 setlinecap stroke +} def + +% linewidth ltabhdse - +% horizontal double line with southeast corner +/ltabhdse +{ dup dup dup dup + 0 0 moveto xsize 0 lineto + 0 exch -3 mul moveto + 3 mul xsize add exch -3 mul lineto + 3 mul xsize add 0 lineto + setlinewidth 0 setlinejoin 2 setlinecap stroke +} def + +% linewidth ltabvs - +% vertical single line +/ltabvs +{ 0 0 moveto 0 ysize lineto + setlinewidth 0 setlinecap stroke +} def + +% linewidth ltabvd - +% vertical double line +/ltabvd +{ dup dup + 0 0 moveto 0 ysize lineto + -3 mul 0 moveto -3 mul ysize lineto + setlinewidth 0 setlinecap stroke +} def + +% linewidth ltabvdr - +% vertical double line to right of mark +/ltabvdr +{ dup dup + 0 0 moveto 0 ysize lineto + 3 mul 0 moveto 3 mul ysize lineto + setlinewidth 0 setlinecap stroke +} def +%%EndResource + +%%BeginResource: procset LoutFigPrependGraphic +% @PrependGraphic file /usr/local/share/lout/include/fig_prepend +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% PostScript @SysPrependGraphic file for @Fig Jeffrey H. Kingston % +% Version 2.0 (includes CIRCUM label) January 1992 % +% % +% To assist in avoiding name clashes, the names of all symbols % +% defined here begin with "lfig". However, this is not feasible % +% with user-defined labels and some labels used by users. % +% % +% is two numbers, a point. % +% is one number, a length % +% is one number, an angle in degrees % +% is one number, the preferred length of a dash % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +errordict begin + /handleerror + { + { /Times-Roman findfont 8 pt scalefont setfont + 0 setgray 4 pt 4 pt moveto + $error /errorname get + dup lfigdict exch known + { lfigdict exch get } + { 30 string cvs } ifelse + show + ( Command: ) show + $error /command get 30 string cvs show + } stopped {} if + showpage stop + } def +end + +% concat strings: lfigconcat +% must be defined outside lfigdict since used in lfigpromotelabels +/lfigconcat +{ 2 copy length exch length add string + dup 0 4 index putinterval + dup 3 index length 3 index putinterval + 3 1 roll pop pop +} def + +% lfigdebugprint - +% must be defined outside lfigdict since used in arbitrary places +% /lfigdebugprint +% { print +% (; operand stack:\n) print +% count copy +% count 2 idiv +% { == +% (\n) print +% } repeat +% (\n) print +% } def + +/lfigdict 120 dict def +lfigdict begin + +% error messages +/dictfull (dictfull error: too many labels?) def +/dictstackoverflow (dictstackoverflow error: labels nested too deeply?) def +/execstackoverflow (execstackoverflow error: figure nested too deeply?) def +/limitcheck (limitcheck error: figure nested too deeply or too large?) def +/syntaxerror (syntaxerror error: syntax error in text of figure?) def +/typecheck (typecheck error: syntax error in text of figure?) def +/undefined (undefined error: unknown or misspelt label?) def +/VMError (VMError error: run out of memory?) def + +% push pi onto stack: - lfigpi +/lfigpi 3.14159 def + +% arc directions +/clockwise false def +/anticlockwise true def + +% maximum of two numbers: lfigmax +/lfigmax { 2 copy gt { pop } { exch pop } ifelse } def + +% minimum of two numbers: lfigmin +/lfigmin { 2 copy lt { pop } { exch pop } ifelse } def + +% add two points: lfigpadd +/lfigpadd { exch 3 1 roll add 3 1 roll add exch } def + +% subtract first point from second: lfigpsub +/lfigpsub { 3 2 roll sub 3 1 roll exch sub exch } def + +% max two points: lfigpmax +/lfigpmax { exch 3 1 roll lfigmax 3 1 roll lfigmax exch } def + +% min two points: lfigpmin +/lfigpmin { exch 3 1 roll lfigmin 3 1 roll lfigmin exch } def + +% scalar multiplication: lfigpmul +/lfigpmul { dup 3 1 roll mul 3 1 roll mul exch } def + +% point at angle and distance: lfigatangle +/lfigatangle { 2 copy cos mul 3 1 roll sin mul lfigpadd } def + +% angle from one point to another: lfigangle +/lfigangle { lfigpsub 2 copy 0 eq exch 0 eq and {pop} {exch atan} ifelse } def + +% distance between two points: lfigdistance +/lfigdistance { lfigpsub dup mul exch dup mul add sqrt } def + +% difference in x coords: lfigxdistance +/lfigxdistance { pop 3 1 roll pop sub } def + +%difference in y coords: lfigydistance +/lfigydistance { 3 1 roll pop sub exch pop } def + +% stroke a solid line: lfigsolid - +/lfigsolid +{ pop pop [] 0 setdash stroke +} def + +% stroke a lfigdashed line: lfigdashed - +/lfigdashed +{ 2 copy div 2 le 1 index 0 le or + { exch pop 1 pt lfigmax [ exch dup ] 0 setdash } + { dup [ exch 4 2 roll 2 copy div + 1 sub 2 div ceiling dup 4 1 roll + 1 add mul sub exch div ] 0 setdash + } ifelse stroke +} def + +% stroke a lfigcdashed line: lfigcdashed - +/lfigcdashed +{ 2 copy le 1 index 0 le or + { exch pop 1 pt lfigmax [ exch dup ] dup 0 get 2 div setdash } + { dup [ 4 2 roll exch 2 copy exch div + 2 div ceiling div 1 index sub + ] exch 2 div setdash + } ifelse stroke +} def + +% stroke a dotted line: lfigdotted - +/lfigdotted +{ 2 copy le 1 index 0 le or + { exch pop 1 pt lfigmax [ exch 0 exch ] 0 setdash } + { 1 index exch div ceiling div + [ 0 3 2 roll ] 0 setdash + } ifelse stroke +} def + +% stroke a noline line: lfignoline - +/lfignoline +{ pop pop +} def + +% painting (i.e. filling): - lfigwhite - (etc.) +/lfignopaint { } def +/lfignochange { fill } def +/lfigdarkblue { 0.0 0.0 0.5 setrgbcolor fill } def +/lfigblue { 0.0 0.0 1.0 setrgbcolor fill } def +/lfiglightblue { 0.5 0.5 1.0 setrgbcolor fill } def +/lfigdarkgreen { 0.0 0.5 0.0 setrgbcolor fill } def +/lfiggreen { 0.0 1.0 0.0 setrgbcolor fill } def +/lfiglightgreen { 0.5 1.0 0.5 setrgbcolor fill } def +/lfigdarkred { 0.5 0.0 0.0 setrgbcolor fill } def +/lfigred { 1.0 0.0 0.0 setrgbcolor fill } def +/lfiglightred { 1.0 0.5 0.5 setrgbcolor fill } def +/lfigdarkcyan { 0.0 0.5 0.5 setrgbcolor fill } def +/lfigcyan { 0.0 1.0 1.0 setrgbcolor fill } def +/lfiglightcyan { 0.5 1.0 1.0 setrgbcolor fill } def +/lfigdarkmagenta { 0.5 0.0 0.5 setrgbcolor fill } def +/lfigmagenta { 1.0 0.0 1.0 setrgbcolor fill } def +/lfiglightmagenta { 1.0 0.5 1.0 setrgbcolor fill } def +/lfigdarkyellow { 0.5 0.5 0.0 setrgbcolor fill } def +/lfigyellow { 1.0 1.0 0.0 setrgbcolor fill } def +/lfiglightyellow { 1.0 1.0 0.5 setrgbcolor fill } def +/lfigdarkgray { 0.2 0.2 0.2 setrgbcolor fill } def +/lfiggray { 0.5 0.5 0.5 setrgbcolor fill } def +/lfiglightgray { 0.8 0.8 0.8 setrgbcolor fill } def +/lfigdarkgrey { 0.2 0.2 0.2 setrgbcolor fill } def +/lfiggrey { 0.5 0.5 0.5 setrgbcolor fill } def +/lfiglightgrey { 0.8 0.8 0.8 setrgbcolor fill } def +/lfigblack { 0.0 0.0 0.0 setrgbcolor fill } def +/lfigwhite { 1.0 1.0 1.0 setrgbcolor fill } def + +% line caps (and joins, not currently used) +/lfigbutt 0 def +/lfiground 1 def +/lfigprojecting 2 def +/lfigmiter 0 def +/lfigbevel 2 def + +% shape and labels of the @Box symbol +/lfigbox +{ + 0 0 /SW lfigpointdef + xsize 0 /SE lfigpointdef + xsize ysize /NE lfigpointdef + 0 ysize /NW lfigpointdef + SE 0.5 lfigpmul /S lfigpointdef + NW 0.5 lfigpmul /W lfigpointdef + W SE lfigpadd /E lfigpointdef + S NW lfigpadd /N lfigpointdef + NE 0.5 lfigpmul /CTR lfigpointdef + [ CTR NE lfigpsub /lfigboxcircum cvx ] lfigcircumdef + SW SE NE NW SW +} def + +% shape and labels of the @Square symbol +/lfigsquare +{ + xsize ysize 0.5 lfigpmul /CTR lfigpointdef + CTR xsize xsize ysize ysize lfigpmax 0.5 lfigpmul lfigpadd /NE lfigpointdef + CTR 0 0 CTR NE lfigdistance 135 lfigatangle lfigpadd /NW lfigpointdef + CTR 0 0 CTR NE lfigdistance 225 lfigatangle lfigpadd /SW lfigpointdef + CTR 0 0 CTR NE lfigdistance 315 lfigatangle lfigpadd /SE lfigpointdef + SW 0.5 lfigpmul SE 0.5 lfigpmul lfigpadd /S lfigpointdef + NW 0.5 lfigpmul NE 0.5 lfigpmul lfigpadd /N lfigpointdef + SW 0.5 lfigpmul NW 0.5 lfigpmul lfigpadd /W lfigpointdef + SE 0.5 lfigpmul NE 0.5 lfigpmul lfigpadd /E lfigpointdef + [ CTR NE lfigpsub /lfigboxcircum cvx ] lfigcircumdef + SW SE NE NW SW +} def + +% shape and labels of the @Diamond symbol +/lfigdiamond +{ + xsize 0 0.5 lfigpmul /S lfigpointdef + 0 ysize 0.5 lfigpmul /W lfigpointdef + S W lfigpadd /CTR lfigpointdef + CTR W lfigpadd /N lfigpointdef + CTR S lfigpadd /E lfigpointdef + [ xsize ysize 0.5 lfigpmul /lfigdiamondcircum cvx ] lfigcircumdef + S E N W S +} def + +% shape and labels of the @Ellipse symbol +/lfigellipse +{ + xsize 0 0.5 lfigpmul /S lfigpointdef + 0 ysize 0.5 lfigpmul /W lfigpointdef + S W lfigpadd /CTR lfigpointdef + CTR W lfigpadd /N lfigpointdef + CTR S lfigpadd /E lfigpointdef + CTR xsize 0 0.3536 lfigpmul lfigpadd 0 ysize 0.3536 lfigpmul lfigpadd /NE lfigpointdef + 0 ysize 0.3536 lfigpmul CTR xsize 0 0.3536 lfigpmul lfigpadd lfigpsub /SE lfigpointdef + xsize 0 0.3536 lfigpmul CTR lfigpsub 0 ysize 0.3536 lfigpmul lfigpadd /NW lfigpointdef + 0 ysize 0.3536 lfigpmul xsize 0 0.3536 lfigpmul CTR lfigpsub lfigpsub /SW lfigpointdef + [ xsize ysize 0.5 lfigpmul /lfigellipsecircum cvx ] lfigcircumdef + S [ CTR ] E [ CTR ] N [ CTR ] W [ CTR ] S +} def + +% shape and labels of the @Circle symbol +/lfigcircle +{ + xsize ysize 0.5 lfigpmul /CTR lfigpointdef + CTR xsize 0 ysize 0 lfigpmax 0.5 lfigpmul lfigpadd /E lfigpointdef + CTR 0 0 CTR E lfigdistance 45 lfigatangle lfigpadd /NE lfigpointdef + CTR 0 0 CTR E lfigdistance 90 lfigatangle lfigpadd /N lfigpointdef + CTR 0 0 CTR E lfigdistance 135 lfigatangle lfigpadd /NW lfigpointdef + CTR 0 0 CTR E lfigdistance 180 lfigatangle lfigpadd /W lfigpointdef + CTR 0 0 CTR E lfigdistance 225 lfigatangle lfigpadd /SW lfigpointdef + CTR 0 0 CTR E lfigdistance 270 lfigatangle lfigpadd /S lfigpointdef + CTR 0 0 CTR E lfigdistance 315 lfigatangle lfigpadd /SE lfigpointdef + [ S E lfigpsub /lfigellipsecircum cvx ] lfigcircumdef + S [ CTR ] E [ CTR ] N [ CTR ] W [ CTR ] S +} def + +% shape and labels of the @HLine and @HArrow symbols +/lfighline +{ + 0 ymark lfigprevious /FROM lfigpointdef + xsize ymark lfigprevious /TO lfigpointdef +} def + +% shape and labels of the @VLine and @VArrow symbols +/lfigvline +{ + xmark ysize lfigprevious /FROM lfigpointdef + xmark 0 lfigprevious /TO lfigpointdef +} def + +% points of a polygon around base with given no of sides, vert init angle: +% figpolygon ... +/lfigpolygon +{ xsize ysize 0.5 lfigpmul /CTR lfigpointdef + 90 sub CTR 2 copy lfigmax 5 3 roll + [ 4 copy pop /lfigpolycircum cvx ] lfigcircumdef + exch dup 360 exch div exch + 1 1 3 2 roll + { 4 string cvs (P) exch lfigconcat cvn + 6 copy pop pop lfigatangle 2 copy 10 2 roll + 3 2 roll lfigpointdef + dup 3 1 roll add exch + } for + pop lfigatangle +} def + +% next array element: lfiggetnext true +% or false +/lfiggetnext +{ 2 copy exch length ge + { false } + { 2 copy get exch 1 add exch true } ifelse +} def + +% check whether thing is number: lfigisnumbertype +/lfigisnumbertype +{ dup type dup + /integertype eq exch /realtype eq or +} def + +% check whether thing is an array: lfigisarraytype +/lfigisarraytype { dup type /arraytype eq } def + +% get next item: lfiggetnextitem 0 +% or 1 +% or 2 +/lfiggetnextitem +{ lfiggetnext + { lfigisarraytype + { 1 + } + { lfigisnumbertype + { 3 1 roll + lfiggetnext + { lfigisnumbertype + { 4 3 roll exch 2 + } + { pop 3 2 roll pop 0 + } ifelse + } + { 3 2 roll pop 0 + } ifelse + } + { pop 0 + } ifelse + } ifelse + } + { 0 + } ifelse +} def + +% set arc path: bool x1 y1 x2 y2 x0 y0 lfigsetarc +% the path goes from x1 y1 to x2 y2 about centre x0 y0, +% anticlockwise if bool is true else clockwise. +% The orientations of backwards pointing and forwards pointing +% arrowheads are returned in the two angles, and +% the length of the arc is returned in . +/lfigsetarc +{ + 20 dict begin + matrix currentmatrix 8 1 roll + 2 copy translate 2 copy 8 2 roll + 4 2 roll lfigpsub 6 2 roll lfigpsub + dup /y1 exch def dup mul /y1s exch def + dup /x1 exch def dup mul /x1s exch def + dup /y2 exch def dup mul /y2s exch def + dup /x2 exch def dup mul /x2s exch def + + y1s y2s eq + { -1 + } + { y1s x2s mul y2s x1s mul sub y1s y2s sub div + } ifelse + /da exch def + + x1s x2s eq + { -1 + } + { x1s y2s mul x2s y1s mul sub x1s x2s sub div + } ifelse + /db exch def + + da 0 gt db 0 gt and + { /LMax da sqrt db sqrt lfigmax def + /scalex da sqrt LMax div def + /scaley db sqrt LMax div def + scalex scaley scale + 0 0 LMax + 0 0 x1 scalex mul y1 scaley mul lfigangle + 0 0 x2 scalex mul y2 scaley mul lfigangle + 2 copy eq { 360 add } if + 2 copy 8 2 roll + 5 index { arc } { arcn } ifelse + 2 index 1 index + { 90 sub } { 90 add } ifelse + dup sin scaley mul exch cos scalex mul atan + 2 index 2 index + { 90 add } { 90 sub } ifelse + dup sin scaley mul exch cos scalex mul atan + 5 2 roll % res1 res2 ang1 ang2 anticlockwise + { exch sub } { sub } ifelse + dup 0 le { 360 add } if lfigpi mul LMax mul 180 div + } + { 0 0 x1 y1 lfigdistance 0 0 x2 y2 lfigdistance eq + 0 0 x1 y1 lfigdistance 0 gt and + { 0 0 + 0 0 x1 y1 lfigdistance + 0 0 x1 y1 lfigangle + 0 0 x2 y2 lfigangle + 2 copy eq { 360 add } if + 2 copy 8 2 roll + 5 index { arc } { arcn } ifelse + 2 index 1 index + { 90 sub } { 90 add } ifelse + 2 index 2 index + { 90 add } { 90 sub } ifelse + 5 2 roll % res1 res2 ang1 ang2 clockwise + { exch sub } { sub } ifelse + dup 0 le { 360 add } if lfigpi mul 0 0 x1 y1 lfigdistance mul 180 div + } + { x2 y2 lineto pop + x2 y2 x1 y1 lfigangle + x1 y1 x2 y2 lfigangle + x1 y1 x2 y2 lfigdistance + } ifelse + } ifelse + 4 -1 roll setmatrix + end +} def + +% lfigsetcurve: set up a Bezier curve from x0 y0 to x3 y3 +% and return arrowhead angles and length of curve (actually 0) +% x0 y0 x1 y1 x2 y2 x3 y3 lfigsetcurve +/lfigsetcurve +{ 8 copy curveto pop pop + lfigangle + 5 1 roll + 4 2 roll lfigangle + exch + 0 +} def + +% lfigpaintpath: paint a path of the given shape +% /paint [ shape ] lfigpaintpath - +/lfigpaintpath +{ + 10 dict begin + 0 newpath + /prevseen false def + /curveseen false def + { lfiggetnextitem + dup 0 eq { pop exit } + { 1 eq + { /curveseen true def + /curve exch def + curve length 0 eq { /curveseen false def } if + } + { /ycurr exch def + /xcurr exch def + prevseen + { curveseen + { curve length 4 eq + { xprev yprev + curve 0 get curve 1 get + curve 2 get curve 3 get + xcurr ycurr + lfigsetcurve pop pop pop + } + { xprev yprev xcurr ycurr + curve length 1 ge { curve 0 get } { 0 } ifelse + curve length 2 ge { curve 1 get } { 0 } ifelse + curve length 3 ge { curve 2 get } { true } ifelse + 7 1 roll + lfigsetarc pop pop pop + } ifelse + } + { xcurr ycurr lineto + } ifelse + } + { xcurr ycurr moveto + } ifelse + /xprev xcurr def + /yprev ycurr def + /prevseen true def + /curveseen false def + } ifelse + } ifelse + } loop pop pop cvx exec + end +} def + +% stroke a path of the given shape in the given linestyle and dash length. +% Return the origin and angle of the backward and forward arrow heads. +% dashlength /linestyle [shape] lfigdopath [ ] [ ] +/lfigdopath +{ + 10 dict begin + 0 + /prevseen false def + /curveseen false def + /backarrow [] def + /fwdarrow [] def + { + lfiggetnextitem + dup 0 eq { pop exit } + { + 1 eq + { /curveseen true def + /curve exch def + curve length 0 eq { /prevseen false def } if + } + { /ycurr exch def + /xcurr exch def + prevseen + { newpath xprev yprev moveto + curveseen + { curve length 4 eq + { xprev yprev + curve 0 get curve 1 get + curve 2 get curve 3 get + xcurr ycurr lfigsetcurve + } + { xprev yprev xcurr ycurr + curve length 1 ge { curve 0 get } { 0 } ifelse + curve length 2 ge { curve 1 get } { 0 } ifelse + curve length 3 ge { curve 2 get } { true } ifelse + 7 1 roll + lfigsetarc + } ifelse + } + { xcurr ycurr lineto + xcurr ycurr xprev yprev lfigangle dup 180 sub + xprev yprev xcurr ycurr lfigdistance + } ifelse + 6 index 6 index cvx exec + [ xprev yprev 5 -1 roll ] + backarrow length 0 eq + { /backarrow exch def } + { pop } ifelse + [ xcurr ycurr 4 -1 roll ] /fwdarrow exch def + } if + /xprev xcurr def + /yprev ycurr def + /prevseen true def + /curveseen false def + } ifelse + } ifelse + } loop + pop pop pop pop + backarrow length 0 eq { [ 0 0 0 ] } { backarrow } ifelse + fwdarrow length 0 eq { [ 0 0 0 ] } { fwdarrow } ifelse + end +} def + +% lfigdoarrow: draw an arrow head of given form +% dashlength /lstyle /pstyle hfrac height width [ ] lfigdoarrow - +/lfigdoarrow +{ matrix currentmatrix 8 1 roll + dup 0 get 1 index 1 get translate + 2 get rotate + [ 2 index neg 2 index 0 0 + 3 index 3 index neg + 1 index 10 index mul 0 + 7 index 7 index ] + 4 1 roll pop pop pop + dup 3 1 roll + gsave lfigpaintpath grestore lfigdopath pop pop + setmatrix +} def + +% arrow head styles +/lfigopen 0.0 def +/lfighalfopen 0.5 def +/lfigclosed 1.0 def + +% stroke no arrows, forward, back, and both +/lfignoarrow { pop pop pop pop pop pop pop pop } def +/lfigforward { 7 -1 roll lfigdoarrow pop } def +/lfigback { 8 -2 roll pop lfigdoarrow } def +/lfigboth { 8 -1 roll 7 copy lfigdoarrow pop 7 -1 roll lfigdoarrow } def + +% lfigprevious: return previous point on path +/lfigprevious +{ lfigisnumbertype + { 2 copy } + { lfigisarraytype + { 2 index 2 index } + { 0 0 } + ifelse + } ifelse +} def + +% label a point in 2nd top dictionary: /name lfigpointdef - +/lfigpointdef +{ + % (Entering lfigpointdef) lfigdebugprint + [ 4 2 roll transform + /itransform cvx ] cvx + currentdict end + 3 1 roll + % currentdict length currentdict maxlength lt + % { def } + % { exec moveto (too many labels) show stop } + % ifelse + def + begin + % (Leaving lfigpointdef) lfigdebugprint +} def + +% promote labels from second top to third top dictionary +% lfigpromotelabels - +/lfigpromotelabels +{ + % (Entering lfigpromotelabels) lfigdebugprint + currentdict end exch currentdict end + { exch 20 string cvs 2 index + (@) lfigconcat exch lfigconcat cvn exch def + } forall pop begin + % (Leaving lfigpromotelabels) lfigdebugprint +} def + +% show labels (except CIRCUM): - lfigshowlabels - +/lfigshowlabels +{ + % (Entering lfigshowlabels) lfigdebugprint + currentdict end + currentdict + { 1 index 20 string cvs (CIRCUM) search % if CIRCUM in key + { pop pop pop pop pop } + { pop cvx exec 2 copy + newpath 1.5 pt 0 360 arc + 0 setgray fill + /Times-Roman findfont 8 pt scalefont setfont + moveto 0.2 cm 0.1 cm rmoveto 20 string cvs show + } + ifelse + } forall + begin + % (Leaving lfigshowlabels) lfigdebugprint +} def + +% fix an angle to between 0 and 360 degrees: lfigfixangle +/lfigfixangle +{ + % (Entering lfigfixangle) lfigdebugprint + { dup 0 ge { exit } if + 360 add + } loop + { dup 360 lt { exit } if + 360 sub + } loop + % (Leaving lfigfixangle) lfigdebugprint +} def + +% find point on circumference of box: alpha a b lfigboxcircum x y +/lfigboxcircum +{ + % (Entering lfigboxcircum) lfigdebugprint + 4 dict begin + /b exch def + /a exch def + lfigfixangle /alpha exch def + 0 0 a b lfigangle /theta exch def + + % if alpha <= theta, return (a, a*tan(alpha)) + alpha theta le + { a a alpha sin mul alpha cos div } + { + % else if alpha <= 180 - theta, return (b*cot(alpha), b) + alpha 180 theta sub le + { b alpha cos mul alpha sin div b } + { + % else if alpha <= 180 + theta, return (-a, -a*tan(alpha)) + alpha 180 theta add le + { a neg a neg alpha sin mul alpha cos div } + { + % else if alpha <= 360 - theta, return (-b*cot(alpha), -b) + alpha 360 theta sub le + { b neg alpha cos mul alpha sin div b neg } + { + % else 360 - theta <= alpha, return (a, a*tan(alpha)) + a a alpha sin mul alpha cos div + } ifelse + } ifelse + } ifelse + } ifelse + end + % (Leaving lfigboxcircum) lfigdebugprint +} def + +% find point on circumference of diamond: alpha a b lfigdiamondcircum x y +/lfigdiamondcircum +{ + % (Entering lfigdiamondcircum) lfigdebugprint + 4 dict begin + /b exch def + /a exch def + lfigfixangle /alpha exch def + b alpha cos abs mul a alpha sin abs mul add /denom exch def + a b mul alpha cos mul denom div + a b mul alpha sin mul denom div + end + % (Leaving lfigdiamondcircum) lfigdebugprint +} def + +% find point on circumference of ellipse: alpha a b lfigellipsecircum x y +/lfigellipsecircum +{ + % (Entering lfigellipsecircum) lfigdebugprint + 4 dict begin + /b exch def + /a exch def + lfigfixangle /alpha exch def + b alpha cos mul dup mul a alpha sin mul dup mul add sqrt /denom exch def + a b mul alpha cos mul denom div + a b mul alpha sin mul denom div + end + % (Leaving lfigellipsecircum) lfigdebugprint +} def + +% find point of intersection of two lines each defined by two points +% x1 y1 x2 y2 x3 y3 x4 y4 lfiglineintersect x y +/lfiglineintersect +{ + % (Entering lfiglineintersect) lfigdebugprint + 13 dict begin + /y4 exch def + /x4 exch def + /y3 exch def + /x3 exch def + /y2 exch def + /x2 exch def + /y1 exch def + /x1 exch def + x2 x1 sub /x21 exch def + x4 x3 sub /x43 exch def + y2 y1 sub /y21 exch def + y4 y3 sub /y43 exch def + y21 x43 mul y43 x21 mul sub /det exch def + + % calculate x + y21 x43 mul x1 mul + y43 x21 mul x3 mul sub + y3 y1 sub x21 mul x43 mul add + det div + + % calculate y + x21 y43 mul y1 mul + x43 y21 mul y3 mul sub + x3 x1 sub y21 mul y43 mul add + det neg div + + end + % (Leaving lfiglineintersect) lfigdebugprint +} def + +% find point on circumference of polygon +% alpha radius num theta lfigpolycircum x y +/lfigpolycircum +{ + % (Entering lfigpolycircum) lfigdebugprint + 13 dict begin + /theta exch def + /num exch def + /radius exch def + /alpha exch def + + % calculate delta, the angle from theta to alpha + alpha theta sub lfigfixangle + + % calculate the angle which is the multiple of 360/num closest to delta + 360 num div div truncate 360 num div mul theta add /anglea exch def + + % calculate the next multiple of 360/num after anglea + anglea 360 num div add /angleb exch def + + % intersect the line through these two points with the alpha line + anglea cos anglea sin angleb cos angleb sin + 0 0 alpha cos 2 mul alpha sin 2 mul + lfiglineintersect radius lfigpmul + + end + % (Leaving lfigpolycircum) lfigdebugprint +} def + +% add CIRCUM operator with this body: lfigcircumdef - +/lfigcircumdef +{ % (Entering lfigcircumdef) lfigdebugprint + /CIRCUM exch cvx + currentdict end + 3 1 roll + % currentdict length currentdict maxlength lt + % { def } + % { exec moveto (too many labels) show stop } + % ifelse + def + begin + % (Leaving lfigcircumdef) lfigdebugprint +} def + +end +%%EndResource + +%%EndProlog + +%%BeginSetup +%%IncludeResource: font Times-Italic +/Times-Italicfnt83 vec1 /Times-Italic LoutRecode +/fnt83 { /Times-Italicfnt83 LoutFont } def +%%IncludeResource: font Times-Bold +/Times-Boldfnt84 vec1 /Times-Bold LoutRecode +/fnt84 { /Times-Boldfnt84 LoutFont } def +%%IncludeResource: font Times-Roman +/Times-Romanfnt82 vec1 /Times-Roman LoutRecode +/fnt82 { /Times-Romanfnt82 LoutFont } def +%%EndSetup + +%%Page: ? 1 +%%BeginPageSetup +%%PageResources: font Times-Italic +%%+ font Times-Bold +%%+ font Times-Roman +/pgsave save def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup + +gsave +0 15840 translate +0.0000 rotate + +grestore +gsave +0 15840 translate +0.0000 rotate +200 fnt83 0.0 0.0 0.0 setrgbcolor 3005 -1576(Originally)m 3884(published)s 4709(in)s +4914(the)s 5207(pr)s 9(oceedings)k 6221(of)s 6426(the)s +6719(5th)s 7024(Usenix)s 7626(Security)s 8327(Symposium)s 224 fnt84 +4401 -3032(DNS)m 280 fnt84 4917 -3034(and)m 224 fnt84 5437 -3032(BIND)m +280 fnt84 6065 -3034(Security)m 7127(Issues)s 240 fnt82 5620 -3494(P)m 3(aul)k +6102(V)s 14(ixie)k 5279 -3734()m 240 fnt83 4695 -4067(Internet)m +5511(Softwar)s 8(e)k 6414(Consortium)s 200 fnt82 5619 -4494(2)m +5769(May)s 13(,)k 6221(1995)s 200 fnt84 5750 -5395(Abstract)m +200 fnt82 2160 -5773(Ef)m 5(forts)k 2757(are)s 3049(underw)s 2(ay)k +3883(to)s 4088(add)s 4426(security)s 5105(to)s 5310(the)s +160 fnt82 5603 -5771(DNS)m 200 fnt82 5971 -5773(protocol.)m 6785(W)s 16(e)k +7095(ha)s 4(v)k 3(e)k 7514(observ)s 3(ed)k +8280(that)s 8628(if)s 160 fnt82 8799 -5771(BIND)m 200 fnt82 +9238 -5773(w)m 2(ould)k 9785(just)s 2160 -6013(do)m 2400(what)s +2827(the)s 160 fnt82 3110 -6011(DNS)m 200 fnt82 3468 -6013(speci\207cations)m +4590(say)s 4895(it)s 5045(should)s 5617(do,)s 5907(stop)s +6279(crashing,)s 7043(and)s 7371(start)s 7752(checking)s 8511(its)s +8738(inputs,)s 9315(then)s 9698(most)s 2160 -6253(of)m 2382(the)s +2681(e)s 3(xisting)k 3364(security)s 4049(holes)s 4525(in)s +160 fnt82 4736 -6251(DNS)m 200 fnt83 5110 -6252(as)m 5343(pr)s 3(acticed)k +200 fnt82 6147 -6253(w)m 2(ould)k 6700(go)s 6956(a)s 3(w)k 2(ay)k 13(.)k +7514(T)s 16(o)k 7776(be)s 8020(sure,)s 8457(attack)s 2(ers)k +9216(w)s 2(ould)k 9769(still)s 2160 -6493(ha)m 4(v)k 3(e)k +2588(a)s 2735(pretty)s 3258(easy)s 3670(time)s 4082(co-opting)s +160 fnt82 4905 -6491(DNS)m 200 fnt82 5282 -6493(in)m 5496(their)s +5919(break-in)s 6641(attempts.)s 7473(Our)s 7842(aim)s 8199(has)s +8523(been)s 8958(to)s 9172(get)s 160 fnt82 9474 -6491(BIND)m +200 fnt82 9922 -6493(to)m 2160 -6733(the)m 2459(point)s 2925(where)s +3467(its)s 3710(only)s 4121(vulnerabilities)s 5314(are)s 5612(due)s +5956(to)s 6167(the)s 160 fnt82 6466 -6731(DNS)m 200 fnt82 +6840 -6733(protocol,)m 7610(and)s 7954(not)s 8265(to)s 8476(the)s +8775(implementation.)s 2160 -6973(This)m 2564(paper)s 3056(describes)s 3845(our)s +4161(progress)s 4885(to)s 5090(date.)s 240 fnt84 1440 -7606(1.)m +1740(Intr)s 4(oduction)k 200 fnt82 1440 -7985(Man)m 3(y)k +1949(were)s 2382(the)s 2672(reasons)s 3315(for)s 3594(starting)s +4237(w)s 2(ork)k 4692(on)s 160 fnt82 4939 -7983(BIND)m +200 fnt82 5375 -7985(ag)m 1(ain)k 5852(a)s 1440 -8225(fe)m 5(w)k +1784(years)s 2254(back.)s 2731(The)s 160 fnt82 3092 -8223(BIND)m +200 fnt82 3532 -8225(serv)m 3(er)k 4065(and)s 4404(resolv)s 3(er)k +5092(are)s 5385(critical)s 1440 -8465(to)m 1630(the)s 1908(daily)s +2341(acti)s 5(vities)k 3087(of)s 3288(millions)s 3975(of)s +4176(Internet)s 4829(users,)s 5322(yet)s 5600(the)s 3(y)k +1440 -8705(ha)m 4(v)k 3(e)k 1861(each)s 2277(been)s +2705(infested)s 3386(with)s 3792(b)s 4(ugs)k 4217(from)s +4656(their)s 5072(\207rst)s 5433(day)s 5773(of)s 1440 -8945(use.)m +1853(W)s 16(e)k 2161(ha)s 4(v)k 3(e)k +2578(made)s 3057(some)s 3525(good)s 3973(progress)s 4695(on)s +4943(plugging)s 5701(the)s 1440 -9185(memory)m 2169(leaks)s 2642(and)s +2995(core)s 3402(dumps)s 3999(that)s 160 fnt82 4362 -9183(BIND)m +200 fnt82 4816 -9185(is)m 5013(f)s 2(amous)k 5662(for)s 8(,)k +1440 -9425(and)m 1784(along)s 2283(the)s 2582(w)s 2(ay)k +2968(we)s 3256(ha)s 4(v)k 3(e)k 3681(found)s +4203(a)s 4347(lot)s 4613(of)s 4835(w)s 2(ays)k +5298(to)s 5509(mak)s 2(e)k 160 fnt82 1440 -9663(BIND)m +200 fnt82 1879 -9665(more)m 2338(secure.)s 1840 -9976(Man)m 3(y)k +2355(of)s 2574(the)s 2870(classic)s 3451(security)s 4133(breaches)s +4881(in)s 5089(the)s 5385(history)s 1440 -10216(of)m 1674(computers)s +2571(and)s 2927(computer)s 3747(netw)s 2(orking)k 4721(ha)s 4(v)k 3(e)k +5158(had)s 5514(to)s 5737(do)s 1440 -10456(not)m 1770(with)s +2199(fundamental)s 3269(algorythm)s 4163(or)s 4404(protocol)s 5143(\210a)s 3(ws,)k +5685(b)s 4(ut)k 1440 -10696(with)m 1834(implementation)s 3123(errors.)s +3726(Sometimes)s 4650(those)s 5110(errors)s 5613(tak)s 2(e)k +1440 -10936(the)m 1721(form)s 2146(of)s 2350(ignorant)s 3052(or)s +3256(\205security)s 4011(una)s 3(w)k 2(are\206)k 4806(programming,)s +1440 -11176(such)m 1855(as)s 2070(collecting)s 2904(potentially)s 3805(unbounded)s +4743(streams)s 5399(of)s 5615(data)s 1440 -11416(from)m 1910(the)s +2236(netw)s 2(ork)k 2970(using)s 3485(functions)s 4309(which)s +4879(do)s 5162(not)s 5500(kno)s 5(w)k 1440 -11656(the)m +1784(length)s 2383(of)s 2650(their)s 3115(destination)s 4089(b)s 4(uf)k 5(fers,)k +4794(or)s 5061(the)s 5405(use)s 5771(of)s 1440 -11896(predictable)m +2391(magic)s 2945(cookies)s 3621(since)s 4097(the)s 4408(programmer')s 11(s)k +5592(goal)s 1440 -12136(is)m 1618(to)s 1819(pre)s 5(v)k 3(ent)k +2454(accidental)s 3305(data)s 3682(errors)s 4191(rather)s 4700(than)s +5089(intentional)s 1440 -12376(ones.)m 1950(Other)s 2448(times,)s 2973(a)s +3106(code)s 3527(branch)s 4114(rarely)s 4622(or)s 4833(ne)s 5(v)k 3(er)k +5312(tak)s 2(en)k 5786(in)s 1440 -12616(normal)m 2053(use)s +2367(is)s 2548(found)s 3063(to)s 3267(ha)s 4(v)k 3(e)k +3685(\205security)s 4451(f)s 2(atal\206)k 4938(b)s 4(ugs)k +5360(or)s 5575(e)s 5(v)k 3(en)k 1440 -12856(deliberate)m +2273(back)s 2699(doors)s 3192(or)s 3408(loopholes.)s 1840 -13167(While)m +2407(we)s 2720(do)s 3001(not)s 3337(intend)s 3916(to)s +4152(demean)s 4852(the)s 5176(ef)s 5(forts)k 5770(of)s +1440 -13407(those)m 1956(in)s 8(v)k 4(olv)k 3(ed)k +2735(in)s 2986(upgrading)s 3891(the)s 4230(Internet)s 4944(protocols)s +5781(to)s 1440 -13647(mak)m 2(e)k 1945(security)s 2650(a)s +2814(more)s 3299(realistic)s 4002(goal,)s 4471(we)s 4779(ha)s 4(v)k 3(e)k +5224(observ)s 3(ed)k 1440 -13887(that)m 1813(if)s 160 fnt82 +2009 -13885(BIND)m 200 fnt82 2473 -13887(w)m 2(ould)k 3045(just)s +3407(do)s 3682(what)s 4144(the)s 160 fnt82 4462 -13885(DNS)m +200 fnt82 4855 -13887(speci\207cations)m 1440 -14127(say)m 1788(it)s 1981(should)s +2596(do,)s 2929(stop)s 3344(crashing,)s 4151(and)s 4522(start)s +4946(checking)s 5748(its)s 6300 -7577(inputs,)m 6887(then)s 7280(most)s +7717(of)s 7933(the)s 8226(e)s 3(xisting)k 8903(security)s +9582(holes)s 10052(in)s 160 fnt82 10257 -7575(DNS)m 200 fnt83 +10625 -7576(as)m 6300 -7816(pr)m 3(acticed)k 200 fnt82 7120 -7817(w)m 2(ould)k +7689(go)s 7961(a)s 3(w)k 2(ay)k 13(.)k +8535(T)s 16(o)k 8813(be)s 9073(sure,)s 9526(attack)s 2(ers)k +10301(w)s 2(ould)k 6300 -8057(still)m 6705(ha)s 4(v)k 3(e)k +7182(a)s 7378(pretty)s 7950(easy)s 8411(time)s 8872(co-opting)s +160 fnt82 9744 -8055(DNS)m 200 fnt82 10170 -8057(in)m 10433(their)s +6300 -8297(break-in)m 7026(attempts.)s 7862(Our)s 8235(aim)s 8596(has)s +8924(been)s 9363(to)s 9581(get)s 160 fnt82 9887 -8295(BIND)m +200 fnt82 10339 -8297(to)m 10557(the)s 6300 -8537(point)m 6785(where)s +7346(its)s 7608(only)s 8038(vulnerabilities)s 9250(are)s 9567(due)s +9930(to)s 10160(the)s 160 fnt82 10478 -8535(DNS)m 200 fnt82 +6300 -8777(protocol,)m 7064(and)s 7402(not)s 7707(to)s 7912(the)s +8205(implementation.)s 240 fnt84 6300 -9465(2.)m 6600(Wh)s 3(y)k +7150(Is)s 192 fnt84 7396 -9463(DNS)m 240 fnt84 7838 -9465(Security)m +8747(Important?)s 200 fnt82 6300 -9890(Let')m 11(s)k 6778(say)s +7124(that)s 7503(a)s 7672(security)s 8382(conscious)s 9248(user)s +9660(al)s 2(w)k 2(ays)k 10289(uses)s 10712(a)s +160 fnt82 6300 -10128(DES)m 200 fnt82 6650 -10130(challenge/response)m 8213(de)s 5(vice)k +8777(when)s 9259(connecting)s 10183(to)s 10388(hosts)s 6300 -10370(outside)m +6940(the)s 7248(local)s 7699(netw)s 2(ork,)k 8465(b)s 4(ut)k +8781(when)s 9278(connecting)s 10217(locally)s 13(,)k 6300 -10610(she)m +6635(\207gures)s 7247(that)s 7615(it)s 7795(is)s 7997(safe)s +8386(to)s 8611(send)s 9046(her)s 9370(passw)s 2(ord)k +10190(in)s 10415(clear)s 6300 -10850(te)m 3(xt)k 6660(since)s +7133(she)s 7463(kno)s 5(ws)k 128 fnt82 7979 -10761(1)m +200 fnt82 8108 -10850(that)m 8471(outsiders)s 9254(cannot)s 9850(snif)s 5(f)k +10274(on)s 10539(her)s 6300 -11090(pri)m 5(v)k 5(ate)k +6906(netw)s 2(ork.)k 7721(Further)s 8371(assume)s 9020(that)s +9382(hers)s 9777(is)s 9973(one)s 10325(of)s 10555(the)s +6300 -11330(man)m 3(y)k 6796(installations)s 7812(which)s 8355(does)s +8776(not)s 9087(restrict)s 9693(outbound)s 160 fnt82 10504 -11328(TCP)m +200 fnt82 6300 -11570(connections,)m 7383(on)s 7665(the)s 7990(assumption)s +8979(that)s 9359(\207re)s 5(w)k 2(alls)k 10118(are)s +10442(only)s 6300 -11810(necessary)m 7121(to)s 7325(k)s 2(eep)k +7748(people)s 200 fnt83 8328 -11809(out)m 128 fnt82 8583 -11721(2)m +200 fnt82 8647 -11810(.)m 8796(If)s 8977(her)s 9280(name)s +9760(serv)s 3(er)k 10291(is)s 10472(able)s 6300 -12050(to)m +6509(recei)s 5(v)k 3(e)k 160 fnt82 7128 -12048(UDP)m +200 fnt82 7500 -12050(pack)m 2(ets)k 8148(on)s 8402(port)s +8777(53)s 9031(from)s 9472(outside)s 10101(her)s 10409(local)s +6300 -12290(netw)m 2(ork,)k 7091(then)s 7524(this)s 7901(security)s +8620(conscious)s 9495(user)s 9916(is)s 10138(in)s 10383(for)s +10705(a)s 6300 -12530(potentially)m 7201(rough)s 7717(ride.)s 6700 -12841(Before)m +7318(we)s 7627(be)s 3(gin,)k 8194(we')s 10(d)k +8659(lik)s 2(e)k 9032(to)s 9264(emphasize)s 10180(that)s +10555(the)s 6300 -13081(e)m 3(xamples)k 7145(are)s 7484(not)s +7836(dra)s 3(wn)k 8428(from)s 8912(theoretical)s 9847(studies,)s +10546(b)s 4(ut)k 6300 -13321(rather)m 6813(the)s 200 fnt84 +7106 -13322(tcpdump)m 200 fnt82 7920 -13321(command)m 8756(running)s 9427(on)s +9677(real)s 10024(netw)s 2(orks.)k gsave +6300 -13861 translate +200 fnt82 0.0 0.0 0.0 setrgbcolor 1134 0 0 0 200 240 50 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +102 fnt82 0.0 0.0 0.0 setrgbcolor +6300 -14042(1)m 160 fnt82 6351 -14113(W)m 12(e')k 1(ll)k +6741(assume)s 7251(that)s 7530(she)s 7783(is)s 7929(correct.)s +102 fnt82 6300 -14295(2)m 160 fnt82 6351 -14366(An)m 6586(assumption)s +7353(with)s 7676(which)s 8106(we)s 8332(do)s 8532(not)s +8776(agree.)s +grestore + +pgsave restore +showpage + +%%Page: ? 2 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +/pgsave save def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 15840 translate +0.0000 rotate + +grestore +gsave +0 15840 translate +0.0000 rotate +200 fnt82 0.0 0.0 0.0 setrgbcolor 1440 -1576(F)m 3(olks)k 1944(o)s 3(v)k 3(er)k +2356(on)s 2620(the)s 2927(Dark)s 3389(Side)s 3807(ha)s 4(v)k 3(e)k +4240(tools)s 4691(to)s 4910(e)s 3(xploit)k 5524(these)s +1440 -1816(weaknesses,)m 2469(and)s 2809(the)s 3(y)k 3201(are)s +3495(real,)s 3894(right)s 4322(here,)s 4766(right)s 5194(no)s 5(w)k 13(.)k +5672(W)s 16(e)k 1440 -2056(learned)m 2067(of)s 2275(these)s +2725(weaknesses)s 3694(by)s 3936(studying)s 4665(some)s 5127(successful)s +1440 -2296(attacks,)m 2092(not)s 2398(just)s 2736(by)s 2987(a)s +3126(careful)s 3728(e)s 3(xamination)k 4760(of)s 4977(the)s +5271(protocol)s 1440 -2536(and)m 1778(the)s 160 fnt82 2071 -2534(BIND)m +200 fnt82 2510 -2536(source)m 3079(code.)s 200 fnt84 1440 -3036(2.1)m +1690(.)s 1840(Misdir)s 3(ected)k 2902(Destination)s 200 fnt82 +1440 -3414(A)m 1660(user)s 2067(asks)s 2485(her)s 2815(telnet)s +3332(client)s 3849(to)s 4080(connect)s 4775(to)s 200 fnt84 +5006 -3415(host1)m 200 fnt82 5460 -3414(.)m 5636(Her)s 1440 -3654(client)m +1972(asks)s 2405(the)s 2739(name)s 3261(serv)s 3(er)k +3834(for)s 4157(the)s 4491(address)s 5178(of)s 200 fnt84 +5435 -3655(host1)m 200 fnt82 5889 -3654(,)m 1440 -3894(recei)m 5(v)k 3(es)k +2201(a)s 2408(corrupt)s 3102(answer)s 8(,)k 3826(and)s +4233(then)s 4695(initiates)s 5442(a)s 160 fnt82 5649 -3892(TCP)m +200 fnt82 1440 -4134(connection)m 2415(to)s 2671(the)s 3015(telnet)s +3557(serv)s 3(er)k 4140(at)s 4384(that)s 4783(address.)s +5580(This)s 1440 -4374(address)m 2098(does)s 2525(not)s 2842(correspond)s +3789(to)s 4006(her)s 4322(intended)s 5070(host,)s 5514(b)s 4(ut)k +5827(it)s 1440 -4614(displays)m 2140(the)s 2431(usual)s 2899(greeting,)s +3649(and)s 3985(she)s 4298(types)s 4766(her)s 5068(usual)s +5536(login)s 1440 -4854(and)m 1789(passw)s 2(ord.)k 2700(The)s +3071(connection)s 4006(drops,)s 4560(she)s 4886(tries)s 5288(it)s +5459(ag)s 1(ain,)k 1440 -5094(all)m 1677(is)s 1848(well,)s +2279(she)s 2583(chalks)s 3130(it)s 3279(up)s 3518(to)s +3712(a)s 3839(gremlin)s 4497(in)s 4691(the)s 4973(netw)s 2(ork)k +5663(and)s 1440 -5334(for)m 3(gets)k 2032(all)s 2273(about)s +2759(it.)s 3012(But)s 3343(there)s 200 fnt83 3783 -5333(is)m +200 fnt82 3958 -5334(a)m 4089(gremlin)s 4751(in)s 4949(her)s +5246(netw)s 2(ork,)k 1440 -5574(and)m 1778(that)s 2126(gremlin)s +2795(just)s 3132(harv)s 3(ested)k 3941(her)s 4245(passw)s 2(ord.)k +200 fnt84 1440 -6115(2.2)m 1690(.)s 1840(Misdir)s 3(ected)k +2902(Sour)s 3(ce)k 200 fnt82 1440 -6494(If)m 1630(that)s +1986(same)s 2452(user)s 2841(depends)s 3552(on)s 3810(name)s +4299(based)s 4810(authentication)s 1440 -6734(when)m 1941(inside)s 2485(what)s +2941(she)s 3275(considers)s 4095(to)s 4319(be)s 4576(the)s +4888(safe)s 5276(con\207nes)s 1440 -6974(of)m 1697(her)s 2042(internal)s +2740(netw)s 2(ork,)k 3532(she')s 11(s)k 4020(in)s +4266(for)s 4589(another)s 5277(hellride.)s 1440 -7214(An)m 3(yone)k +2131(on)s 2393(an)s 3(y)k 2740(interior)s 3387(host)s +3781(can)s 4119(almost)s 4711(tri)s 5(vially)k 5397(bypass)s +1440 -7454(name)m 1944(based)s 2470(authentication,)s 3720(causing)s 4401(this)s +4761(user')s 11(s)k 5297(hosts)s 5779(to)s 1440 -7694(belie)m 5(v)k 3(e)k +2051(that)s 2394(\205the)s 3(y\206)k 2955(are)s 3242(\205her\206)s +3717(and)s 4050(therefore)s 4812(allo)s 5(wing)k 5549(them)s +1440 -7934(to)m 1643(log)s 1946(in)s 2149(with)s 2551(her)s +2853(access)s 3407(rights)s 3908(and)s 4244(pri)s 5(viledges.)k +5221(An)s 3(y)k 5610(host)s 1440 -8174(which)m 1998(is)s +2201(allo)s 5(wed)k 2897(to)s 3123(accept)s 3701(incoming)s +4525(connections)s 5547(from)s 1440 -8414(outside)m 2087(the)s 2402(local)s +2860(netw)s 2(ork)k 3583(could)s 4098(be)s 4358(fooled)s +4939(in)s 5166(this)s 5525(same)s 1440 -8654(w)m 2(ay)k 13(,)k +1857(b)s 4(ut)k 2158(by)s 2408(an)s 2646(outside)s +3271(host.)s 240 fnt84 1440 -9342(3.)m 1740(Ho)s 2(w)k +2277(Did)s 2709(That)s 3261(Happen?)s 200 fnt82 1440 -9767(Clearly)m 13(,)k +2150(the)s 2481(abo)s 3(v)k 3(e)k 3039(acti)s 5(vities)k +3838(were)s 4312(not)s 4655(design)s 5263(goals)s 5771(of)s +1440 -10007(the)m 160 fnt82 1749 -10005(DNS)m 200 fnt82 2133 -10007(protocol)m +2863(or)s 3095(of)s 3327(the)s 160 fnt82 3636 -10005(BIND)m +200 fnt82 4091 -10007(implementation)m 5406(of)s 5638(that)s 1440 -10247(protocol.)m +2254(Let')s 11(s)k 2701(look)s 3106(at)s 3299(ho)s 5(w)k +3688(the)s 3(y)k 4078(could)s 4571(occur)s 11(.)k +200 fnt84 1440 -10788(3.1)m 1690(.)s 1840(Misdir)s 3(ected)k +2902(Destination)s 200 fnt82 1440 -11166(It)m 1627(could)s 2136(be)s +2390(as)s 2621(simple)s 3217(as)s 3448(a)s 3602(for)s 3(ged)k +4185(response)s 4947(sent)s 5333(directly)s 1440 -11406(to)m 1673(her)s +2005(resolv)s 3(er)k 11(.)k 2759(Ev)s 3(en)k +3244(after)s 3685(25)s 3963(years)s 4460(of)s 4704(e)s 3(xperience,)k +5690(the)s 1440 -11646(Internet)m 2136(still)s 2511(has)s 2854(no)s +3132(production)s 4074(routers)s 4704(which)s 5269(disallo)s 5(w)k +1440 -11886(pack)m 2(ets)k 2084(with)s 2488(impossible)s 3400(source)s +3969(addresses.)s 4880(So)s 5141(if)s 5312(you)s 5662(can)s +1440 -12126(route)m 1919(pack)s 2(ets)k 2583(to)s 2808(someone,)s +3636(you)s 4006(can)s 4352(mak)s 2(e)k 4851(those)s +5341(pack)s 2(ets)k 1440 -12366(look)m 1857(as)s 2084(though)s +2701(the)s 3(y)k 3103(came)s 3584(from)s 4033(a)s +4183(close)s 4653(and)s 5003(trusted)s 5606(host)s 1440 -12606(\211)m +1600(e)s 5(v)k 3(en)k 2028(if)s 2209(the)s 3(y)k +2609(originated)s 3476(outside)s 4111(that)s 4469(host')s 11(s)k +4993(netw)s 2(ork.)k 5804(If)s 1440 -12846(an)m 1678(attack)s 2(er)k +2354(can)s 2680(predict)s 3282(the)s 3575(time)s 3978(that)s +4326(a)s 4464(query)s 4968(will)s 5327(be)s 5565(sent,)s +1440 -13086(he)m 1699(need)s 2146(only)s 2572(\210ood)s 3054(the)s +3368(resolv)s 3(er)k 4076(with)s 4501(bogus)s 5049(replies)s +5649(and)s 1440 -13326(hope)m 1890(that)s 2250(his)s 2544(bogons)s +3183(arri)s 5(v)k 3(e)k 3700(earlier)s 4268(than)s +4673(the)s 4978(real)s 5337(answer)s 11(.)k 1440 -13566(Predicting)m +2351(the)s 160 fnt82 2687 -13564(UDP)m 200 fnt82 3098 -13566(port)m +3512(used)s 3970(by)s 4263(the)s 4599(resolv)s 3(er)k +5329(for)s 5654(an)s 3(y)k 1440 -13806(gi)m 5(v)k 3(en)k +1947(query)s 2473(might)s 3010(require)s 3645(that)s 4015(a)s +4175(no)s 3(vice)k 4775(attack)s 2(er)k 5473(spend)s +1440 -14046(se)m 5(v)k 3(eral)k 2038(minutes)s 2712(thinking)s +3421(about)s 3908(it,)s 4112(b)s 4(ut)k 4407(man)s 3(y)k +4891(attack)s 2(ers)k 5638(will)s 1440 -14286(consider)m 2164(that)s +2512(time)s 2915(well)s 3307(spent.)s 6700 -1576(This)m 7114(w)s 2(ould)k +7671(not)s 7986(ha)s 4(v)k 3(e)k 8415(w)s 2(ork)k 2(ed)k +9069(in)s 9284(our)s 9610(e)s 3(xample,)k 10391(since)s +6300 -1816(we')m 10(re)k 6820(assuming)s 7650(a)s 7816(one-w)s 2(ay)k +8578(\207re)s 5(w)k 2(all.)k 9356(Her)s 9732(resolv)s 3(er)k +10447(isn')s 3(t)k 6300 -2056(reachable)m 7158(by)s 7455(pack)s 2(ets)k +8146(from)s 8630(outside)s 9302(her)s 9653(net)s 9993(\211)s +10190(b)s 4(ut)k 10538(her)s 6300 -2296(name)m 6812(serv)s 3(er)k +7375(is.)s 7688(If)s 7901(that)s 8280(name)s 8792(serv)s 3(er)k +9355(can)s 9712(be)s 9981(corrupted,)s 6300 -2536(e)m 5(v)k 3(en)k +6804(for)s 7172(an)s 7496(instant,)s 8212(then)s 8691(an)s +9015(attack)s 2(er)k 9777(can)s 10189(redirect)s 6300 -2776(telnet)m +6825(sessions)s 7560(\(containing)s 8551(passw)s 2(ords\),)k 9578(electronic)s +10445(mail)s 6300 -3016(\(containing)m 7349(proprietary)s 8375(information\),)s 9573(or)s +9881(e)s 5(v)k 3(en)k 10391(other)s 160 fnt82 +6300 -3254(DNS)m 200 fnt82 6674 -3256(queries)m 7304(\(thus)s 7758(using)s +8246(one)s 8590(name)s 9077(serv)s 3(er)k 9615(to)s +9826(help)s 10225(corrupt)s 6300 -3496(others.\))m 6990(Ev)s 3(ery)k +7501(one)s 7827(of)s 8031(those)s 8489(things)s 9014(has)s +9317(been)s 9731(seen)s 10122(in)s 10315(action)s 6300 -3736(\211)m +6450(we')s 10(re)k 6942(not)s 200 fnt83 7247 -3735(just)m +200 fnt82 7584 -3736(being)m 8077(paranoid.)s 200 fnt84 6300 -4277(3.2)m +6550(.)s 6700(Misdir)s 3(ected)k 7762(Sour)s 3(ce)k +200 fnt82 6300 -4656(On)m 6594(late)s 6930(mod)s 7285(el)s +160 fnt82 7478 -4654(BSD)m 200 fnt82 7787 -4656(-de)m 8041(ri)s 5(v)k 3(ed)k +8492(sys)s 8746(tems,)s 9221(name)s 9702(based)s 10205(au)s +10393(then)s 10736(-)s 6300 -4896(ti)m 6410(ca)s 6586(tion)s +6975(usu)s 7252(al)s 7395(ly)s 7629(tak)s 2(es)k +8114(the)s 8436(form)s 8902(of)s 9147(\207les)s 9557(con)s +9845(tain)s 10143(ing)s 10477(lists)s 6300 -5136(of)m 6551(host)s +6968(names)s 7561(or)s 7812(ad)s 8000(dress)s 8408(es,)s +8708(pos)s 8985(si)s 9117(bly)s 9457(in)s 9612(clud)s +9955(ing)s 10295(a)s 10468(user)s 6300 -5376(name)m 6769(to)s +6962(be)s 7188(matched)s 7900(ag)s 1(ainst)k 8500(the)s +8781(re)s 8935(mote)s 9371(\(\205incoming\206\))s 10470(user)s 6300 -5616(name)m +128 fnt82 6731 -5527(1)m 200 fnt82 6795 -5616(.)m 6896(A)s +7091(con)s 7379(v)s 3(en)k 7664(tion)s 8025(is)s +8208(up)s 8408(held)s 8802(where)s 9288(by)s 9539(cer)s +9781(tain)s 160 fnt82 10130 -5614(TCP)m 200 fnt82 10472 -5616(port)m +6300 -5856(num)m 6655(bers)s 128 fnt82 6986 -5767(2)m 200 fnt82 +7099 -5856(are)m 7390(able)s 7770(to)s 7974(be)s 8211(bound)s +8760(only)s 9164(by)s 9413(pro)s 9679(cess)s 10009(es)s +10223(e)s 3(x)k 10408(e)s 10496(cut)s 10739(-)s +6300 -6096(ing)m 6608(with)s 7015(so-)s 7258(called)s 7785(\205super)s +8357(user\206)s 8829(pri)s 5(v)k 9145(iledges)s 128 fnt82 +9708 -6007(3)m 200 fnt82 9772 -6096(.)m 9925(This)s 10332(rather)s +6300 -6336(brit)m 6576(tle)s 6849(chain)s 7355(of)s 7596(causal)s +8092(i)s 8147(ty)s 8377(per)s 8631(mits)s 9048(the)s +160 fnt82 9366 -6334(BSD)m 200 fnt84 9750 -6337(ruser)m 3(ok\(\))k +200 fnt82 10617 -6336(li)m 10727(-)s 6300 -6576(brary)m 6780(call)s +7126(to)s 7341(as)s 7506(sume)s 7986(that)s 8344(the)s +8647(re)s 8801(mote)s 9259(user)s 9650(name)s 10141(gi)s 5(v)k +10391(en)s 10639(in)s 6300 -6816(the)m 6603(data)s 6994(stream)s +7583(is)s 7775(\205authentic\206)s 8740(from)s 9187(the)s 9490(point)s +9960(of)s 10186(vie)s 5(w)k 10628(of)s 6300 -7056(the)m +6598(re)s 6752(mote)s 7205(host)s 7592(and)s 7935(its)s +8177(ad)s 8365(min)s 8675(is)s 8807(tra)s 9016(tors.)s +9469(Users)s 9976(are)s 10273(not)s 10583(al)s 10726(-)s +6300 -7296(lo)m 5(wed)k 6834(to)s 7041(claim,)s 7584(when)s +8068(the)s 3(y)k 8460(use)s 8777(the)s 200 fnt84 +9072 -7297(rsh)m 200 fnt82 9400 -7296(or)m 200 fnt84 9618 -7297(rdist)m +200 fnt82 10067 -7296(or)m 200 fnt84 10285 -7297(rlogin)m 200 fnt82 +6300 -7536(com)m 6643(mands,)s 7265(that)s 7615(the)s 3(y)k +8007(are)s 8301(some)s 8721(body)s 9173(the)s 3(y')k 10(re)k +9775(not)s 10082(\211)s 10234(at)s 10429(least)s 6300 -7776(on)m +6550(well)s 6942(run,)s 7308(trust)s 7661(w)s 2(or)k +7969(th)s 1(y)k 8273(mul)s 8583(tius)s 8870(er)s +9074(hosts.)s 160 fnt82 6700 -8085(BSD)m 200 fnt82 7009 -8087(')m 11(s)k +7264(security)s 8016(took)s 8494(a)s 8705(giant)s 9226(step)s +9669(forw)s 2(ard)k 10420(back)s 6300 -8327(in)m 6567(1989)s +7079(or)s 7357(so,)s 7696(when)s 8240(the)s 8595(callers)s +9224(of)s 200 fnt84 9502 -8328(ruser)m 3(ok\(\))k 200 fnt82 +10406 -8327(were)m 6300 -8567(encouraged)m 7316(to)s 7569(do)s 7867(more)s +8374(than)s 8815(blindly)s 9478(assume)s 10161(that)s 10557(the)s +6300 -8807(result)m 6891(of)s 200 fnt84 7207 -8808(gethostbyaddr\(getpeer)m 3(name\()k +200 fnt82 9659 -8807(remote)m 200 fnt84 10211 -8808(\)\))m 200 fnt82 +10493 -8807(w)m 2(as)k 6300 -9047(accurate.)m 7095(It)s 7250(used)s +7649(to)s 7838(be)s 8060(that)s 8392(whate)s 5(v)k 3(er)k +160 fnt82 9147 -9045(DNS)m 200 fnt82 9499 -9047(g)m 1(a)k 4(v)k 3(e)k +9901(as)s 10100(the)s 10377(name)s 6300 -9287(corresponding)m 7535(to)s +7785(the)s 8123(source)s 8737(address)s 9428(of)s 9689(a)s +9872(connection,)s 6300 -9527(w)m 2(as)k 6717(used)s 7192(directly)s +7909(as)s 8184(the)s 8537(search)s 9154(k)s 2(e)k 3(y)k +9547(when)s 10089(scanning)s 200 fnt84 6300 -9768(~/.rhosts)m 200 fnt82 +7150 -9767(and)m 7560(its)s 7869(bretheren.)s 8842(After)s 9383(someone)s +10213(noticed)s 6300 -10007(that)m 6684(the)s 7013(name)s 7530(serv)s 3(er)k +8098(being)s 8627(ask)s 2(ed)k 9164(for)s 9482(this)s +9855(information)s 6300 -10247(w)m 2(as)k 6675(the)s 6986(one)s +7342(belonging)s 8208(to)s 8431(the)s 8742(connection')s 11(s)k +9816(initiator)s 8(,)k 10555(the)s 6300 -10487(con)m 8(v)k 3(ention)k +7210(changed:)s 7964(No)s 5(w)k 13(,)k 8419(after)s +8817(calling)s 200 fnt84 9393 -10488(gethostbyaddr\(\))m 200 fnt82 10754 -10487(,)m +6300 -10727(the)m 6626(result)s 7150(is)s 7365(passed)s 7978(back)s +8437(through)s 200 fnt84 9141 -10728(gethostbyname\(\))m 200 fnt82 10640 -10727(to)m +6300 -10967(see)m 6642(if)s 6852(the)s 7184(addresses)s 8034(and)s +8411(names)s 9008(all)s 9295(match.)s 9970(The)s 10369(name)s +6300 -11207(serv)m 3(er)k 6843(for)s 200 fnt84 7136 -11208(gethostbyname\(\))m +200 fnt82 8613 -11207(will)m 8983(be,)s 9282(barring)s 9918(corruption,)s +6300 -11447(authoritati)m 5(v)k 3(e)k 7346(for)s 7627(an)s 3(y)k +7961(gi)s 5(v)k 3(en)k 8445(host)s 8826(name)s +9306(in)s 200 fnt84 9510 -11448(~/.rhosts)m 200 fnt82 10287 -11447(\(et)m +10545(al.\))s 6300 -11687(Someone)m 7104(who)s 7510(can)s 7848(mak)s 2(e)k +8339(their)s 8765(address)s 9423(appear)s 10015(to)s 10232(map)s +10637(to)s 6300 -11927(one)m 6655(of)s 6888(your)s 7321(hosts)s +7797(will)s 8173(ha)s 4(v)k 3(e)k 8609(to)s +8831(tak)s 2(e)k 9227(some)s 9714(e)s 3(xtra)k +10175(steps)s 10639(to)s 6300 -12167(also)m 6670(mak)s 2(e)k +7149(your)s 7565(host)s 7947(appear)s 8527(to)s 8732(ha)s 4(v)k 3(e)k +9151(one)s 9489(of)s 9705(his)s 9987(addresses.)s 6700 -12478(\(SunOS)m +7403(put)s 7729(this)s 8087(check)s 8622(into)s 200 fnt84 +9003 -12479(gethostbyaddr\(\))m 200 fnt82 10435 -12478(\211)m 10606(an)s 6300 -12718(error)m +6728(that)s 7068(will)s 7419(li)s 5(v)k 3(e)k +7751(in)s 7948(inf)s 2(amy)k 13(,)k 8589(since)s +9039(not)s 9336(e)s 5(v)k 3(ery)k 9812(caller)s +10294(of)s 10502(that)s 6300 -12958(function)m 7033(w)s 2(ants)k +7564(to)s 7788(get)s 8100(an)s 8357(\205error\206)s 8988(return)s +9532(status)s 10053(when)s 10554(the)s gsave +6300 -13574 translate +200 fnt82 0.0 0.0 0.0 setrgbcolor 1134 0 0 0 200 240 50 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +102 fnt82 0.0 0.0 0.0 setrgbcolor +6300 -13755(1)m 160 fnt82 6351 -13826(E.g.,)m 160 fnt84 6688(hosts.equi)s 1(v)k +160 fnt82 7443(,)s 160 fnt84 7523(hosts.lpd)s 160 fnt82 +8128(,)s 160 fnt84 8208(~/.rhosts)s 102 fnt82 6300 -14041(2)m +160 fnt82 6351 -14112(Those)m 6781(from)s 7131(512)s 7411(to)s +7575(1023.)s 102 fnt82 6300 -14295(3)m 160 fnt82 6351 -14366(This)m +6674(con)s 6(v)k 2(ention)k 7416(is)s 7562(of)s +7735(course)s 8192(meaningless)s 9021(on)s 9221(single-user)s 9961(hosts.)s + +grestore + +pgsave restore +showpage + +%%Page: ? 3 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +/pgsave save def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 15840 translate +0.0000 rotate + +grestore +gsave +0 15840 translate +0.0000 rotate +200 fnt82 0.0 0.0 0.0 setrgbcolor 1440 -1576(forw)m 2(ard)k 2150(and)s +2520(re)s 5(v)k 3(erse)k 3167(lookups)s 3881(yield)s +4361(asymmetric)s 5370(results.)s 1440 -1816(The)m 1853(proper)s 2476(place)s +2998(for)s 3333(this)s 3723(mapping)s 4524(logic)s 5025(is)s +5260(in)s 5518(those)s 1440 -2056(applications)m 2459(and)s 2805(library)s +3393(calls)s 3814(who)s 4216(intend)s 4772(to)s 4985(use)s +5308(the)s 5609(data)s 1440 -2296(for)m 1720(some)s 2188(kind)s +2591(of)s 2805(authentication)s 3980(\211)s 4128(it)s 4286(is)s +4466(not)s 4769(a)s 4905(naming)s 5551(issue)s 1440 -2536(per)m +1744(se,)s 2009(and)s 2347(does)s 2762(not)s 3067(belong)s +3660(in)s 3865(the)s 4158(resolv)s 3(er)k 11(.\))k +1840 -2847(As)m 2114(ef)s 5(fecti)k 5(v)k 3(e)k +2848(as)s 3066(that)s 3417(e)s 3(xtra)k 200 fnt84 +3864 -2848(gethostbyname\(\))m 200 fnt82 5333 -2847(call)m 5672(has)s 1440 -3087(been,)m +1908(its)s 2137(goal)s 2522(w)s 2(as)k 2871(to)s +3068(k)s 2(eep)k 3484(attack)s 2(ers)k 4229(from)s +4658(just)s 4987(editing)s 5582(their)s 160 fnt82 1440 -3325(IN-ADDR.ARP)m 14(A)k +200 fnt82 2603 -3327(zones)m 3097(and)s 3426(zooming)s 4165(on)s +4406(in.)s 4702(No)s 4987(thought)s 5638(w)s 2(as)k +1440 -3567(gi)m 5(v)k 3(en)k 1949(to)s 2178(whether)s +2893(the)s 3210(name)s 3715(serv)s 3(ers)k 4348(could)s +4865(be)s 5127(corrupted.)s 1440 -3807(So)m 1724(while)s 2239(an)s +2500(attack)s 2(er)k 3199(has)s 3537(a)s 3698(little)s +4134(more)s 4616(w)s 2(ork)k 5097(to)s 5325(do)s +5598(no)s 5(w)k 1440 -4047(than)m 1853(in)s 2078(the)s +2391(Old)s 2760(Days,)s 3289(it)s 3469(is)s 3671(still)s +4038(tri)s 5(vially)k 4732(easy)s 5155(to)s 5380(pollute)s +1440 -4287(the)m 1733(caches)s 2312(of)s 2528(the)s 2821(set)s +3091(of)s 3307(serv)s 3(ers)k 3916(who)s 4310(will)s +4669(be)s 4907(ask)s 2(ed)k 5408(for)s 5690(the)s +200 fnt84 1440 -4528(gethostbyaddr\(\))m 200 fnt82 2885 -4527(and)m 200 fnt84 +3257 -4528(gethostbyname\(\))m 200 fnt82 4757 -4527(answers,)m 5531(or)s 5781(to)s +1440 -4767(\210ood)m 1905(the)s 2202(resolv)s 3(ers)k 2970(with)s +3378(bogus)s 3909(responses)s 4736(at)s 4933(the)s 5230(time)s +5637(that)s 1440 -5007(the)m 3(y)k 1830(are)s 2122(predicted)s +2912(to)s 3117(be)s 3355(w)s 2(aiting)k 4000(for)s +4282(the)s 4575(answers.)s 1840 -5318(If)m 2035(an)s 2286(attack)s 2(er)k +2975(can)s 3314(reach)s 3807(the)s 4113(victim')s 11(s)k +4816(host,)s 5261(the)s 3(y)k 5664(can)s 1440 -5558(probably)m +2223(mak)s 2(e)k 2726(their)s 3164(host)s 3570(name)s +4075(seem)s 4557(to)s 4786(be)s 5048(almost)s 5652(an)s 3(y)k +1440 -5798(arbitrary)m 2210(string)s 2749(when)s 3267(vie)s 5(wed)k +3923(by)s 4209(the)s 4538(victim')s 11(s)k 200 fnt84 +5264 -5799(rlogind)m 200 fnt82 5884 -5798(.)m 1440 -6038(And,)m 1869(if)s +2025(the)s 3(y)k 2400(can)s 2711(also)s 3066(break)s +3543(\205super)s 4097(user\206)s 4551(on)s 4786(the)s 5064(source)s +5618(host)s 1440 -6278(\(or)m 1727(if)s 1903(that)s 2256(host)s +2643(is)s 2830(their)s 3249(o)s 5(wn)k 3643(of\207ce)s +4151(w)s 2(orkstation\),)k 5260(the)s 3(y)k 5655(can)s +1440 -6518(mak)m 2(e)k 1930(the)s 2234(victim)s 2803(see)s +3117(an)s 3(y)k 3463(arbitrary)s 4208(remote)s 4821(user)s +5213(name.)s 5805(If)s 1440 -6758(this)m 1777(attack)s 2(er)k +2453(kno)s 5(ws)k 3019(an)s 3(y)k 3354(of)s +3570(the)s 3863(contents)s 4576(of)s 4792(your)s 200 fnt84 +5208 -6759(~/.rhosts)m 200 fnt82 1440 -6998(\207les)m 1817(or)s 2029(your)s +2441(~B)s 2682(hosts.equi)s 5(v)k 3625(\207le)s 3925(\211)s +4071(and)s 4405(these)s 4859(are)s 5147(eminently)s 1440 -7238(guessable)m +2263(\211)s 2413(then)s 2806(the)s 3(y)k 3196(are)s +200 fnt83 3488 -7237(in)m 200 fnt82 3643 -7238(.)m 240 fnt84 +1440 -7926(4.)m 1740(Pr)s 4(otocol)k 2659(V)s 8(iew)k +3229(of)s 3488(W)s 15(eaknesses)k 200 fnt82 1440 -8306(One)m +1869(w)s 2(ay)k 2296(of)s 2559(looking)s 3266(at)s +3506(these)s 4011(weaknesses)s 5035(is)s 5264(from)s 5748(an)s +1440 -8546(operational)m 2461(point)s 2997(of)s 3289(vie)s 5(w)k 13(,)k +3834(which)s 4447(gi)s 5(v)k 3(en)k 5008(the)s +5377(current)s 1440 -8786(state)m 1883(of)s 2129(the)s 2452(art,)s +2791(tells)s 3201(us:)s 200 fnt83 3513 -8785(name)m 4025(based)s +4570(authentication)s 5801(is)s 1440 -9025(inher)m 7(ently)k 2303(insecur)s 7(e)k +200 fnt82 2969 -9026(.)m 3133(Sessions)s 3882(\(whether)s 160 fnt82 +4653 -9024(TELNET)m 200 fnt82 5253 -9026(,)m 160 fnt82 5367 -9024(NFS)m +200 fnt82 5658 -9026(,)m 5772(or)s 1440 -9266(whate)m 5(v)k 3(er\))k +2279(should)s 2863(require)s 3478(something)s 4360(stronger)s 5064(than)s +5459(trying)s 1440 -9506(to)m 1645(determine)s 2490(a)s 2628(host')s 11(s)k +3142(name)s 3623(and)s 3961(and)s 4299(then)s 4692(looking)s +5352(for)s 5634(that)s 1440 -9746(name)m 1923(in)s 2130(some)s +2602(statically)s 3370(con\207gured)s 4275(list.)s 4619(\()s 4685([)s +4751(RFC1510)s 5528(])s 5646(and)s 1440 -9986([)m 1506(RFC1760)s +2283(])s 2399(are)s 2691(each)s 3105(cause)s 3596(for)s +3878(optimism.\))s 1840 -10297(From)m 2307(the)s 2585(bottom,)s 3235(though,)s +3875(these)s 4318(weaknesses)s 5280(all)s 5513(come)s 1440 -10537(with)m +1875(particular)s 2717(sets)s 3095(of)s 3342(details)s 3941(and)s +4310(can)s 4667(be)s 4936(described)s 5779(in)s 1440 -10777(terms)m +1960(of)s 160 fnt82 2205 -10775(DNS)m 200 fnt82 2602 -10777(protocol)m +3345(elements.)s 4230(As)s 4530(implementors)s 5703(we)s 1440 -11017(are)m +1728(more)s 2183(interested)s 3001(in)s 3202(this)s 3535(vie)s 5(w)k +3963(than)s 4352(in)s 4553(the)s 4842(more)s 5297(political)s +1440 -11257(questions)m 2225(of)s 2424(Global)s 2999(Internet)s 3650(Authentication.)s +4966(So)s 5210(let')s 11(s)k 5573(ha)s 4(v)k 3(e)k +1440 -11497(a)m 1595(look)s 2017(at)s 2227(the)s 2537(pack)s 2(ets,)k +3248(shall)s 3690(we?)s 4127(After)s 4613(that)s 4978(we')s 2(ll)k +5451(tak)s 2(e)k 5847(a)s 1440 -11737(look)m 1845(at)s +2038(the)s 2331(w)s 2(ays)k 2788(the)s 3(y)k +3178(can)s 3504(be)s 3742(perv)s 3(erted.)k 1840 -12048(W)m 16(e)k +2161(do)s 2422(not)s 2738(in)s 2893(tend)s 3297(to)s +3513(present)s 4148(an)s 4397(e)s 3(x)k 4582(haus)s +4947(ti)s 5(v)k 3(e)k 5298(de)s 5486(scrip)s +5872(-)s 1440 -12288(tion)m 1794(of)s 160 fnt82 2004 -12286(DNS)m +200 fnt82 2366 -12288(\211)m 2510([)s 2576(RFC1034)s 3353(])s +3463(and)s 3795([)s 3861(RFC1035)s 4638(])s 4748(al)s +4891(ready)s 5377(\207ll)s 5642(that)s 1440 -12528(need.)m 1963(Our)s +2320(goal)s 2710(in)s 2912(this)s 3246(sec)s 3499(tion)s +3856(is)s 4035(to)s 4237(present)s 4858(enough)s 5493(in)s +5648(for)s 5880(-)s 1440 -12768(ma)m 1683(tion)s 2030(about)s +160 fnt82 2510 -12766(DNS)m 200 fnt82 2865 -12768(that)m 3200(some)s +3620(one)s 3945(un)s 4145(f)s 2(a)k 4297(mil)s +4562(iar)s 4808(with)s 5199(its)s 5423(de)s 5611(tails)s +1440 -13008(can)m 1795(still)s 2171(un)s 2371(der)s 2625(stand)s +3124(the)s 3446(se)s 3611(cu)s 3799(ri)s 3920(ty)s +4154(rami\207cations)s 5271(of)s 5516(some)s 1440 -13248(of)m 160 fnt82 +1691 -13246(DNS)m 200 fnt82 2009 -13248(')m 11(s)k 2226(de)s +2414(sign)s 2831(choic)s 3262(es.)s 3612(If)s 3829(this)s +4201(re)s 4355(port)s 4761(dis)s 4993(agrees)s 5585(with)s +1440 -13488([)m 1506(RFC1034)s 2283(])s 2405(or)s 2627([)s +2693(RFC1035)s 3470(])s 3592(in)s 3803(an)s 3(y)k +4144(de)s 4332(tail,)s 4691(it)s 4857(is)s 5045(most)s +5488(lik)s 2(e)k 5784(ly)s 1440 -13728(that)m 1788(the)s +2081(re)s 2235(port)s 2606(is)s 2788(wrong.)s 200 fnt84 +6300 -1577(4.1)m 6550(.)s 160 fnt84 6700 -1574(DNS)m 200 fnt84 +7068 -1577(Datagram)m 7982(F)s 5(ormats)k 160 fnt82 6300 -1992(DNS)m +200 fnt82 6664 -1994(queries)m 7284(and)s 7618(responses)s 8437(use)s +8748(a)s 8882(common)s 9626(format,)s 10252(though)s 6300 -2234(not)m +6651(all)s 6945(protocol)s 7705(elements)s 8507(are)s 8845(used)s +9306(all)s 9600(the)s 9939(time.)s 10488(The)s 6300 -2474(simplest)m +7047(case,)s 7523(described)s 8370(here,)s 8847(uses)s 160 fnt82 +9274 -2472(IP/UDP)m 200 fnt82 9862 -2474(where)m 10433(each)s 6300 -2714(datagram)m +7085(contains)s 7793(one)s 160 fnt82 8126 -2712(DNS)m 200 fnt82 +8489 -2714(query)m 8988(or)s 9199(response.)s 160 fnt82 10040 -2712(DNS)m +200 fnt82 10358 -2714(')m 11(s)k 10535(use)s 6300 -2954(of)m +160 fnt82 6520 -2952(IP/TCP)m 200 fnt82 7050 -2954(is)m 7236(be)s 3(yond)k +7875(the)s 8172(scope)s 8679(of)s 8899(this)s 9240(report)s +9769(other)s 10232(than)s 10629(as)s 6300 -3194(it)m 6460(af)s 5(fects)k +7033(zone)s 7459(transfers,)s 8242(which)s 8779(we)s 9061(will)s +9420(discuss)s 10044(shortly)s 13(.)k 200 fnt84 6300 -3506(Header)m +7064(Section)s 200 fnt82 7683 -3505(:)m 7872(Describes)s 8789(the)s +9166(other)s 9709(sections,)s 10533(has)s 6700 -3745(\210ags)m 7207(including)s +160 fnt82 8091 -3743(RD)m 200 fnt82 8443 -3745(\(recursion)m 9380(desired\))s +10151(and)s 160 fnt82 10570 -3743(AA)m 200 fnt82 6700 -3985(\(authoritati)m 5(v)k 3(e)k +7831(answer\),)s 8578(and)s 8934(most)s 9389(important)s 10231(for)s +10531(our)s 6700 -4225(discussion,)m 7629(has)s 7944(a)s 8082(16)s +8332(bit)s 8592(\205query)s 160 fnt82 9184 -4223(ID)m 200 fnt82 +9352 -4225(.)m 14(\206)k 200 fnt84 6300 -4537(Query)m 6884(Section)s +200 fnt82 7503 -4536(:)m 7600(Contains)s 8350(the)s 8635(name,)s +9158(class,)s 9635(and)s 9965(type)s 10350(of)s 10558(the)s +6700 -4776(resource)m 7406(record)s 7947(set)s 8200(\(\205RRset\206\))s 9027(being)s +9503(queried)s 10133(for)s 11(.)k 160 fnt82 10487 -4774(DNS)m +200 fnt82 6700 -5016(permits)m 7353(multiple)s 8073(queries)s 8704(in)s +8916(this)s 9260(section)s 9880(b)s 4(ut)k 10188(this)s +10532(has)s 6700 -5256(ne)m 5(v)k 3(er)k 7184(been)s +7610(tried)s 8024(and)s 8362(is)s 8544(not)s 8849(well)s +9241(speci\207ed.)s 200 fnt84 6300 -5568(Answer)m 7041(Section)s 200 fnt82 +7660 -5567(:)m 7804(Al)s 2(w)k 2(ays)k 8497(empty)s +9084(in)s 9328(queries.)s 10091(Contains)s 6700 -5807(the)m 7003(RRset)s +7549(matching)s 8350(the)s 8653(query)s 13(,)k 9204(or)s +9430(is)s 9622(empty)s 10180(if)s 10361(name)s 6700 -6047(doesn')m 3(t)k +7349(e)s 3(xist,)k 7837(if)s 8024(no)s 8290(data)s +8687(matched)s 9427(the)s 9736(query)s 13(,)k 10293(or)s +10525(if)s 10712(a)s 6700 -6287(nonrecursi)m 5(v)k 3(e)k +7770(query)s 8274(results)s 8842(in)s 9047(a)s 9185(referral.)s +200 fnt84 6300 -6599(A)m 10(uthority)k 7210(Section)s 200 fnt82 +7829 -6598(:)m 7963(Al)s 2(w)k 2(ays)k 8646(empty)s +9223(in)s 9457(queries.)s 10210(Can)s 10610(be)s 6700 -6838(empty)m +7282(in)s 7521(responses.)s 8478(If)s 8694(nonempty)s 13(,)k +9613(it)s 9807(contains)s 10554(the)s 160 fnt82 6700 -7076(NS)m +200 fnt82 6992 -7078(and)m 160 fnt82 7369 -7076(SO)m 5(A)k +7771(RR)s 200 fnt82 7983 -7078(s)m 8149(for)s 8470(the)s +8802(enclosing)s 9654(zone.)s 10219(This)s 10662(is)s 6700 -7318(sometimes)m +7600(called)s 8124(\205referral)s 8845(data.)s 14(\206)k 200 fnt84 +6300 -7630(Additional)m 7245(Data)s 7692(Section)s 200 fnt82 8311 -7629(:)m +8403(Al)s 2(w)k 2(ays)k 9044(empty)s 9579(in)s +9771(queries.)s 10482(Can)s 6700 -7869(be)m 6958(empty)s 7526(in)s +7751(responses.)s 8694(If)s 8896(the)s 9209(answer)s 9842(or)s +10078(authority)s 6700 -8109(section)m 7326(contains)s 8052(an)s 3(y)k +160 fnt82 8400 -8107(RR)m 200 fnt82 8612 -8109(s)m 8752(whose)s +9324(data)s 9718(\207elds)s 10212(contain)s 6700 -8349(RRnames,)m 7609(the)s +7937(RRsets)s 8585(for)s 8902(those)s 9407(RRnames)s 10266(appear)s +6700 -8589(here.)m 200 fnt84 6300 -9089(4.2)m 6550(.)s 6700(Ser)s 2(v)k 2(ers)k +7386(and)s 7758(Resolv)s 2(ers)k 200 fnt82 6300 -9468(The)m +6687(client)s 7205(in)s 160 fnt82 7437 -9466(DNS)m 200 fnt82 +7832 -9468(is)m 8041(called)s 8592(a)s 8757(\205resolv)s 3(er)k 11(.)k 14(\206)k +9722(The)s 10109(serv)s 3(er)k 10668(is)s 6300 -9708(called,)m +6865(appropriately)s 7967(enough,)s 8646(a)s 8775(\205name)s 9335(serv)s 3(er)k 11(.)k 14(\206)k +10021(Resolv)s 3(ers)k 6300 -9948(ha)m 4(v)k 3(e)k +6714(some)s 7179(static)s 7642(con\207guration)s 8750(information,)s 9785(consisting)s +10637(of)s 6300 -10188(a)m 6427(domain)s 7064(\205search)s 7698(list\206)s +8067(and)s 8394(a)s 8521(list)s 8802(of)s 9007(name)s +9477(serv)s 3(er)k 9998(addresses.)s 6300 -10428(Theoretically)m 13(,)k +7471(a)s 7633(resolv)s 3(er)k 8344(can)s 8694(also)s +9088(be)s 9350(con\207gured)s 10277(with)s 10705(a)s 6300 -10668(static)m +6759(map)s 7143(of)s 7350(domains)s 8066(to)s 8262(name)s +8734(serv)s 3(er)k 9257(addresses,)s 10109(allo)s 5(wing)k +6300 -10908(queries)m 6969(to)s 7219(be)s 7502(forw)s 2(arded)k +8413(directly)s 9115(to)s 9365(appropriate)s 10366(name)s 6300 -11148(serv)m 3(ers)k +6941(for)s 7255(some)s 7757(set)s 8059(of)s 8307(locally)s +8930(kno)s 5(wn)k 9551(domains.)s 160 fnt82 10408 -11146(BIND)m +200 fnt82 6300 -11388(does)m 6725(not)s 7040(implement)s 7951(this)s +8298(last)s 8633(part)s 9002(yet.)s 9355(The)s 9725(resolv)s 3(er')k 11(s)k +10554(list)s 6300 -11628(of)m 6526(name)s 7017(serv)s 3(er)k +7559(addresses)s 8380(had)s 8728(better)s 9240(include)s 9886(at)s +10089(least)s 10512(one)s 6300 -11868(recursi)m 5(v)k 3(e)k +7069(name)s 7549(serv)s 3(er)k 8(,)k 8122(or)s +8337(the)s 160 fnt82 8629 -11866(DNS)m 200 fnt82 8996 -11868(name)m +9476(space)s 9966(is)s 10147(going)s 10651(to)s 6300 -12108(look)m +6705(pretty)s 7219(small.)s 200 fnt84 6300 -12649(4.3)m 6550(.)s +6700(Recursion)s 200 fnt82 6300 -13027(T)m 16(o)k 6557(\205recurse\206)s +7357(on)s 7608(a)s 7747(query)s 8252(means)s 8811(that)s +9160(when)s 9643(a)s 9782(query)s 10287(comes)s 6300 -13267(in)m +6507(for)s 6791(an)s 7031(RRset)s 7569(not)s 7876(kno)s 5(wn)k +8467(to)s 8674(the)s 8969(serv)s 3(er)k 9503(recei)s 5(ving)k +10290(it,)s 10502(that)s 6300 -13507(serv)m 3(er)k 6829(will)s +7185(forw)s 2(ard)k 7860(it)s 8017(to)s 8219(some)s +8686(name)s 9164(serv)s 3(er)k 9693(more)s 10149(lik)s 2(ely)k +10647(to)s 6300 -13747(kno)m 5(w)k 6802(the)s 7108(answer)s 11(.)k +7823(In)s 8052(some)s 8535(cases,)s 9066(the)s 9372(forw)s 2(arding)k +10318(serv)s 3(er)k 6300 -13987(will)m 6678(kno)s 5(w)k +7186(the)s 7498(name)s 7998(serv)s 3(er)k 8549(list)s +8860(for)s 9161(the)s 9473(e)s 3(xact)k 9958(domain)s +10625(or)s 6300 -14227(parent)m 6862(domain)s 7525(of)s 7756(the)s +8064(query)s 13(.)k 8670(More)s 9166(often,)s 9690(a)s +9843(grandparent)s +grestore + +pgsave restore +showpage + +%%Page: ? 4 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +/pgsave save def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 15840 translate +0.0000 rotate + +grestore +gsave +0 15840 translate +0.0000 rotate +200 fnt82 0.0 0.0 0.0 setrgbcolor 1440 -1576(domain')m 11(s)k 2254(serv)s 3(ers)k +2897(are)s 3223(kno)s 5(wn,)k 3896(or)s 4146(no)s +4430(serv)s 3(ers)k 5073(are)s 5399(kno)s 5(wn)k +1440 -1816(and)m 1777(the)s 2069(query)s 2572(is)s 2753(sent)s +3122(all)s 3369(the)s 3661(w)s 2(ay)k 4040(to)s +4244(the)s 4536(root)s 4906(name)s 5386(serv)s 3(ers)k +1440 -2056(\(which)m 2041(are)s 2331(co-operated)s 3318(by)s 3566(the)s +3857(InterNIC)s 4623(and)s 4959(a)s 5095(w)s 2(orldwide)k +1440 -2296(cadre)m 1910(of)s 2116(v)s 4(olunteers.\))k 3097(There)s +3601(is)s 3773(a)s 3901(\210ag)s 4240(in)s 4435(the)s +4718(query)s 5212(called)s 160 fnt82 5726 -2294(RD)m 200 fnt82 +1440 -2536(which,)m 2037(if)s 2218(set,)s 2548(speci\207es)s 3292(that)s +3650(recursion)s 4450(is)s 4642(desired;)s 5331(if)s 5512(clear)s 8(,)k +1440 -2776(a)m 1592(name)s 2087(serv)s 3(er)k 2633(will)s +3006(answer)s 3633(queries)s 4271(for)s 4567(unkno)s 5(wn)k +5370(RRsets)s 1440 -3016(with)m 1838(an)s 2070(appropriate)s 3020(error)s +3450(\(\205name)s 4079(unkno)s 5(wn\206)k 4950(or)s 5160(\205no)s +5492(data,)s 14(\206)k 1440 -3256(depending.\))m 1840 -3567(Sending)m 2561(nonrecursi)s 5(v)k 3(e)k +3648(queries)s 4289(is)s 4488(a)s 4643(\207ne)s 5009(w)s 2(ay)k +5406(to)s 5628(\207nd)s 1440 -3807(out)m 1748(what)s 2188(a)s +2329(name)s 2813(serv)s 3(er)k 3348(already)s 3986(kno)s 5(ws,)k +4605(since,)s 5116(otherwise,)s 1440 -4047(you)m 1790(will)s 2149(get)s +2442(an)s 2680(answer)s 3293(e)s 5(v)k 3(en)k +3711(if)s 3882(the)s 4175(name)s 4656(serv)s 3(er)k +5188(had)s 5526(to)s 5731(go)s 1440 -4287(searching)m 2252(for)s +2534(it)s 2694(at)s 2887(the)s 3180(time)s 3583(of)s +3799(your)s 4215(query)s 13(.)k 200 fnt84 1440 -4828(4.4)m +1690(.)s 1840(Referrals)s 200 fnt82 1440 -5207(If)m 1615(a)s +1746(name)s 2220(serv)s 3(er)k 2745(recei)s 5(v)k 3(es)k +3430(a)s 3561(query)s 4058(for)s 4333(a)s 4464(<)s +200 fnt83 4576 -5206(name)m 200 fnt82 5008 -5207(,)m 200 fnt83 +5058 -5206(class)m 200 fnt82 5455 -5207(,)m 200 fnt83 5505 -5206(type)m +200 fnt82 5836 -5207(>)m 1440 -5447(tuple)m 1937(that)s 2334(it)s +2543(kno)s 5(ws)k 3158(it)s 3367(has)s 3731(dele)s 3(g)k 1(ated,)k +4638(it)s 4847(answers)s 5586(with)s 1440 -5687(what')m 11(s)k +2052(called)s 2619(a)s 2800(\205referral.)s 14(\206)k 3688(A)s +3925(referral)s 4601(response)s 5390(has)s 5748(an)s 1440 -5927(empty)m +1995(answer)s 2615(section)s 3235(b)s 4(ut)k 3543(a)s +3688(nonempty)s 4543(authority)s 5319(section;)s 1440 -6167(the)m 1755(intent)s +2280(of)s 2518(this)s 2877(message)s 3622(is)s 3826(to)s +4053(tell)s 4378(another)s 5047(serv)s 3(er)k 5601(\205the)s +1440 -6407(name)m 1934(you)s 2297(ask)s 2(ed)k 2811(for)s +3106(e)s 3(xists,)k 3668(b)s 4(ut)k 3982(I)s +4111(don')s 3(t)k 4592(ha)s 4(v)k 3(e)k +5024(the)s 5330(answer)s 8(,)k 1440 -6647(go)m 1726(try)s +2033(these)s 2527(other)s 3022(serv)s 3(ers.)k 14(\206)k +3791(Bogus)s 4387(referrals)s 5133(are)s 5461(a)s 5635(\207ne)s +1440 -6887(w)m 2(ay)k 1832(to)s 2049(pollute)s 2664(a)s +2814(cache)s 3328(indirectly)s 4152(\211)s 4314(if)s 4497(you)s +4859(can)s 5197(snoop)s 5736(on)s 1440 -7127(a)m 1609(forw)s 2(arded)k +2506(query)s 3041(and)s 3410(then)s 3834(inject)s 4356(a)s +4525(referral)s 5189(response,)s 1440 -7367(you)m 1809(can)s 2154(mak)s 2(e)k +2652(the)s 2964(forw)s 2(arding)k 3916(serv)s 3(er)k +4467(ef)s 5(fecti)k 5(v)k 3(ely)k 5372(belie)s 5(v)k 3(e)k +1440 -7607(that)m 200 fnt83 1795 -7606(you)m 200 fnt82 2140 -7607(are)m +2439(the)s 2739(dele)s 3(g)k 1(ated)k 3554(serv)s 3(er)k +4093(for)s 4382(an)s 4627(entire)s 5136(subtree)s 5767(of)s +1440 -7847(the)m 160 fnt82 1742 -7845(DNS)m 200 fnt82 2119 -7847(name)m +2609(space.)s 3209(This)s 3622(is)s 3813(actually)s 4501(the)s +4803(easiest)s 5390(w)s 2(ay)k 5779(to)s 1440 -8087(pollute)m +2057(a)s 2209(cache)s 2725(since)s 3197(there')s 11(s)k +3790(no)s 4054(guessing)s 4815(in)s 8(v)k 4(olv)k 3(ed:)k +5617(Y)s 22(ou)k 1440 -8327(kno)m 5(w)k 1938(the)s +2240(source)s 2818(address,)s 3523(source)s 160 fnt82 4101 -8325(UDP)m +200 fnt82 4478 -8327(port,)m 4908(and)s 5255(query)s 160 fnt82 +5768 -8325(ID)m 200 fnt82 1440 -8567(by)m 1680(inspection.)s 2638(Y)s 22(ou)k +3000(e)s 5(v)k 3(en)k 3408(kno)s 5(w)k +3887(the)s 4170(query)s 4664(name.)s 5235(The)s 5585(only)s +1440 -8807(trick)m 1854(is)s 2036(in)s 2241(breaking)s 2988(into)s +3348(a)s 3486(host)s 3868(on)s 4118(a)s 4256(netw)s 2(ork)k +4957(backbone)s 5771(so)s 1440 -9047(that)m 1795(you)s 2152(can)s +2485(actually)s 3171(see)s 3481(the)s 3781(queries)s 4412(being)s +4912(forw)s 2(arded)k 5785(to)s 1440 -9287(the)m 1733(root)s +2104(serv)s 3(ers.)k 2763(This)s 3167(has)s 3482(been)s +3908(done)s 128 fnt82 4296 -9198(1)m 200 fnt82 4360 -9287(,)m +4460(b)s 4(ut)k 4761(not)s 5066(often.)s 200 fnt84 +1440 -9813(4.5)m 1690(.)s 1840(A)s 10(uthority:)k 2787(Masters)s +3521(and)s 3893(Sla)s 5(v)k 2(es)k 200 fnt82 +1440 -10230(T)m 16(o)k 1720(be)s 1982(\205authoritati)s 5(v)k 3(e\206)k +3229(means)s 3811(that)s 4183(a)s 4345(name)s 4850(serv)s 3(er)k +5406(has)s 5745(an)s 1440 -10470(entire)m 1955(\205zone\206)s 2570(loaded,)s +3214(either)s 3729(via)s 4035(a)s 4186(\205master)s 4866(\207le\206)s +5271(that)s 5632(w)s 2(as)k 1440 -10710(created)m 2069(by)s +2325(the)s 2624(name)s 3111(serv)s 3(er)k 3649(administrator)s 8(,)k +4807(or)s 5029(via)s 5328(a)s 5472(\205zone)s 1440 -10950(transfer)m 8(,)k 14(\206)k +2196(which)s 2717(is)s 2883(a)s 160 fnt82 3005 -10948(TCP)m +200 fnt82 3330 -10950(session)m 3938(with)s 4326(another)s 4957(name)s +5422(serv)s 3(er)k 11(.)k 1440 -11190(The)m 1806(former)s +2403(kind)s 2814(of)s 3036(serv)s 3(er)k 3574(is)s +3762(called)s 4292(the)s 4591(\205master\206)s 5352(and)s 5696(the)s +1440 -11430(latter)m 1890(is)s 2065(a)s 2196(\205sla)s 4(v)k 3(e.)k 14(\206)k +2852(Sla)s 4(v)k 3(es)k 3407(generally)s 4190(do)s +4433(their)s 4840(zone)s 5259(transfers)s 1440 -11670(from)m 1891(the)s +2198(master)s 8(,)k 2833(b)s 4(ut)k 3148(sometimes)s +4062(\207re)s 5(w)k 2(alls)k 4803(are)s 5109(interposed)s +1440 -11910(and)m 1797(it)s 1976(becomes)s 2741(necessary)s 3582(to)s +3806(ha)s 4(v)k 3(e)k 4244(sla)s 4(v)k 3(es)k +4791(pull)s 5170(their)s 5603(data)s 1440 -12150(from)m 1884(other)s +2350(sla)s 4(v)k 3(es,)k 2935(which)s 3479(are)s +3778(themselv)s 3(es)k 4715(stationed)s 5490(at)s 5690(the)s +1440 -12390(border)m 8(,)k 2052(perhaps)s 2721(e)s 5(v)k 3(en)k +3139(on)s 3389(the)s 3682(\207re)s 5(w)k 2(all)k +4332(itself.)s 1840 -12701(Masters)m 2570(and)s 2960(sla)s 4(v)k 3(es)k +3540(will)s 3951(set)s 4273(the)s 160 fnt82 4618 -12699(AA)m +200 fnt82 4950 -12701(\210ag)m 5351(on)s 5653(an)s 3(y)k +1440 -12941(response)m 2234(whose)s 2841(answer)s 3502(section)s 4163(contains)s +4924(only)s 5377(RRsets)s 1440 -13181(from)m 1884(authoriti)s 5(v)k 3(e)k +2795(zones.)s 3405(The)s 160 fnt82 3772 -13179(AA)m 200 fnt82 +4059 -13181(\210ag)m 4415(will)s 4781(be)s 5026(clear)s 5468(if)s +5646(an)s 3(y)k 1440 -13421(RRset)m 1985(in)s 2199(the)s +2501(answer)s 3123(section)s 3745(came)s 4223(from)s 4669(the)s +4971(the)s 5273(\205cache,)s 14(\206)k gsave +1440 -14114 translate +200 fnt82 0.0 0.0 0.0 setrgbcolor 1134 0 0 0 200 240 50 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +102 fnt82 0.0 0.0 0.0 setrgbcolor +1440 -14295(1)m 160 fnt82 1491 -14366(No,)m 1766(we')s 8(re)k +2161(not)s 2405(going)s 2809(to)s 2973(name)s 3359(names.)s +200 fnt82 6300 -1576(which)m 6837(is)s 7019(what)s 7456(we)s +7738(call)s 8074(the)s 8367(portion)s 8993(of)s 9209(the)s +160 fnt82 9502 -1574(DNS)m 200 fnt82 9870 -1576(name)m 10351(space)s +6300 -1816(that)m 6669(is)s 6872(outside)s 7518(all)s 7787(of)s +8024(a)s 8183(serv)s 3(er')k 11(s)k 8868(zones)s +9392(of)s 9629(authority)s 13(.)k 10506(If)s 10709(a)s +6300 -2056(serv)m 3(er)k 6846(has)s 7175(no)s 7439(zones)s +7956(of)s 8186(authority)s 13(,)k 9006(then)s 9413(all)s +9675(of)s 9905(its)s 10156(answers)s 6300 -2296(will)m 6668(be)s +6915(nonauthoritati)s 5(v)k 3(e)k 8271(since)s 8738(all)s +8995(it)s 9164(has)s 9488(is)s 9679(a)s 9826(cache.)s +10437(This)s 6300 -2536(kind)m 6725(of)s 6961(serv)s 3(er)k +7513(is)s 7715(sometimes)s 8635(called)s 9179(a)s 9337(\205caching)s +10114(only\206)s 10627(or)s 6300 -2776(\205forw)m 2(arding\206)k 7409(serv)s 3(er)k 11(.)k +200 fnt84 6300 -3317(4.6)m 6550(.)s 6700(F)s 5(orwarding)k +7764(-vs-)s 8123(Recursion)s 200 fnt82 6300 -3734(When)m 6834(a)s +6980(name)s 7469(serv)s 3(er)k 8009(recei)s 5(v)k 3(es)k +8709(a)s 8855(query)s 9367(for)s 9657(data)s 10046(it)s +10214(doesn')s 3(t)k 6300 -3974(ha)m 4(v)k 3(e,)k +6792(it)s 6975(can)s 7324(either)s 7849(send)s 8287(back)s +8736(an)s 8997(error)s 9456(response)s 10225(\(if)s 10485(it)s +10668(is)s 6300 -4214(authoritati)m 5(v)k 3(e)k 7379(for)s +7693(the)s 8018(name')s 11(s)k 8663(zone,)s 9171(it)s +9363(kno)s 5(ws)k 9961(that)s 10341(either)s 6300 -4454(the)m +6637(name)s 7162(or)s 7422(data)s 7847(doesn')s 3(t)k +8524(e)s 3(xist\),)k 9106(send)s 9565(back)s 10035(a)s +10217(referral)s 6300 -4694(\(if)m 6563(running)s 7260(in)s 7491(\205nonrecursi)s 5(v)k 3(e)k +8675(mode\206)s 9282(as)s 9523(the)s 9842(root)s 10239(serv)s 3(ers)k +6300 -4934(all)m 6566(do,)s 6884(or)s 7118(if)s 7307(the)s +160 fnt82 7618 -4932(RD)m 200 fnt82 7907 -4934(\210ag)m 8274(is)s +8474(clear)s 8927(in)s 9150(the)s 9461(query\),)s 10099(or)s +10333(it)s 10511(can)s 6300 -5174(forw)m 2(ard)k 6970(the)s +7255(query)s 13(.)k 7838(This)s 8234(last)s 8551(possibility)s +9422(is)s 9596(of)s 9804(interest)s 10430(to)s 10627(us)s +6300 -5414(in)m 6508(our)s 6827(security)s 7509(study)s 13(,)k +8031(because)s 8713(of)s 8932(what)s 9372(will)s 9734(happen)s +10363(when)s 6300 -5654(some)m 6781(response)s 7538(\207nally)s 8108(comes)s +8677(back.)s 9214(F)s 3(orw)k 2(arding)k 10200(is)s +10393(not)s 10709(a)s 6300 -5894(three-party)m 7239(transaction)s 8178(\211)s +8345(a)s 8500(forw)s 2(arded)k 9383(query)s 9904(results)s +10489(in)s 10711(a)s 6300 -6134(response)m 7068(to)s 7295(the)s +7610(forw)s 2(arder)k 8464(who)s 8880(must)s 9339(then)s +9754(complete)s 10555(the)s 6300 -6374(original)m 6984(transaction)s 7921(by)s +8186(forw)s 2(arding)k 9134(the)s 9442(response)s 10203(back)s +10644(to)s 6300 -6614(the)m 6593(originator)s 11(.)k 160 fnt82 +6700 -6923(BIND)m 200 fnt82 7139 -6925(tak)m 2(es)k 7595(its)s +7832(forw)s 2(arding)k 8765(duties)s 9290(one)s 9628(step)s +9998(further)s 8(,)k 10631(as)s 6300 -7165(an)m 6555(optimization)s +7628(attempt:)s 8346(It)s 8534(caches)s 9130(all)s 9395(the)s +9705(RRsets)s 10335(in)s 10557(the)s 6300 -7405(forw)m 2(arded)k +7190(response.)s 8060(This)s 8488(promiscuity)s 9513(is)s 9719(the)s +10036(source)s 10629(of)s 6300 -7645(most)m 6738(of)s 160 fnt82 +6955 -7643(BIND)m 200 fnt82 7344 -7645(')m 11(s)k 7527(bad)s +7866(reputation)s 8724(in)s 8930(both)s 9336(the)s 9630(operations)s +10510(and)s 6300 -7885(the)m 6609(security)s 7304(\207elds.)s 7901(Other)s +8420(serv)s 3(ers)k 9045(are)s 9353(free)s 9727(to)s +9948(put)s 10269(almost)s 6300 -8125(an)m 3(ything)k 7062(into)s +7439(the)s 7749(response,)s 8562(e)s 5(v)k 3(en)k +8997(if)s 9185(it)s 9362(has)s 9694(nothing)s 10371(to)s +10593(do)s 6300 -8365(with)m 6687(the)s 6963(query)s 13(.)k +7537(As)s 7791(sho)s 5(wn)k 8340(in)s 8528([)s +8594(Bel95a)s 9158(])s 9224(,)s 9307(this)s 9627(has)s +9925(disasterous)s 6300 -8605(ef)m 5(fects)k 6873(on)s 7123(security)s 13(.)k +6700 -8916(It)m 6886(is)s 7083(w)s 2(orth)k 7611(noting)s +8186(that)s 8549(the)s 8857(\207rst)s 9231(query)s 9750(handled)s +10446(by)s 10711(a)s 6300 -9156(forw)m 2(arding)k 7255(or)s +7493(recursi)s 5(v)k 3(e)k 8285(name)s 8788(serv)s 3(er)k +9342(for)s 9646(a)s 9806(gi)s 5(v)k 3(en)k +10313(RRset)s 6300 -9396(is)m 6511(lik)s 2(ely)k 7041(to)s +7275(result,)s 7845(ultimately)s 13(,)k 8767(in)s 9001(it)s +9190(forw)s 2(arding)k 10152(back)s 10607(an)s 6300 -9636(answer)m +6958(obtained)s 7739(from)s 8221(an)s 8504(authoritati)s 5(v)k 3(e)k +9596(name)s 10122(serv)s 3(er)k 10699(\211)s 6300 -9876(thus)m +6687(the)s 160 fnt82 6985 -9874(AA)m 200 fnt82 7270 -9876(\210ag)m +7624(will)s 7988(be)s 8231(set)s 8506(in)s 8716(the)s +9014(response,)s 9815(e)s 5(v)k 3(en)k 10238(though)s +6300 -10116(the)m 6635(forw)s 2(arder)k 7509(is)s 7733(not)s +8080(itself)s 8568(authoritati)s 5(v)k 3(e)k 9657(for)s +9981(the)s 10316(name.)s 6300 -10356(Subsequent)m 7264(queries)s 7883(to)s +8083(the)s 8371(same)s 8824(name)s 9300(serv)s 3(er)k +9827(for)s 10104(the)s 10392(same)s 6300 -10596(RRset)m 6850(will)s +7223(probably)s 7996(be)s 8248(satis\207ed)s 8963(from)s 9414(the)s +9721(cache,)s 10287(and)s 10639(in)s 6300 -10836(that)m 6652(case)s +7047(the)s 160 fnt82 7344 -10834(AA)m 200 fnt82 7628 -10836(\210ag)m +7981(will)s 8344(not)s 8653(be)s 8895(set)s 9169(in)s +9378(the)s 9675(response.)s 10475(Y)s 22(ou)k 6300 -11076(can)m +6625(see)s 6927(this)s 7263(in)s 7467(action)s 8002(using)s +8483(the)s 160 fnt82 8775 -11074(ISI)m 200 fnt84 9018 -11077(dig)m +200 fnt82 9333 -11076(tool)m 9692(from)s 10128(the)s 160 fnt82 +10420 -11074(BIND)m 200 fnt82 6300 -11316(kit.)m 200 fnt84 6300 -11816(4.7)m +6550(.)s 6700(F)s 5(orwarding)k 7764(-vs-)s 8123(T)s 3(imeouts)k +200 fnt82 6300 -12233(When)m 160 fnt82 6893 -12231(BIND)m 200 fnt82 +7282 -12233(')m 11(s)k 7531(resolv)s 3(er)k 8285(needs)s +8855(to)s 9127(forw)s 2(ard)k 9872(a)s 10077(query)s 13(,)k +10685(it)s 6300 -12473(chooses)m 6991(the)s 7295(ne)s 3(xt)k +7696(name)s 8188(serv)s 3(er)k 8731(address)s 9388(from)s +9836(its)s 10084(statically)s 6300 -12713(con\207gured)m 7229(list,)s 7597(sends)s +8115(the)s 8434(query)s 13(,)k 9001(w)s 2(aits)k +9494(a)s 9658(short)s 10132(time)s 10561(for)s 6300 -12953(an)m +6549(answer)s 8(,)k 7215(chooses)s 7906(the)s 8210(ne)s 3(xt)k +8611(name)s 9103(serv)s 3(er)k 9646(address,)s 10353(sends)s +6300 -13193(and)m 6636(w)s 2(aits,)k 7151(and)s 7487(so)s +7712(on.)s 160 fnt82 8060 -13191(BIND)m 200 fnt82 8449 -13193(')m 11(s)k +8629(timeouts)s 9362(are)s 9652(f)s 2(airly)k 10128(short;)s +10679(It)s 6300 -13433(will)m 6666(often)s 7132(send)s 7554(a)s +7699(query)s 8210(to)s 8422(name)s 8910(serv)s 3(er)k +9449(#1,)s 9756(then)s 10156(to)s 10368(name)s 6300 -13673(serv)m 3(er)k +6867(#2,)s 7202(then)s 7630(the)s 7958(response)s 8739(will)s +9133(come)s 9649(in)s 9889(from)s 10361(name)s 6300 -13913(serv)m 3(er)k +6834(#1,)s 7136(and)s 7476(the)s 7771(resolv)s 3(er)k +8460(will)s 8821(close)s 9281(its)s 9520(sock)s 2(et)k +10078(such)s 10495(that)s 6300 -14153(when)m 6805(name)s 7309(serv)s 3(er)k +7864(#2')s 11(s)k 8269(response)s 9038(comes)s 9619(in)s +9847(a)s 10008(second)s 10634(or)s 6300 -14393(so)m 6532(later)s +6939(the)s 7237(k)s 2(ernel)k 7787(sends)s 8284(back)s +8715(an)s 160 fnt82 8958 -14391(ICMP)m 200 fnt82 9402 -14393(Port)m +9789(Unreachable)s +grestore + +pgsave restore +showpage + +%%Page: ? 5 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +/pgsave save def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 15840 translate +0.0000 rotate + +grestore +gsave +0 15840 translate +0.0000 rotate +200 fnt82 0.0 0.0 0.0 setrgbcolor 1440 -1576(message.)m 2257(W)s 16(e)k +2561(wish)s 2981(there)s 3422(were)s 3852(a)s 3984(w)s 2(ay)k +4358(to)s 4557(ask)s 4866(the)s 5153(k)s 2(ernel)k +5692(not)s 1440 -1816(to)m 1650(send)s 2070(these,)s 2583(other)s +3047(than)s 3445(k)s 2(eeping)k 4129(the)s 4427(sock)s 2(et)k +4988(open)s 5431(longer)s 1440 -2056(\(which)m 2060(w)s 2(ould)k +2624(lead)s 3022(to)s 3244(resource)s 3984(starv)s 5(ation)k +4830(among)s 5440(k)s 2(ernel)k 1440 -2296(protocol)m 2151(control)s +2762(blocks.\))s 3445(Lengthening)s 4500(the)s 4790(timeout)s 5445(w)s 2(ould)k +1440 -2536(lead)m 1812(to)s 2008(longer)s 2558(application-visible)s 4079(delays)s +4628(when)s 5101(a)s 5230(statically)s 1440 -2776(con\207gured)m 2343(name)s +2824(serv)s 3(er)k 3356(goes)s 3771(of)s 5(f)k +4048(the)s 4341(air)s 8(,)k 4642(b)s 4(ut)k +4943(life)s 5257(is)s 5439(full)s 5765(of)s 1440 -3016(hard)m +1844(choices.)s 200 fnt84 1440 -3516(4.8)m 1690(.)s 1840(Query)s +160 fnt84 2432 -3513(ID)m 200 fnt84 2609 -3516(s)m 2736(and)s +160 fnt84 3108 -3513(UDP)m 200 fnt84 3485 -3516(P)m 4(orts)k +200 fnt82 1440 -3933(Each)m 1898(query)s 2412(sent)s 2792(out)s +3107(by)s 3367(a)s 3515(resolv)s 3(er)k 4212(will)s +4581(come)s 5072(from)s 5519(some)s 160 fnt82 1440 -4171(UDP)m +200 fnt82 1819 -4173(port)m 2201(on)s 2462(some)s 2943(address)s +3600(of)s 3827(the)s 4131(resolv)s 3(er')k 11(s)k +4961(host,)s 5404(and)s 5753(its)s 1440 -4413(header)m 2017(will)s +2373(contain)s 3006(a)s 3141(unique)s 3731(\(in)s 3999(the)s +4289(conte)s 3(xt)k 4919(of)s 5132(the)s 5422(source)s +1440 -4653(address)m 2068(and)s 2388(port)s 2741(number\))s 3448(query)s +160 fnt82 3934 -4651(ID)m 200 fnt82 4102 -4653(.)m 160 fnt82 +4234 -4651(UDP)m 200 fnt82 4584 -4653(port)m 4937(numbers)s 5655(and)s +160 fnt82 1440 -4891(DNS)m 200 fnt82 1806 -4893(query)m 160 fnt82 +2308 -4891(ID)m 200 fnt82 2476 -4893(s)m 2601(are)s 2891(both)s +3294(unsigned)s 4062(16)s 4310(bit)s 4568(quantities,)s 5439(gi)s 5(ving)k +1440 -5133(a)m 1572(range)s 2058(from)s 2489(0)s 2633(to)s +2832(65535)s 3376(for)s 3652(each.)s 4160(Port)s 4536(numbers)s +5266(could)s 5753(be)s 1440 -5373(conserv)m 3(ed)k 2295(and)s +2634(reused)s 3204(by)s 3455(the)s 3749(resolv)s 3(er)k 8(,)k +4479(b)s 4(ut)k 160 fnt82 4781 -5371(BIND)m 200 fnt82 +5221 -5373(currently)m 1440 -5613(opens)m 1971(a)s 2125(ne)s 5(w)k +2518(sock)s 2(et)k 3090(for)s 3388(each)s 3818(query)s 13(,)k +4375(and)s 4729(k)s 2(ernels)k 5367(tend)s 5776(to)s +1440 -5853(use)m 1765(an)s 160 fnt82 2013 -5851(LR)m 6(U)k +200 fnt82 2385 -5853(mechanism)m 3351(when)s 3843(assigning)s 4655(port)s +5036(numbers)s 5782(to)s 1440 -6093(ne)m 5(w)k 1862(sock)s 2(ets.)k +2590(The)s 2995(tuple)s 3488(<)s 200 fnt83 3600 -6092(addr)m 7(ess)k +200 fnt82 4212 -6093(,)m 200 fnt83 4262 -6092(port)m 200 fnt82 +4594 -6093(,)m 200 fnt83 4644 -6092(query)m 160 fnt83 5097 -6090(ID)m +200 fnt82 5265 -6093(>)m 5472(forms)s 1440 -6333(a)m 1594(unique)s +2203(identi\207er)s 2987(that)s 3351(serv)s 3(ers)k 3976(can)s +4318(use)s 4649(to)s 4870(k)s 2(eep)k 5310(track)s +5773(of)s 1440 -6573(queries)m 2109(in)s 2359(progress.)s 3228(Resolv)s 3(ers)k +4104(should)s 4731(v)s 3(erify)k 5298(that)s 5691(the)s +1440 -6813(query)m 160 fnt82 1944 -6811(ID)m 200 fnt82 2162 -6813(of)m +2378(the)s 2671(response)s 3417(matches)s 4118(that)s 4466(of)s +4682(their)s 5096(query)s 13(.)k 200 fnt84 1440 -7354(4.9)m +1690(.)s 1840(Delegations,)s 2924(Zones,)s 3533(Domains,)s 4386(and)s +4758(Subdomains)s 200 fnt82 1440 -7771(Strictly)m 2125(speaking,)s 2983(e)s 5(v)k 3(ery)k +160 fnt82 3517 -7769(DNS)m 200 fnt82 3935 -7771(name)m 4466(is)s +4698(a)s 4886(domain.)s 5684(All)s 1440 -8011(domains)m 2204(e)s 3(xcept)k +2809(the)s 3141(root)s 3551(are)s 3882(also)s 4291(\205subdomains.)s 14(\206)k +5594(An)s 3(y)k 1440 -8251(time)m 1832(a)s 1959(subdomain)s +2873(is)s 3044(dele)s 3(g)k 1(ated)k 3841(to)s +4035(some)s 4494(other)s 4942(master)s 5510(name)s 1440 -8491(serv)m 3(er)k 8(,)k +2027(a)s 2178(\205zone)s 2705(cut\206)s 3099(is)s 3294(said)s +3677(to)s 3895(e)s 3(xist.)k 4430(A)s 4637(zone)s +5076(consists)s 5768(of)s 1440 -8731(all)m 1704(names)s 2278(from)s +2731(a)s 2885(zone)s 3327(cut)s 3636(do)s 5(wnw)k 2(ard)k +4537(to)s 4758(either)s 5276(terminal)s 1440 -8971(names)m 1983(\(sometimes)s +2934(called)s 3443(\205leaf)s 3863(domains\206\))s 4727(or)s 4928(other)s 8(,)k +5414(deeper)s 1440 -9211(zone)m 1866(cuts.)s 1840 -9522(The)m 2259(most)s +2755(common)s 3562(case)s 4012(of)s 4287(a)s 4484(zone)s +4969(be)s 3(gins)k 5595(at)s 5847(a)s 1440 -9762(subdomain)m +2387(and)s 2747(has)s 3084(no)s 3356(zone)s 3804(cuts)s +4196(beneath)s 4887(it.)s 5169(The)s 5551(most)s 1440 -10002(f)m 2(amous)k +2120(zone)s 2592(is)s 2820(the)s 3159(root)s 3576(\(\205)s +200 fnt84 3730 -10003(.)m 200 fnt82 3780 -10002(\206\))m 4030(which)s +4613(has)s 4974(no)s 5270(terminal)s 1440 -10242(names,)m 2048(just)s +2385(dele)s 3(g)k 1(ations.)k 1840 -10553(There)m 2391(are)s +2720(tw)s 2(o)k 3104(vie)s 5(ws)k 3650(of)s +3903(a)s 4078(dele)s 3(g)k 1(ation:)k 5045(The)s +5442(parent)s 1440 -10793(zone,)m 1942(which)s 2505(has)s 2846(some)s +160 fnt82 3342 -10791(NS)m 3585(RR)s 200 fnt82 3797 -10793(s)m +3950(at)s 4169(the)s 4488(cut,)s 4857(and)s 5221(the)s +5540(child)s 1440 -11033(zone,)m 1932(which)s 2485(has)s 2816(a)s +2970(superset)s 3687(of)s 3919(those)s 160 fnt82 4405 -11031(NS)m +4648(RR)s 200 fnt82 4860 -11033(s)m 5003(and)s 5357(also)s +5743(an)s 160 fnt82 1440 -11271(SO)m 5(A)k 1793(RR)s +200 fnt82 2005 -11273(.)m 2170(When)s 2711(we)s 3008(say)s +3338(\205superset\206)s 4230(we)s 4527(mean)s 5023(that)s 5386(a)s +5539(child)s 1440 -11513(will)m 1827(ha)s 4(v)k 3(e)k +2274(at)s 2495(least)s 2936(the)s 160 fnt82 3257 -11511(NS)m +3500(RR)s 200 fnt82 3712 -11513(s)m 3867(kno)s 5(wn)k +4484(by)s 4762(its)s 5027(parent,)s 5652(and)s 1440 -11753(perhaps)m +2118(some)s 2597(additional)s 160 fnt82 3452 -11751(NS)m 3695(RR)s +200 fnt82 3907 -11753(s)m 4043(that)s 4400(the)s 4702(parent)s +5258(does)s 5682(not)s 1440 -11993(kno)m 5(w)k 1929(about.)s +200 fnt84 1440 -12493(4.)m 1590(10)s 1790(.)s 1940(Lame)s +2477(Delegations)s 200 fnt82 1440 -12910(If)m 1705(a)s 1926(dele)s 3(g)k 1(ation)k +160 fnt82 2884 -12908(NS)m 3127(RR)s 200 fnt82 3472 -12910(names)m +4113(a)s 4334(host)s 4799(which)s 5419(is)s 5684(not)s +1440 -13150(authoritati)m 5(v)k 3(e)k 2512(for)s 2819(the)s +3137(zone,)s 3638(then)s 4056(that)s 4429(host)s 4836(when)s +5343(queried)s 1440 -13390(nonrecursi)m 5(v)k 3(ely)k 2665(for)s +2947(names)s 3505(in)s 3710(that)s 4058(zone)s 4484(will)s +4843(answer)s 5456(with)s 5860(a)s 1440 -13630(dele)m 3(g)k 1(ation)k +2302(to)s 2494(a)s 2619(higher)s 3165(\(that)s 3566(is,)s +3785(closer)s 4296(to)s 4488(the)s 4768(root\))s 5192(authority)s 13(.)k +1440 -13870(This)m 1847(is)s 2032(an)s 2273(error)s 2712(condition)s +3518(as)s 3736(percei)s 5(v)k 3(ed)k 4554(by)s +4807(the)s 5103(serv)s 3(er)k 5638(that)s 1440 -14110(forw)m 2(arded)k +2341(a)s 2514(nonrecursi)s 5(v)k 3(e)k 3619(query)s +4158(\211)s 4343(if)s 4549(a)s 4722(name)s 5238(serv)s 3(er)k +5805(is)s 1440 -14350(listed)m 1931(in)s 2147(an)s 160 fnt82 +2396 -14348(NS)m 2639(RR)s 200 fnt82 2851 -14350(,)m 2962(it)s +3133(is)s 3326(supposed)s 4129(to)s 4345(ha)s 4(v)k 3(e)k +4775(the)s 5079(zone.)s 5616(It)s 5798(is)s 6300 -1576(reasonable)m +7193(to)s 7391(declare)s 8007(f)s 2(ailure)k 8566(at)s +8752(this)s 9082(point,)s 9585(though)s 10183(perhaps)s 6300 -1816(a)m +6438(bit)s 6698(se)s 5(v)k 3(ere.)k 160 fnt82 +6700 -2125(BIND)m 200 fnt82 7089 -2127(s)m 7207(from)s 7635(v)s 3(ersion)k +8259(4.9)s 8550(ha)s 4(v)k 3(e)k 200 fnt84 +8960 -2128(syslog)m 200 fnt82 9469 -2127('ed)m 9764(the)s 10048(condition)s +6300 -2367(and)m 6624(gone)s 7048(on)s 7284(to)s 7475(try)s +7732(the)s 8011(other)s 8456(dele)s 3(g)k 1(ated)k +9250(serv)s 3(ers.)k 9945(The)s 200 fnt84 10291 -2368(syslog)m +200 fnt82 6300 -2607(v)m 4(olume)k 6949(generated)s 7777(by)s +8032(this)s 8374(condition)s 9182(is)s 9369(the)s 9667(cause)s +10163(of)s 10384(more)s 6300 -2847(than)m 6683(half)s 7032(the)s +7315(questions)s 8107(we)s 8379(see)s 8672(about)s 160 fnt82 +9155 -2845(BIND)m 200 fnt82 9584 -2847(from)m 10011(ne)s 5(w)k +10378(name)s 6300 -3087(serv)m 3(er)k 6835(administrators.)s 8125(The)s +8488(only)s 8896(w)s 2(ay)k 9279(to)s 9487(\207x)s +9751(the)s 10047(condition)s 6300 -3327(is)m 6507(to)s 6737(get)s +7055(someone)s 7838(to)s 8068(edit)s 8441(the)s 8759(dele)s 3(g)k 1(ation)k +9659(to)s 9889(remo)s 3(v)k 3(e)k 10555(the)s +6300 -3567(nonauthoritati)m 5(v)k 3(e)k 7714(name)s 8262(serv)s 3(er)k 8(,)k +8903(or)s 9186(to)s 9458(get)s 9818(someone)s 10643(to)s +6300 -3807(mak)m 2(e)k 6837(the)s 7188(name)s 7727(serv)s 3(er)k +8317(authoritati)s 5(v)k 3(e.)k 9522(Either)s 10116(w)s 2(ay)k +10554(it')s 11(s)k 6300 -4047(not)m 6637(something)s 7549(the)s +7874(detecting)s 8685(serv)s 3(er')k 11(s)k 9381(administrator)s +10523(can)s 6300 -4287(do)m 6569(an)s 3(ything)k 7333(about)s +7845(directly;)s 8576(we)s 8877(hope)s 9334(that)s 9701(the)s +10013(continued)s 200 fnt84 6300 -4528(syslog)m 200 fnt82 6891 -4527(v)m 4(olume)k +7567(will)s 7958(lead)s 8371(to)s 8608(more)s 9099(hate)s +9512(mail)s 9947(being)s 10472(sent)s 6300 -4767(to)m 6541(the)s +6870(administrators)s 8093(of)s 8345(brok)s 2(en)k 8983(zones,)s +9572(thus)s 9990(ultimately)s 6300 -5007(leading)m 6941(to)s 7151(a)s +7294(decline)s 7923(in)s 8133(the)s 8431(number)s 9095(of)s +9316(brok)s 2(en)k 9923(zones.)s 10531(W)s 16(e)k +6300 -5247(ha)m 4(v)k 3(e)k 6719(been)s 7145(accused)s +7824(of)s 8040(optimism)s 8842(in)s 9047(this)s 9384(matter)s 11(.)k +200 fnt84 6300 -5788(4.)m 6450(11)s 6650(.)s 6800(Glue)s +200 fnt82 6300 -6167(When)m 6836(transmitting)s 7857(a)s 8005(zone)s +8441(via)s 8744(a)s 160 fnt82 8892 -6165(TCP)m 200 fnt82 +9243 -6167(\205zone)m 9767(transfer)s 8(,)k 14(\206)k 10549(the)s +6300 -6407(general)m 6942(rule)s 7308(is)s 7497(to)s 7709(send)s +8131(only)s 8543(the)s 8843(RRsets)s 9463(whose)s 10029(names)s +10594(lie)s 6300 -6647(within)m 6852(the)s 7138(zone)s 7557(being)s +8043(transferred,)s 8996(which)s 9526(is)s 9701(to)s 9899(say)s +10207(starting)s 6300 -6887(from)m 6791(the)s 7138(initial)s 7705(zone)s +8185(cut,)s 8582(and)s 8974(proceeding)s 9963(do)s 5(wnw)k 2(ard)k +6300 -7127(\(a)m 3(w)k 2(ay)k 6838(from)s 7282(the)s +7582(root\))s 8026(to)s 8238(include)s 8881(all)s 9136(names)s +9701(which)s 10245(are)s 10544(not)s 6300 -7367(further)m 6919(dele)s 3(g)k 1(ated.)k +7805(There)s 8347(is)s 8557(an)s 8823(e)s 3(xception)k +9672(to)s 9905(this,)s 10320(called)s 6300 -7607(\205glue.)m 14(\206)k +6967(An)s 3(y)k 7370(address)s 8028(records)s 8675(\()s +160 fnt82 8741 -7605(A)m 8896(RR)s 200 fnt82 9108 -7607(s\))m +9313(which)s 9862(are)s 10166(referred)s 6300 -7847(to)m 6521(by)s +6787(an)s 160 fnt82 7041 -7845(NS)m 7284(RR)s 200 fnt82 +7562 -7847(inside)m 8103(the)s 8412(zone)s 8854(\(at)s 9129(the)s +9438(initial)s 9967(cut)s 10276(or)s 10508(an)s 3(y)k +6300 -8087(do)m 5(wnw)k 2(ard)k 7171(cuts\))s 7593(must)s +8016(be)s 8240(included,)s 9012(e)s 5(v)k 3(en)k +9416(if)s 9573(the)s 3(y)k 9949(lie)s 10183(beneath)s +6300 -8327(one)m 6638(of)s 6854(the)s 7147(do)s 5(wnw)k 2(ard)k +8032(zone)s 8458(cuts.)s 6700 -8638(If)m 6943(this)s 7341(information)s +8392(is)s 8635(not)s 9001(included)s 9798(in)s 10064(the)s +10418(zone)s 6300 -8878(transfer)m 8(,)k 7002(then)s 7399(referral)s +8036(responses)s 8863(w)s 2(on')k 3(t)k 9377(be)s +9619(able)s 10004(to)s 10213(include)s 6300 -9118(those)m 6785(addresses)s +7611(in)s 7831(their)s 8260(additional)s 9121(data)s 9517(sections.)s +10322(In)s 10553(the)s 6300 -9358(absence)m 6978(of)s 7193(that)s +7540(additional)s 8385(data,)s 8815(the)s 9107(name)s 9587(serv)s 3(ers)k +10195(will)s 10553(not)s 6300 -9598(be)m 6543(reachable)s 7359(e)s 3(xcept)k +7930(by)s 8185(serv)s 3(ers)k 8799(who)s 9198(ha)s 4(v)k 3(e)k +9622(the)s 9920(zone)s 10351(\211)s 10506(and)s 6300 -9838(that')m 11(s)k +6792(not)s 7109(v)s 3(ery)k 7522(useful.)s 8170(It)s +8353(is)s 8547(important)s 9383(that)s 9743(a)s 9893(serv)s 3(er)k +10437(only)s 6300 -10078(send)m 6705(\(or)s 6977(accept\))s 7590(rele)s 5(v)k 5(ant)k +8260(glue)s 8643(during)s 9204(zone)s 9620(transfers,)s 10393(since)s +6300 -10318(otherwise)m 7147(this)s 7508(becomes)s 8278(an)s 8540(easy)s +8967(w)s 2(ay)k 9371(for)s 9677(your)s 10117(cache)s +10643(to)s 6300 -10558(become)m 6969(polluted.)s 240 fnt84 6300 -11246(5.)m +6600(What)s 7232(W)s 15(e)k 7623(Ha)s 6(v)k 2(e)k +8207(Fixed)s 160 fnt82 6300 -11623(BIND)m 200 fnt82 6689 -11625(s)m +6822(from)s 7265(v)s 3(ersion)k 7904(4.9)s 8210(ha)s 4(v)k 3(e)k +8635(plugged)s 9334(a)s 9478(lot)s 9744(of)s 9966(holes)s +10442(with)s 6300 -11865(respect)m 6912(to)s 7117(earlier)s 7673(v)s 3(ersions.)k +8483(An)s 8777(incomplete)s 9711(list)s 10003(follo)s 5(ws:)k +200 fnt84 6300 -12406(5.1)m 6550(.)s 6700(Cache)s 7281(T)s 18(agging)k +160 fnt82 6300 -12821(BIND)m 200 fnt82 6758 -12823(no)m 5(w)k +7166(maintains)s 8008(for)s 8309(each)s 8742(cached)s 160 fnt82 +9363 -12821(RR)m 200 fnt82 9644 -12823(a)m 9801(\205credibility\206)s 6300 -13063(le)m 5(v)k 3(el)k +6758(sho)s 5(wing)k 7509(whether)s 8230(the)s 8553(data)s +8964(came)s 9463(from)s 9930(a)s 10098(zone,)s 10604(an)s +6300 -13303(authoritati)m 5(v)k 3(e)k 7366(answer)s 8(,)k +8040(an)s 8297(authority)s 9085(section,)s 9767(or)s 10002(additional)s +6300 -13543(data)m 6681(section.)s 7394(When)s 7920(a)s 8058(more)s +8517(credible)s 9207(RRset)s 9743(comes)s 10301(in,)s 10556(the)s +6300 -13783(old)m 6631(one)s 6995(is)s 7203(completely)s 8163(wiped)s +8726(out.)s 9157(Older)s 160 fnt82 9686 -13781(BIND)m 200 fnt82 +10075 -13783(s)m 10228(blindly)s 6300 -14023(aggre)m 3(g)k 1(ated)k +7228(data)s 7618(from)s 8064(all)s 8321(sources,)s 9026(paying)s +9628(no)s 9887(attention)s 10642(to)s 6300 -14263(the)m 6593(maxim)s +7196(that)s 7544(some)s 8014(sources)s 8660(are)s 8952(better)s +9454(than)s 9847(others.)s +grestore + +pgsave restore +showpage + +%%Page: ? 6 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Symbol +%%+ font Times-Italic +/pgsave save def +%%IncludeResource: font Symbol +/fnt78 { /Symbol LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 15840 translate +0.0000 rotate + +grestore +gsave +0 15840 translate +0.0000 rotate +200 fnt82 0.0 0.0 0.0 setrgbcolor 1840 -1576(Each)m 160 fnt82 2278 -1574(RR)m +200 fnt82 2530 -1576(also)m 2890(has)s 3195(the)s 3478(address)s +4114(of)s 4320(the)s 4603(name)s 5074(serv)s 3(er)k +5596(who)s 1440 -1816(sent)m 1803(it)s 1956(to)s 2154(us.)s +2424(This)s 2821(can)s 3140(be)s 3371(seen)s 3767(in)s +3965(cache)s 4460(dump)s 4958(when)s 5433(you')s 10(re)k +1440 -2056(looking)m 2121(at)s 2335(some)s 2826(bad)s 3185(data)s +3587(and)s 3946(w)s 2(ondering)k 4868(ho)s 5(w)k +5278(it)s 5459(got)s 5785(to)s 1440 -2296(you.)m 200 fnt84 +1440 -2837(5.2)m 1690(.)s 1840(Additional)s 2798(Data)s 3258(Pr)s 3(omiscuity)k +200 fnt82 1440 -3254(W)m 16(e)k 1763(accelerate)s 2618(the)s +160 fnt82 2924 -3252(TTL)m 200 fnt82 3278 -3254(decline)m 3915(for)s +4210(data)s 4604(which)s 5154(arri)s 5(v)k 3(ed)k +5772(as)s 1440 -3494(additional)m 2293(data.)s 2781(W)s 16(e)k +3098(are)s 3397(considering)s 4383(not)s 4695(caching)s 5371(it)s +5538(at)s 5738(all)s 1440 -3734(other)m 1894(than)s 2282(as)s +2492(necessary)s 3309(for)s 3586(forw)s 2(arding)k 4514(the)s +4802(response)s 5543(\211)s 5688(see)s 1440 -3974(belo)m 5(w)k 13(.)k +200 fnt84 1440 -4474(5.3)m 1690(.)s 1840(Irr)s 3(ele)k 3(v)k 2(ant)k +2743(Answers)s 200 fnt82 1440 -4852(W)m 16(e)k 1758(check)s +2280(the)s 2581(response)s 3335(to)s 3548(ensure)s 4125(that)s +4481(all)s 4737(RRsets)s 5358(in)s 5571(each)s 1440 -5092(section)m +2091(ha)s 4(v)k 3(e)k 2548(names)s 3144(and)s +3520(types)s 4028(that)s 4414(mak)s 2(e)k 4931(sense)s +5449(in)s 5692(the)s 1440 -5332(conte)m 3(xt)k 2130(of)s +2403(the)s 2753(query)s 3314(and)s 3709(answer)s 4379(sections.)s +5176(Including)s 1440 -5572(spurious)m 2200(additional)s 3081(data)s 3497(w)s 2(on')k 3(t)k +4042(automatically)s 5209(pollute)s 5847(a)s 1440 -5812(cache)m 1973(an)s 3(y)k +2339(more;)s 2884(As)s 3186(of)s 160 fnt82 3433 -5810(BIND)m +200 fnt82 3903 -5812(4.9.3)m 4384(it)s 4575(is)s 4788(necessary)s +5641(that)s 1440 -6052(the)m 1750(answer)s 2380(section)s 3010(contain)s +3663(a)s 160 fnt82 3818 -6050(CN)m 5(AME)k 4428(RR)s +200 fnt82 4707 -6052(to)m 4929(introduce)s 5748(an)s 1440 -6292(arbitrary)m +2158(name,)s 2673(after)s 3070(which)s 3591(it')s 11(s)k +3867(b)s 4(usiness)k 4571(as)s 4770(usual)s 5224(for)s +5490(cache)s 1440 -6532(polluters.)m 2294(This)s 2706(is)s 2896(the)s +3197(best)s 3575(we)s 3865(can)s 4199(do)s 4457(without)s +5124(a)s 5270(protocol)s 1440 -6772(change.)m 200 fnt84 1440 -7313(5.4)m +1690(.)s 1840(Nonmatching)s 3042(Answers)s 200 fnt82 1440 -7730(Belie)m 5(v)k 3(e)k +2132(it)s 2335(or)s 2594(not,)s 2992(older)s 160 fnt82 +3494 -7728(BIND)m 200 fnt82 3883 -7730(s)m 4053(did)s 4401(not)s +4749(check)s 5306(that)s 5697(the)s 1440 -7970(answer)m 2099(name)s +2626(matched)s 3396(the)s 3735(query)s 4285(name.)s 4912(No)s 5(w)k 13(,)k +5428(within)s 1440 -8210(the)m 1760(limits)s 2289(of)s 160 fnt82 +2532 -8208(CN)m 5(AME)k 200 fnt82 3102 -8210(s)m 3256(and)s +3621(wildcard)s 4394(answers,)s 160 fnt82 5161 -8208(BIND)m 200 fnt82 +5627 -8210(will)m 1440 -8450(insist)m 1935(that)s 2309(a)s 2473(response)s +3245(answers)s 3961(the)s 4280(right)s 4732(question.)s 5583(This)s +1440 -8690(error)m 1907(w)s 2(as)k 2295(particularly)s 3292(pernicious)s +4202(with)s 4637(respect)s 5280(to)s 5516(some)s 1440 -8930(of)m +1686(the)s 2009(name)s 200 fnt78 2520 -8935(\253)m 200 fnt82 +2808 -8930(address)m 3484(symmetry)s 4360(checking,)s 5209(since)s 5697(the)s +1440 -9170(answer')m 11(s)k 2170(RRname)s 2902(sets)s 3234(the)s +3512(name)s 3978(in)s 4168(the)s 4446(resolv)s 3(er')k 11(s)k +5250(response)s 1440 -9410(structure,)m 2249(which)s 2800(meant)s 3350(that)s +3712(callers)s 4293(of)s 200 fnt84 4523 -9411(gethostbyname\(\))m 200 fnt82 +1440 -9650(could)m 1991(end)s 2387(up)s 2695(comparing)s 3655(a)s +3851(foreign)s 4534(name)s 5073(to)s 5336(another)s 1440 -9890(foreign)m +2065(name.)s 200 fnt84 1440 -10431(5.5)m 1690(.)s 1840(Logging)s +200 fnt82 1440 -10848(Man)m 3(y)k 1961(of)s 2186(the)s +2488(detectable)s 3352(conditions)s 4241(indicating)s 5096(a)s 5243(probable)s +1440 -11088(break-in)m 2164(attempt)s 2821(were)s 3268(in)s 3484(the)s +3788(past)s 4169(either)s 4682(not)s 4998(detected,)s 5771(or)s +1440 -11328(treated)m 2019(as)s 2223(protocol)s 2926(errors)s 3428(\(which)s +4020(is)s 4191(to)s 4385(say)s 13(,)k 4726(silently)s +5350(w)s 2(ork)k 2(ed)k 1440 -11568(around\).)m 160 fnt82 +2195 -11566(BIND)m 200 fnt82 2619 -11568(no)m 5(w)k 2993(f)s 2(airly)k +3456(shrieks)s 4054(whene)s 5(v)k 3(er)k 4855(it)s +5000(has)s 5300(e)s 5(v)k 3(en)k 5703(the)s +1440 -11808(slightest)m 2147(cause)s 2633(for)s 2910(alarm,)s 3457(which)s +3989(is)s 4166(a)s 4299(mix)s 3(ed)k 4839(blessing)s +5536(since)s 1440 -12048(the)m 1748(v)s 4(olume)k 2407(of)s +2638(its)s 2890(complaints)s 3828(is)s 4025(so)s 4267(high)s +4687(that)s 5050(most)s 5502(name)s 1440 -12288(serv)m 3(er)k +1972(administrators)s 3159(pay)s 3497(no)s 3747(attention.)s 1840 -12599(The)m +200 fnt84 2235 -12600(syslog)m 200 fnt82 2829 -12599(data)m 3245(is)s +3462(of)s 3713(greatest)s 4415(interest)s 5084(during)s 5690(the)s +1440 -12839(post)m 1834(mortem)s 2515(analysis)s 3217(of)s 3445(a)s +3595(break-in)s 4320(attempt.)s 5078(The)s 5450(log)s 5767(of)s +1440 -13079(unsolicited)m 2394(responses,)s 3298(for)s 3611(e)s 3(xample,)k +4413(can)s 4770(sho)s 5(w)k 5267(attempts)s 1440 -13319(at)m +1659(cache)s 2187(pollution)s 2983(during)s 3580(the)s 3899(early)s +4372(stages)s 4933(\211)s 5109(before)s 5693(the)s 1440 -13559(attack)m 2(ers)k +2217(switched)s 2998(to)s 3227(whate)s 5(v)k 3(er)k +4022(technology)s 4982(actually)s 5685(got)s 1440 -13799(them)m 1905(in,)s +2177(or)s 2410(set)s 2697(of)s 5(f)k 2991(your)s +3424(alarms,)s 4070(or)s 4303(whate)s 5(v)k 3(er)k 11(.)k +5180(Be)s 5468(a)s 3(w)k 2(are)k 1440 -14039(while)m +1979(e)s 3(xamining)k 2914(these)s 3419(logs)s 3848(that)s +4243(some)s 4760(systems)s 5486(\(most)s 1440 -14279(notably)m 2118(SunOS\))s +2830(cannot)s 3441(cause)s 3962(pack)s 2(ets)k 4636(to)s +4871(come)s 5382(from)s 5849(a)s 6300 -1576(particular)m 7114(address)s +7763(if)s 7937(the)s 3(y)k 8330(ha)s 4(v)k 3(e)k +8752(more)s 9214(than)s 9610(one)s 9951(interf)s 2(ace)k +10696(\211)s 6300 -1816(so)m 6540(if)s 6724(you')s 10(re)k +7297(on)s 7560(the)s 7866(wrong)s 8439(side)s 8822(of)s +9051(a)s 9202(multihomed)s 10228(SunOS)s 6300 -2056(name)m 6845(serv)s 3(er)k 8(,)k +200 fnt83 7483 -2055(all)m 200 fnt82 7807 -2056(of)m 8087(its)s +8388(responses)s 9275(will)s 9698(appear)s 10342(to)s 10611(be)s +6300 -2296(\205unsolicited.)m 14(\206)k 200 fnt84 6300 -2796(5.6)m 6550(.)s +6700(Glue)s 160 fnt82 6300 -3173(BIND)m 200 fnt82 6689 -3175(s)m +6854(from)s 7329(v)s 3(ersion)k 8000(4.9)s 8338(restrict)s +8976(glue)s 9407(to)s 9650(just)s 10025(the)s 160 fnt82 +10356 -3173(A)m 10511(RR)s 200 fnt82 10723 -3175(s)m 6300 -3415(under)m +6841(the)s 7171(dele)s 3(g)k 1(ation)k 8083(point,)s +8630(whereas)s 9368(pre)s 5(vious)k 10136(v)s 3(ersions)k +6300 -3655(included)m 7057(all)s 7326(the)s 160 fnt82 7640 -3653(A)m +7795(RR)s 200 fnt82 8007 -3655(s)m 8155(referred)s 8854(to)s +9080(by)s 9351(a)s 9510(zone')s 11(s)k 160 fnt82 +10089 -3653(NS)m 10332(RR)s 200 fnt82 10544 -3655(s)m 10692(\211)s +6300 -3895(e)m 5(v)k 3(en)k 6735(those)s 7222(abo)s 3(v)k 3(e)k +7759(the)s 8069(zone.)s 8612(By)s 8912(\205restrict\206)s 9705(we)s +10004(mean)s 10502(that)s 160 fnt82 6300 -4133(BIND)m 200 fnt82 +6751 -4135(will)m 7122(be)s 7372(conserv)s 5(ati)k 5(v)k 3(e)k +8426(both)s 8843(in)s 9060(what)s 9509(it)s 9681(generates)s +200 fnt83 10493 -4134(and)m 6300 -4374(what)m 6726(it)s 6874(accepts)s +200 fnt82 7470 -4375(.)m 7558(This)s 7950(may)s 8331(\210y)s +8580(in)s 8773(the)s 9054(f)s 2(ace)k 9420(of)s +9624(the)s 9905(Rob)s 4(ustness)k 6300 -4615(Principle)m 128 fnt82 +7018 -4526(1)m 200 fnt82 7139 -4615(of)m 7362([)s 7428(RFC1123)s +8205(])s 8271(,)s 8378(b)s 4(ut)k 8686(the)s +8986(old)s 9298(beha)s 4(viour)k 10148(w)s 2(as)k +10512(just)s 6300 -4855(simply)m 200 fnt83 6892 -4854(wr)m 9(ong)k +200 fnt82 7393 -4855(.)m 240 fnt84 6300 -5543(6.)m 6600(What)s +7232(W)s 15(e)k 7623(Cannot)s 8441(Fix)s 200 fnt82 +6300 -5923(W)m 16(e)k 6660(are)s 7002(counting)s 7800(on)s +8100(the)s 160 fnt82 8443 -5921(IETF)m 8878(DNSSEC)s 200 fnt82 +9587 -5923(ef)m 5(fort)k 10123(to)s 10378(bring)s 6300 -6163(us)m +6585(a)s 160 fnt82 6781 -6161(DNS)m 200 fnt82 7207 -6163(protocol)m +7979(re)s 5(vision)k 8723(that)s 9129(authoritati)s 5(v)k 3(ely)k +10389(signs)s 6300 -6403(responses.)m 7235(W)s 8(ith)k 7687(that)s +8047(in)s 8264(place)s 8745(we)s 9039(will)s 9410(all)s +9670(stop)s 10064(w)s 2(orrying)k 6300 -6643(about)m 6789(attack)s 2(ers)k +7538(who)s 7928(spoof)s 8417(their)s 8827(source)s 9392(addresses,)s +10249(predict)s 6300 -6883(our)m 160 fnt82 6620 -6881(UDP)m 200 fnt82 +6992 -6883(port)m 7367(numbers)s 8107(and)s 8449(query)s 160 fnt82 +8957 -6881(ID)m 200 fnt82 9179 -6883(numbers,)m 9969(and)s 10311(so)s +10542(on.)s 6300 -7123(Response)m 7107(data)s 7482(will)s 7835(be)s +8067(objecti)s 5(v)k 3(ely)k 8987(v)s 3(eri\207able,)k +9829(independent)s 6300 -7363(of)m 6526(whether)s 7227(it)s 7397(is)s +7589(e)s 5(v)k 3(en)k 8017(a)s 8165(response)s +8921(to)s 9136(some)s 9616(query)s 10130(we)s 10422(ha)s 4(v)k 3(e)k +6300 -7603(sent.)m 6771(Until)s 160 fnt82 7231 -7601(DNSSEC)m 200 fnt82 +7891 -7603(is)m 8074(\207nished)s 8756(and)s 9095(in)s 9301(wide)s +9739(use,)s 10105(there)s 10553(are)s 6300 -7843(some)m 6770(things)s +7307(we')s 10(re)k 7799(just)s 8136(going)s 8641(to)s +8846(ha)s 4(v)k 3(e)k 9265(to)s 9470(li)s 5(v)k 3(e)k +9810(with.)s 200 fnt84 6300 -8384(6.1)m 6550(.)s 6700(Query)s +160 fnt84 7292 -8381(ID)m 200 fnt84 7519 -8384(Pr)m 3(ediction)k +200 fnt82 6300 -8801(W)m 8(ith)k 6760(only)s 7185(16)s +7455(bits)s 7812(w)s 2(orth)k 8345(of)s 8581(query)s +160 fnt82 9105 -8799(ID)m 200 fnt82 9343 -8801(and)m 9701(16)s +9971(bits)s 10328(w)s 2(orth)k 6300 -9041(of)m 160 fnt82 +6543 -9039(UDP)m 200 fnt82 6938 -9041(port)m 7336(number)s 8(,)k +8064(it')s 11(s)k 8383(hard)s 8814(not)s 9146(to)s +9378(be)s 9643(predictable.)s 10653(A)s 6300 -9281(determined)m 7232(attack)s 2(er)k +7895(can)s 8208(try)s 8466(all)s 8701(the)s 8981(numbers)s +9704(in)s 9896(a)s 10021(v)s 3(ery)k 10409(short)s +6300 -9521(time)m 6689(and)s 7013(can)s 7325(use)s 7626(patterns)s +8291(deri)s 5(v)k 3(ed)k 8916(from)s 9339(e)s 3(xamination)k +10356(of)s 10558(the)s 6300 -9761(freely)m 6800(a)s 4(v)k 5(ailable)k +160 fnt82 7545 -9759(BIND)m 200 fnt82 7971 -9761(source)m 8527(code.)s +9040(Ev)s 3(en)k 9484(if)s 9642(we)s 9911(had)s +10236(a)s 10361(white)s 6300 -10001(noise)m 6777(generator)s 7585(to)s +7797(help)s 8197(randomize)s 9094(our)s 9417(numbers,)s 10210(it')s 11(s)k +10509(just)s 6300 -10241(too)m 6605(easy)s 7008(to)s 7213(try)s +7484(them)s 7932(all.)s 200 fnt84 6300 -10782(6.1)m 6550(.)s +160 fnt84 6700 -10779(CN)m 3(AME)k 200 fnt84 7349 -10782(Indir)m 3(ection)k +200 fnt82 6300 -11160(As)m 6608(mentioned)s 7536(pre)s 5(viously)k 13(,)k +8496(a)s 160 fnt82 8671 -11158(CN)m 5(AME)k 200 fnt82 +9328 -11160(response)m 10111(allo)s 5(ws)k 10712(a)s 6300 -11400(remote)m +6890(name)s 7359(serv)s 3(er)k 7879(to)s 8072(introduce)s +8862(a)s 8988(ne)s 5(w)k 9353(name)s 9822(for)s +10092(an)s 10318(RRset)s 6300 -11640(of)m 6526(arbitrary)s 7270(type.)s +7773(F)s 3(orw)k 2(arders)k 8734(recei)s 5(ving)k +9529(such)s 9954(a)s 10102(response)s 6300 -11880(should)m 6889(not)s +7201(cache)s 7710(those)s 8187(RRsets)s 8807(\(as)s 160 fnt82 +9095 -11878(BIND)m 200 fnt82 9541 -11880(currently)m 10316(does\),)s 6300 -12120(b)m 4(ut)k +6607(e)s 5(v)k 3(en)k 7031(with)s 7441(that)s +7795(precaution)s 8691(it)s 8857(will)s 9222(be)s 9466(possible)s +10174(to)s 10385(use)s 10706(a)s 160 fnt82 6300 -12358(CN)m 5(AME)k +200 fnt82 6939 -12360(response)m 7704(to)s 7928(bypass)s 8539(the)s +8851(name/address)s 10002(symmetry)s 6300 -12600(checking.)m gsave +6300 -14114 translate +200 fnt82 0.0 0.0 0.0 setrgbcolor 1134 0 0 0 200 240 50 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +102 fnt82 0.0 0.0 0.0 setrgbcolor +6300 -14295(1)m 160 fnt82 6351 -14366(\205Be)m 6639(liberal)s 7086(in)s +7250(what)s 7600(you)s 7880(accept,)s 8368(and)s 8639(conserv)s 4(ati)k 4(v)k 2(e)k +9476(in)s 9640(what)s 9990(you)s 10270(send.)s 11(\206)k + +grestore + +pgsave restore +showpage + +%%Page: ? 7 +%%BeginPageSetup +%%PageResources: font Times-Bold +%%+ font Times-Roman +%%+ font Times-Italic +%%+ font Symbol +/pgsave save def +%%IncludeResource: font Symbol +/fnt78 { /Symbol LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 15840 translate +0.0000 rotate + +grestore +gsave +0 15840 translate +0.0000 rotate +240 fnt84 0.0 0.0 0.0 setrgbcolor 1440 -1605(7.)m 1740(What)s 2372(W)s 15(e)k +2763(W)s 18(ould)k 3497(Lik)s 2(e)k 4020(T)s 22(o)k +4338(Fix)s 200 fnt82 1440 -1984(Ev)m 3(ery)k 2017(change)s +2685(to)s 160 fnt82 2944 -1982(BIND)m 200 fnt82 3437 -1984(has)m +3806(the)s 4153(potential)s 4953(to)s 5212(push)s 5693(the)s +1440 -2224(Internet)m 2160(into)s 2572(the)s 2917(\207nal)s 3373(abyss.)s +4017(W)s 16(e)k 4379(are)s 4723(therefore)s 5542(quite)s +1440 -2464(conserv)m 5(ati)k 5(v)k 3(e)k 2484(about)s +2979(an)s 3(ything)k 3726(that)s 4076(looks)s 4560(lik)s 2(e)k +4908(it)s 5070(could)s 5565(ha)s 4(v)k 3(e)k +1440 -2704(f)m 2(ar)k 1738(reaching)s 2503(consequences,)s 3727(which)s +4294(is)s 4506(to)s 4741(say)s 13(,)k 5123(just)s +5490(about)s 1440 -2944(an)m 3(ything)k 128 fnt82 2135 -2855(1)m +200 fnt82 2199 -2944(.)m 200 fnt84 1440 -3485(7.1)m 1690(.)s +1840(Query)s 2432(Restarts)s 200 fnt82 1440 -3902(Some)m 1967(of)s +2206(the)s 2522(information)s 3535(needed)s 4172(to)s 4400(properly)s +5148(v)s 5(alidate)k 5845(a)s 160 fnt82 1440 -4140(DNS)m +200 fnt82 1834 -4142(response)m 2606(is)s 2814(e)s 3(xpensi)k 5(v)k 3(e)k +3675(\(in)s 3972(terms)s 4489(of)s 4731(bandwidth)s 5649(and)s +1440 -4382(delay\))m 2010(to)s 2238(obtain,)s 2859(and)s 3220(for)s +3525(that)s 3896(reason)s 4488(it)s 4671(is)s 4876(inappropriate)s +1440 -4622(for)m 1714(e)s 5(v)k 3(ery)k 2190(resolv)s 3(er)k +2869(to)s 3066(e)s 3(xhausti)k 5(v)k 3(ely)k +4103(v)s 5(alidate)k 4769(e)s 5(v)k 3(ery)k +5245(response)s 1440 -4862(it)m 1631(recei)s 5(v)k 3(es.)k +2454(Recursi)s 5(v)k 3(e)k 3322(or)s 3569(forw)s 2(arding)k +4533(name)s 5045(serv)s 3(ers,)k 5735(on)s 1440 -5102(the)m +1767(other)s 2260(hand,)s 2782(ha)s 4(v)k 3(e)k +3235(\(or)s 3551(should)s 4167(be)s 4439(able)s 4854(to)s +5093(obtain\))s 5741(all)s 1440 -5342(the)m 1750(information)s 2757(the)s +160 fnt82 3067 -5340(DNS)m 200 fnt82 3452 -5342(has)m 3784(to)s +4006(of)s 5(fer)k 8(,)k 4496(and)s 4851(it)s +5028(w)s 2(ould)k 5592(be)s 5847(a)s 1440 -5582(good)m +1891(thing)s 2352(if)s 2524(the)s 2818(name)s 3300(serv)s 3(er)k +3833(v)s 5(alidated)k 4608(responses)s 5432(before)s 1440 -5822(forw)m 2(arding)k +2363(them)s 2801(to)s 2996(the)s 3279(client.)s 160 fnt82 +3860 -5820(BIND)m 200 fnt82 4289 -5822(does)m 4694(not)s 4989(currently)s +5747(do)s 1440 -6062(this,)m 1812(since)s 2255(it)s 2400(is)s +2567(not)s 2857(possible)s 3544(to)s 3734(edit)s 4067(responses)s +200 fnt83 4875 -6061(in)m 5065(situ)s 200 fnt82 5387 -6062(and)m +5710(we)s 1440 -6302(are)m 1751(uncomfortable)s 2981(with)s 3404(the)s +3716(idea)s 4116(of)s 160 fnt82 4351 -6300(BIND)m 200 fnt82 +4809 -6302(autonomously)m 1440 -6542(deciding)m 2184(that)s 2540(certain)s 3138(responses)s +3969(should)s 4559(not)s 4872(be)s 5118(forw)s 2(arded)k +1440 -6782(at)m 1633(all.)s 1840 -7093(Our)m 2184(current)s 2781(plan)s +3158(for)s 3424(circumv)s 3(enting)k 4605(this)s 4926(problem)s +5624(is)s 5790(to)s 1440 -7333(restart)m 1981(all)s 2225(queries.)s +2895(T)s 16(o)k 3147(\205restart\206)s 3864(means)s 4418(that)s +4762(upon)s 5208(recei)s 5(ving)k 1440 -7573(an)m 1701(answer)s +2337(from)s 2797(a)s 2958(forw)s 2(arded)k 3847(query)s 13(,)k +4411(a)s 4572(name)s 5076(serv)s 3(er)k 5631(will)s +1440 -7813(v)m 5(alidate)k 2120(the)s 2419(response)s 3171(and)s +3515(insert)s 4012(\205kno)s 5(wn)k 4695(good\206)s 5239(data)s +5626(into)s 1440 -8053(its)m 1702(cache,)s 2279(and)s 2642(then)s +3060(pretend)s 3732(that)s 4105(the)s 4423(original)s 5117(query)s +5646(had)s 1440 -8293(\205just)m 1863(no)s 5(w\206)k 2338(been)s +2762(recei)s 5(v)k 3(ed.)k 3575(All)s 3877(the)s +4168(original)s 4835(RRsets)s 5446(w)s 2(ould)k 1440 -8533(be)m +1700(look)s 2(ed)k 2313(up)s 2585(ag)s 1(ain,)k +3137(and)s 3497(if)s 3690(an)s 3(y)k 4047(are)s +4361(still)s 4730(missing)s 5421(\(either)s 1440 -8773(because)m 2136(no)s +2403(response)s 3166(has)s 3498(yet)s 3808(included)s 4561(them,)s +5076(or)s 5309(because)s 1440 -9013(the)m 1758(responses)s 2606(that)s +2979(included)s 3740(them)s 4213(were)s 4674(in)s 8(v)k 5(alid)k +5289(in)s 5519(some)s 1440 -9253(w)m 2(ay\),)k 1966(ne)s 5(w)k +2373(queries)s 3027(w)s 2(ould)k 3604(be)s 3872(generated)s +4725(to)s 4960(bring)s 5461(in)s 5696(the)s 1440 -9493(missing)m +2131(data.)s 2634(Query)s 3204(restarts)s 3848(are)s 4162(the)s +200 fnt83 4477 -9492(only)m 200 fnt82 4892 -9493(w)m 2(ay)k +5294(to)s 5521(solv)s 3(e)k 1440 -9733(certain)m 2059(other)s +2547(problems)s 3367(currently)s 4164(being)s 4686(encountered)s 5738(by)s +160 fnt82 1440 -9971(BIND)m 128 fnt82 1829 -9884(2)m 200 fnt82 +1943 -9973(\211)m 2093(the)s 2386(security)s 3065(bene\207ts)s 3734(will)s +4093(be)s 4331(a)s 4469(happ)s 2(y)k 5005(side)s +5375(ef)s 5(fect.)k 1840 -10284(One)m 2284(interesting)s 3235(question)s +4022(we')s 10(re)k 4576(pondering)s 5497(about)s 1440 -10524(query)m +1957(restarts)s 2592(is)s 2787(whether)s 3491(to)s 3709(preserv)s 3(e)k +4442(the)s 160 fnt82 4748 -10522(AA)m 200 fnt82 5041 -10524(\210ag,)m +5453(which)s 1440 -10764(as)m 1697(discussed)s 2551(earlier)s 3149(will)s +3550(tend)s 3985(to)s 4232(be)s 4512(set)s 4824(on)s +5116(forw)s 2(arded)k 1440 -11004(responses)m 2271(if)s 2450(those)s +2928(responses)s 3759(come)s 4248(from)s 4693(an)s 4939(authoritati)s 5(v)k 3(e)k +1440 -11244(serv)m 3(er)k 8(,)k 1998(b)s 4(ut)k +2283(will)s 2626(tend)s 3003(to)s 3192(be)s 3414(clear)s +3833(on)s 4067(responses)s 4874(satis\207ed)s 5559(from)s 1440 -11484(the)m +1766(forw)s 2(arder')k 11(s)k 2763(cache.)s 3398(W)s 16(e)k +3741(could)s 4267(maintain)s 5046(the)s 5372(current)s 1440 -11724(semantics)m +2298(with)s 2727(the)s 3045(hierarchical)s 4057(cache)s 4584(described)s +5421(belo)s 5(w)k 13(,)k 1440 -11964(b)m 4(ut)k +1741(it')s 11(s)k 2033(not)s 2338(clear)s 2773(that)s +3121(the)s 160 fnt82 3414 -11962(AA)m 200 fnt82 3694 -11964(\210ag)m +4043(on)s 4293(forw)s 2(arded)k 5159(responses)s 1440 -12204(really)m +1937(matters)s 2566(that)s 2909(much.)s 160 fnt82 3497 -12202(DNS)m +200 fnt82 3815 -12204(v2)m 4060(will)s 4414(probably)s 5168(ha)s 4(v)k 3(e)k +5582(a)s 160 fnt82 5715 -12202(AD)m 200 fnt82 1440 -12444(\210ag)m +1795(\211)s 1951(authority)s 2726(desired)s 3356(\211)s 3512(to)s +3723(force)s 4187(forw)s 2(arding)k 5126(in)s 5337(spite)s +5768(of)s 1440 -12684(an)m 3(y)k 1786(cache.)s 2399(The)s +2770(proposed)s 160 fnt82 3562 -12682(AD)m 200 fnt82 3853 -12684(\210ag)m +4213(will)s 4583(probably)s 5353(ha)s 4(v)k 3(e)k +5783(to)s 1440 -12924(bypass)m 2032(the)s 2325(query)s 2829(restart)s +3374(logic)s 3822(described)s 4634(here.)s gsave +1440 -13828 translate +200 fnt82 0.0 0.0 0.0 setrgbcolor 1134 0 0 0 200 240 50 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +102 fnt82 0.0 0.0 0.0 setrgbcolor +1440 -14009(1)m 160 fnt82 1491 -14080(A)m 1646(Usenet)s 2129(article)s +2567(once)s 2909(opined,)s 3424(\205)s 128 fnt82 3495 -14078(BIND)m +160 fnt82 3846 -14080(is)m 3992(lik)s 1(e)k 4270(a)s +4381(train)s 4713(wreck)s 5143(inside.)s 11(\206)k 102 fnt82 +1440 -14295(2)m 160 fnt82 1491 -14366(Out)m 1770(of)s 1943(zone)s +128 fnt82 2285 -14364(CN)m 4(AME)k 160 fnt82 2741 -14366(s,)m +2883(for)s 3109(e)s 2(xample.)k 200 fnt84 6300 -1578(7.2)m +6550(.)s 6700(Hierar)s 3(chical)k 7818(Cache)s 200 fnt82 +6300 -1957(W)m 16(e)k 6613(w)s 2(ould)k 7163(lik)s 2(e)k +7512(to)s 7720(se)s 3(gment)k 8433(the)s 8729(cache)s +9234(such)s 9652(that)s 10003(additional)s 6300 -2197(data)m 6686(can)s +7017(be)s 7260(cached)s 7867(for)s 8154(the)s 8452(duration)s +9171(of)s 9392(a)s 9535(query')s 11(s)k 10176(restarts,)s +6300 -2437(b)m 4(ut)k 6586(not)s 6876(used)s 7276(to)s +7466(satisfy)s 8019(other)s 8463(queries)s 9072(\(either)s 9625(as)s +9825(answer)s 10423(data,)s 6300 -2677(authority)m 7053(data,)s 7468(or)s +7668(additional)s 8498(data\).)s 9029(Ideally)s 13(,)k 9652(the)s +9929(only)s 10318(things)s 6300 -2917(we)m 6586(w)s 2(ould)k +7137(e)s 5(v)k 3(er)k 7525(cache)s 8031(w)s 2(ould)k +8582(be)s 8824(the)s 9121(answer)s 9738(and)s 10080(authority)s +6300 -3157(sections,)m 7051(and)s 7400(only)s 7816(those)s 8297(from)s +8745(authoritati)s 5(v)k 3(e)k 9803(answers)s 10504(\()s +160 fnt82 10570 -3155(AA)m 200 fnt82 6300 -3397(\210ag)m 6676(set\).)s +160 fnt82 7139 -3395(BIND)m 200 fnt82 7528 -3397(')m 11(s)k +7737(current)s 8377(cache)s 8906(design)s 9503(is)s 9712(not)s +10044(ready)s 10563(for)s 6300 -3637(this)m 6654(kind)s 7076(of)s +7309(o)s 3(v)k 3(erloading)k 8322(\211)s 8489(we')s 10(v)k 3(e)k +9029(pushed)s 9661(it)s 9838(about)s 10348(as)s 10580(f)s 2(ar)k +6300 -3877(as)m 6519(it)s 6683(will)s 7046(go)s 7300(just)s +7641(by)s 7895(adding)s 8492(the)s 8789(credibility)s 9660(tags)s +10034(described)s 6300 -4117(earlier)m 11(.)k 6957(What')s 11(s)k +7582(needed)s 8208(is)s 8402(a)s 8552(multile)s 5(v)k 3(el)k +9412(translucent)s 10346(cache)s 6300 -4357(such)m 6762(that)s 7157(each)s +7618(lookup)s 8270(can)s 8643(specify)s 9314(a)s 9499(stack)s +10004(of)s 10267(caches)s 6300 -4597(to)m 6528(be)s 6789(searched,)s +7607(and)s 7968(each)s 8405(cache)s 8930(can)s 9279(be)s +9540(managed)s 10332(by)s 10605(an)s 6300 -4837(appropriate)m 7256(pur)s 3(ge)k +7757(polic)s 3(y)k 13(.)k 200 fnt84 6300 -5378(7.3)m +6550(.)s 6700(Empty)s 7326(Nonterminal)s 8460(Names)s 200 fnt82 +6300 -5795(One)m 6691(of)s 6916(the)s 7218(g)s 1(aping)k +7819(holes)s 8298(in)s 160 fnt82 8512 -5793(BIND)m 200 fnt82 +8901 -5795(')m 11(s)k 9092(ne)s 5(w)k 9478(nonpromiscuous)s +6300 -6035(polic)m 3(y)k 6845(to)s 5(w)k 2(ards)k +7518(cache)s 8020(data)s 8401(is)s 8583(that)s 8931(the)s +9224(credibility)s 10091(and)s 10429(zone)s 6300 -6275(tags)m 6673(are)s +6968(held)s 7364(in)s 7572(the)s 160 fnt82 7868 -6273(RR)m +200 fnt82 8080 -6275(,)m 8183(not)s 8491(in)s 8699(the)s +8995(name.)s 9579(It)s 9753(is)s 9938(possible)s 10643(to)s +6300 -6515(determine,)m 7194(kno)s 5(wing)k 7937(only)s 8341(a)s +8478(name,)s 9008(whether)s 9698(that)s 10045(name)s 10525(lies)s +6300 -6755(within)m 6858(an)s 3(y)k 7192(of)s 7407(a)s +7544(serv)s 3(er')k 11(s)k 8207(zones)s 8709(of)s +8924(authority)s 13(.)k 160 fnt82 9779 -6753(BIND)m 200 fnt82 +10217 -6755(doesn')m 3(t)k 6300 -6995(do)m 6550(that)s 6898(right)s +7324(no)s 5(w)k 13(,)k 7750(it)s 7910(currently)s +8678(checks)s 9269(the)s 160 fnt82 9562 -6993(RR)m 200 fnt82 +9774 -6995(s)m 9901(looking)s 10561(for)s 6300 -7235(an)m 3(y)k +6628(that)s 6969(ha)s 4(v)k 3(e)k 7381(a)s +7512(zone)s 7931(tag,)s 8267(and)s 8598(if)s 8762(none)s +9193(are)s 9478(found)s 9987(it)s 10140(assumes)s 6300 -7475(that)m +6669(it)s 6850(is)s 7053(in)s 7279(the)s 7593(cache.)s +8216(This)s 8641(is)s 8844(bad)s 9203(ne)s 5(ws)k +9678(in)s 9904(the)s 10218(case)s 10630(of)s 6300 -7715(empty)m +6854(nonterminal)s 7872(names)s 8436(\211)s 8592(those)s 9068(names)s +9632(which)s 10175(ha)s 4(v)k 3(e)k 10600(no)s +160 fnt82 6300 -7953(RR)m 200 fnt82 6512 -7955(s)m 6635(and)s +6969(are)s 7257(only)s 7658(present)s 8278(to)s 8479(k)s 2(eep)k +8899(tw)s 2(o)k 9242(dots)s 9620(from)s 10053(smashing)s +6300 -8195(into)m 6660(each)s 7074(other)s 11(.)k 6700 -8506(The)m +160 fnt84 7084 -8504(ARP)m 11(A)k 200 fnt82 7589 -8506(domain)m +8261(w)s 2(as)k 8642(once)s 9092(empty)s 9664(other)s +10147(than)s 10564(for)s 6300 -8746(its)m 160 fnt84 6569 -8744(IN-ADDR.ARP)m 11(A)k +200 fnt82 7812 -8746(subdomain,)m 8819(and)s 9189(e)s 5(v)k 3(entually)k +10092(someone)s 6300 -8986(accidentally)m 7317(fed)s 7628(a)s 7773(root)s +8151(serv)s 3(er)k 8690(some)s 160 fnt82 9167 -8984(NS)m +9410(RR)s 200 fnt82 9622 -8986(s)m 9756(at)s 9956(that)s +10311(name.)s 6300 -9226(That)m 6746(root)s 7148(serv)s 3(er)k +7711(told)s 8102(the)s 8426(other)s 8916(root)s 9318(serv)s 3(ers,)k +10008(and)s 10377(those)s 6300 -9466(root)m 6683(serv)s 3(ers)k +7304(told)s 7676(e)s 5(v)k 3(ery)k 8172(name)s +8665(serv)s 3(er)k 9209(on)s 9471(the)s 9776(Internet,)s +10506(and)s 6300 -9706(pretty)m 6816(soon)s 7245(nobody)s 7897(an)s 3(ywhere)k +8720(could)s 9215(do)s 9467(address)s 200 fnt78 10115 -9711(\256)m +200 fnt82 10364 -9706(name)m 6300 -9946(translations.)m 7364(W)s 16(e)k +7672(quickly)s 8318(added)s 8842(some)s 160 fnt82 9310 -9944(NS)m +9553(RR)s 200 fnt82 9765 -9946(s)m 9890(at)s 10081(the)s +160 fnt84 10372 -9944(ARP)m 11(A)k 200 fnt82 6300 -10186(domain)m +6948(and)s 7286(cold)s 7679(started)s 8258(the)s 8551(uni)s 5(v)k 3(erse.)k +6700 -10497(It)m 6891(w)s 2(ould)k 7458(be)s 7716(better)s +8238(if)s 160 fnt82 8429 -10495(BIND)m 200 fnt82 8888 -10497(did)m +9213(not)s 9538(need)s 9984(data)s 10385(to)s 10610(be)s +6300 -10737(present)m 6943(at)s 7155(a)s 7312(name)s 7812(in)s +8036(order)s 8525(to)s 8749(kno)s 5(w)k 9257(that)s +9624(that)s 9991(name)s 10491(w)s 2(as)k 6300 -10977(inside)m +6826(a)s 6965(local)s 7402(zone)s 7829(of)s 8046(authority)s 13(.)k +8903(Astute)s 9473(readers)s 10097(will)s 10457(note)s 6300 -11217(that)m +6659(it')s 11(s)k 6962(really)s 7475(quite)s 7934(easy)s +8348(to)s 8564(add)s 8913(ne)s 5(w)k 9301(names)s +9870(to)s 10086(someone)s 6300 -11457(else')m 11(s)k 6815(authority)s +7609(zones)s 8137(\211)s 8312(just)s 8674(k)s 2(eep)k +9123(in)s 9353(mind)s 9838(during)s 10434(your)s 6300 -11697(e)m 3(xperiments)k +7327(that)s 7683(these)s 8149(ne)s 5(w)k 8534(names)s +9100(w)s 2(on')k 3(t)k 9618(appear)s 10206(in)s +10419(zone)s 6300 -11937(transfers,)m 7113(so)s 7370(you)s 7750(will)s +8139(ha)s 4(v)k 3(e)k 8588(to)s 8823(infect)s +9355(each)s 9799(authoritati)s 5(v)k 3(e)k 6300 -12177(name)m +6781(serv)s 3(er)k 7313(manually)s 13(.)k 200 fnt84 +6300 -12718(7.4)m 6550(.)s 6700(Uni\207ed)s 7370(Zone)s 7852(Cut)s +8223(V)s 7(iew)k 200 fnt82 6300 -13097(Right)m 6815(no)s 5(w)k +7226(the)s 7541(answer)s 8176(you')s 2(ll)k 8722(get)s +9037(for)s 9341(an)s 160 fnt82 9601 -13095(NS)m 200 fnt82 +9876 -13097(query)m 10402(for)s 10706(a)s 6300 -13337(domain)m 6948(will)s +7307(depend)s 7933(on)s 8183(who)s 8577(you)s 8927(ask.)s +9342(If)s 9524(you)s 9874(ask)s 10189(a)s 10327(serv)s 3(er)k +6300 -13577(of)m 6501(the)s 6779(parent)s 7311(zone,)s 7772(you)s +8107(will)s 8451(get)s 8729(the)s 9007(dele)s 3(g)k 1(ation)k +9867(information)s 6300 -13817(from)m 6762(\205abo)s 3(v)k 3(e\206)k +7483(the)s 7801(zone)s 8252(cut.)s 8670(If)s 8877(you)s +9252(ask)s 9592(the)s 9910(a)s 10073(serv)s 3(er)k +10630(of)s 6300 -14057(the)m 6599(zone)s 7031(itself,)s 7533(you)s +7889(will)s 8254(get)s 8553(the)s 8852(actual)s 9382(authority)s +10157(data)s 10544(\(an)s 160 fnt82 6300 -14295(NS)m 200 fnt82 +6586 -14297(RRset)m 7155(and)s 7526(an)s 160 fnt82 7797 -14295(SO)m 5(A)k +200 fnt82 8110 -14297(.\))m 8309(W)s 16(e)k 8652(belie)s 5(v)k 3(e)k +9301(it)s 9494(w)s 2(ould)k 10074(be)s 10345(better)s + +grestore + +pgsave restore +showpage + +%%Page: ? 8 +%%BeginPageSetup +%%PageResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +%%+ font Helvetica-Bold +/pgsave save def +%%IncludeResource: font Helvetica-Bold +/Helvetica-Boldfnt37 vec1 /Helvetica-Bold LoutRecode +/fnt37 { /Helvetica-Boldfnt37 LoutFont } def +0.0500 dup scale 10 setlinewidth +%%EndPageSetup +gsave +0 15840 translate +0.0000 rotate + +grestore +gsave +0 15840 translate +0.0000 rotate +200 fnt82 0.0 0.0 0.0 setrgbcolor 1440 -1576(in)m 1656(most)s 2104(cases)s +2583(to)s 2799(ha)s 4(v)k 3(e)k 3229(the)s +3533(serv)s 3(er)k 4076(for)s 4369(the)s 4673(parent)s +5231(zone)s 5668(use)s 1440 -1816(its)m 1704(dele)s 3(g)k 1(ation)k +2606(data)s 3014(only)s 3446(as)s 3688(hints,)s 4202(and)s +4567(that)s 4942(it)s 5129(should)s 5738(go)s 1440 -2056(out)m +1787(and)s 2167(ask)s 2524(the)s 2859(serv)s 3(ers)k +3510(named)s 4133(therein)s 4777(for)s 5101(their)s 5557(vie)s 5(w)k +1440 -2296(of)m 1694(the)s 2025(real)s 2410(dele)s 3(g)k 1(ation)k +3323(data.)s 3842(This)s 4284(w)s 2(ould)k 4869(pre)s 5(v)k 3(ent)k +5546(most)s 1440 -2536(of)m 1696(the)s 2029(current)s 2682(instances)s +3500(of)s 3756(lame)s 4232(dele)s 3(g)k 1(ation,)k +5197(since)s 5695(the)s 1440 -2776(lameness)m 2226(w)s 2(ould)k +2781(be)s 3027(detected)s 3747(by)s 4005(the)s 4306(serv)s 3(er)k +4846(for)s 5136(the)s 5437(parent)s 1440 -3016(zone)m 1867(where)s +2404(it)s 2565(can)s 2892(most)s 3330(lik)s 2(ely)k +3832(be)s 4071(\207x)s 3(ed)k 4518(by)s 4769(the)s +5063(local)s 5500(name)s 1440 -3256(serv)m 3(er)k 1985(administrator)s 11(.)k +3197(The)s 3570(lame)s 4019(data)s 4413(can)s 4752(be)s +5003(elided)s 5552(from)s 1440 -3496(dele)m 3(g)k 1(ation)k +2406(responses,)s 3370(thus)s 3843(pre)s 5(v)k 3(enting)k +4828(other)s 5378(serv)s 3(ers)k 1440 -3736(from)m 1907(follo)s 5(wing)k +2757(it)s 2947(and)s 3315(ha)s 4(ving)k 3934(each)s +4378(other)s 4867(serv)s 3(er)k 200 fnt84 5429 -3737(syslog)m +200 fnt82 1440 -3976(the)m 1756(lameness)s 2557(information)s 3570(to)s +3798(their)s 4235(local,)s 4744(helpless,)s 5507(name)s 1440 -4216(serv)m 3(er)k +1954(administrator)s 11(.)k 3135(Naturally)s 3918(we)s 4182(w)s 2(ould)k +4711(e)s 3(xtend)k 5271(the)s 5546(logic)s 1440 -4456(so)m +1703(that)s 2087(the)s 2416(zone)s 2878(serv)s 3(ers)k +3523(v)s 5(alidate)k 4233(their)s 4683(o)s 5(wn)k +5108(dele)s 3(g)k 1(ation)k 1440 -4696(information)m 2466(and)s +2840(lik)s 2(e)k 5(wise)k 3581(elide)s 4053(lame)s +4525(information)s 5551(from)s 1440 -4936(their)m 1854(responses.)s 1840 -5247(This)m +2253(uni\207cation)s 3164(w)s 2(ould)k 3720(put)s 4034(a)s +4181(stop)s 4572(to)s 4786(the)s 5088(unpleasant)s 1440 -5487(question,)m +2269(\205ho)s 5(w)k 2800(can)s 3180(both)s 3639(the)s +3986(parent)s 4587(and)s 4979(child)s 5481(zones)s 1440 -5727(answer)m +2108(authoritati)s 5(v)k 3(ely)k 3365(if)s 3591(the)s 3(y)k +4036(are)s 4383(allo)s 5(wed)k 5113(to)s 5373(answer)s +1440 -5967(dif)m 5(ferently?\206)k 2598(W)s 16(e)k 2956(may)s +3397(implement)s 4346(a)s 4532(stopg)s 1(ap)k 5249(whereby)s +1440 -6207(parents)m 2084(stop)s 2486(setting)s 3086(the)s 160 fnt82 +3399 -6205(AA)m 200 fnt82 3699 -6207(\210ag)m 4068(on)s 4338(referral)s +4991(responses)s 5834(\211)s 1440 -6447(since)m 1902(the)s 2199(child)s +2651(is)s 2837(really)s 3343(the)s 3640(authority)s 13(.)k +4450(Unfortunately)s 13(,)k 5658(last)s 1440 -6687(time)m 1846(we)s +2131(changed)s 2848(the)s 3144(w)s 2(ay)k 3527(we)s +3812(handed)s 4441(out)s 4749(referrals,)s 5512(some)s 1440 -6927(major)m +1988(clients)s 2590(could)s 3117(not)s 3456(handle)s 4071(it)s +4265(and)s 4637(we)s 4953(had)s 5325(to)s 5564(back)s +1440 -7167(out)m 1767(to)s 1994(older)s 8(,)k 2517(brok)s 2(en)k +3141(beha)s 4(viour)k 11(.)k 4045(K)s 5(eeping)k +4787(track)s 5256(of)s 5494(client)s 1440 -7407(sensiti)m 5(vities)k +2422(has)s 2737(become)s 3406(a)s 3544(\207rst)s 3903(order)s +4373(task)s 4743(for)s 5025(us.)s 1840 -7718(What)m 2318(we')s 10(re)k +2807(wrestling)s 3594(with)s 3995(on)s 4242(the)s 4532(uni\207cation)s +5431(theory)s 1440 -7958(is)m 1667(whether)s 2403(the)s 2741(root)s +3157(serv)s 3(ers)k 3811(should)s 4438(try)s 4754(to)s +5004(v)s 3(erify)k 5571(their)s 1440 -8198(dele)m 3(g)k 1(ation)k +2360(data.)s 2886(W)s 8(ith)k 3371(millions)s 4118(of)s +4379(zones)s 4927(dele)s 3(g)k 1(ated,)k 5830(it)s +1440 -8438(could)m 1948(tak)s 2(e)k 2342(quite)s 2805(a)s +2958(while)s 3465(for)s 3762(each)s 4191(root)s 4577(serv)s 3(er)k +5124(to)s 5344(get)s 5652(this)s 1440 -8678(done)m 1869(at)s +2053(startup)s 2635(time,)s 3079(so)s 3297(if)s 3459(we)s +3732(do)s 3973(it,)s 4174(it')s 2(ll)k 4499(ha)s 4(v)k 3(e)k +4909(to)s 5105(come)s 5577(after)s 1440 -8918(we)m 1722(mak)s 2(e)k +2201(the)s 2494(cache)s 2996(persistent.)s 240 fnt84 1440 -9606(8.)m +192 fnt84 1740 -9604(DNSSEC)m 240 fnt84 2554 -9606(\211)m 2734(The)s +192 fnt84 3193 -9604(IETF)m 3700(DNS)s 240 fnt84 4142 -9606(Security)m +192 fnt84 5051 -9604(WG)m 200 fnt82 1440 -10031(As)m 1743(we')s 10(v)k 3(e)k +2298(mentioned)s 3221(se)s 5(v)k 3(eral)k 3857(times)s +4369(in)s 4606(this)s 4975(paper)s 8(,)k 5541(there)s +1440 -10271(is)m 1626(presently)s 2409(w)s 2(ork)k 2871(underw)s 2(ay)k +3709(to)s 3918(add)s 4260(security)s 4943(to)s 160 fnt82 +5152 -10269(DNS)m 200 fnt82 5470 -10271(.)m 5624(The)s 1440 -10511(current)m +2069(model)s 2633(is)s 2831(something)s 3727(lik)s 2(e)k +4089(a)s 4243(\205web)s 4729(of)s 4961(trust,)s 14(\206)k +5504(using)s 1440 -10751(public)m 2003(k)s 2(e)k 3(y)k +2351(technology)s 13(.)k 3389(A)s 3598(ne)s 5(w)k +160 fnt82 3990 -10749(KEY)m 4357(RR)s 200 fnt82 4634 -10751(holds)m +5131(the)s 5439(public)s 1440 -10991(k)m 2(e)k 3(y)k +1812(and)s 2189(is)s 2410(added)s 2975(to)s 3219(the)s +3551(dele)s 3(g)k 1(ation)k 4465(data.)s 4985(This)s +5428(k)s 2(e)k 3(y)k 5800(is)s 1440 -11231(suf\207cient)m +2246(to)s 2467(v)s 5(alidate)k 3157(signed)s 3743(answers)s +4449(b)s 4(ut)k 4766(not)s 5087(to)s 5308(actually)s +1440 -11471(sign)m 1832(them.)s 2390(Signing)s 3071(is)s 3263(done)s +3711(by)s 3971(the)s 4274(authoritati)s 5(v)k 3(e)k +5331(serv)s 3(ers,)k 1440 -11711(and)m 1778(the)s 160 fnt82 +2071 -11709(SIG)m 2367(RR)s 200 fnt82 2629 -11711(is)m 2811(used)s +3226(to)s 3431(carry)s 3889(the)s 4182(signature)s 4961(of)s +5177(an)s 3(y)k 5512(gi)s 5(v)k 3(en)k +1440 -11951(RRset.)m 1840 -12262(Once)m 160 fnt82 2360 -12260(DNSSEC)m 200 fnt82 +3069 -12262(is)m 3301(widely)s 3943(implemented,)s 5132(it)s 5342(will)s +5751(be)s 1440 -12502(possible)m 2228(to)s 2519(determine)s 3450(from)s +3973(e)s 3(xamination)k 5090(of)s 5392(a)s 160 fnt82 +5616 -12500(DNS)m 200 fnt82 1440 -12742(response)m 2184(whether)s 2873(its)s +3108(contents)s 3819(are)s 4109(authentic.)s 4986(This)s 5388(sounds)s +1440 -12982(simple)m 2019(b)s 4(ut)k 2319(it)s 2478(has)s +2792(deep)s 3217(reaching)s 3951(consequences)s 5094(in)s 5298(both)s +5702(the)s 1440 -13222(protocol)m 2140(and)s 2464(the)s 2743(implementation)s +4028(\211)s 4164(which)s 4687(is)s 4855(wh)s 1(y)k +5234(it')s 11(s)k 5512(tak)s 2(en)k 1440 -13462(more)m +1895(than)s 2284(a)s 2418(year)s 2806(to)s 3007(choose)s +3606(a)s 3740(security)s 4415(model)s 4959(and)s 5293(design)s +5859(a)s 1440 -13702(solution.)m 2234(W)s 16(e)k 2546(e)s 3(xpect)k +3114(it)s 3276(to)s 3483(be)s 3723(another)s 4372(year)s +4766(before)s 160 fnt82 5326 -13700(DNSSEC)m 200 fnt82 1440 -13942(is)m +1612(in)s 1807(wide)s 2234(use)s 2539(on)s 2779(the)s +3062(leading)s 3688(edge,)s 4154(and)s 4482(at)s 4665(least)s +5068(a)s 5196(year)s 5578(after)s 1440 -14182(that)m 1788(before)s +2346(its)s 2583(use)s 2898(is)s 3080(commonplace)s 4247(on)s +4497(the)s 4790(Internet.)s 240 fnt84 6300 -1605(9.)m 6600(Which)s +192 fnt84 7338 -1603(BIND)m 240 fnt84 7876 -1605(V)m 24(ersion)k +8709(Plugs)s 9327(Which)s 10065(Hole?)s 200 fnt82 6300 -2030(Al)m 2(w)k 2(ays)k +6951(assume)s 7583(that)s 7928(you)s 8275(need)s 8698(the)s +8988(latest)s 160 fnt82 9453 -2028(BIND)m 200 fnt82 9889 -2030(you)m +10236(can)s 10559(lay)s 6300 -2270(your)m 6728(hands)s 7255(on.)s +7567(Our)s 160 fnt82 7939 -2268(RCS)m 200 fnt82 8301 -2270(libraries)m +9013(ha)s 4(v)k 3(e)k 9444(the)s 9749(whole)s +10298(sordid)s 6300 -2510(story)m 13(,)k 6785(and)s 7123(from)s +7560(them)s 8008(we)s 8290(could)s 8783(deri)s 5(v)k 3(e)k +9322(a)s 9460(table)s 9896(of)s 10112(V)s 22(ersions)k +6300 -2750(-vs-)m 6668(V)s 15(ulnerabilities.)k 7993(Y)s 22(ou)k +8374(can)s 8709(bet)s 9011(that)s 9368(the)s 9670(upper)s +10183(class)s 10627(of)s 6300 -2990(attack)m 2(ers)k 7063(can)s +7399(do)s 7659(this)s 8006(as)s 8231(well.)s 8733(Deri)s 5(ving)k +9496(that)s 9854(table)s 10300(w)s 2(ould)k 6300 -3230(be)m +6553(a)s 6706(lot)s 6981(of)s 7212(w)s 2(ork)k +7685(and)s 8038(publishing)s 8945(it)s 9120(might)s 9650(do)s +9915(more)s 10389(harm)s 6300 -3470(\(gi)m 5(ving)k 6907(folks)s +7341(the)s 7620(f)s 2(alse)k 8028(idea)s 8395(that)s +8729(the)s 3(y)k 9105(don')s 3(t)k 9559(need)s +9971(to)s 10162(upgrade)s 6300 -3710(their)m 160 fnt82 6730 -3708(BIND)m +200 fnt82 7119 -3710(\))m 7251(than)s 7660(good)s 8126(\(letting)s +8766(folks)s 9230(see)s 9549(ho)s 5(w)k 9954(bad)s +10308(things)s 6300 -3950(really)m 6812(are.\))s 7280(When)s 7816(we)s +8108(took)s 8523(o)s 3(v)k 3(er)k 160 fnt82 +8931 -3948(BIND)m 200 fnt82 9320 -3950(,)m 9430(the)s 9733(latest)s +10211(v)s 3(ersion)k 6300 -4190(w)m 2(as)k 160 fnt82 +6655 -4188(UCB)m 200 fnt82 7030 -4190(4.8.3.)m 7578(Our)s 7936(\207rst)s +8293(release)s 8891(w)s 2(as)k 160 fnt82 9246 -4188(DECWRL)m +200 fnt82 9966 -4190(4.9,)m 10314(which)s 6300 -4430(contained)m 7177(quite)s +7678(a)s 7869(fe)s 5(w)k 8265(security)s 8997(related)s +9640(changes.)s 10484(Our)s 6300 -4670(current)m 6916(release)s 7519(as)s +7737(of)s 7956(this)s 8296(writing)s 8924(is)s 160 fnt82 +9109 -4668(ISC)m 200 fnt82 9409 -4670(4.9.3)m 128 fnt82 9809 -4581(1)m +200 fnt82 9873 -4670(,)m 9976(and)s 10317(it)s 10480(also)s +6300 -4910(contains)m 7013(quite)s 7461(a)s 7599(fe)s 5(w)k +7942(security)s 8621(related)s 9211(changes.)s 200 fnt84 6300 -5571(Refer)m 3(ences)k +200 fnt82 6300 -5950([)m 6366(Bel95a)s 6930(])s 7300(Ste)s 5(v)k 3(en)k +7953(M.)s 8299(Bello)s 3(vin)k 8982(.)s 9201(Us)s +9422(ing)s 9796(the)s 10158(Do)s 10402(main)s 7300 -6190(Name)m +7889(Sys)s 8177(tem)s 8589(for)s 8935(Syetem)s 9646(Break-)s +10187(ins)s 10419(.)s 10633(In)s 200 fnt83 7300 -6429(Pr)m 9(o)k +7590(ceed)s 7954(ings)s 8449(of)s 8767(the)s 9173(F)s 9(ifth)k +9714(Usenix)s 160 fnt83 10429 -6427(UNIX)m 200 fnt83 7300 -6669(Se)m +7488(cu)s 7676(ri)s 7808(ty)s 8094(Sy)s 8282(po)s +8482(sium,)s 9051(Salt)s 9504(Lak)s 2(e)k 10032(City)s 11(,)k +160 fnt83 10545 -6667(UT)m 200 fnt82 10748 -6670(.)m 7300 -6910(A)m 22(T&T Bell Laboratories)k +9257(,)s 9357(1995)s 9757(.)s 6300 -7314([)m 6366(RFC1034)s +7143(])s 7300(P)s 3(aul)k 7797(V)s 25(.)k +8112(Mockapetris)s 9252(\(ISI\))s 9627(.)s 9873(RFC)s 10396(1034)s +7300 -7554(\211)m 7496(Domain)s 8234(Concepts)s 9071(and)s 9455(F)s 3(acilities)k +10179(,)s 10325(IETF)s 10746(,)s 7300 -7794(1987)m 7700(.)s +6300 -8175([)m 6366(RFC1035)s 7143(])s 7300(P)s 3(aul)k +7756(V)s 25(.)k 8030(Mockapetris)s 9129(\(ISI\))s 9504(.)s +9709(RFC)s 10191(1035)s 10696(\211)s 7300 -8415(Domain)m 8015(Implementation)s +9348(and)s 9709(Speci\207cation)s 10748(,)s 7300 -8655(IETF)m 7721(,)s +7821(1987)s 8221(.)s 6300 -9059([)m 6366(RFC1123)s 7143(])s +7300(R.)s 7569(Braden,)s 8280(Ed)s 8502(i)s 8557(tor)s +8778(.)s 8964(RFC)s 9427(1123)s 9913(\211)s 10099(Re)s +10320(quire)s 10729(-)s 7300 -9299(ments)m 7840(for)s 8137(In)s +8303(ter)s 8512(net)s 8820(Hosts)s 9338(\211)s 9503(Ap)s +9747(pli)s 9957(ca)s 10133(tion)s 10508(and)s 7300 -9539(Sup)m +7611(port)s 7932(,)s 8032(IETF)s 8453(,)s 8553(1989)s +8953(.)s 6300 -9959([)m 6366(RFC1510)s 7143(])s 7300(John)s +7795(T)s 14(.)k 8071(K)s 7(ohl,)k 8631(et)s +8892(al)s 9035(.)s 9253(RFC)s 9748(1510)s 10266(\211)s +10484(The)s 7300 -10199(K)m 5(erberos)k 8124(Netw)s 2(ork)k +8919(Authentication)s 10202(Service)s 7300 -10439(\(V5\))m 7676(,)s 7776(IETF)s +8197(,)s 8297(1993)s 8697(.)s 6300 -10850([)m 6366(RFC1760)s +7143(])s 7300(N.)s 7651(Haller)s 8147(.)s 8404(RFC)s +8938(1760)s 9495(\211)s 9752(The)s 10219(S/KEY)s 7300 -11090(One-T)m 7(ime)k +8161(P)s 3(assw)k 2(ord)k 8969(System)s 9555(,)s +9655(IETF)s 10076(,)s 10176(1995)s 10576(.)s gsave +6300 -14117 translate +200 fnt82 0.0 0.0 0.0 setrgbcolor 1134 0 0 0 200 240 50 LoutGraphic +gsave +0 0 moveto xsize 0 lineto stroke +grestore + +grestore +102 fnt82 +0.0 0.0 0.0 setrgbcolor 6300 -14298(1)m 160 fnt82 6351 -14369(see)m 140 fnt37 +6595 -14370(http://www)m 5(.isc.or)k 2(g/isc/)k 160 fnt82 8056 -14369(.)m + +grestore + +pgsave restore +showpage + +%%Trailer +%%DocumentNeededResources: font Helvetica-Bold +%%+ font Symbol +%%+ font Times-Roman +%%+ font Times-Italic +%%+ font Times-Bold +%%DocumentSuppliedResources: procset LoutStartUp +%%+ procset LoutTabPrependGraphic +%%+ procset LoutFigPrependGraphic +%%+ encoding vec1 +%%Pages: 8 +%%EOF diff --git a/usr.sbin/named/doc/rfc/rfc1032 b/usr.sbin/named/doc/rfc/rfc1032 new file mode 100644 index 000000000000..0e82721cee71 --- /dev/null +++ b/usr.sbin/named/doc/rfc/rfc1032 @@ -0,0 +1,781 @@ +Network Working Group M. Stahl +Request for Comments: 1032 SRI International + November 1987 + + + DOMAIN ADMINISTRATORS GUIDE + + +STATUS OF THIS MEMO + + This memo describes procedures for registering a domain with the + Network Information Center (NIC) of Defense Data Network (DDN), and + offers guidelines on the establishment and administration of a domain + in accordance with the requirements specified in RFC-920. It is + intended for use by domain administrators. This memo should be used + in conjunction with RFC-920, which is an official policy statement of + the Internet Activities Board (IAB) and the Defense Advanced Research + Projects Agency (DARPA). Distribution of this memo is unlimited. + +BACKGROUND + + Domains are administrative entities that provide decentralized + management of host naming and addressing. The domain-naming system + is distributed and hierarchical. + + The NIC is designated by the Defense Communications Agency (DCA) to + provide registry services for the domain-naming system on the DDN and + DARPA portions of the Internet. + + As registrar of top-level and second-level domains, as well as + administrator of the root domain name servers on behalf of DARPA and + DDN, the NIC is responsible for maintaining the root server zone + files and their binary equivalents. In addition, the NIC is + responsible for administering the top-level domains of "ARPA," "COM," + "EDU," "ORG," "GOV," and "MIL" on behalf of DCA and DARPA until it + becomes feasible for other appropriate organizations to assume those + responsibilities. + + It is recommended that the guidelines described in this document be + used by domain administrators in the establishment and control of + second-level domains. + +THE DOMAIN ADMINISTRATOR + + The role of the domain administrator (DA) is that of coordinator, + manager, and technician. If his domain is established at the second + level or lower in the tree, the DA must register by interacting with + the management of the domain directly above his, making certain that + + + +Stahl [Page 1] + +RFC 1032 DOMAIN ADMINISTRATORS GUIDE November 1987 + + + his domain satisfies all the requirements of the administration under + which his domain would be situated. To find out who has authority + over the name space he wishes to join, the DA can ask the NIC + Hostmaster. Information on contacts for the top-level and second- + level domains can also be found on line in the file NETINFO:DOMAIN- + CONTACTS.TXT, which is available from the NIC via anonymous FTP. + + The DA should be technically competent; he should understand the + concepts and procedures for operating a domain server, as described + in RFC-1034, and make sure that the service provided is reliable and + uninterrupted. It is his responsibility or that of his delegate to + ensure that the data will be current at all times. As a manager, the + DA must be able to handle complaints about service provided by his + domain name server. He must be aware of the behavior of the hosts in + his domain, and take prompt action on reports of problems, such as + protocol violations or other serious misbehavior. The administrator + of a domain must be a responsible person who has the authority to + either enforce these actions himself or delegate them to someone + else. + + Name assignments within a domain are controlled by the DA, who should + verify that names are unique within his domain and that they conform + to standard naming conventions. He furnishes access to names and + name-related information to users both inside and outside his domain. + He should work closely with the personnel he has designated as the + "technical and zone" contacts for his domain, for many administrative + decisions will be made on the basis of input from these people. + +THE DOMAIN TECHNICAL AND ZONE CONTACT + + A zone consists of those contiguous parts of the domain tree for + which a domain server has complete information and over which it has + authority. A domain server may be authoritative for more than one + zone. The domain technical/zone contact is the person who tends to + the technical aspects of maintaining the domain's name server and + resolver software, and database files. He keeps the name server + running, and interacts with technical people in other domains and + zones to solve problems that affect his zone. + +POLICIES + + Domain or host name choices and the allocation of domain name space + are considered to be local matters. In the event of conflicts, it is + the policy of the NIC not to get involved in local disputes or in the + local decision-making process. The NIC will not act as referee in + disputes over such matters as who has the "right" to register a + particular top-level or second-level domain for an organization. The + NIC considers this a private local matter that must be settled among + + + +Stahl [Page 2] + +RFC 1032 DOMAIN ADMINISTRATORS GUIDE November 1987 + + + the parties involved prior to their commencing the registration + process with the NIC. Therefore, it is assumed that the responsible + person for a domain will have resolved any local conflicts among the + members of his domain before registering that domain with the NIC. + The NIC will give guidance, if requested, by answering specific + technical questions, but will not provide arbitration in disputes at + the local level. This policy is also in keeping with the distributed + hierarchical nature of the domain-naming system in that it helps to + distribute the tasks of solving problems and handling questions. + + Naming conventions for hosts should follow the rules specified in + RFC-952. From a technical standpoint, domain names can be very long. + Each segment of a domain name may contain up to 64 characters, but + the NIC strongly advises DAs to choose names that are 12 characters + or fewer, because behind every domain system there is a human being + who must keep track of the names, addresses, contacts, and other data + in a database. The longer the name, the more likely the data + maintainer is to make a mistake. Users also will appreciate shorter + names. Most people agree that short names are easier to remember and + type; most domain names registered so far are 12 characters or fewer. + + Domain name assignments are made on a first-come-first-served basis. + The NIC has chosen not to register individual hosts directly under + the top-level domains it administers. One advantage of the domain + naming system is that administration and data maintenance can be + delegated down a hierarchical tree. Registration of hosts at the + same level in the tree as a second-level domain would dilute the + usefulness of this feature. In addition, the administrator of a + domain is responsible for the actions of hosts within his domain. We + would not want to find ourselves in the awkward position of policing + the actions of individual hosts. Rather, the subdomains registered + under these top-level domains retain the responsibility for this + function. + + Countries that wish to be registered as top-level domains are + required to name themselves after the two-letter country code listed + in the international standard ISO-3166. In some cases, however, the + two-letter ISO country code is identical to a state code used by the + U.S. Postal Service. Requests made by countries to use the three- + letter form of country code specified in the ISO-3166 standard will + be considered in such cases so as to prevent possible conflicts and + confusion. + + + + + + + + + +Stahl [Page 3] + +RFC 1032 DOMAIN ADMINISTRATORS GUIDE November 1987 + + +HOW TO REGISTER + + Obtain a domain questionnaire from the NIC hostmaster, or FTP the + file NETINFO:DOMAIN-TEMPLATE.TXT from host SRI-NIC.ARPA. + + Fill out the questionnaire completely. Return it via electronic mail + to HOSTMASTER@SRI-NIC.ARPA. + + The APPENDIX to this memo contains the application form for + registering a top-level or second-level domain with the NIC. It + supersedes the version of the questionnaire found in RFC-920. The + application should be submitted by the person administratively + responsible for the domain, and must be filled out completely before + the NIC will authorize establishment of a top-level or second-level + domain. The DA is responsible for keeping his domain's data current + with the NIC or with the registration agent with which his domain is + registered. For example, the CSNET and UUCP managements act as + domain filters, processing domain applications for their own + organizations. They pass pertinent information along periodically to + the NIC for incorporation into the domain database and root server + files. The online file NETINFO:ALTERNATE-DOMAIN-PROCEDURE.TXT + outlines this procedure. It is highly recommended that the DA review + this information periodically and provide any corrections or + additions. Corrections should be submitted via electronic mail. + +WHICH DOMAIN NAME? + + The designers of the domain-naming system initiated several general + categories of names as top-level domain names, so that each could + accommodate a variety of organizations. The current top-level + domains registered with the DDN Network Information Center are ARPA, + COM, EDU, GOV, MIL, NET, and ORG, plus a number of top-level country + domains. To join one of these, a DA needs to be aware of the purpose + for which it was intended. + + "ARPA" is a temporary domain. It is by default appended to the + names of hosts that have not yet joined a domain. When the system + was begun in 1984, the names of all hosts in the Official DoD + Internet Host Table maintained by the NIC were changed by adding + of the label ".ARPA" in order to accelerate a transition to the + domain-naming system. Another reason for the blanket name changes + was to force hosts to become accustomed to using the new style + names and to modify their network software, if necessary. This + was done on a network-wide basis and was directed by DCA in DDN + Management Bulletin No. 22. Hosts that fall into this domain will + eventually move to other branches of the domain tree. + + + + + +Stahl [Page 4] + +RFC 1032 DOMAIN ADMINISTRATORS GUIDE November 1987 + + + "COM" is meant to incorporate subdomains of companies and + businesses. + + "EDU" was initiated to accommodate subdomains set up by + universities and other educational institutions. + + "GOV" exists to act as parent domain for subdomains set up by + government agencies. + + "MIL" was initiated to act as parent to subdomains that are + developed by military organizations. + + "NET" was introduced as a parent domain for various network-type + organizations. Organizations that belong within this top-level + domain are generic or network-specific, such as network service + centers and consortia. "NET" also encompasses network + management-related organizations, such as information centers and + operations centers. + + "ORG" exists as a parent to subdomains that do not clearly fall + within the other top-level domains. This may include technical- + support groups, professional societies, or similar organizations. + + One of the guidelines in effect in the domain-naming system is that a + host should have only one name regardless of what networks it is + connected to. This implies, that, in general, domain names should + not include routing information or addresses. For example, a host + that has one network connection to the Internet and another to BITNET + should use the same name when talking to either network. For a + description of the syntax of domain names, please refer to Section 3 + of RFC-1034. + +VERIFICATION OF DATA + + The verification process can be accomplished in several ways. One of + these is through the NIC WHOIS server. If he has access to WHOIS, + the DA can type the command "whois domain ". + The reply from WHOIS will supply the following: the name and address + of the organization "owning" the domain; the name of the domain; its + administrative, technical, and zone contacts; the host names and + network addresses of sites providing name service for the domain. + + + + + + + + + + +Stahl [Page 5] + +RFC 1032 DOMAIN ADMINISTRATORS GUIDE November 1987 + + + Example: + + @whois domain rice.edu + + Rice University (RICE-DOM) + Advanced Studies and Research + Houston, TX 77001 + + Domain Name: RICE.EDU + + Administrative Contact: + Kennedy, Ken (KK28) Kennedy@LLL-CRG.ARPA (713) 527-4834 + Technical Contact, Zone Contact: + Riffle, Vicky R. (VRR) rif@RICE.EDU + (713) 527-8101 ext 3844 + + Domain servers: + + RICE.EDU 128.42.5.1 + PENDRAGON.CS.PURDUE.EDU 128.10.2.5 + + + Alternatively, the DA can send an electronic mail message to + SERVICE@SRI-NIC.ARPA. In the subject line of the message header, the + DA should type "whois domain ". The requested + information will be returned via electronic mail. This method is + convenient for sites that do not have access to the NIC WHOIS + service. + + The initial application for domain authorization should be submitted + via electronic mail, if possible, to HOSTMASTER@SRI-NIC.ARPA. The + questionnaire described in the appendix may be used or a separate + application can be FTPed from host SRI-NIC.ARPA. The information + provided by the administrator will be reviewed by hostmaster + personnel for completeness. There will most likely be a few + exchanges of correspondence via electronic mail, the preferred method + of communication, prior to authorization of the domain. + +HOW TO GET MORE INFORMATION + + An informational table of the top-level domains and their root + servers is contained in the file NETINFO:DOMAINS.TXT online at SRI- + NIC.ARPA. This table can be obtained by FTPing the file. + Alternatively, the information can be acquired by opening a TCP or + UDP connection to the NIC Host Name Server, port 101 on SRI-NIC.ARPA, + and invoking the command "ALL-DOM". + + + + + +Stahl [Page 6] + +RFC 1032 DOMAIN ADMINISTRATORS GUIDE November 1987 + + + The following online files, all available by FTP from SRI-NIC.ARPA, + contain pertinent domain information: + + - NETINFO:DOMAINS.TXT, a table of all top-level domains and the + network addresses of the machines providing domain name + service for them. It is updated each time a new top-level + domain is approved. + + - NETINFO:DOMAIN-INFO.TXT contains a concise list of all + top-level and second-level domain names registered with the + NIC and is updated monthly. + + - NETINFO:DOMAIN-CONTACTS.TXT also contains a list of all the + top level and second-level domains, but includes the + administrative, technical and zone contacts for each as well. + + - NETINFO:DOMAIN-TEMPLATE.TXT contains the questionnaire to be + completed before registering a top-level or second-level + domain. + + For either general or specific information on the domain system, do + one or more of the following: + + 1. Send electronic mail to HOSTMASTER@SRI-NIC.ARPA + + 2. Call the toll-free NIC hotline at (800) 235-3155 + + 3. Use FTP to get background RFCs and other files maintained + online at the NIC. Some pertinent RFCs are listed below in + the REFERENCES section of this memo. + + + + + + + + + + + + + + + + + + + + + +Stahl [Page 7] + +RFC 1032 DOMAIN ADMINISTRATORS GUIDE November 1987 + + +REFERENCES + + The references listed here provide important background information + on the domain-naming system. Path names of the online files + available via anonymous FTP from the SRI-NIC.ARPA host are noted in + brackets. + + 1. Defense Communications Agency DDN Defense Communications + System, DDN Management Bulletin No. 22, Domain Names + Transition, March 1984. + [ DDN-NEWS:DDN-MGT-BULLETIN-22.TXT ] + + 2. Defense Communications Agency DDN Defense Communications + System, DDN Management Bulletin No. 32, Phase I of the Domain + Name Implementation, January 1987. + [ DDN-NEWS:DDN-MGT-BULLETIN-32.TXT ] + + 3. Harrenstien, K., M. Stahl, and E. Feinler, "Hostname + Server", RFC-953, DDN Network Information Center, SRI + International, October 1985. [ RFC:RFC953.TXT ] + + 4. Harrenstien, K., M. Stahl, and E. Feinler, "Official DoD + Internet Host Table Specification", RFC-952, DDN Network + Information Center, SRI International, October 1985. + [ RFC:RFC952.TXT ] + + 5. ISO, "Codes for the Representation of Names of Countries", + ISO-3166, International Standards Organization, May 1981. + [ Not online ] + + 6. Lazear, W.D., "MILNET Name Domain Transition", RFC-1031, + Mitre Corporation, October 1987. [ RFC:RFC1031.TXT ] + + 7. Lottor, M.K., "Domain Administrators Operations Guide", + RFC-1033, DDN Network Information Center, SRI International, + July 1987. [ RFC:RFC1033.TXT ] + + 8. Mockapetris, P., "Domain Names - Concepts and Facilities", + RFC-1034, USC Information Sciences Institute, October 1987. + [ RFC:RFC1034.TXT ] + + 9. Mockapetris, P., "Domain Names - Implementation and + Specification", RFC-1035, USC Information Sciences Institute, + October 1987. [ RFC:RFC1035.TXT ] + + 10. Mockapetris, P., "The Domain Name System", Proceedings of the + IFIP 6.5 Working Conference on Computer Message Services, + Nottingham, England, May 1984. Also as ISI/RS-84-133, June + + + +Stahl [Page 8] + +RFC 1032 DOMAIN ADMINISTRATORS GUIDE November 1987 + + + 1984. [ Not online ] + + 11. Mockapetris, P., J. Postel, and P. Kirton, "Name Server + Design for Distributed Systems", Proceedings of the Seventh + International Conference on Computer Communication, October + 30 to November 3 1984, Sidney, Australia. Also as + ISI/RS-84-132, June 1984. [ Not online ] + + 12. Partridge, C., "Mail Routing and the Domain System", RFC-974, + CSNET-CIC, BBN Laboratories, January 1986. + [ RFC:RFC974.TXT ] + + 13. Postel, J., "The Domain Names Plan and Schedule", RFC-881, + USC Information Sciences Institute, November 1983. + [ RFC:RFC881.TXT ] + + 14. Reynolds, J., and Postel, J., "Assigned Numbers", RFC-1010 + USC Information Sciences Institute, May 1986. + [ RFC:RFC1010.TXT ] + + 15. Romano, S., and Stahl, M., "Internet Numbers", RFC-1020, + SRI, November 1987. + [ RFC:RFC1020.TXT ] + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Stahl [Page 9] + +RFC 1032 DOMAIN ADMINISTRATORS GUIDE November 1987 + + +APPENDIX + + The following questionnaire may be FTPed from SRI-NIC.ARPA as + NETINFO:DOMAIN-TEMPLATE.TXT. + + --------------------------------------------------------------------- + + To establish a domain, the following information must be sent to the + NIC Domain Registrar (HOSTMASTER@SRI-NIC.ARPA): + + NOTE: The key people must have electronic mailboxes and NIC + "handles," unique NIC database identifiers. If you have access to + "WHOIS", please check to see if you are registered and if so, make + sure the information is current. Include only your handle and any + changes (if any) that need to be made in your entry. If you do not + have access to "WHOIS", please provide all the information indicated + and a NIC handle will be assigned. + + (1) The name of the top-level domain to join. + + For example: COM + + (2) The NIC handle of the administrative head of the organization. + Alternately, the person's name, title, mailing address, phone number, + organization, and network mailbox. This is the contact point for + administrative and policy questions about the domain. In the case of + a research project, this should be the principal investigator. + + For example: + + Administrator + + Organization The NetWorthy Corporation + Name Penelope Q. Sassafrass + Title President + Mail Address The NetWorthy Corporation + 4676 Andrews Way, Suite 100 + Santa Clara, CA 94302-1212 + Phone Number (415) 123-4567 + Net Mailbox Sassafrass@ECHO.TNC.COM + NIC Handle PQS + + (3) The NIC handle of the technical contact for the domain. + Alternately, the person's name, title, mailing address, phone number, + organization, and network mailbox. This is the contact point for + problems concerning the domain or zone, as well as for updating + information about the domain or zone. + + + + +Stahl [Page 10] + +RFC 1032 DOMAIN ADMINISTRATORS GUIDE November 1987 + + + For example: + + Technical and Zone Contact + + Organization The NetWorthy Corporation + Name Ansel A. Aardvark + Title Executive Director + Mail Address The NetWorthy Corporation + 4676 Andrews Way, Suite 100 + Santa Clara, CA. 94302-1212 + Phone Number (415) 123-6789 + Net Mailbox Aardvark@ECHO.TNC.COM + NIC Handle AAA2 + + (4) The name of the domain (up to 12 characters). This is the name + that will be used in tables and lists associating the domain with the + domain server addresses. [While, from a technical standpoint, domain + names can be quite long (programmers beware), shorter names are + easier for people to cope with.] + + For example: TNC + + (5) A description of the servers that provide the domain service for + translating names to addresses for hosts in this domain, and the date + they will be operational. + + A good way to answer this question is to say "Our server is + supplied by person or company X and does whatever their standard + issue server does." + + For example: Our server is a copy of the one operated by + the NIC; it will be installed and made operational on + 1 November 1987. + + (6) Domains must provide at least two independent servers for the + domain. Establishing the servers in physically separate locations + and on different PSNs is strongly recommended. A description of the + server machine and its backup, including + + + + + + + + + + + + + +Stahl [Page 11] + +RFC 1032 DOMAIN ADMINISTRATORS GUIDE November 1987 + + + (a) Hardware and software (using keywords from the Assigned + Numbers RFC). + + (b) Host domain name and network addresses (which host on which + network for each connected network). + + (c) Any domain-style nicknames (please limit your domain-style + nickname request to one) + + For example: + + - Hardware and software + + VAX-11/750 and UNIX, or + IBM-PC and MS-DOS, or + DEC-1090 and TOPS-20 + + - Host domain names and network addresses + + BAR.FOO.COM 10.9.0.193 on ARPANET + + - Domain-style nickname + + BR.FOO.COM (same as BAR.FOO.COM 10.9.0.13 on ARPANET) + + (7) Planned mapping of names of any other network hosts, other than + the server machines, into the new domain's naming space. + + For example: + + BAR-FOO2.ARPA (10.8.0.193) -> FOO2.BAR.COM + BAR-FOO3.ARPA (10.7.0.193) -> FOO3.BAR.COM + BAR-FOO4.ARPA (10.6.0.193) -> FOO4.BAR.COM + + + (8) An estimate of the number of hosts that will be in the domain. + + (a) Initially + (b) Within one year + (c) Two years + (d) Five years. + + For example: + + (a) Initially = 50 + (b) One year = 100 + (c) Two years = 200 + (d) Five years = 500 + + + +Stahl [Page 12] + +RFC 1032 DOMAIN ADMINISTRATORS GUIDE November 1987 + + + (9) The date you expect the fully qualified domain name to become + the official host name in HOSTS.TXT. + + Please note: If changing to a fully qualified domain name (e.g., + FOO.BAR.COM) causes a change in the official host name of an + ARPANET or MILNET host, DCA approval must be obtained beforehand. + Allow 10 working days for your requested changes to be processed. + + ARPANET sites should contact ARPANETMGR@DDN1.ARPA. MILNET sites + should contact HOSTMASTER@SRI-NIC.ARPA, 800-235-3155, for + further instructions. + + (10) Please describe your organization briefly. + + For example: The NetWorthy Corporation is a consulting + organization of people working with UNIX and the C language in an + electronic networking environment. It sponsors two technical + conferences annually and distributes a bimonthly newsletter. + + --------------------------------------------------------------------- + + This example of a completed application corresponds to the examples + found in the companion document RFC-1033, "Domain Administrators + Operations Guide." + + (1) The name of the top-level domain to join. + + COM + + (2) The NIC handle of the administrative contact person. + + NIC Handle JAKE + + (3) The NIC handle of the domain's technical and zone + contact person. + + NIC Handle DLE6 + + (4) The name of the domain. + + SRI + + (5) A description of the servers. + + Our server is the TOPS20 server JEEVES supplied by ISI; it + will be installed and made operational on 1 July 1987. + + + + + +Stahl [Page 13] + +RFC 1032 DOMAIN ADMINISTRATORS GUIDE November 1987 + + + (6) A description of the server machine and its backup: + + (a) Hardware and software + + DEC-1090T and TOPS20 + DEC-2065 and TOPS20 + + (b) Host domain name and network address + + KL.SRI.COM 10.1.0.2 on ARPANET, 128.18.10.6 on SRINET + STRIPE.SRI.COM 10.4.0.2 on ARPANET, 128.18.10.4 on SRINET + + (c) Domain-style nickname + + None + + (7) Planned mapping of names of any other network hosts, other than + the server machines, into the new domain's naming space. + + SRI-Blackjack.ARPA (128.18.2.1) -> Blackjack.SRI.COM + SRI-CSL.ARPA (192.12.33.2) -> CSL.SRI.COM + + (8) An estimate of the number of hosts that will be directly within + this domain. + + (a) Initially = 50 + (b) One year = 100 + (c) Two years = 200 + (d) Five years = 500 + + (9) A date when you expect the fully qualified domain name to become + the official host name in HOSTS.TXT. + + 31 September 1987 + + (10) Brief description of organization. + + SRI International is an independent, nonprofit, scientific + research organization. It performs basic and applied research + for government and commercial clients, and contributes to + worldwide economic, scientific, industrial, and social progress + through research and related services. + + + + + + + + + +Stahl [Page 14] + diff --git a/usr.sbin/named/doc/rfc/rfc1033 b/usr.sbin/named/doc/rfc/rfc1033 new file mode 100644 index 000000000000..37029fd9ae01 --- /dev/null +++ b/usr.sbin/named/doc/rfc/rfc1033 @@ -0,0 +1,1229 @@ +Network Working Group M. Lottor +Request For Comments: 1033 SRI International + November 1987 + + + DOMAIN ADMINISTRATORS OPERATIONS GUIDE + + + +STATUS OF THIS MEMO + + This RFC provides guidelines for domain administrators in operating a + domain server and maintaining their portion of the hierarchical + database. Familiarity with the domain system is assumed. + Distribution of this memo is unlimited. + +ACKNOWLEDGMENTS + + This memo is a formatted collection of notes and excerpts from the + references listed at the end of this document. Of particular mention + are Paul Mockapetris and Kevin Dunlap. + +INTRODUCTION + + A domain server requires a few files to get started. It will + normally have some number of boot/startup files (also known as the + "safety belt" files). One section will contain a list of possible + root servers that the server will use to find the up-to-date list of + root servers. Another section will list the zone files to be loaded + into the server for your local domain information. A zone file + typically contains all the data for a particular domain. This guide + describes the data formats that can be used in zone files and + suggested parameters to use for certain fields. If you are + attempting to do anything advanced or tricky, consult the appropriate + domain RFC's for more details. + + Note: Each implementation of domain software may require different + files. Zone files are standardized but some servers may require + other startup files. See the appropriate documentation that comes + with your software. See the appendix for some specific examples. + +ZONES + + A zone defines the contents of a contiguous section of the domain + space, usually bounded by administrative boundaries. There will + typically be a separate data file for each zone. The data contained + in a zone file is composed of entries called Resource Records (RRs). + + + + +Lottor [Page 1] + +RFC 1033 DOMAIN OPERATIONS GUIDE November 1987 + + + You may only put data in your domain server that you are + authoritative for. You must not add entries for domains other than + your own (except for the special case of "glue records"). + + A domain server will probably read a file on start-up that lists the + zones it should load into its database. The format of this file is + not standardized and is different for most domain server + implementations. For each zone it will normally contain the domain + name of the zone and the file name that contains the data to load for + the zone. + +ROOT SERVERS + + A resolver will need to find the root servers when it first starts. + When the resolver boots, it will typically read a list of possible + root servers from a file. + + The resolver will cycle through the list trying to contact each one. + When it finds a root server, it will ask it for the current list of + root servers. It will then discard the list of root servers it read + from the data file and replace it with the current list it received. + + Root servers will not change very often. You can get the names of + current root servers from the NIC. + + FTP the file NETINFO:ROOT-SERVERS.TXT or send a mail request to + NIC@SRI-NIC.ARPA. + + As of this date (June 1987) they are: + + SRI-NIC.ARPA 10.0.0.51 26.0.0.73 + C.ISI.EDU 10.0.0.52 + BRL-AOS.ARPA 192.5.25.82 192.5.22.82 128.20.1.2 + A.ISI.EDU 26.3.0.103 + +RESOURCE RECORDS + + Records in the zone data files are called resource records (RRs). + They are specified in RFC-883 and RFC-973. An RR has a standard + format as shown: + + [] [] + + The record is divided into fields which are separated by white space. + + + + The name field defines what domain name applies to the given + + + +Lottor [Page 2] + +RFC 1033 DOMAIN OPERATIONS GUIDE November 1987 + + + RR. In some cases the name field can be left blank and it will + default to the name field of the previous RR. + + + + TTL stands for Time To Live. It specifies how long a domain + resolver should cache the RR before it throws it out and asks a + domain server again. See the section on TTL's. If you leave + the TTL field blank it will default to the minimum time + specified in the SOA record (described later). + + + + The class field specifies the protocol group. If left blank it + will default to the last class specified. + + + + The type field specifies what type of data is in the RR. See + the section on types. + + + + The data field is defined differently for each type and class + of data. Popular RR data formats are described later. + + The domain system does not guarantee to preserve the order of + resource records. Listing RRs (such as multiple address records) in + a certain order does not guarantee they will be used in that order. + + Case is preserved in names and data fields when loaded into the name + server. All comparisons and lookups in the name server are case + insensitive. + + Parenthesis ("(",")") are used to group data that crosses a line + boundary. + + A semicolon (";") starts a comment; the remainder of the line is + ignored. + + The asterisk ("*") is used for wildcarding. + + The at-sign ("@") denotes the current default domain name. + + + + + + + + +Lottor [Page 3] + +RFC 1033 DOMAIN OPERATIONS GUIDE November 1987 + + +NAMES + + A domain name is a sequence of labels separated by dots. + + Domain names in the zone files can be one of two types, either + absolute or relative. An absolute name is the fully qualified domain + name and is terminated with a period. A relative name does not + terminate with a period, and the current default domain is appended + to it. The default domain is usually the name of the domain that was + specified in the boot file that loads each zone. + + The domain system allows a label to contain any 8-bit character. + Although the domain system has no restrictions, other protocols such + as SMTP do have name restrictions. Because of other protocol + restrictions, only the following characters are recommended for use + in a host name (besides the dot separator): + + "A-Z", "a-z", "0-9", dash and underscore + +TTL's (Time To Live) + + It is important that TTLs are set to appropriate values. The TTL is + the time (in seconds) that a resolver will use the data it got from + your server before it asks your server again. If you set the value + too low, your server will get loaded down with lots of repeat + requests. If you set it too high, then information you change will + not get distributed in a reasonable amount of time. If you leave the + TTL field blank, it will default to what is specified in the SOA + record for the zone. + + Most host information does not change much over long time periods. A + good way to set up your TTLs would be to set them at a high value, + and then lower the value if you know a change will be coming soon. + You might set most TTLs to anywhere between a day (86400) and a week + (604800). Then, if you know some data will be changing in the near + future, set the TTL for that RR down to a lower value (an hour to a + day) until the change takes place, and then put it back up to its + previous value. + + Also, all RRs with the same name, class, and type should have the + same TTL value. + +CLASSES + + The domain system was designed to be protocol independent. The class + field is used to identify the protocol group that each RR is in. + + The class of interest to people using TCP/IP software is the class + + + +Lottor [Page 4] + +RFC 1033 DOMAIN OPERATIONS GUIDE November 1987 + + + "Internet". Its standard designation is "IN". + + A zone file should only contain RRs of the same class. + +TYPES + + There are many defined RR types. For a complete list, see the domain + specification RFCs. Here is a list of current commonly used types. + The data for each type is described in the data section. + + Designation Description + ========================================== + SOA Start Of Authority + NS Name Server + + A Internet Address + CNAME Canonical Name (nickname pointer) + HINFO Host Information + WKS Well Known Services + + MX Mail Exchanger + + PTR Pointer + +SOA (Start Of Authority) + + [] [] SOA ( + + + + + ) + + The Start Of Authority record designates the start of a zone. The + zone ends at the next SOA record. + + is the name of the zone. + + is the name of the host on which the master zone file + resides. + + is a mailbox for the person responsible for the zone. It is + formatted like a mailing address but the at-sign that normally + separates the user from the host name is replaced with a dot. + + is the version number of the zone file. It should be + incremented anytime a change is made to data in the zone. + + + + +Lottor [Page 5] + +RFC 1033 DOMAIN OPERATIONS GUIDE November 1987 + + + is how long, in seconds, a secondary name server is to + check with the primary name server to see if an update is needed. A + good value here would be one hour (3600). + + is how long, in seconds, a secondary name server is to retry + after a failure to check for a refresh. A good value here would be + 10 minutes (600). + + is the upper limit, in seconds, that a secondary name server + is to use the data before it expires for lack of getting a refresh. + You want this to be rather large, and a nice value is 3600000, about + 42 days. + + is the minimum number of seconds to be used for TTL values + in RRs. A minimum of at least a day is a good value here (86400). + + There should only be one SOA record per zone. A sample SOA record + would look something like: + + @ IN SOA SRI-NIC.ARPA. HOSTMASTER.SRI-NIC.ARPA. ( + 45 ;serial + 3600 ;refresh + 600 ;retry + 3600000 ;expire + 86400 ) ;minimum + + +NS (Name Server) + + [] [] NS + + The NS record lists the name of a machine that provides domain + service for a particular domain. The name associated with the RR is + the domain name and the data portion is the name of a host that + provides the service. If machines SRI-NIC.ARPA and C.ISI.EDU provide + name lookup service for the domain COM then the following entries + would be used: + + COM. NS SRI-NIC.ARPA. + NS C.ISI.EDU. + + Note that the machines providing name service do not have to live in + the named domain. There should be one NS record for each server for + a domain. Also note that the name "COM" defaults for the second NS + record. + + NS records for a domain exist in both the zone that delegates the + domain, and in the domain itself. + + + +Lottor [Page 6] + +RFC 1033 DOMAIN OPERATIONS GUIDE November 1987 + + +GLUE RECORDS + + If the name server host for a particular domain is itself inside the + domain, then a 'glue' record will be needed. A glue record is an A + (address) RR that specifies the address of the server. Glue records + are only needed in the server delegating the domain, not in the + domain itself. If for example the name server for domain SRI.COM was + KL.SRI.COM, then the NS record would look like this, but you will + also need to have the following A record. + + SRI.COM. NS KL.SRI.COM. + KL.SRI.COM. A 10.1.0.2 + + +A (Address) + + [] [] A
+ + The data for an A record is an internet address in dotted decimal + form. A sample A record might look like: + + SRI-NIC.ARPA. A 10.0.0.51 + + There should be one A record for each address of a host. + +CNAME ( Canonical Name) + + [] [] CNAME + + The CNAME record is used for nicknames. The name associated with the + RR is the nickname. The data portion is the official name. For + example, a machine named SRI-NIC.ARPA may want to have the nickname + NIC.ARPA. In that case, the following RR would be used: + + NIC.ARPA. CNAME SRI-NIC.ARPA. + + There must not be any other RRs associated with a nickname of the + same class. + + Nicknames are also useful when a host changes it's name. In that + case, it is usually a good idea to have a CNAME pointer so that + people still using the old name will get to the right place. + + + + + + + + + +Lottor [Page 7] + +RFC 1033 DOMAIN OPERATIONS GUIDE November 1987 + + +HINFO (Host Info) + + [] [] HINFO + + The HINFO record gives information about a particular host. The data + is two strings separated by whitespace. The first string is a + hardware description and the second is software. The hardware is + usually a manufacturer name followed by a dash and model designation. + The software string is usually the name of the operating system. + + Official HINFO types can be found in the latest Assigned Numbers RFC, + the latest of which is RFC-1010. The Hardware type is called the + Machine name and the Software type is called the System name. + + Some sample HINFO records: + + SRI-NIC.ARPA. HINFO DEC-2060 TOPS20 + UCBARPA.Berkeley.EDU. HINFO VAX-11/780 UNIX + + +WKS (Well Known Services) + + [] [] WKS
+ + The WKS record is used to list Well Known Services a host provides. + WKS's are defined to be services on port numbers below 256. The WKS + record lists what services are available at a certain address using a + certain protocol. The common protocols are TCP or UDP. A sample WKS + record for a host offering the same services on all address would + look like: + + Official protocol names can be found in the latest Assigned Numbers + RFC, the latest of which is RFC-1010. + + SRI-NIC.ARPA. WKS 10.0.0.51 TCP TELNET FTP SMTP + WKS 10.0.0.51 UDP TIME + WKS 26.0.0.73 TCP TELNET FTP SMTP + WKS 26.0.0.73 UDP TIME + +MX (Mail Exchanger) (See RFC-974 for more details.) + + [] [] MX + + MX records specify where mail for a domain name should be delivered. + There may be multiple MX records for a particular name. The + preference value specifies the order a mailer should try multiple MX + records when delivering mail. Zero is the highest preference. + Multiple records for the same name may have the same preference. + + + +Lottor [Page 8] + +RFC 1033 DOMAIN OPERATIONS GUIDE November 1987 + + + A host BAR.FOO.COM may want its mail to be delivered to the host + PO.FOO.COM and would then use the MX record: + + BAR.FOO.COM. MX 10 PO.FOO.COM. + + A host BAZ.FOO.COM may want its mail to be delivered to one of three + different machines, in the following order: + + BAZ.FOO.COM. MX 10 PO1.FOO.COM. + MX 20 PO2.FOO.COM. + MX 30 PO3.FOO.COM. + + An entire domain of hosts not connected to the Internet may want + their mail to go through a mail gateway that knows how to deliver + mail to them. If they would like mail addressed to any host in the + domain FOO.COM to go through the mail gateway they might use: + + FOO.COM. MX 10 RELAY.CS.NET. + *.FOO.COM. MX 20 RELAY.CS.NET. + + Note that you can specify a wildcard in the MX record to match on + anything in FOO.COM, but that it won't match a plain FOO.COM. + +IN-ADDR.ARPA + + The structure of names in the domain system is set up in a + hierarchical way such that the address of a name can be found by + tracing down the domain tree contacting a server for each label of + the name. Because of this 'indexing' based on name, there is no easy + way to translate a host address back into its host name. + + In order to do the reverse translation easily, a domain was created + that uses hosts' addresses as part of a name that then points to the + data for that host. In this way, there is now an 'index' to hosts' + RRs based on their address. This address mapping domain is called + IN-ADDR.ARPA. Within that domain are subdomains for each network, + based on network number. Also, for consistency and natural + groupings, the 4 octets of a host number are reversed. + + For example, the ARPANET is net 10. That means there is a domain + called 10.IN-ADDR.ARPA. Within this domain there is a PTR RR at + 51.0.0.10.IN-ADDR that points to the RRs for the host SRI-NIC.ARPA + (who's address is 10.0.0.51). Since the NIC is also on the MILNET + (Net 26, address 26.0.0.73), there is also a PTR RR at 73.0.0.26.IN- + ADDR.ARPA that points to the same RR's for SRI-NIC.ARPA. The format + of these special pointers is defined below along with the examples + for the NIC. + + + + +Lottor [Page 9] + +RFC 1033 DOMAIN OPERATIONS GUIDE November 1987 + + +PTR + + [] [] PTR + + The PTR record is used to let special names point to some other + location in the domain tree. They are mainly used in the IN- + ADDR.ARPA records for translation of addresses to names. PTR's + should use official names and not aliases. + + For example, host SRI-NIC.ARPA with addresses 10.0.0.51 and 26.0.0.73 + would have the following records in the respective zone files for net + 10 and net 26: + + 51.0.0.10.IN-ADDR.ARPA. PTR SRI-NIC.ARPA. + 73.0.0.26.IN-ADDR.ARPA. PTR SRI-NIC.ARPA. + +GATEWAY PTR's + + The IN-ADDR tree is also used to locate gateways on a particular + network. Gateways have the same kind of PTR RRs as hosts (as above) + but in addition they have other PTRs used to locate them by network + number alone. These records have only 1, 2, or 3 octets as part of + the name depending on whether they are class A, B, or C networks, + respectively. + + Lets take the SRI-CSL gateway for example. It connects 3 different + networks, one class A, one class B and one class C. It will have the + standard RR's for a host in the CSL.SRI.COM zone: + + GW.CSL.SRI.COM. A 10.2.0.2 + A 128.18.1.1 + A 192.12.33.2 + + Also, in 3 different zones (one for each network), it will have one + of the following number to name translation pointers: + + 2.0.2.10.IN-ADDR.ARPA. PTR GW.CSL.SRI.COM. + 1.1.18.128.IN-ADDR.ARPA. PTR GW.CSL.SRI.COM. + 1.33.12.192.IN-ADDR.ARPA. PTR GW.CSL.SRI.COM. + + In addition, in each of the same 3 zones will be one of the following + gateway location pointers: + + 10.IN-ADDR.ARPA. PTR GW.CSL.SRI.COM. + 18.128.IN-ADDR.ARPA. PTR GW.CSL.SRI.COM. + 33.12.192.IN-ADDR.ARPA. PTR GW.CSL.SRI.COM. + + + + + +Lottor [Page 10] + +RFC 1033 DOMAIN OPERATIONS GUIDE November 1987 + + +INSTRUCTIONS + + Adding a subdomain. + + To add a new subdomain to your domain: + + Setup the other domain server and/or the new zone file. + + Add an NS record for each server of the new domain to the zone + file of the parent domain. + + Add any necessary glue RRs. + + Adding a host. + + To add a new host to your zone files: + + Edit the appropriate zone file for the domain the host is in. + + Add an entry for each address of the host. + + Optionally add CNAME, HINFO, WKS, and MX records. + + Add the reverse IN-ADDR entry for each host address in the + appropriate zone files for each network the host in on. + + Deleting a host. + + To delete a host from the zone files: + + Remove all the hosts' resource records from the zone file of + the domain the host is in. + + Remove all the hosts' PTR records from the IN-ADDR zone files + for each network the host was on. + + Adding gateways. + + Follow instructions for adding a host. + + Add the gateway location PTR records for each network the + gateway is on. + + Deleting gateways. + + Follow instructions for deleting a host. + + Also delete the gateway location PTR records for each network + + + +Lottor [Page 11] + +RFC 1033 DOMAIN OPERATIONS GUIDE November 1987 + + + the gateway was on. + +COMPLAINTS + + These are the suggested steps you should take if you are having + problems that you believe are caused by someone else's name server: + + + 1. Complain privately to the responsible person for the domain. You + can find their mailing address in the SOA record for the domain. + + 2. Complain publicly to the responsible person for the domain. + + 3. Ask the NIC for the administrative person responsible for the + domain. Complain. You can also find domain contacts on the NIC in + the file NETINFO:DOMAIN-CONTACTS.TXT + + 4. Complain to the parent domain authorities. + + 5. Ask the parent authorities to excommunicate the domain. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Lottor [Page 12] + +RFC 1033 DOMAIN OPERATIONS GUIDE November 1987 + + +EXAMPLE DOMAIN SERVER DATABASE FILES + + The following examples show how zone files are set up for a typical + organization. SRI will be used as the example organization. SRI has + decided to divided their domain SRI.COM into a few subdomains, one + for each group that wants one. The subdomains are CSL and ISTC. + + Note the following interesting items: + + There are both hosts and domains under SRI.COM. + + CSL.SRI.COM is both a domain name and a host name. + + All the domains are serviced by the same pair of domain servers. + + All hosts at SRI are on net 128.18 except hosts in the CSL domain + which are on net 192.12.33. Note that a domain does not have to + correspond to a physical network. + + The examples do not necessarily correspond to actual data in use + by the SRI domain. + + SRI Domain Organization + + +-------+ + | COM | + +-------+ + | + +-------+ + | SRI | + +-------+ + | + +----------++-----------+ + | | | + +-------+ +------+ +-------+ + | CSL | | ISTC | | Hosts | + +-------+ +------+ +-------+ + | | + +-------+ +-------+ + | Hosts | | Hosts | + +-------+ +-------+ + + + + + + + + + + +Lottor [Page 13] + +RFC 1033 DOMAIN OPERATIONS GUIDE November 1987 + + + [File "CONFIG.CMD". Since bootstrap files are not standardized, this + file is presented using a pseudo configuration file syntax.] + + load root server list from file ROOT.SERVERS + load zone SRI.COM. from file SRI.ZONE + load zone CSL.SRI.COM. from file CSL.ZONE + load zone ISTC.SRI.COM. from file ISTC.ZONE + load zone 18.128.IN-ADDR.ARPA. from file SRINET.ZONE + load zone 33.12.192.IN-ADDR.ARPA. from file SRI-CSL-NET.ZONE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Lottor [Page 14] + +RFC 1033 DOMAIN OPERATIONS GUIDE November 1987 + + + [File "ROOT.SERVERS". Again, the format of this file is not + standardized.] + + ;list of possible root servers + SRI-NIC.ARPA 10.0.0.51 26.0.0.73 + C.ISI.EDU 10.0.0.52 + BRL-AOS.ARPA 192.5.25.82 192.5.22.82 128.20.1.2 + A.ISI.EDU 26.3.0.103 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Lottor [Page 15] + +RFC 1033 DOMAIN OPERATIONS GUIDE November 1987 + + + [File "SRI.ZONE"] + + SRI.COM. IN SOA KL.SRI.COM. DLE.STRIPE.SRI.COM. ( + 870407 ;serial + 1800 ;refresh every 30 minutes + 600 ;retry every 10 minutes + 604800 ;expire after a week + 86400 ;default of an hour + ) + + SRI.COM. NS KL.SRI.COM. + NS STRIPE.SRI.COM. + MX 10 KL.SRI.COM. + + ;SRI.COM hosts + + KL A 10.1.0.2 + A 128.18.10.6 + MX 10 KL.SRI.COM. + + STRIPE A 10.4.0.2 + STRIPE A 128.18.10.4 + MX 10 STRIPE.SRI.COM. + + NIC CNAME SRI-NIC.ARPA. + + Blackjack A 128.18.2.1 + HINFO VAX-11/780 UNIX + WKS 128.18.2.1 TCP TELNET FTP + + CSL A 192.12.33.2 + HINFO FOONLY-F4 TOPS20 + WKS 192.12.33.2 TCP TELNET FTP SMTP FINGER + MX 10 CSL.SRI.COM. + + + + + + + + + + + + + + + + + +Lottor [Page 16] + +RFC 1033 DOMAIN OPERATIONS GUIDE November 1987 + + + [File "CSL.ZONE"] + + CSL.SRI.COM. IN SOA KL.SRI.COM. DLE.STRIPE.SRI.COM. ( + 870330 ;serial + 1800 ;refresh every 30 minutes + 600 ;retry every 10 minutes + 604800 ;expire after a week + 86400 ;default of a day + ) + + CSL.SRI.COM. NS KL.SRI.COM. + NS STRIPE.SRI.COM. + A 192.12.33.2 + + ;CSL.SRI.COM hosts + + A CNAME CSL.SRI.COM. + B A 192.12.33.3 + HINFO FOONLY-F4 TOPS20 + WKS 192.12.33.3 TCP TELNET FTP SMTP + GW A 10.2.0.2 + A 192.12.33.1 + A 128.18.1.1 + HINFO PDP-11/23 MOS + SMELLY A 192.12.33.4 + HINFO IMAGEN IMAGEN + SQUIRREL A 192.12.33.5 + HINFO XEROX-1100 INTERLISP + VENUS A 192.12.33.7 + HINFO SYMBOLICS-3600 LISPM + HELIUM A 192.12.33.30 + HINFO SUN-3/160 UNIX + ARGON A 192.12.33.31 + HINFO SUN-3/75 UNIX + RADON A 192.12.33.32 + HINFO SUN-3/75 UNIX + + + + + + + + + + + + + + + +Lottor [Page 17] + +RFC 1033 DOMAIN OPERATIONS GUIDE November 1987 + + + [File "ISTC.ZONE"] + + ISTC.SRI.COM. IN SOA KL.SRI.COM. roemers.JOYCE.ISTC.SRI.COM. ( + 870406 ;serial + 1800 ;refresh every 30 minutes + 600 ;retry every 10 minutes + 604800 ;expire after a week + 86400 ;default of a day + ) + + ISTC.SRI.COM. NS KL.SRI.COM. + NS STRIPE.SRI.COM. + MX 10 SPAM.ISTC.SRI.COM. + + ; ISTC hosts + + joyce A 128.18.4.2 + HINFO VAX-11/750 UNIX + bozo A 128.18.0.6 + HINFO SUN UNIX + sundae A 128.18.0.11 + HINFO SUN UNIX + tsca A 128.18.0.201 + A 10.3.0.2 + HINFO VAX-11/750 UNIX + MX 10 TSCA.ISTC.SRI.COM. + tsc CNAME tsca + prmh A 128.18.0.203 + A 10.2.0.51 + HINFO PDP-11/44 UNIX + spam A 128.18.4.3 + A 10.2.0.107 + HINFO VAX-11/780 UNIX + MX 10 SPAM.ISTC.SRI.COM. + + + + + + + + + + + + + + + + + +Lottor [Page 18] + +RFC 1033 DOMAIN OPERATIONS GUIDE November 1987 + + + [File "SRINET.ZONE"] + + 18.128.IN-ADDR.ARPA. IN SOA KL.SRI.COM DLE.STRIPE.SRI.COM. ( + 870406 ;serial + 1800 ;refresh every 30 minutes + 600 ;retry every 10 minutes + 604800 ;expire after a week + 86400 ;default of a day + ) + + 18.128.IN-ADDR.ARPA. NS KL.SRI.COM. + NS STRIPE.SRI.COM. + PTR GW.CSL.SRI.COM. + + ; SRINET [128.18.0.0] Address Translations + + ; SRI.COM Hosts + 1.2.18.128.IN-ADDR.ARPA. PTR Blackjack.SRI.COM. + + ; ISTC.SRI.COM Hosts + 2.4.18.128.IN-ADDR.ARPA. PTR joyce.ISTC.SRI.COM. + 6.0.18.128.IN-ADDR.ARPA. PTR bozo.ISTC.SRI.COM. + 11.0.18.128.IN-ADDR.ARPA. PTR sundae.ISTC.SRI.COM. + 201.0.18.128.IN-ADDR.ARPA. PTR tsca.ISTC.SRI.COM. + 203.0.18.128.IN-ADDR.ARPA. PTR prmh.ISTC.SRI.COM. + 3.4.18.128.IN-ADDR.ARPA. PTR spam.ISTC.SRI.COM. + + ; CSL.SRI.COM Hosts + 1.1.18.128.IN-ADDR.ARPA. PTR GW.CSL.SRI.COM. + + + + + + + + + + + + + + + + + + + + + + +Lottor [Page 19] + +RFC 1033 DOMAIN OPERATIONS GUIDE November 1987 + + + [File "SRI-CSL-NET.ZONE"] + + 33.12.192.IN-ADDR.ARPA. IN SOA KL.SRI.COM DLE.STRIPE.SRI.COM. ( + 870404 ;serial + 1800 ;refresh every 30 minutes + 600 ;retry every 10 minutes + 604800 ;expire after a week + 86400 ;default of a day + ) + + 33.12.192.IN-ADDR.ARPA. NS KL.SRI.COM. + NS STRIPE.SRI.COM. + PTR GW.CSL.SRI.COM. + + ; SRI-CSL-NET [192.12.33.0] Address Translations + + ; SRI.COM Hosts + 2.33.12.192.IN-ADDR.ARPA. PTR CSL.SRI.COM. + + ; CSL.SRI.COM Hosts + 1.33.12.192.IN-ADDR.ARPA. PTR GW.CSL.SRI.COM. + 3.33.12.192.IN-ADDR.ARPA. PTR B.CSL.SRI.COM. + 4.33.12.192.IN-ADDR.ARPA. PTR SMELLY.CSL.SRI.COM. + 5.33.12.192.IN-ADDR.ARPA. PTR SQUIRREL.CSL.SRI.COM. + 7.33.12.192.IN-ADDR.ARPA. PTR VENUS.CSL.SRI.COM. + 30.33.12.192.IN-ADDR.ARPA. PTR HELIUM.CSL.SRI.COM. + 31.33.12.192.IN-ADDR.ARPA. PTR ARGON.CSL.SRI.COM. + 32.33.12.192.IN-ADDR.ARPA. PTR RADON.CSL.SRI.COM. + + + + + + + + + + + + + + + + + + + + + + + +Lottor [Page 20] + +RFC 1033 DOMAIN OPERATIONS GUIDE November 1987 + + +APPENDIX + + BIND (Berkeley Internet Name Domain server) distributed with 4.3 BSD + UNIX + + This section describes two BIND implementation specific files; the + boot file and the cache file. BIND has other options, files, and + specifications that are not described here. See the Name Server + Operations Guide for BIND for details. + + The boot file for BIND is usually called "named.boot". This + corresponds to file "CONFIG.CMD" in the example section. + + -------------------------------------------------------- + cache . named.ca + primary SRI.COM SRI.ZONE + primary CSL.SRI.COM CSL.ZONE + primary ISTC.SRI.COM ISTC.ZONE + primary 18.128.IN-ADDR.ARPA SRINET.ZONE + primary 33.12.192.IN-ADDR.ARPA SRI-CSL-NET.ZONE + -------------------------------------------------------- + + The cache file for BIND is usually called "named.ca". This + corresponds to file "ROOT.SERVERS" in the example section. + + ------------------------------------------------- + ;list of possible root servers + . 1 IN NS SRI-NIC.ARPA. + NS C.ISI.EDU. + NS BRL-AOS.ARPA. + NS C.ISI.EDU. + ;and their addresses + SRI-NIC.ARPA. A 10.0.0.51 + A 26.0.0.73 + C.ISI.EDU. A 10.0.0.52 + BRL-AOS.ARPA. A 192.5.25.82 + A 192.5.22.82 + A 128.20.1.2 + A.ISI.EDU. A 26.3.0.103 + ------------------------------------------------- + + + + + + + + + + + +Lottor [Page 21] + +RFC 1033 DOMAIN OPERATIONS GUIDE November 1987 + + +REFERENCES + + [1] Dunlap, K., "Name Server Operations Guide for BIND", CSRG, + Department of Electrical Engineering and Computer Sciences, + University of California, Berkeley, California. + + [2] Partridge, C., "Mail Routing and the Domain System", RFC-974, + CSNET CIC BBN Laboratories, January 1986. + + [3] Mockapetris, P., "Domains Names - Concepts and Facilities", + RFC-1034, USC/Information Sciences Institute, November 1987. + + [4] Mockapetris, P., "Domain Names - Implementations Specification", + RFC-1035, USC/Information Sciences Institute, November 1987. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Lottor [Page 22] + diff --git a/usr.sbin/named/doc/rfc/rfc1034 b/usr.sbin/named/doc/rfc/rfc1034 new file mode 100644 index 000000000000..55cdb21fe652 --- /dev/null +++ b/usr.sbin/named/doc/rfc/rfc1034 @@ -0,0 +1,3077 @@ +Network Working Group P. Mockapetris +Request for Comments: 1034 ISI +Obsoletes: RFCs 882, 883, 973 November 1987 + + + DOMAIN NAMES - CONCEPTS AND FACILITIES + + + +1. STATUS OF THIS MEMO + +This RFC is an introduction to the Domain Name System (DNS), and omits +many details which can be found in a companion RFC, "Domain Names - +Implementation and Specification" [RFC-1035]. That RFC assumes that the +reader is familiar with the concepts discussed in this memo. + +A subset of DNS functions and data types constitute an official +protocol. The official protocol includes standard queries and their +responses and most of the Internet class data formats (e.g., host +addresses). + +However, the domain system is intentionally extensible. Researchers are +continuously proposing, implementing and experimenting with new data +types, query types, classes, functions, etc. Thus while the components +of the official protocol are expected to stay essentially unchanged and +operate as a production service, experimental behavior should always be +expected in extensions beyond the official protocol. Experimental or +obsolete features are clearly marked in these RFCs, and such information +should be used with caution. + +The reader is especially cautioned not to depend on the values which +appear in examples to be current or complete, since their purpose is +primarily pedagogical. Distribution of this memo is unlimited. + +2. INTRODUCTION + +This RFC introduces domain style names, their use for Internet mail and +host address support, and the protocols and servers used to implement +domain name facilities. + +2.1. The history of domain names + +The impetus for the development of the domain system was growth in the +Internet: + + - Host name to address mappings were maintained by the Network + Information Center (NIC) in a single file (HOSTS.TXT) which + was FTPed by all hosts [RFC-952, RFC-953]. The total network + + + +Mockapetris [Page 1] + +RFC 1034 Domain Concepts and Facilities November 1987 + + + bandwidth consumed in distributing a new version by this + scheme is proportional to the square of the number of hosts in + the network, and even when multiple levels of FTP are used, + the outgoing FTP load on the NIC host is considerable. + Explosive growth in the number of hosts didn't bode well for + the future. + + - The network population was also changing in character. The + timeshared hosts that made up the original ARPANET were being + replaced with local networks of workstations. Local + organizations were administering their own names and + addresses, but had to wait for the NIC to change HOSTS.TXT to + make changes visible to the Internet at large. Organizations + also wanted some local structure on the name space. + + - The applications on the Internet were getting more + sophisticated and creating a need for general purpose name + service. + + +The result was several ideas about name spaces and their management +[IEN-116, RFC-799, RFC-819, RFC-830]. The proposals varied, but a +common thread was the idea of a hierarchical name space, with the +hierarchy roughly corresponding to organizational structure, and names +using "." as the character to mark the boundary between hierarchy +levels. A design using a distributed database and generalized resources +was described in [RFC-882, RFC-883]. Based on experience with several +implementations, the system evolved into the scheme described in this +memo. + +The terms "domain" or "domain name" are used in many contexts beyond the +DNS described here. Very often, the term domain name is used to refer +to a name with structure indicated by dots, but no relation to the DNS. +This is particularly true in mail addressing [Quarterman 86]. + +2.2. DNS design goals + +The design goals of the DNS influence its structure. They are: + + - The primary goal is a consistent name space which will be used + for referring to resources. In order to avoid the problems + caused by ad hoc encodings, names should not be required to + contain network identifiers, addresses, routes, or similar + information as part of the name. + + - The sheer size of the database and frequency of updates + suggest that it must be maintained in a distributed manner, + with local caching to improve performance. Approaches that + + + +Mockapetris [Page 2] + +RFC 1034 Domain Concepts and Facilities November 1987 + + + attempt to collect a consistent copy of the entire database + will become more and more expensive and difficult, and hence + should be avoided. The same principle holds for the structure + of the name space, and in particular mechanisms for creating + and deleting names; these should also be distributed. + + - Where there tradeoffs between the cost of acquiring data, the + speed of updates, and the accuracy of caches, the source of + the data should control the tradeoff. + + - The costs of implementing such a facility dictate that it be + generally useful, and not restricted to a single application. + We should be able to use names to retrieve host addresses, + mailbox data, and other as yet undetermined information. All + data associated with a name is tagged with a type, and queries + can be limited to a single type. + + - Because we want the name space to be useful in dissimilar + networks and applications, we provide the ability to use the + same name space with different protocol families or + management. For example, host address formats differ between + protocols, though all protocols have the notion of address. + The DNS tags all data with a class as well as the type, so + that we can allow parallel use of different formats for data + of type address. + + - We want name server transactions to be independent of the + communications system that carries them. Some systems may + wish to use datagrams for queries and responses, and only + establish virtual circuits for transactions that need the + reliability (e.g., database updates, long transactions); other + systems will use virtual circuits exclusively. + + - The system should be useful across a wide spectrum of host + capabilities. Both personal computers and large timeshared + hosts should be able to use the system, though perhaps in + different ways. + +2.3. Assumptions about usage + +The organization of the domain system derives from some assumptions +about the needs and usage patterns of its user community and is designed +to avoid many of the the complicated problems found in general purpose +database systems. + +The assumptions are: + + - The size of the total database will initially be proportional + + + +Mockapetris [Page 3] + +RFC 1034 Domain Concepts and Facilities November 1987 + + + to the number of hosts using the system, but will eventually + grow to be proportional to the number of users on those hosts + as mailboxes and other information are added to the domain + system. + + - Most of the data in the system will change very slowly (e.g., + mailbox bindings, host addresses), but that the system should + be able to deal with subsets that change more rapidly (on the + order of seconds or minutes). + + - The administrative boundaries used to distribute + responsibility for the database will usually correspond to + organizations that have one or more hosts. Each organization + that has responsibility for a particular set of domains will + provide redundant name servers, either on the organization's + own hosts or other hosts that the organization arranges to + use. + + - Clients of the domain system should be able to identify + trusted name servers they prefer to use before accepting + referrals to name servers outside of this "trusted" set. + + - Access to information is more critical than instantaneous + updates or guarantees of consistency. Hence the update + process allows updates to percolate out through the users of + the domain system rather than guaranteeing that all copies are + simultaneously updated. When updates are unavailable due to + network or host failure, the usual course is to believe old + information while continuing efforts to update it. The + general model is that copies are distributed with timeouts for + refreshing. The distributor sets the timeout value and the + recipient of the distribution is responsible for performing + the refresh. In special situations, very short intervals can + be specified, or the owner can prohibit copies. + + - In any system that has a distributed database, a particular + name server may be presented with a query that can only be + answered by some other server. The two general approaches to + dealing with this problem are "recursive", in which the first + server pursues the query for the client at another server, and + "iterative", in which the server refers the client to another + server and lets the client pursue the query. Both approaches + have advantages and disadvantages, but the iterative approach + is preferred for the datagram style of access. The domain + system requires implementation of the iterative approach, but + allows the recursive approach as an option. + + + + + +Mockapetris [Page 4] + +RFC 1034 Domain Concepts and Facilities November 1987 + + +The domain system assumes that all data originates in master files +scattered through the hosts that use the domain system. These master +files are updated by local system administrators. Master files are text +files that are read by a local name server, and hence become available +through the name servers to users of the domain system. The user +programs access name servers through standard programs called resolvers. + +The standard format of master files allows them to be exchanged between +hosts (via FTP, mail, or some other mechanism); this facility is useful +when an organization wants a domain, but doesn't want to support a name +server. The organization can maintain the master files locally using a +text editor, transfer them to a foreign host which runs a name server, +and then arrange with the system administrator of the name server to get +the files loaded. + +Each host's name servers and resolvers are configured by a local system +administrator [RFC-1033]. For a name server, this configuration data +includes the identity of local master files and instructions on which +non-local master files are to be loaded from foreign servers. The name +server uses the master files or copies to load its zones. For +resolvers, the configuration data identifies the name servers which +should be the primary sources of information. + +The domain system defines procedures for accessing the data and for +referrals to other name servers. The domain system also defines +procedures for caching retrieved data and for periodic refreshing of +data defined by the system administrator. + +The system administrators provide: + + - The definition of zone boundaries. + + - Master files of data. + + - Updates to master files. + + - Statements of the refresh policies desired. + +The domain system provides: + + - Standard formats for resource data. + + - Standard methods for querying the database. + + - Standard methods for name servers to refresh local data from + foreign name servers. + + + + + +Mockapetris [Page 5] + +RFC 1034 Domain Concepts and Facilities November 1987 + + +2.4. Elements of the DNS + +The DNS has three major components: + + - The DOMAIN NAME SPACE and RESOURCE RECORDS, which are + specifications for a tree structured name space and data + associated with the names. Conceptually, each node and leaf + of the domain name space tree names a set of information, and + query operations are attempts to extract specific types of + information from a particular set. A query names the domain + name of interest and describes the type of resource + information that is desired. For example, the Internet + uses some of its domain names to identify hosts; queries for + address resources return Internet host addresses. + + - NAME SERVERS are server programs which hold information about + the domain tree's structure and set information. A name + server may cache structure or set information about any part + of the domain tree, but in general a particular name server + has complete information about a subset of the domain space, + and pointers to other name servers that can be used to lead to + information from any part of the domain tree. Name servers + know the parts of the domain tree for which they have complete + information; a name server is said to be an AUTHORITY for + these parts of the name space. Authoritative information is + organized into units called ZONEs, and these zones can be + automatically distributed to the name servers which provide + redundant service for the data in a zone. + + - RESOLVERS are programs that extract information from name + servers in response to client requests. Resolvers must be + able to access at least one name server and use that name + server's information to answer a query directly, or pursue the + query using referrals to other name servers. A resolver will + typically be a system routine that is directly accessible to + user programs; hence no protocol is necessary between the + resolver and the user program. + +These three components roughly correspond to the three layers or views +of the domain system: + + - From the user's point of view, the domain system is accessed + through a simple procedure or OS call to a local resolver. + The domain space consists of a single tree and the user can + request information from any section of the tree. + + - From the resolver's point of view, the domain system is + composed of an unknown number of name servers. Each name + + + +Mockapetris [Page 6] + +RFC 1034 Domain Concepts and Facilities November 1987 + + + server has one or more pieces of the whole domain tree's data, + but the resolver views each of these databases as essentially + static. + + - From a name server's point of view, the domain system consists + of separate sets of local information called zones. The name + server has local copies of some of the zones. The name server + must periodically refresh its zones from master copies in + local files or foreign name servers. The name server must + concurrently process queries that arrive from resolvers. + +In the interests of performance, implementations may couple these +functions. For example, a resolver on the same machine as a name server +might share a database consisting of the the zones managed by the name +server and the cache managed by the resolver. + +3. DOMAIN NAME SPACE and RESOURCE RECORDS + +3.1. Name space specifications and terminology + +The domain name space is a tree structure. Each node and leaf on the +tree corresponds to a resource set (which may be empty). The domain +system makes no distinctions between the uses of the interior nodes and +leaves, and this memo uses the term "node" to refer to both. + +Each node has a label, which is zero to 63 octets in length. Brother +nodes may not have the same label, although the same label can be used +for nodes which are not brothers. One label is reserved, and that is +the null (i.e., zero length) label used for the root. + +The domain name of a node is the list of the labels on the path from the +node to the root of the tree. By convention, the labels that compose a +domain name are printed or read left to right, from the most specific +(lowest, farthest from the root) to the least specific (highest, closest +to the root). + +Internally, programs that manipulate domain names should represent them +as sequences of labels, where each label is a length octet followed by +an octet string. Because all domain names end at the root, which has a +null string for a label, these internal representations can use a length +byte of zero to terminate a domain name. + +By convention, domain names can be stored with arbitrary case, but +domain name comparisons for all present domain functions are done in a +case-insensitive manner, assuming an ASCII character set, and a high +order zero bit. This means that you are free to create a node with +label "A" or a node with label "a", but not both as brothers; you could +refer to either using "a" or "A". When you receive a domain name or + + + +Mockapetris [Page 7] + +RFC 1034 Domain Concepts and Facilities November 1987 + + +label, you should preserve its case. The rationale for this choice is +that we may someday need to add full binary domain names for new +services; existing services would not be changed. + +When a user needs to type a domain name, the length of each label is +omitted and the labels are separated by dots ("."). Since a complete +domain name ends with the root label, this leads to a printed form which +ends in a dot. We use this property to distinguish between: + + - a character string which represents a complete domain name + (often called "absolute"). For example, "poneria.ISI.EDU." + + - a character string that represents the starting labels of a + domain name which is incomplete, and should be completed by + local software using knowledge of the local domain (often + called "relative"). For example, "poneria" used in the + ISI.EDU domain. + +Relative names are either taken relative to a well known origin, or to a +list of domains used as a search list. Relative names appear mostly at +the user interface, where their interpretation varies from +implementation to implementation, and in master files, where they are +relative to a single origin domain name. The most common interpretation +uses the root "." as either the single origin or as one of the members +of the search list, so a multi-label relative name is often one where +the trailing dot has been omitted to save typing. + +To simplify implementations, the total number of octets that represent a +domain name (i.e., the sum of all label octets and label lengths) is +limited to 255. + +A domain is identified by a domain name, and consists of that part of +the domain name space that is at or below the domain name which +specifies the domain. A domain is a subdomain of another domain if it +is contained within that domain. This relationship can be tested by +seeing if the subdomain's name ends with the containing domain's name. +For example, A.B.C.D is a subdomain of B.C.D, C.D, D, and " ". + +3.2. Administrative guidelines on use + +As a matter of policy, the DNS technical specifications do not mandate a +particular tree structure or rules for selecting labels; its goal is to +be as general as possible, so that it can be used to build arbitrary +applications. In particular, the system was designed so that the name +space did not have to be organized along the lines of network +boundaries, name servers, etc. The rationale for this is not that the +name space should have no implied semantics, but rather that the choice +of implied semantics should be left open to be used for the problem at + + + +Mockapetris [Page 8] + +RFC 1034 Domain Concepts and Facilities November 1987 + + +hand, and that different parts of the tree can have different implied +semantics. For example, the IN-ADDR.ARPA domain is organized and +distributed by network and host address because its role is to translate +from network or host numbers to names; NetBIOS domains [RFC-1001, RFC- +1002] are flat because that is appropriate for that application. + +However, there are some guidelines that apply to the "normal" parts of +the name space used for hosts, mailboxes, etc., that will make the name +space more uniform, provide for growth, and minimize problems as +software is converted from the older host table. The political +decisions about the top levels of the tree originated in RFC-920. +Current policy for the top levels is discussed in [RFC-1032]. MILNET +conversion issues are covered in [RFC-1031]. + +Lower domains which will eventually be broken into multiple zones should +provide branching at the top of the domain so that the eventual +decomposition can be done without renaming. Node labels which use +special characters, leading digits, etc., are likely to break older +software which depends on more restrictive choices. + +3.3. Technical guidelines on use + +Before the DNS can be used to hold naming information for some kind of +object, two needs must be met: + + - A convention for mapping between object names and domain + names. This describes how information about an object is + accessed. + + - RR types and data formats for describing the object. + +These rules can be quite simple or fairly complex. Very often, the +designer must take into account existing formats and plan for upward +compatibility for existing usage. Multiple mappings or levels of +mapping may be required. + +For hosts, the mapping depends on the existing syntax for host names +which is a subset of the usual text representation for domain names, +together with RR formats for describing host addresses, etc. Because we +need a reliable inverse mapping from address to host name, a special +mapping for addresses into the IN-ADDR.ARPA domain is also defined. + +For mailboxes, the mapping is slightly more complex. The usual mail +address @ is mapped into a domain name by +converting into a single label (regardles of dots it +contains), converting into a domain name using the usual +text format for domain names (dots denote label breaks), and +concatenating the two to form a single domain name. Thus the mailbox + + + +Mockapetris [Page 9] + +RFC 1034 Domain Concepts and Facilities November 1987 + + +HOSTMASTER@SRI-NIC.ARPA is represented as a domain name by +HOSTMASTER.SRI-NIC.ARPA. An appreciation for the reasons behind this +design also must take into account the scheme for mail exchanges [RFC- +974]. + +The typical user is not concerned with defining these rules, but should +understand that they usually are the result of numerous compromises +between desires for upward compatibility with old usage, interactions +between different object definitions, and the inevitable urge to add new +features when defining the rules. The way the DNS is used to support +some object is often more crucial than the restrictions inherent in the +DNS. + +3.4. Example name space + +The following figure shows a part of the current domain name space, and +is used in many examples in this RFC. Note that the tree is a very +small subset of the actual name space. + + | + | + +---------------------+------------------+ + | | | + MIL EDU ARPA + | | | + | | | + +-----+-----+ | +------+-----+-----+ + | | | | | | | + BRL NOSC DARPA | IN-ADDR SRI-NIC ACC + | + +--------+------------------+---------------+--------+ + | | | | | + UCI MIT | UDEL YALE + | ISI + | | + +---+---+ | + | | | + LCS ACHILLES +--+-----+-----+--------+ + | | | | | | + XX A C VAXA VENERA Mockapetris + +In this example, the root domain has three immediate subdomains: MIL, +EDU, and ARPA. The LCS.MIT.EDU domain has one immediate subdomain named +XX.LCS.MIT.EDU. All of the leaves are also domains. + +3.5. Preferred name syntax + +The DNS specifications attempt to be as general as possible in the rules + + + +Mockapetris [Page 10] + +RFC 1034 Domain Concepts and Facilities November 1987 + + +for constructing domain names. The idea is that the name of any +existing object can be expressed as a domain name with minimal changes. +However, when assigning a domain name for an object, the prudent user +will select a name which satisfies both the rules of the domain system +and any existing rules for the object, whether these rules are published +or implied by existing programs. + +For example, when naming a mail domain, the user should satisfy both the +rules of this memo and those in RFC-822. When creating a new host name, +the old rules for HOSTS.TXT should be followed. This avoids problems +when old software is converted to use domain names. + +The following syntax will result in fewer problems with many +applications that use domain names (e.g., mail, TELNET). + + ::= | " " + + ::=