]> CyberLeo.Net >> Repos - FreeBSD/releng/8.0.git/blob - contrib/bind9/README
Adjust to reflect 8.0-RELEASE.
[FreeBSD/releng/8.0.git] / contrib / bind9 / README
1 BIND 9
2
3         BIND version 9 is a major rewrite of nearly all aspects of the
4         underlying BIND architecture.  Some of the important features of
5         BIND 9 are:
6
7                 - DNS Security
8                         DNSSEC (signed zones)
9                         TSIG (signed DNS requests)
10
11                 - IP version 6
12                         Answers DNS queries on IPv6 sockets
13                         IPv6 resource records (AAAA)
14                         Experimental IPv6 Resolver Library
15
16                 - DNS Protocol Enhancements
17                         IXFR, DDNS, Notify, EDNS0
18                         Improved standards conformance
19
20                 - Views
21                         One server process can provide multiple "views" of
22                         the DNS namespace, e.g. an "inside" view to certain
23                         clients, and an "outside" view to others.
24
25                 - Multiprocessor Support
26
27                 - Improved Portability Architecture
28
29
30         BIND version 9 development has been underwritten by the following
31         organizations:
32
33                 Sun Microsystems, Inc.
34                 Hewlett Packard
35                 Compaq Computer Corporation
36                 IBM
37                 Process Software Corporation
38                 Silicon Graphics, Inc.
39                 Network Associates, Inc.
40                 U.S. Defense Information Systems Agency
41                 USENIX Association
42                 Stichting NLnet - NLnet Foundation
43                 Nominum, Inc.
44
45 BIND 9.6.0
46
47         BIND 9.6.0 includes a number of changes from BIND 9.5 and earlier
48         releases, including:
49
50         Full NSEC3 support
51
52         Automatic zone re-signing
53
54         New update-policy methods tcp-self and 6to4-self
55
56         The BIND 8 resolver library, libbind, has been removed from the
57         BIND 9 distribution and is now available as a separate download.
58
59         Change the default pid file location from /var/run to
60         /var/run/{named,lwresd} for improved chroot/setuid support.
61
62 BIND 9.5.0
63
64         BIND 9.5.0 has a number of new features over 9.4,
65         including:
66
67         GSS-TSIG support (RFC 3645).
68
69         DHCID support.
70
71         Experimental http server and statistics support for named via xml.
72
73         More detailed statistics counters including those supported in BIND 8.
74
75         Faster ACL processing.
76
77         Use Doxygen to generate internal documentation.
78
79         Efficient LRU cache-cleaning mechanism.
80
81         NSID support.
82
83 BIND 9.4.0
84
85         BIND 9.4.0 has a number of new features over 9.3,
86         including:
87
88         Implemented "additional section caching (or acache)", an
89         internal cache framework for additional section content to
90         improve response performance.  Several configuration options
91         were provided to control the behavior.
92
93         New notify type 'master-only'.  Enable notify for master
94         zones only.
95
96         Accept 'notify-source' style syntax for query-source.
97
98         rndc now allows addresses to be set in the server clauses.
99
100         New option "allow-query-cache".  This lets "allow-query"
101         be used to specify the default zone access level rather
102         than having to have every zone override the global value.
103         "allow-query-cache" can be set at both the options and view
104         levels.  If "allow-query-cache" is not set then "allow-recursion"
105         is used if set, otherwise "allow-query" is used if set
106         unless "recursion no;" is set in which case "none;" is used,
107         otherwise the default (localhost; localnets;) is used.
108
109         rndc: the source address can now be specified.
110
111         ixfr-from-differences now takes master and slave in addition
112         to yes and no at the options and view levels.
113
114         Allow the journal's name to be changed via named.conf.
115
116         'rndc notify zone [class [view]]' resend the NOTIFY messages
117         for the specified zone.
118
119         'dig +trace' now randomly selects the next servers to try.
120         Report if there is a bad delegation.
121
122         Improve check-names error messages.
123
124         Make public the function to read a key file, dst_key_read_public().
125
126         dig now returns the byte count for axfr/ixfr.
127                         
128         allow-update is now settable at the options / view level.
129
130         named-checkconf now checks the logging configuration.
131
132         host now can turn on memory debugging flags with '-m'.
133
134         Don't send notify messages to self.
135
136         Perform sanity checks on NS records which refer to 'in zone' names.
137
138         New zone option "notify-delay".  Specify a minimum delay
139         between sets of NOTIFY messages.
140
141         Extend adjusting TTL warning messages.
142
143         Named and named-checkzone can now both check for non-terminal
144         wildcard records.
145
146         "rndc freeze/thaw" now freezes/thaws all zones.
147
148         named-checkconf now check acls to verify that they only
149         refer to existing acls.
150
151         The server syntax has been extended to support a range of
152         servers.
153
154         Report differences between hints and real NS rrset and
155         associated address records.
156
157         Preserve the case of domain names in rdata during zone
158         transfers.
159
160         Restructured the data locking framework using architecture
161         dependent atomic operations (when available), improving
162         response performance on multi-processor machines significantly.
163         x86, x86_64, alpha, powerpc, and mips are currently supported.
164
165         UNIX domain controls are now supported.
166
167         Add support for additional zone file formats for improving
168         loading performance.  The masterfile-format option in
169         named.conf can be used to specify a non-default format.  A
170         separate command named-compilezone was provided to generate
171         zone files in the new format.  Additionally, the -I and -O
172         options for dnssec-signzone specify the input and output
173         formats.
174
175         dnssec-signzone can now randomize signature end times
176         (dnssec-signzone -j jitter).
177
178         Add support for CH A record.
179
180         Add additional zone data constancy checks.  named-checkzone
181         has extended checking of NS, MX and SRV record and the hosts
182         they reference.  named has extended post zone load checks.
183         New zone options: check-mx and integrity-check.
184
185
186         edns-udp-size can now be overridden on a per server basis.
187
188         dig can now specify the EDNS version when making a query.
189
190         Added framework for handling multiple EDNS versions.
191
192         Additional memory debugging support to track size and mctx
193         arguments.
194
195         Detect duplicates of UDP queries we are recursing on and
196         drop them.  New stats category "duplicates".
197
198         "USE INTERNAL MALLOC" is now runtime selectable.
199
200         The lame cache is now done on a <qname,qclass,qtype> basis
201         as some servers only appear to be lame for certain query
202         types.
203
204         Limit the number of recursive clients that can be waiting
205         for a single query (<qname,qtype,qclass>) to resolve.  New
206         options clients-per-query and max-clients-per-query.
207
208         dig: report the number of extra bytes still left in the
209         packet after processing all the records.
210
211         Support for IPSECKEY rdata type.
212
213         Raise the UDP recieve buffer size to 32k if it is less than 32k.
214
215         x86 and x86_64 now have seperate atomic locking implementations.
216
217         named-checkconf now validates update-policy entries.
218
219         Attempt to make the amount of work performed in a iteration
220         self tuning.  The covers nodes clean from the cache per
221         iteration, nodes written to disk when rewriting a master
222         file and nodes destroyed per iteration when destroying a
223         zone or a cache.
224
225         ISC string copy API.
226
227         Automatic empty zone creation for D.F.IP6.ARPA and friends.
228         Note: RFC 1918 zones are not yet covered by this but are
229         likely to be in a future release.
230
231         New options: empty-server, empty-contact, empty-zones-enable
232         and disable-empty-zone.
233
234         dig now has a '-q queryname' and '+showsearch' options.
235
236         host/nslookup now continue (default)/fail on SERVFAIL.
237
238         dig now warns if 'RA' is not set in the answer when 'RD'
239         was set in the query.  host/nslookup skip servers that fail
240         to set 'RA' when 'RD' is set unless a server is explicitly
241         set.
242
243         Integrate contibuted DLZ code into named.
244
245         Integrate contibuted IDN code from JPNIC.
246
247         libbind: corresponds to that from BIND 8.4.7.
248
249 BIND 9.3.0
250
251         BIND 9.3.0 has a number of new features over 9.2,
252         including:
253
254         DNSSEC is now DS based (RFC 3658).
255         See also RFC 3845, doc/draft/draft-ietf-dnsext-dnssec-*.
256
257         DNSSEC lookaside validation.
258
259         check-names is now implemented.
260         rrset-order in more complete.
261
262         IPv4/IPv6 transition support, dual-stack-servers.
263
264         IXFR deltas can now be generated when loading master files,
265         ixfr-from-differences.
266
267         It is now possible to specify the size of a journal, max-journal-size.
268
269         It is now possible to define a named set of master servers to be
270         used in masters clause, masters.
271
272         The advertised EDNS UDP size can now be set, edns-udp-size.
273
274         allow-v6-synthesis has been obsoleted.
275
276         NOTE:
277         * Zones containing MD and MF will now be rejected.
278         * dig, nslookup name. now report "Not Implemented" as
279           NOTIMP rather than NOTIMPL.  This will have impact on scripts
280           that are looking for NOTIMPL.
281
282         libbind: corresponds to that from BIND 8.4.5.
283
284 BIND 9.2.0
285
286         BIND 9.2.0 has a number of new features over 9.1,
287         including:
288
289           - The size of the cache can now be limited using the
290             "max-cache-size" option.
291
292           - The server can now automatically convert RFC1886-style
293             recursive lookup requests into RFC2874-style lookups, 
294             when enabled using the new option "allow-v6-synthesis".
295             This allows stub resolvers that support AAAA records
296             but not A6 record chains or binary labels to perform
297             lookups in domains that make use of these IPv6 DNS
298             features.
299
300           - Performance has been improved.
301
302           - The man pages now use the more portable "man" macros
303             rather than the "mandoc" macros, and are installed
304             by "make install".
305
306           - The named.conf parser has been completely rewritten.
307             It now supports "include" directives in more
308             places such as inside "view" statements, and it no
309             longer has any reserved words.
310
311           - The "rndc status" command is now implemented.
312
313           - rndc can now be configured automatically.
314
315           - A BIND 8 compatible stub resolver library is now
316             included in lib/bind.
317
318           - OpenSSL has been removed from the distribution.  This
319             means that to use DNSSEC, OpenSSL must be installed and
320             the --with-openssl option must be supplied to configure.
321             This does not apply to the use of TSIG, which does not
322             require OpenSSL.
323
324           - The source distribution now builds on Windows.
325             See win32utils/readme1.txt and win32utils/win32-build.txt
326             for details.
327
328         This distribution also includes a new lightweight stub
329         resolver library and associated resolver daemon that fully
330         support forward and reverse lookups of both IPv4 and IPv6
331         addresses.  This library is considered experimental and
332         is not a complete replacement for the BIND 8 resolver library.
333         Applications that use the BIND 8 res_* functions to perform
334         DNS lookups or dynamic updates still need to be linked against
335         the BIND 8 libraries.  For DNS lookups, they can also use the
336         new "getrrsetbyname()" API.
337
338         BIND 9.2 is capable of acting as an authoritative server
339         for DNSSEC secured zones.  This functionality is believed to
340         be stable and complete except for lacking support for
341         verifications involving wildcard records in secure zones.
342
343         When acting as a caching server, BIND 9.2 can be configured
344         to perform DNSSEC secure resolution on behalf of its clients.
345         This part of the DNSSEC implementation is still considered
346         experimental.  For detailed information about the state of the
347         DNSSEC implementation, see the file doc/misc/dnssec.
348
349         There are a few known bugs:
350
351                 On some systems, IPv6 and IPv4 sockets interact in
352                 unexpected ways.  For details, see doc/misc/ipv6.
353                 To reduce the impact of these problems, the server
354                 no longer listens for requests on IPv6 addresses
355                 by default.  If you need to accept DNS queries over
356                 IPv6, you must specify "listen-on-v6 { any; };"
357                 in the named.conf options statement.
358
359                 FreeBSD prior to 4.2 (and 4.2 if running as non-root)
360                 and OpenBSD prior to 2.8 log messages like
361                 "fcntl(8, F_SETFL, 4): Inappropriate ioctl for device".
362                 This is due to a bug in "/dev/random" and impacts the
363                 server's DNSSEC support.
364
365                 OS X 10.1.4 (Darwin 5.4), OS X 10.1.5 (Darwin 5.5) and
366                 OS X 10.2 (Darwin 6.0) reports errors like
367                 "fcntl(3, F_SETFL, 4): Operation not supported by device".
368                 This is due to a bug in "/dev/random" and impacts the
369                 server's DNSSEC support.
370
371                 --with-libtool does not work on AIX.
372
373         A bug in some versions of the Microsoft DNS server can cause zone
374         transfers from a BIND 9 server to a W2K server to fail.  For details,
375         see the "Zone Transfers" section in doc/misc/migration.
376
377         For a detailed list of user-visible changes from
378         previous releases, see the CHANGES file.
379
380
381 Building
382
383         BIND 9 currently requires a UNIX system with an ANSI C compiler,
384         basic POSIX support, and a 64 bit integer type.
385
386         We've had successful builds and tests on the following systems:
387
388                 COMPAQ Tru64 UNIX 5.1B
389                 Fedora Core 6
390                 FreeBSD 4.10, 5.2.1, 6.2
391                 HP-UX 11.11
392                 Mac OS X 10.5
393                 NetBSD 3.x and 4.0-beta
394                 OpenBSD 3.3 and up
395                 Solaris 8, 9, 9 (x86), 10
396                 Ubuntu 7.04, 7.10
397                 Windows XP/2003/2008
398
399         NOTE:  As of BIND 9.5.1, 9.4.3, and 9.3.6, older versions of
400         Windows, including Windows NT and Windows 2000, are no longer
401         supported.
402
403         We have recent reports from the user community that a supported
404         version of BIND will build and run on the following systems:
405
406                 AIX 4.3, 5L
407                 CentOS 4, 4.5, 5
408                 Darwin 9.0.0d1/ARM
409                 Debian 4
410                 Fedora Core 5, 7
411                 FreeBSD 6.1
412                 HP-UX 11.23 PA
413                 MacOS X 10.4, 10.5
414                 Red Hat Enterprise Linux 4, 5
415                 SCO OpenServer 5.0.6
416                 Slackware 9, 10
417                 SuSE 9, 10
418
419         To build, just
420
421                 ./configure
422                 make
423
424         Do not use a parallel "make".
425
426         Several environment variables that can be set before running
427         configure will affect compilation:
428
429             CC
430                 The C compiler to use.  configure tries to figure
431                 out the right one for supported systems.
432
433             CFLAGS
434                 C compiler flags.  Defaults to include -g and/or -O2
435                 as supported by the compiler.  
436
437             STD_CINCLUDES
438                 System header file directories.  Can be used to specify
439                 where add-on thread or IPv6 support is, for example.
440                 Defaults to empty string.
441
442             STD_CDEFINES
443                 Any additional preprocessor symbols you want defined.
444                 Defaults to empty string.
445
446                 Possible settings:
447                 Change the default syslog facility of named/lwresd.
448                   -DISC_FACILITY=LOG_LOCAL0     
449                 Enable DNSSEC signature chasing support in dig.
450                   -DDIG_SIGCHASE=1 (sets -DDIG_SIGCHASE_TD=1 and
451                                     -DDIG_SIGCHASE_BU=1)
452                 Disable dropping queries from particular well known ports.
453                   -DNS_CLIENT_DROPPORT=0
454                 Sibling glue checking in named-checkzone is enabled by default.
455                 To disable the default check set.  -DCHECK_SIBLING=0
456                 named-checkzone checks out-of-zone addresses by default.
457                 To disable this default set.  -DCHECK_LOCAL=0
458                 To create the default pid files in ${localstatedir}/run rather
459                 than ${localstatedir}/run/{named,lwresd}/ set.
460                   -DNS_RUN_PID_DIR=0
461                 Enable workaround for Solaris kernel bug about /dev/poll
462                   -DISC_SOCKET_USE_POLLWATCH=1
463                   The watch timeout is also configurable, e.g.,
464                   -DISC_SOCKET_POLLWATCH_TIMEOUT=20
465
466             LDFLAGS
467                 Linker flags. Defaults to empty string.
468
469         The following need to be set when cross compiling.
470
471             BUILD_CC
472                 The native C compiler.
473             BUILD_CFLAGS (optional)
474             BUILD_CPPFLAGS (optional)
475                 Possible Settings:
476                 -DNEED_OPTARG=1         (optarg is not declared in <unistd.h>)
477             BUILD_LDFLAGS (optional)
478             BUILD_LIBS (optional)
479
480         To build shared libraries, specify "--with-libtool" on the
481         configure command line.
482
483         For the server to support DNSSEC, you need to build it
484         with crypto support.  You must have OpenSSL 0.9.5a
485         or newer installed and specify "--with-openssl" on the
486         configure command line.  If OpenSSL is installed under
487         a nonstandard prefix, you can tell configure where to
488         look for it using "--with-openssl=/prefix".
489
490         On some platforms it is necessary to explictly request large
491         file support to handle files bigger than 2GB.  This can be
492         done by "--enable-largefile" on the configure command line.
493
494         On some platforms, BIND 9 can be built with multithreading
495         support, allowing it to take advantage of multiple CPUs.
496         You can specify whether to build a multithreaded BIND 9 
497         by specifying "--enable-threads" or "--disable-threads"
498         on the configure command line.  The default is operating
499         system dependent.
500
501         Support for the "fixed" rrset-order option can be enabled
502         or disabled by specifying "--enable-fixed-rrset" or
503         "--disable-fixed-rrset" on the configure command line.
504         The default is "disabled", to reduce memory footprint.
505
506         If your operating system has integrated support for IPv6, it
507         will be used automatically.  If you have installed KAME IPv6
508         separately, use "--with-kame[=PATH]" to specify its location.
509
510         "make install" will install "named" and the various BIND 9 libraries.
511         By default, installation is into /usr/local, but this can be changed
512         with the "--prefix" option when running "configure".
513
514         You may specify the option "--sysconfdir" to set the directory 
515         where configuration files like "named.conf" go by default,
516         and "--localstatedir" to set the default parent directory
517         of "run/named.pid".   For backwards compatibility with BIND 8,
518         --sysconfdir defaults to "/etc" and --localstatedir defaults to
519         "/var" if no --prefix option is given.  If there is a --prefix
520         option, sysconfdir defaults to "$prefix/etc" and localstatedir
521         defaults to "$prefix/var".
522
523         To see additional configure options, run "configure --help".
524         Note that the help message does not reflect the BIND 8 
525         compatibility defaults for sysconfdir and localstatedir.
526
527         If you're planning on making changes to the BIND 9 source, you
528         should also "make depend".  If you're using Emacs, you might find
529         "make tags" helpful.
530
531         If you need to re-run configure please run "make distclean" first.
532         This will ensure that all the option changes take.
533
534         Building with gcc is not supported, unless gcc is the vendor's usual
535         compiler (e.g. the various BSD systems, Linux).
536         
537         Known compiler issues:
538         * gcc-3.2.1 and gcc-3.1.1 is known to cause problems with solaris-x86.
539         * gcc prior to gcc-3.2.3 ultrasparc generates incorrect code at -02.
540         * gcc-3.3.5 powerpc generates incorrect code at -02.
541         * Irix, MipsPRO 7.4.1m is known to cause problems.
542
543         A limited test suite can be run with "make test".  Many of
544         the tests require you to configure a set of virtual IP addresses
545         on your system, and some require Perl; see bin/tests/system/README
546         for details.
547
548         SunOS 4 requires "printf" to be installed to make the shared
549         libraries.  sh-utils-1.16 provides a "printf" which compiles
550         on SunOS 4.
551
552 Documentation
553
554         The BIND 9 Administrator Reference Manual is included with the
555         source distribution in DocBook XML and HTML format, in the
556         doc/arm directory.
557
558         Some of the programs in the BIND 9 distribution have man pages
559         in their directories.  In particular, the command line
560         options of "named" are documented in /bin/named/named.8.
561         There is now also a set of man pages for the lwres library.
562
563         If you are upgrading from BIND 8, please read the migration
564         notes in doc/misc/migration.  If you are upgrading from
565         BIND 4, read doc/misc/migration-4to9.
566
567         Frequently asked questions and their answers can be found in
568         FAQ.
569
570
571 Bug Reports and Mailing Lists
572
573         Bugs reports should be sent to
574
575                 bind9-bugs@isc.org
576
577         To join the BIND Users mailing list, send mail to
578
579                 bind-users-request@isc.org
580
581         archives of which can be found via
582
583                 http://www.isc.org/ops/lists/
584
585         If you're planning on making changes to the BIND 9 source
586         code, you might want to join the BIND Workers mailing list.
587         Send mail to
588
589                 bind-workers-request@isc.org
590
591