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