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