Compare commits

...

28 Commits

Author SHA1 Message Date
Andreas Gustafsson
4df2b2a65e shared library builds don't *quite* work yet on AIX,
despite the libtool upgrade
2000-11-03 19:35:12 +00:00
Brian Wellington
e9c5fab8ef #457 was duplicated. 2000-11-03 19:30:10 +00:00
Andreas Gustafsson
88a3380ec6 note reported successful build on OpenBSD 2.6, 2.8 2000-11-03 01:06:51 +00:00
Michael Sawyer
35f705870b Pullup, to make domain= code work under dig and vc option work under
nslookup.

Reviewed by Brian
2000-10-30 17:21:45 +00:00
Andreas Gustafsson
1c468cb9a8 pullup:
valid base64 strings with embedded spaces were rejected.
2000-10-26 06:07:36 +00:00
Brian Wellington
c168afbec2 The libtool update broke netbsd [RT #414] 2000-10-25 13:29:27 +00:00
Andreas Gustafsson
66453c294e "The big dig change" broke "make install":
the mkinstalldirs script does not exist yet on the release branch
2000-10-21 01:35:17 +00:00
Andreas Gustafsson
03edb7b710 added '--- 9.0.1rc1 released' --- marker 2000-10-21 01:09:20 +00:00
Andreas Gustafsson
2489ab6bcc public functions have been added to libisc and libdns, but not liblwres 2000-10-21 01:01:43 +00:00
Andreas Gustafsson
5db3677d56 note that there are some new features in
dig/host/nslookup
2000-10-21 00:38:58 +00:00
Andreas Gustafsson
96f9387aed fixed typos and formatting, clarified, and tabified 2000-10-20 23:02:59 +00:00
Michael Sawyer
2057571b6e Mass CHANGES updates from recent big dig/nsupdate pullups. 2000-10-20 22:36:07 +00:00
Andreas Gustafsson
5993bf7f96 pullup:
various dig patches from Mike
2000-10-20 21:54:13 +00:00
Andreas Gustafsson
7ec8586044 pullup:
ask the database for aaaa records too, when an a6 isn't found.
2000-10-20 21:45:46 +00:00
Andreas Gustafsson
66a1ed79fb pullup:
Fix overzealous printing of newlines in message_[pseudo]sectiontotext().
2000-10-20 21:44:09 +00:00
Andreas Gustafsson
e1cafc4e44 updated for 9.0.1rc1 2000-10-20 20:37:59 +00:00
Andreas Gustafsson
e33a8b080c let's call this 9.0.1rc1 2000-10-20 20:35:36 +00:00
Andreas Gustafsson
ad42b21192 pullup: nsupdate mega-pullup patch from Mike 2000-10-20 18:32:20 +00:00
Andreas Gustafsson
2f67fb6fc5 pullup:
#include <resolv.h> is not needed, and causes problems on AIX.
2000-10-19 23:57:20 +00:00
Andreas Gustafsson
3f0aa7b47a pullup:
526.   [bug]           nsupdate incorrectly refused to add RRs with a TTL
                        of 0.
2000-10-19 17:13:22 +00:00
Brian Wellington
f789cc513b --with-libtool does not work on AIX. 2000-10-18 23:27:59 +00:00
Andreas Gustafsson
a052adcf4d clarified warning messages added in previous change 2000-10-18 19:10:27 +00:00
Andreas Gustafsson
5cea3b46e9 pullup:
523.   [doc]           The source to the Administrator Reference Manual is
                        now an XML file using the DocBook DTD, and is included
                        in the distribution.  The plain text version of the
                        ARM is temporarily unavailable while we figure out
                        how to generate readable plain text from the XML.
2000-10-18 19:02:17 +00:00
Brian Wellington
1e96267305 Print warnings saying that the 'forward' and 'forwarders' statements
are unimplemented [RT #407].
2000-10-18 18:59:24 +00:00
Andreas Gustafsson
d3db556f7e .css file was used by FrameMaker-generated HTML only and is no
> longer needed
2000-10-18 18:55:24 +00:00
Andreas Gustafsson
082dd1ce50 regenerated on release branch, too 2000-10-18 18:53:43 +00:00
Andreas Gustafsson
01b637bd8b remove plain text version of ARM until we find a way to generate
it from XML
2000-10-18 18:50:18 +00:00
Andreas Gustafsson
6c1dcfda8f removed FrameMaker-generated HTML files now replaced by
XML-generated ones
2000-10-18 18:46:21 +00:00
29 changed files with 1319 additions and 16269 deletions

87
CHANGES
View File

@@ -1,5 +1,18 @@
520. [bug] Upgraded libtool to 1.3.5, which allows shared
library builds to work on AIX (and possibly others).
--- 9.0.1rc1 released ---
526. [bug] nsupdate incorrectly refused to add RRs with a TTL
of 0.
523. [doc] The source to the Administrator Reference Manual is
now an XML file using the DocBook DTD, and is included
in the distribution. The plain text version of the
ARM is temporarily unavailable while we figure out
how to generate readable plain text from the XML.
520. [bug] Upgraded libtool to 1.3.5, which makes shared
library builds almost work on AIX (and possibly
others).
519. [bug] dns_name_split() would improperly split some bitstring
labels, zeroing a few of the least signficant bits in
@@ -31,14 +44,49 @@
505. [bug] nsupdate was printing "unknown result code". [RT #373]
502. [func] On a SERVFAIL reply, DiG will now try the next server
in the list, unless the +fail option is specified.
501. [bug] Incorrect port numbers were being displayed by
nslookup. [RT #352]
500. [func] Nearly useless +details option removed from DiG.
499. [func] In DiG, specifying a class with -c or type with -t
changes command-line parsing so that classes and
types are only recognized if following -c or -t.
This allows hosts with the same name as a class or
type to be looked up.
498. [doc] There is now a man page for "dig"
in doc/man/bin/dig.1.
495. [bug] nsupdate was unable to handle large records. [RT #368]
491. [bug] nsupdate would segfault when sending certain
prerequisites with empty RDATA. [RT #356]
488. [bug] Locks weren't properly destroyed in some cases.
486. [bug] nslookup: "set all" and "server" commands showed
the incorrect port number if a port other than 53
was specified. [RT #352]
485. [func] When dig had more than one server to query, it would
send all of the messages at the same time. Add
rate limiting of the transmitted messages.
483. [bug] nslookup: "set all" showed a "search" option but it
was not settable.
482. [bug] nslookup: a plain "server" or "lserver" should be
treated as a lookup.
481. [bug] nslookup:get_next_command() stack size could exceed
per thread limit.
480. [bug] strtok() is not thread safe. [RT #349]
476. [bug] A zone could expire while a zone transfer was in
progress triggering a INSIST failure. [RT #329]
@@ -64,11 +112,46 @@
471. [bug] nsupdate didn't compile on HP/UX 10.20
463. [bug] nsupdate sent malformed SOA queries to the second
and subsequent name servers in resolv.conf if the
query sent to the first one failed.
459. [bug] Nslookup processed the "set" command incorrectly.
458. [bug] Nslookup didn't properly check class and type values.
[RT #305]
457. [bug] Dig/host/hslookup didn't properly handle connect
timeouts in certain situations, causing an
unnecessary warning message to be printed.
447. [bug] Dig didn't properly retry in TCP mode after
a truncated reply. [RT #277]
403. [bug] "host" did not use the search list.
395. [bug] nslookup printed incorrect RR type mnemonics
for RRs of type >= 21 [RT #237].
388. [func] dig and host can now do reverse ipv6 lookups.
387. [func] Add dns_byaddr_createptrname(), which converts
an address into the name used by a PTR query.
379. [func] New library function isc_sockaddr_anyofpf().
347. [bug] Don't crash if an argument is left off options in dig.
346. [func] Add support for .digrc config file, in the
user's current directory
345. [bug] Large-scale changes/cleanups to dig:
* Significantly improve structure handling
* Don't pre-load entire batch files
* Add name/rr counting/limiting
* Fix SIGINT handling
* Shorten timeouts to match v8's behavior
--- 9.0.0 released ---
463. [bug] nsupdate sent malformed SOA queries to the second

31
README
View File

@@ -44,19 +44,16 @@ BIND 9
Stichting NLnet - NLnet Foundation
BIND 9.0.0
BIND 9.0.1rc1
BIND 9.0.0 is the first "general availability" release of BIND
version 9. It is aimed at early adopters and those who wish to
make use of new 9.0 features, such as IPv6 and DNSSEC secure
resolution support.
BIND 9.0.1rc1 is a release candidate for BIND 9.0.1. BIND 9.0.1
will be a maintenance release, containing fixes for a number of
bugs in BIND 9.0.0 but no new features (with the exception of
a few minor features added to dig, host, and nslookup).
We are running BIND 9 in production, and it has been used
as a root name server.
BIND 9.0.0 is primarily a name server software distribution.
In addition to the name server, it also includes a new
lightweight stub resolver library and associated resolver
Like BIND 9.0.0, BIND 9.0.1 is primarily a name server software
distribution. In addition to the name server, it also includes
a new lightweight stub resolver library and associated resolver
daemon that fully support forward and reverse lookups of both
IPv4 and IPv6 addresses. This library is still considered
experimental and is not a complete replacement for the BIND 8
@@ -64,12 +61,12 @@ BIND 9.0.0
BIND 8 res_* functions to perform DNS queries or dynamic
updates still need to be linked against the BIND 8 libraries.
BIND 9.0.0 is capable of acting as an authoritative server
BIND 9.0.1 is capable of acting as an authoritative server
for DNSSEC secured zones. This functionality is believed to
be stable and complete except for lacking support for wildcard
records in secure zones.
When acting as a caching server, BIND 9.0.0 can be configured
When acting as a caching server, BIND 9.0.1 can be configured
to perform DNSSEC secure resolution on behalf of its clients.
This part of the DNSSEC implementation is still considered
experimental. For detailed information about the state of the
@@ -105,6 +102,8 @@ BIND 9.0.0
The configure option --disable-ipv6 is not functional.
--with-libtool does not work on AIX.
Building
BIND 9 currently requires a UNIX system with an ANSI C compiler,
@@ -126,6 +125,7 @@ Building
of the following systems:
Slackware Linux 7.0 with 2.4.0-test6 kernel and glibc 2.1.3
OpenBSD 2.6, 2.8
To build, just
@@ -179,9 +179,8 @@ Building
Documentation
The BIND 9 Administrator Reference Manual is included with the
source distribution in HTML and plain text format, in the
doc/arm directory. A PDF version can be downloaded separately
at <http://www.nominum.com/resources/>.
source distribution in DocBook XML and HTML format, in the
doc/arm directory.
Some of the programs in the BIND 9 distribution have man pages
under the doc/man directory. In particular, the command line

View File

@@ -13,7 +13,7 @@
# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
# $Id: Makefile.in,v 1.10.2.3 2000/10/06 19:08:00 mws Exp $
# $Id: Makefile.in,v 1.10.2.4 2000/10/21 01:35:17 gson Exp $
srcdir = @srcdir@
VPATH = @srcdir@
@@ -63,7 +63,9 @@ clean distclean::
rm -f ${TARGETS}
installdirs:
$(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${bindir}
if [ ! -d ${DESTDIR}${bindir} ]; then \
mkdir ${DESTDIR}${bindir}; \
fi
install:: dig host nslookup installdirs
${LIBTOOL} ${INSTALL_PROGRAM} dig ${DESTDIR}${bindir}

View File

@@ -15,7 +15,7 @@
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/* $Id: dig.c,v 1.51.2.9 2000/10/06 19:08:01 mws Exp $ */
/* $Id: dig.c,v 1.51.2.11 2000/10/30 17:21:41 mws Exp $ */
#include <config.h>
#include <stdlib.h>
@@ -78,13 +78,13 @@ dig_lookup_t *default_lookup = NULL;
extern isc_uint32_t name_limit;
extern isc_uint32_t rr_limit;
extern isc_boolean_t debugging, show_packets;
extern isc_boolean_t debugging, memdebugging;
char *batchname = NULL;
FILE *batchfp = NULL;
char *argv0;
isc_boolean_t short_form = ISC_FALSE, printcmd = ISC_TRUE,
nibble = ISC_FALSE;
nibble = ISC_FALSE, plusquest = ISC_FALSE, pluscomm = ISC_FALSE;
isc_uint16_t bufsize = 0;
isc_boolean_t forcecomment = ISC_FALSE;
@@ -356,14 +356,12 @@ printmessage(dig_query_t *query, dns_message_t *msg, isc_boolean_t headers) {
check_result(result, "isc_buffer_allocate");
if (query->lookup->comments && !short_form) {
if (!query->lookup->doing_xfr) {
if (query->lookup->cmdline[0] != 0)
printf ("; %s\n",query->lookup->cmdline);
if (msg == query->lookup->sendmsg)
printf(";; Sending:\n");
else
printf(";; Got answer:\n");
}
if (query->lookup->cmdline[0] != 0)
printf("; %s\n", query->lookup->cmdline);
if (msg == query->lookup->sendmsg)
printf(";; Sending:\n");
else
printf(";; Got answer:\n");
if (headers) {
printf(";; ->>HEADER<<- opcode: %s, status: %s, "
@@ -604,14 +602,14 @@ plus_option(char *option, isc_boolean_t is_batchfile,
cmd += 2;
state = ISC_FALSE;
}
switch (tolower(cmd[0])) {
switch (cmd[0]) {
case 'a':
switch (tolower(cmd[1])) {
switch (cmd[1]) {
case 'a': /* aaflag */
lookup->aaonly = state;
break;
case 'd':
switch (tolower(cmd[2])) {
switch (cmd[2]) {
case 'd': /* additional */
lookup->section_additional = state;
break;
@@ -651,7 +649,7 @@ plus_option(char *option, isc_boolean_t is_batchfile,
lookup->udpsize = COMMSIZE;
break;
case 'c':
switch (tolower(cmd[1])) {
switch (cmd[1]) {
case 'd':/* cdflag */
lookup->cdflag = state;
break;
@@ -660,13 +658,15 @@ plus_option(char *option, isc_boolean_t is_batchfile,
break;
case 'o': /* comments */
lookup->comments = state;
if (lookup == default_lookup)
pluscomm = state;
break;
default:
goto invalid_option;
}
break;
case 'd':
switch (tolower(cmd[1])) {
switch (cmd[1]) {
case 'e':
lookup->defname = state;
break;
@@ -677,6 +677,7 @@ plus_option(char *option, isc_boolean_t is_batchfile,
goto invalid_option;
strncpy(fixeddomain, value, sizeof(fixeddomain));
fixeddomain[sizeof(fixeddomain)-1]=0;
usesearch = state;
break;
default:
goto invalid_option;
@@ -686,7 +687,7 @@ plus_option(char *option, isc_boolean_t is_batchfile,
lookup->servfail_stops = state;
break;
case 'i':
switch (tolower(cmd[1])) {
switch (cmd[1]) {
case 'd': /* identify */
lookup->identify = state;
break;
@@ -696,7 +697,7 @@ plus_option(char *option, isc_boolean_t is_batchfile,
}
break;
case 'n':
switch (tolower(cmd[1])) {
switch (cmd[1]) {
case 'a': /* namelimit */
if (value == NULL)
goto need_value;
@@ -733,19 +734,21 @@ plus_option(char *option, isc_boolean_t is_batchfile,
}
break;
case 'q':
switch (tolower(cmd[1])) {
switch (cmd[1]) {
case 'r': /* qr */
qr = state;
break;
case 'u': /* question */
lookup->section_question = state;
if (lookup == default_lookup)
plusquest = state;
break;
default:
goto invalid_option;
}
break;
case 'r':
switch (tolower(cmd[1])) {
switch (cmd[1]) {
case 'e': /* recurse */
lookup->recurse = state;
break;
@@ -761,7 +764,7 @@ plus_option(char *option, isc_boolean_t is_batchfile,
}
break;
case 's':
switch (tolower(cmd[1])) {
switch (cmd[1]) {
case 'e': /* search */
usesearch = state;
break;
@@ -784,7 +787,7 @@ plus_option(char *option, isc_boolean_t is_batchfile,
}
break;
case 't':
switch (tolower(cmd[1])) {
switch (cmd[1]) {
case 'c': /* tcp */
if (!is_batchfile)
lookup->tcp_mode = state;
@@ -799,7 +802,7 @@ plus_option(char *option, isc_boolean_t is_batchfile,
timeout = 1;
break;
case 'r':
switch (tolower(cmd[2])) {
switch (cmd[2]) {
case 'a': /* trace */
lookup->trace = state;
lookup->trace_root = state;
@@ -871,7 +874,7 @@ dash_option(char *option, char *next, dig_lookup_t **lookup,
value_from_next = ISC_TRUE;
value = next;
}
switch (tolower(cmd)) {
switch (cmd) {
case 'd':
debugging = ISC_TRUE;
return (ISC_FALSE);
@@ -879,20 +882,16 @@ dash_option(char *option, char *next, dig_lookup_t **lookup,
show_usage();
exit(0);
break;
case 'm':
isc_mem_debugging = ISC_TRUE;
case 'm': /* memdebug */
/* memdebug is handled in preparse_args() */
return (ISC_FALSE);
case 'n':
nibble = ISC_TRUE;
return (ISC_FALSE);
case 'w':
show_packets = ISC_TRUE;
return (ISC_FALSE);
}
if (value == NULL)
goto invalid_option;
switch (tolower(cmd)) {
switch (cmd) {
case 'b':
get_address(value, 0, &bind_address);
specified_source = ISC_TRUE;
@@ -926,15 +925,21 @@ dash_option(char *option, char *next, dig_lookup_t **lookup,
(*lookup)->rdtype = dns_rdatatype_ixfr;
(*lookup)->ixfr_serial =
atoi(&value[5]);
(*lookup)->section_question = plusquest;
(*lookup)->comments = pluscomm;
return (value_from_next);
}
tr.base = value;
tr.length = strlen(value);
result = dns_rdatatype_fromtext(&rdtype,
(isc_textregion_t *)&tr);
if (result == ISC_R_SUCCESS)
if (result == ISC_R_SUCCESS) {
(*lookup)->rdtype = rdtype;
else
if (rdtype == dns_rdatatype_axfr) {
(*lookup)->section_question = plusquest;
(*lookup)->comments = pluscomm;
}
} else
fprintf(stderr, ";; Warning, ignoring "
"invalid type %s\n",
value);
@@ -1015,6 +1020,30 @@ dash_option(char *option, char *next, dig_lookup_t **lookup,
return (ISC_FALSE);
}
/*
* Because we may be trying to do memory allocation recording, we're going
* to need to parse the arguments for the -m *before* we start the main
* argument parsing routine.
* I'd prefer not to have to do this, but I am not quite sure how else to
* fix the problem. Argument parsing in dig involves memory allocation
* by its nature, so it can't be done in the main argument parser.
*/
static void
preparse_args(int argc, char **argv) {
int rc;
char **rv;
rc = argc;
rv = argv;
for (rc--, rv++; rc > 0; rc--, rv++) {
if (strcmp(rv[0], "-m") == 0) {
memdebugging = ISC_TRUE;
isc_mem_debugging = ISC_TRUE;
return;
}
}
}
static void
parse_args(isc_boolean_t is_batchfile, isc_boolean_t config_only,
int argc, char **argv) {
@@ -1028,12 +1057,12 @@ parse_args(isc_boolean_t is_batchfile, isc_boolean_t config_only,
isc_boolean_t open_type_class = ISC_TRUE;
char batchline[MXNAME];
int bargc;
char *bargv[16];
char *bargv[64];
int rc;
char **rv;
#ifndef NOPOSIX
char *homedir;
char rcfile[132];
char rcfile[256];
#endif
char *input;
@@ -1059,7 +1088,7 @@ parse_args(isc_boolean_t is_batchfile, isc_boolean_t config_only,
*/
homedir = getenv("HOME");
if (homedir != NULL)
snprintf(rcfile, 132, "%s/.digrc", homedir);
snprintf(rcfile, sizeof(rcfile), "%s/.digrc", homedir);
else
strcpy(rcfile, ".digrc");
batchfp = fopen(rcfile, "r");
@@ -1071,7 +1100,7 @@ parse_args(isc_boolean_t is_batchfile, isc_boolean_t config_only,
input = batchline;
bargv[bargc] = next_token(&input, " \t\r\n");
while ((bargv[bargc] != NULL) &&
(bargc < 14)) {
(bargc < 62)) {
bargc++;
bargv[bargc] = next_token(&input, " \t\r\n");
}
@@ -1128,12 +1157,19 @@ parse_args(isc_boolean_t is_batchfile, isc_boolean_t config_only,
lookup->rdtype = dns_rdatatype_ixfr;
lookup->ixfr_serial =
atoi(&rv[0][5]);
lookup->section_question = plusquest;
lookup->comments = pluscomm;
continue;
}
result = dns_rdatatype_fromtext(&rdtype,
(isc_textregion_t *)&tr);
if ((result == ISC_R_SUCCESS) &&
(rdtype != dns_rdatatype_ixfr)) {
if (rdtype == dns_rdatatype_axfr) {
lookup->section_question =
plusquest;
lookup->comments = pluscomm;
}
lookup->rdtype = rdtype;
continue;
}
@@ -1275,6 +1311,7 @@ main(int argc, char **argv) {
ISC_LIST_INIT(search_list);
debug("main()");
preparse_args(argc, argv);
progname = argv[0];
result = isc_app_start();
check_result(result, "isc_app_start");
@@ -1294,8 +1331,6 @@ main(int argc, char **argv) {
(dig_server_t *)s2, link);
isc_mem_free(mctx, s2);
}
if (isc_mem_debugging != 0)
isc_mem_stats(mctx, stderr);
isc_mem_free(mctx, default_lookup);
if (batchname != NULL) {
if (batchfp != stdin)

View File

@@ -15,7 +15,7 @@
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/* $Id: dighost.c,v 1.58.2.12 2000/10/06 19:08:03 mws Exp $ */
/* $Id: dighost.c,v 1.58.2.14 2000/10/30 17:21:43 mws Exp $ */
/*
* Notice to programmers: Do not use this code as an example of how to
@@ -36,6 +36,7 @@
extern int h_errno;
#endif
#include <dns/fixedname.h>
#include <dns/message.h>
#include <dns/name.h>
#include <dns/rdata.h>
@@ -46,6 +47,7 @@ extern int h_errno;
#include <dns/rdatatype.h>
#include <dns/result.h>
#include <dns/tsig.h>
#include <dst/dst.h>
#include <isc/app.h>
@@ -75,8 +77,7 @@ isc_boolean_t
qr = ISC_FALSE,
is_dst_up = ISC_FALSE,
have_domain = ISC_FALSE,
is_blocking =ISC_FALSE,
show_packets = ISC_FALSE;
is_blocking =ISC_FALSE;
in_port_t port = 53;
unsigned int timeout = 0;
@@ -95,6 +96,7 @@ int ndots = -1;
int tries = 2;
int lookup_counter = 0;
char fixeddomain[MXNAME] = "";
dig_searchlist_t *fixedsearch = NULL;
/*
* Exit Codes:
* 0 Everything went well, including things like NXDOMAIN
@@ -115,6 +117,7 @@ isc_boolean_t validated = ISC_TRUE;
isc_entropy_t *entp = NULL;
isc_mempool_t *commctx = NULL;
isc_boolean_t debugging = ISC_FALSE;
isc_boolean_t memdebugging = ISC_FALSE;
char *progname = NULL;
isc_mutex_t lookup_lock;
dig_lookup_t *current_lookup = NULL;
@@ -181,7 +184,7 @@ hex_dump(isc_buffer_t *b) {
printf("%d bytes\n", r.length);
for (len = 0; len < r.length; len++) {
printf("%02x ", r.base[len]);
if (len != 0 && len % 16 == 0)
if (len % 16 == 15)
printf("\n");
}
if (len % 16 != 0)
@@ -524,19 +527,6 @@ setup_system(void) {
debug("setup_system()");
if (fixeddomain[0] != 0) {
debug("using fixed domain %s", fixeddomain);
search = isc_mem_allocate(mctx, sizeof(struct dig_server));
if (search == NULL)
fatal("Memory allocation failure in %s:%d",
__FILE__, __LINE__);
strncpy(search->origin, fixeddomain,
sizeof(search->origin));
search->origin[sizeof(search->origin)-1]=0;
/* XXX Check ordering, with search -vs- domain */
ISC_LIST_PREPEND(search_list, search, link);
}
free_now = ISC_FALSE;
get_servers = ISC_TF(server_list.head == NULL);
fp = fopen(RESOLVCONF, "r");
@@ -1049,6 +1039,16 @@ next_origin(dns_message_t *msg, dig_query_t *query) {
debug("next_origin()");
debug("following up %s", query->lookup->textname);
if (fixedsearch == query->lookup->origin) {
/*
* This is a fixed domain search; there is no next entry.
* While we're here, clear out the fixedsearch alloc.
*/
isc_mem_free(mctx, fixedsearch);
fixedsearch = NULL;
query->lookup->origin = NULL;
return (ISC_FALSE);
}
if (!usesearch)
/*
* We're not using a search list, so don't even think
@@ -1187,8 +1187,23 @@ setup_lookup(dig_lookup_t *lookup) {
if ((count_dots(lookup->textname) >= ndots) || lookup->defname)
lookup->origin = NULL; /* Force abs lookup */
else if (lookup->origin == NULL && lookup->new_search &&
(usesearch || have_domain))
lookup->origin = ISC_LIST_HEAD(search_list);
(usesearch || have_domain)) {
if (fixeddomain[0] != 0) {
debug("using fixed domain %s", fixeddomain);
if (fixedsearch != NULL)
isc_mem_free(mctx, fixedsearch);
fixedsearch = isc_mem_allocate(mctx,
sizeof(struct dig_searchlist));
if (fixedsearch == NULL)
fatal("Memory allocation failure in %s:%d",
__FILE__, __LINE__);
strncpy(fixedsearch->origin, fixeddomain,
sizeof(fixedsearch->origin));
fixedsearch->origin[sizeof(fixedsearch->origin)-1]=0;
lookup->origin = fixedsearch;
} else
lookup->origin = ISC_LIST_HEAD(search_list);
}
if (lookup->origin != NULL) {
debug("trying origin %s", lookup->origin->origin);
result = dns_message_gettempname(lookup->sendmsg,
@@ -2099,8 +2114,6 @@ recv_done(isc_task_t *task, isc_event_t *event) {
UNUSED(task);
INSIST(!free_now);
if (show_packets)
puts(";; begin of DNS packet");
debug("recv_done()");
LOCK_LOOKUP;
@@ -2316,11 +2329,7 @@ recv_done(isc_task_t *task, isc_event_t *event) {
query);
}
} else {
if (query->first_soa_rcvd &&
l->doing_xfr)
printmessage(query, msg, ISC_FALSE);
else
printmessage(query, msg, ISC_TRUE);
printmessage(query, msg, ISC_TRUE);
}
} else if ((dns_message_firstname(msg, DNS_SECTION_ANSWER)
== ISC_R_SUCCESS) &&
@@ -2585,6 +2594,11 @@ destroy_libs(void) {
free_now = ISC_TRUE;
if (fixedsearch != NULL) {
debug("freeing fixed search");
isc_mem_free(mctx, fixedsearch);
fixedsearch = NULL;
}
s = ISC_LIST_HEAD(server_list);
while (s != NULL) {
debug("freeing global server %p", s);
@@ -2630,7 +2644,7 @@ destroy_libs(void) {
UNLOCK_LOOKUP;
DESTROYLOCK(&lookup_lock);
if (isc_mem_debugging != 0)
if (memdebugging != 0)
isc_mem_stats(mctx, stderr);
if (mctx != NULL)
isc_mem_destroy(&mctx);

View File

@@ -15,7 +15,7 @@
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/* $Id: host.c,v 1.29.2.7 2000/10/06 19:08:05 mws Exp $ */
/* $Id: host.c,v 1.29.2.8 2000/10/20 21:54:11 gson Exp $ */
#include <config.h>
#include <stdlib.h>
@@ -196,7 +196,7 @@ static const char *rtypetext[] = {
"has 97 record", /* 97 */
"has 98 record", /* 98 */
"has 99 record", /* 99 */
"UNIFO", /* 100 */
"UINFO", /* 100 */
"UID", /* 101 */
"GID", /* 102 */
"UNSPEC"}; /* 103 */

View File

@@ -15,7 +15,7 @@
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/* $Id: nslookup.c,v 1.20.2.9 2000/10/06 19:08:06 mws Exp $ */
/* $Id: nslookup.c,v 1.20.2.11 2000/10/30 17:21:45 mws Exp $ */
#include <config.h>
@@ -533,7 +533,7 @@ printmessage(dig_query_t *query, dns_message_t *msg, isc_boolean_t headers) {
if (((msg->flags & DNS_MESSAGEFLAG_AA) == 0) &&
(query->lookup->rdtype != dns_rdatatype_a)) {
puts("\nAuthorative answers can be found from:");
puts("\nAuthoritative answers can be found from:");
printsection(query, msg, headers,
DNS_SECTION_AUTHORITY);
printsection(query, msg, headers,
@@ -578,9 +578,7 @@ show_settings(isc_boolean_t full, isc_boolean_t serv_only) {
printf("\t timeout = %d\t\tretry = %d\tport = %d\n",
timeout, tries, port);
printf("\t querytype = %-8s\tclass = %s\n", deftype, defclass);
#if 0
printf("\t domain = %s\n", fixeddomain);
#endif
}
@@ -650,13 +648,12 @@ setoption(char *opt) {
} else if (strncasecmp(opt, "qu=", 3) == 0) {
if (testtype(&opt[3]))
safecpy(deftype, &opt[3], MXRD);
#if 0
/* XXXMWS domain= doesn't work now. */
} else if (strncasecmp(opt, "domain=", 7) == 0) {
safecpy(fixeddomain, &opt[7], MXNAME);
usesearch = ISC_TRUE;
} else if (strncasecmp(opt, "do=", 3) == 0) {
safecpy(fixeddomain, &opt[3], MXNAME);
#endif
usesearch = ISC_TRUE;
} else if (strncasecmp(opt, "port=", 5) == 0) {
port = atoi(&opt[5]);
} else if (strncasecmp(opt, "po=", 3) == 0) {
@@ -673,6 +670,10 @@ setoption(char *opt) {
defname = ISC_TRUE;
} else if (strncasecmp(opt, "nodef", 5) == 0) {
defname = ISC_FALSE;
} else if (strncasecmp(opt, "vc", 3) == 0) {
tcpmode = ISC_TRUE;
} else if (strncasecmp(opt, "novc", 5) == 0) {
tcpmode = ISC_FALSE;
} else if (strncasecmp(opt, "deb", 3) == 0) {
short_form = ISC_FALSE;
} else if (strncasecmp(opt, "nodeb", 5) == 0) {

View File

@@ -1,21 +1,21 @@
/*
* Copyright (C) 2000 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.
*
* 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.
*/
/* $Id: nsupdate.c,v 1.8.2.11 2000/10/03 17:43:54 mws Exp $ */
/* $Id: nsupdate.c,v 1.8.2.13 2000/10/20 18:32:20 gson Exp $ */
#include <config.h>
@@ -33,12 +33,11 @@ extern int h_errno;
#include <isc/app.h>
#include <isc/base64.h>
#include <isc/buffer.h>
#include <isc/condition.h>
#include <isc/commandline.h>
#include <isc/entropy.h>
#include <isc/event.h>
#include <isc/lex.h>
#include <isc/mem.h>
#include <isc/mutex.h>
#include <isc/region.h>
#include <isc/sockaddr.h>
#include <isc/socket.h>
@@ -51,6 +50,7 @@ extern int h_errno;
#include <dns/callbacks.h>
#include <dns/dispatch.h>
#include <dns/events.h>
#include <dns/fixedname.h>
#include <dns/message.h>
#include <dns/name.h>
#include <dns/rdata.h>
@@ -68,29 +68,29 @@ extern int h_errno;
#include <lwres/lwres.h>
#include <lwres/net.h>
#define MXNAME 256
#define MAXPNAME 1025
#define MAXCMD 1024
#define MAXCMD (4 * 1024)
#define INITDATA (32 * 1024)
#define MAXDATA (64 * 1024)
#define NAMEBUF 512
#define WORDLEN 512
#define PACKETSIZE 2048
#define MSGTEXT 4096
#define PACKETSIZE ((64 * 1024) - 1)
#define INITTEXT (2 * 1024)
#define MAXTEXT (128 * 1024)
#define FIND_TIMEOUT 5
#define TTL_MAX 2147483647 /* Maximum signed 32 bit integer. */
#define DNSDEFAULTPORT 53
#define MAXNAME 1024
#define RESOLV_CONF "/etc/resolv.conf"
static isc_boolean_t busy = ISC_FALSE;
static isc_boolean_t debugging = ISC_FALSE, ddebugging = ISC_FALSE;
static isc_boolean_t have_ipv6 = ISC_FALSE;
static isc_boolean_t is_dst_up = ISC_FALSE;
static isc_boolean_t usevc = ISC_FALSE;
static isc_mutex_t lock;
static isc_condition_t cond;
static isc_taskmgr_t *taskmgr = NULL;
static isc_task_t *global_task = NULL;
static isc_event_t *global_event = NULL;
static isc_mem_t *mctx = NULL;
static dns_dispatchmgr_t *dispatchmgr = NULL;
static dns_requestmgr_t *requestmgr = NULL;
@@ -104,7 +104,6 @@ static dns_name_t *origin; /* Points to one of above, or dns_rootname */
static dns_fixedname_t fuserzone;
static dns_name_t *userzone = NULL;
static dns_tsigkey_t *key = NULL;
static dns_tsig_keyring_t *keyring = NULL;
static lwres_context_t *lwctx = NULL;
static lwres_conf_t *lwconf;
static isc_sockaddr_t *servers;
@@ -132,7 +131,7 @@ static void
fatal(const char *format, ...) {
va_list args;
va_start(args, format);
va_start(args, format);
vfprintf(stderr, format, args);
va_end(args);
fprintf(stderr, "\n");
@@ -144,7 +143,7 @@ debug(const char *format, ...) {
va_list args;
if (debugging) {
va_start(args, format);
va_start(args, format);
vfprintf(stderr, format, args);
va_end(args);
fprintf(stderr, "\n");
@@ -156,7 +155,7 @@ ddebug(const char *format, ...) {
va_list args;
if (ddebugging) {
va_start(args, format);
va_start(args, format);
vfprintf(stderr, format, args);
va_end(args);
fprintf(stderr, "\n");
@@ -252,17 +251,12 @@ setup_key(void) {
dns_fixedname_t fkeyname;
dns_name_t *keyname;
result = dns_tsigkeyring_create(mctx, &keyring);
check_result(result, "dns_tsigkeyringcreate");
dns_fixedname_init(&fkeyname);
keyname = dns_fixedname_name(&fkeyname);
if (keystr != NULL) {
isc_buffer_t keynamesrc;
char *secretstr;
isc_buffer_t secretsrc;
isc_lex_t *lex = NULL;
char *s;
debug("Creating key...");
@@ -285,27 +279,16 @@ setup_key(void) {
if (secret == NULL)
fatal("out of memory");
isc_buffer_init(&secretsrc, secretstr, strlen(secretstr));
isc_buffer_add(&secretsrc, strlen(secretstr));
isc_buffer_init(&secretbuf, secret, secretlen);
result = isc_lex_create(mctx, strlen(secretstr), &lex);
check_result(result, "isc_lex_create");
result = isc_lex_openbuffer(lex, &secretsrc);
check_result(result, "isc_lex_openbuffer");
result = isc_base64_tobuffer(lex, &secretbuf, -1);
result = isc_base64_decodestring(mctx, secretstr, &secretbuf);
if (result != ISC_R_SUCCESS) {
fprintf(stderr, "Couldn't create key from %s: %s\n",
keystr, isc_result_totext(result));
isc_lex_close(lex);
isc_lex_destroy(&lex);
goto failure;
}
secretlen = isc_buffer_usedlength(&secretbuf);
debug("close");
isc_lex_close(lex);
isc_lex_destroy(&lex);
} else {
dst_key_t *dstkey = NULL;
@@ -333,11 +316,11 @@ setup_key(void) {
dst_key_free(&dstkey);
}
debug("keycreate");
result = dns_tsigkey_create(keyname, dns_tsig_hmacmd5_name,
secret, secretlen, ISC_TRUE, NULL, 0, 0,
mctx, keyring, &key);
mctx, NULL, &key);
if (result != ISC_R_SUCCESS) {
char *str;
if (keystr != NULL)
@@ -354,7 +337,6 @@ setup_key(void) {
if (secret != NULL)
isc_mem_free(mctx, secret);
dns_tsigkeyring_destroy(&keyring);
}
static void
@@ -368,15 +350,6 @@ setup_system(void) {
ddebug("setup_system()");
/*
* Warning: This is not particularly good randomness. We'll
* just use random() now for getting id values, but doing so
* does NOT insure that id's can't be guessed.
*
* XXX Shouldn't random() be called somewhere if this is here?
*/
srandom(getpid() + (int)&setup_system);
dns_result_register();
result = isc_net_probeipv4();
@@ -545,7 +518,7 @@ parse_args(int argc, char **argv) {
case 'M': /* was -dm */
debugging = ISC_TRUE;
ddebugging = ISC_TRUE;
isc_mem_debugging = ISC_TRUE;
isc_mem_debugging = 1;
break;
case 'y':
keystr = isc_commandline_argument;
@@ -621,31 +594,42 @@ parse_rdata(char **cmdlinep, dns_rdataclass_t rdataclass,
dns_rdatacallbacks_t callbacks;
isc_result_t result;
dns_name_t *rn;
int bufsz = INITDATA;
while (*cmdline != 0 && isspace((unsigned char)*cmdline))
cmdline++;
if (*cmdline != 0) {
result = isc_lex_create(mctx, WORDLEN, &lex);
check_result(result, "isc_lex_create");
isc_buffer_init(&source, cmdline, strlen(cmdline));
isc_buffer_add(&source, strlen(cmdline));
result = isc_lex_openbuffer(lex, &source);
check_result(result, "isc_lex_openbuffer");
result = isc_buffer_allocate(mctx, &buf, MXNAME);
check_result(result, "isc_buffer_allocate");
dns_rdatacallbacks_init_stdio(&callbacks);
dns_rdatacallbacks_init(&callbacks);
if (userzone != NULL)
rn = userzone;
else
rn = origin;
result = dns_rdata_fromtext(*rdatap, rdataclass, rdatatype,
lex, rn, ISC_FALSE, buf,
&callbacks);
do {
result = isc_lex_create(mctx, strlen(cmdline), &lex);
check_result(result, "isc_lex_create");
isc_buffer_init(&source, cmdline, strlen(cmdline));
isc_buffer_add(&source, strlen(cmdline));
result = isc_lex_openbuffer(lex, &source);
check_result(result, "isc_lex_openbuffer");
if (buf != NULL)
isc_buffer_free(&buf);
if (bufsz > MAXDATA) {
fprintf(stderr, "couldn't allocate enough "
"space for the rdata\n");
exit(1);
}
result = isc_buffer_allocate(mctx, &buf, bufsz);
check_result(result, "isc_buffer_allocate");
result = dns_rdata_fromtext(*rdatap, rdataclass,
rdatatype,
lex, rn, ISC_FALSE, buf,
&callbacks);
bufsz *= 2;
isc_lex_destroy(&lex);
} while (result == ISC_R_NOSPACE);
check_result(result, "dns_rdata_fromtext");
dns_message_takebuffer(msg, &buf);
isc_lex_destroy(&lex);
if (result != ISC_R_SUCCESS)
return (STATUS_MORE);
}
@@ -743,7 +727,7 @@ make_prereq(char *cmdline, isc_boolean_t ispositive, isc_boolean_t isrrset) {
ISC_LIST_INIT(rdatalist->rdata);
ISC_LIST_APPEND(rdatalist->rdata, rdata, link);
dns_rdataset_init(rdataset);
dns_rdatalist_tordataset(rdatalist, rdataset);
dns_rdatalist_tordataset(rdatalist, rdataset);
ISC_LIST_INIT(name->list);
ISC_LIST_APPEND(name->list, rdataset, link);
dns_message_addname(updatemsg, name, DNS_SECTION_PREREQUISITE);
@@ -890,7 +874,7 @@ update_addordelete(char *cmdline, isc_boolean_t isdelete) {
if (*endp != '\0') {
fprintf(stderr, "ttl '%s' is not numeric\n", word);
goto failure;
} else if (ttl < 1 || ttl > TTL_MAX || errno == ERANGE) {
} else if (ttl < 0 || ttl > TTL_MAX || errno == ERANGE) {
/*
* The errno test is needed to catch when strtol()
* overflows on a platform where sizeof(int) ==
@@ -1014,23 +998,37 @@ evaluate_update(char *cmdline) {
}
static void
show_message(void) {
show_message(dns_message_t *msg) {
isc_result_t result;
char store[MSGTEXT];
isc_buffer_t buf;
isc_buffer_t *buf = NULL;
int bufsz;
ddebug("show_message()");
isc_buffer_init(&buf, store, MSGTEXT);
result = dns_message_totext(updatemsg, 0, &buf);
bufsz = INITTEXT;
do {
if (bufsz > MAXTEXT) {
fprintf(stderr, "couldn't allocate large enough "
"buffer to display message\n");
exit(1);
}
if (buf != NULL)
isc_buffer_free(&buf);
result = isc_buffer_allocate(mctx, &buf, bufsz);
check_result(result, "isc_buffer_allocate");
result = dns_message_totext(msg, 0, buf);
bufsz *= 2;
} while (result == ISC_R_NOSPACE);
if (result != ISC_R_SUCCESS) {
fprintf(stderr, "Failed to concert message to text format.\n");
fprintf(stderr, "Failed to convert message to text format.\n");
isc_buffer_free(&buf);
return;
}
printf("Outgoing update query:\n%.*s",
(int)isc_buffer_usedlength(&buf),
(char*)isc_buffer_base(&buf));
(int)isc_buffer_usedlength(buf),
(char*)isc_buffer_base(buf));
isc_buffer_free(&buf);
}
static isc_uint16_t
get_next_command(void) {
@@ -1040,8 +1038,9 @@ get_next_command(void) {
ddebug("get_next_command()");
fprintf(stdout, "> ");
fgets (cmdlinebuf, MAXCMD, stdin);
cmdline = cmdlinebuf;
cmdline = fgets(cmdlinebuf, MAXCMD, stdin);
if (cmdline == NULL)
return (STATUS_QUIT);
word = nsu_strsep(&cmdline, " \t\r\n");
if (feof(stdin))
@@ -1061,7 +1060,7 @@ get_next_command(void) {
if (strcasecmp(word, "send") == 0)
return (STATUS_SEND);
if (strcasecmp(word, "show") == 0) {
show_message();
show_message(updatemsg);
return (STATUS_MORE);
}
fprintf(stderr, "incorrect section name: %s\n", word);
@@ -1082,23 +1081,17 @@ user_interaction(void) {
}
static void
done_update(isc_boolean_t acquirelock) {
if (acquirelock)
LOCK(&lock);
busy = ISC_FALSE;
SIGNAL(&cond);
if (acquirelock)
UNLOCK(&lock);
done_update(void) {
isc_event_t *event = global_event;
isc_task_send(global_task, &event);
}
static void
update_completed(isc_task_t *task, isc_event_t *event) {
dns_requestevent_t *reqev = NULL;
isc_result_t result;
isc_buffer_t buf;
dns_message_t *rcvmsg = NULL;
char bufstore[MSGTEXT];
UNUSED(task);
ddebug("updated_completed()");
@@ -1112,21 +1105,38 @@ update_completed(isc_task_t *task, isc_event_t *event) {
result = dns_message_create(mctx, DNS_MESSAGE_INTENTPARSE, &rcvmsg);
check_result(result, "dns_message_create");
result = dns_request_getresponse(reqev->request, rcvmsg, ISC_TRUE);
result = dns_request_getresponse(reqev->request, rcvmsg,
ISC_TRUE);
check_result(result, "dns_request_getresponse");
if (debugging) {
isc_buffer_init(&buf, bufstore, MSGTEXT);
result = dns_message_totext(rcvmsg, 0, &buf);
isc_buffer_t *buf = NULL;
int bufsz;
bufsz = INITTEXT;
do {
if (bufsz > MAXTEXT) {
fprintf (stderr, "couldn't allocate large "
"enough buffer to display message\n");
exit(1);
}
if (buf != NULL)
isc_buffer_free(&buf);
result = isc_buffer_allocate(mctx, &buf, bufsz);
check_result(result, "isc_buffer_allocate");
result = dns_message_totext(rcvmsg, 0, buf);
bufsz *= 2;
} while (result == ISC_R_NOSPACE);
check_result(result, "dns_message_totext");
fprintf(stderr, "\nReply from update query:\n%.*s\n",
(int)isc_buffer_usedlength(&buf),
(char*)isc_buffer_base(&buf));
(int)isc_buffer_usedlength(buf),
(char*)isc_buffer_base(buf));
isc_buffer_free(&buf);
}
dns_message_destroy(&rcvmsg);
done:
dns_request_destroy(&reqev->request);
isc_event_free(&event);
done_update(ISC_TRUE);
done_update();
}
static void
@@ -1195,7 +1205,7 @@ recvsoa(isc_task_t *task, isc_event_t *event) {
if (eresult != ISC_R_SUCCESS) {
char addrbuf[ISC_SOCKADDR_FORMATSIZE];
isc_sockaddr_format(addr, addrbuf, sizeof(addrbuf));
fprintf(stderr, "; Communication with %s failed: %s\n",
addrbuf, isc_result_totext(eresult));
@@ -1216,19 +1226,31 @@ recvsoa(isc_task_t *task, isc_event_t *event) {
ddebug("About to create rcvmsg");
result = dns_message_create(mctx, DNS_MESSAGE_INTENTPARSE, &rcvmsg);
check_result(result, "dns_message_create");
result = dns_request_getresponse(request, rcvmsg, ISC_TRUE);
result = dns_request_getresponse(request, rcvmsg,
ISC_TRUE);
check_result(result, "dns_request_getresponse");
section = DNS_SECTION_ANSWER;
if (debugging) {
isc_buffer_t buf;
char bufstore[MSGTEXT];
isc_buffer_init(&buf, bufstore, MSGTEXT);
result = dns_message_totext(rcvmsg, 0, &buf);
isc_buffer_t *buf = NULL;
int bufsz;
bufsz = INITTEXT;
do {
if (buf != NULL)
isc_buffer_free(&buf);
if (bufsz > MAXTEXT) {
fprintf(stderr, "couldn't allocate enough "
"space for debugging message\n");
exit(1);
}
result = isc_buffer_allocate(mctx, &buf, bufsz);
check_result(result, "isc_buffer_allocate");
result = dns_message_totext(rcvmsg, 0, buf);
} while (result == ISC_R_NOSPACE);
check_result(result, "dns_message_totext");
fprintf(stderr, "Reply from SOA query:\n%.*s\n",
(int)isc_buffer_usedlength(&buf),
(char*)isc_buffer_base(&buf));
(int)isc_buffer_usedlength(buf),
(char*)isc_buffer_base(buf));
isc_buffer_free(&buf);
}
if (rcvmsg->rcode != dns_rcode_noerror &&
@@ -1266,7 +1288,7 @@ recvsoa(isc_task_t *task, isc_event_t *event) {
}
if (debugging) {
char namestr[MAXPNAME];
char namestr[MAXNAME];
dns_name_format(name, namestr, sizeof(namestr));
fprintf(stderr, "Found zone name: %s\n", namestr);
}
@@ -1288,7 +1310,7 @@ recvsoa(isc_task_t *task, isc_event_t *event) {
zonename = name;
if (debugging) {
char namestr[MAXPNAME];
char namestr[MAXNAME];
dns_name_format(&master, namestr, sizeof(namestr));
fprintf(stderr, "The master is: %s\n", namestr);
}
@@ -1296,7 +1318,7 @@ recvsoa(isc_task_t *task, isc_event_t *event) {
if (userserver != NULL)
serveraddr = userserver;
else {
char serverstr[MXNAME];
char serverstr[MAXNAME+1];
isc_buffer_t buf;
isc_buffer_init(&buf, serverstr, sizeof(serverstr));
@@ -1351,7 +1373,7 @@ start_update(void) {
result = dns_message_firstname(updatemsg, DNS_SECTION_UPDATE);
if (result != ISC_R_SUCCESS) {
done_update(ISC_FALSE);
done_update();
return;
}
@@ -1396,15 +1418,9 @@ cleanup(void) {
if (key != NULL) {
debug("Freeing key");
dns_tsigkey_setdeleted(key);
dns_tsigkey_detach(&key);
}
if (keyring != NULL) {
debug("Freeing keyring %lx", keyring);
dns_tsigkeyring_destroy(&keyring);
}
if (updatemsg != NULL)
dns_message_destroy(&updatemsg);
@@ -1423,7 +1439,7 @@ cleanup(void) {
lwres_context_destroy(&lwctx);
isc_mem_put(mctx, servers, ns_total * sizeof(isc_sockaddr_t));
ddebug("Shutting down request manager");
dns_requestmgr_shutdown(requestmgr);
dns_requestmgr_detach(&requestmgr);
@@ -1439,6 +1455,10 @@ cleanup(void) {
ddebug("Ending task");
isc_task_detach(&global_task);
ddebug("Destroying event task");
if (global_event != NULL)
isc_event_free(&global_event);
ddebug("Shutting down task manager");
isc_taskmgr_destroy(&taskmgr);
@@ -1454,33 +1474,44 @@ cleanup(void) {
isc_mem_destroy(&mctx);
}
static void
getinput(isc_task_t *task, isc_event_t *event) {
isc_boolean_t more;
UNUSED(task);
if (global_event == NULL)
global_event = event;
reset_system();
more = user_interaction();
if (!more) {
isc_app_shutdown();
return;
}
start_update();
return;
}
int
main(int argc, char **argv) {
isc_result_t result;
isc_app_start();
parse_args(argc, argv);
setup_system();
result = isc_mutex_init(&lock);
check_result(result, "isc_mutex_init");
result = isc_condition_init(&cond);
check_result(result, "isc_condition_init");
LOCK(&lock);
while (ISC_TRUE) {
reset_system();
if (!user_interaction())
break;
busy = ISC_TRUE;
start_update();
while (busy)
WAIT(&cond, &lock);
}
result = isc_app_onrun(mctx, global_task, getinput, NULL);
check_result(result, "isc_app_onrun");
(void)isc_app_run();
fprintf(stdout, "\n");
isc_mutex_destroy(&lock);
isc_condition_destroy(&cond);
cleanup();
isc_app_finish();
return (0);
}

View File

@@ -1,568 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML EXPERIMENTAL 970324//EN">
<!--
- Copyright (C) 2000 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.
-->
<!-- $Id: Bv9ARM.1.html,v 1.5.2.4 2000/08/22 19:29:05 gson Exp $ -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML EXPERIMENTAL 970324//EN">
<HTML>
<HEAD>
<META NAME="GENERATOR" CONTENT="Adobe FrameMaker 5.5/HTML Export Filter">
<LINK REL="STYLESHEET" HREF="Bv9ARM.css">
<TITLE> Section 1. Introduction </TITLE></HEAD>
<BODY BGCOLOR="#ffffff">
<OL>
<H1 CLASS="1Level">
<A NAME="pgfId=1007883">
</A>
Section 1. Introduction </H1>
</OL>
<P CLASS="1LevelContinued">
<A NAME="pgfId=1007884">
</A>
The Internet Domain Name System (DNS) consists of the syntax to specify the names of entities in the Internet in a hierarchical manner, the rules used for delegating authority over names, and the system implementation that actually maps names to Internet addresses. DNS data is maintained in a group of distributed hierarchical databases.</P>
<DIV>
<OL>
<H3 CLASS="2Level">
<A NAME="pgfId=997352">
</A>
1.1 Scope of Document</H3>
</OL>
<P CLASS="2LevelContinued">
<A NAME="pgfId=997353">
</A>
The Berkeley Internet Name Domain (BIND) implements an Internet nameserver for a number of operating systems. This document provides basic information about the installation and care of the Internet Software Consortium (ISC) BIND version 9 software package for system administrators.</P>
</DIV>
<DIV>
<OL>
<H3 CLASS="2Level">
<A NAME="pgfId=997354">
</A>
1.2 Organization of This Document</H3>
</OL>
<P CLASS="2LevelContinued">
<A NAME="pgfId=1155516">
</A>
In this document, <EM CLASS="Emphasis">
Section 1</EM>
introduces the basic DNS and BIND concepts. <EM CLASS="Emphasis">
Section 2</EM>
describes resource requirements for running BIND in various environments. Information in <EM CLASS="Emphasis">
Section 3</EM>
is <EM CLASS="Emphasis">
task-oriented</EM>
in its presentation and is organized functionally, to aid in the process of installing the BIND&nbsp;9 software. The task-oriented section is followed by <EM CLASS="Emphasis">
Section 4</EM>
, which contains more advanced concepts that the system administrator may need for implementing certain options. Section 5 describes the BIND&nbsp;9 lightweight resolver. The contents of <EM CLASS="Emphasis">
Section 6</EM>
are organized as in a reference manual to aid in the ongoing maintenance of the software. <EM CLASS="Emphasis">
Section 7 </EM>
addresses security considerations, and <EM CLASS="Emphasis">
Section 8</EM>
contains troubleshooting help. The main body of the document is followed by several <EM CLASS="Emphasis">
Appendices</EM>
which contain useful reference information, such as a <EM CLASS="Emphasis">
Bibliography</EM>
and historic information related to BIND and the Domain Name System.</P>
</DIV>
<DIV>
<OL>
<H3 CLASS="2Level">
<A NAME="pgfId=997356">
</A>
1.3 Conventions Used in This Document</H3>
</OL>
<P CLASS="2LevelContinued">
<A NAME="pgfId=997382">
</A>
In this document, we use the following general typographic conventions:</P>
<TABLE>
<TR>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody3">
<A NAME="pgfId=997359">
</A>
<EM CLASS="Emphasis">
To describe:</EM>
</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody3">
<A NAME="pgfId=997361">
</A>
<EM CLASS="Emphasis">
We use the style:</EM>
</P>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody">
<A NAME="pgfId=997363">
</A>
a pathname, filename, URL, hostname,<BR>
mailing list name, or new term or concept</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody5">
<A NAME="pgfId=997365">
</A>
<EM CLASS="pathname">
Italic</EM>
</P>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody">
<A NAME="pgfId=997371">
</A>
literal user input</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody4">
<A NAME="pgfId=997373">
</A>
<KBD CLASS="Literal-user-input">
Fixed Width Bold</KBD>
</P>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody">
<A NAME="pgfId=997375">
</A>
variable user input</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody5">
<A NAME="pgfId=1034911">
</A>
<EM CLASS="Optional-meta-syntax">
Fixed Width Italic</EM>
</P>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody">
<A NAME="pgfId=997379">
</A>
program output</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody4">
<A NAME="pgfId=997381">
</A>
<CODE CLASS="Program-Process">
Fixed Width</CODE>
</P>
</TD>
</TR>
</TABLE>
<P CLASS="2LevelContinued">
<A NAME="pgfId=997412">
</A>
The following conventions are used in descriptions of the BIND configuration file:</P>
<TABLE>
<TR>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody3">
<A NAME="pgfId=997385">
</A>
<EM CLASS="Emphasis">
To describe:</EM>
</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody3">
<A NAME="pgfId=997387">
</A>
<EM CLASS="Emphasis">
We use the style:</EM>
</P>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody">
<A NAME="pgfId=997389">
</A>
keywords</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody6">
<A NAME="pgfId=997391">
</A>
<EM CLASS="production_target">
Sans Serif Bold</EM>
</P>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody">
<A NAME="pgfId=997393">
</A>
variables</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<H6 CLASS="CellBody7">
<A NAME="pgfId=997395">
</A>
<EM CLASS="variable">
Sans Serif Italic</EM>
</H6>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody">
<A NAME="pgfId=997397">
</A>
&quot;meta-syntactic&quot; information (within brackets when optional)</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody5">
<A NAME="pgfId=997399">
</A>
<EM CLASS="Optional-meta-syntax">
Fixed Width Italic</EM>
</P>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody">
<A NAME="pgfId=997401">
</A>
Command line input</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody4">
<A NAME="pgfId=997403">
</A>
<KBD CLASS="Literal-user-input">
Fixed Width Bold</KBD>
</P>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody">
<A NAME="pgfId=997405">
</A>
Program output</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody4">
<A NAME="pgfId=997407">
</A>
<CODE CLASS="Program-Process">
Fixed Width</CODE>
</P>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody">
<A NAME="pgfId=997409">
</A>
Optional input</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody">
<A NAME="pgfId=997411">
</A>
Text is enclosed in square brackets</P>
</TD>
</TR>
</TABLE>
</DIV>
<DIV>
<OL>
<H3 CLASS="2Level">
<A NAME="pgfId=997413">
</A>
1.4 Discussion of Domain Name System (DNS) Basics and BIND</H3>
</OL>
<P CLASS="2LevelContinued">
<A NAME="pgfId=997414">
</A>
The purpose of this document is to explain the installation and basic upkeep of the BIND software package, and we begin by reviewing the fundamentals of the domain naming system as they relate to BIND. BIND consists of a <EM CLASS="Emphasis">
nameserver</EM>
(or &quot;daemon&quot;) called <CODE CLASS="Program-Process">
named</CODE>
and a <CODE CLASS="Program-Process">
resolver</CODE>
library. The BIND server runs in the background, servicing queries on a well known network port. The standard port for the User Datagram Protocol (UDP) and Transmission Control Protocol (TCP), usually port 53, is specified in<CODE CLASS="Program-Process">
</CODE>
<EM CLASS="pathname">
/etc/services</EM>
. The <EM CLASS="Emphasis">
resolver</EM>
is a set of routines residing in a system library that provides the interface that programs can use to access the domain name services.</P>
<DIV>
<OL>
<H4 CLASS="3Level">
<A NAME="pgfId=997415">
</A>
1.4.1 Nameservers</H4>
</OL>
<P CLASS="3LevelContinued">
<A NAME="pgfId=997416">
</A>
A nameserver (NS) is a program that stores information about named resources and responds to queries from programs called <EM CLASS="Emphasis">
resolvers</EM>
which act as client processes. The basic function of an NS is to provide information about network objects by answering queries.</P>
<P CLASS="3LevelContinued">
<A NAME="pgfId=997417">
</A>
With the nameserver, 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 of the tree, called a domain, is given a label. The name of the domain is the concatenation of all the labels of the domains from the root to the current domain. This is represented in written form as a string of labels listed from right to left and separated by dots. A label need only be unique within its domain. The whole name space is partitioned into areas called <EM CLASS="Emphasis">
zones</EM>
, each starting at a domain and extending down to the leaf domains or to domains where other zones start. Zones usually represent administrative boundaries. For example, a domain name for a host at the company <EM CLASS="Emphasis">
Example, Inc.</EM>
would be:</P>
<P CLASS="3LevelContinued1">
<A NAME="pgfId=997418">
</A>
<EM CLASS="URL">
ourhost.example.com</EM>
</P>
<P CLASS="3LevelContinued">
<A NAME="pgfId=997419">
</A>
where <EM CLASS="URL">
com</EM>
is the top level domain to which <EM CLASS="URL">
ourhost.example.com</EM>
belongs, <EM CLASS="URL">
example</EM>
is a subdomain of <EM CLASS="URL">
com</EM>
, and <EM CLASS="URL">
ourhost</EM>
is the name of the host.</P>
<P CLASS="3LevelContinued">
<A NAME="pgfId=997420">
</A>
The specifications for the domain nameserver are defined in the RFC 1034, RFC 1035 and RFC 974. These documents can be found in<BR>
<EM CLASS="pathname">
/usr/src/etc/named/doc</EM>
in 4.4BSD or are available via File Transfer Protocol (FTP) from<BR>
<EM CLASS="URL">
ftp://www.isi.edu/in-notes/</EM>
or via the Web at <EM CLASS="URL">
http://www.ietf.org/rfc/</EM>
. (See Appendix C for complete information on finding and retrieving RFCs.) It is also recommended that you read the related man pages: <CODE CLASS="Program-Process">
named</CODE>
and <CODE CLASS="Program-Process">
resolver</CODE>
.</P>
</DIV>
<DIV>
<OL>
<H4 CLASS="3Level">
<A NAME="pgfId=997421">
</A>
1.4.2 Types of Zones</H4>
</OL>
<P CLASS="3LevelContinued">
<A NAME="pgfId=997422">
</A>
As we stated previously, a zone is a point of delegation in the DNS tree. 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. It contains all domain names from a certain point downward in the domain tree except those which are delegated to other zones. A delegation point has one or more NS records in the parent zone, which should be matched by equivalent NS records at the root of the delegated zone.</P>
<P CLASS="3LevelContinued">
<A NAME="pgfId=997423">
</A>
To properly operate a nameserver, it is important to understand the difference between a <EM CLASS="Emphasis">
zone</EM>
and a <EM CLASS="Emphasis">
domain</EM>
.</P>
<P CLASS="3LevelContinued">
<A NAME="pgfId=997424">
</A>
For instance, consider the <EM CLASS="URL">
example.com</EM>
domain which includes names such as <EM CLASS="URL">
host.aaa.example.com </EM>
and <EM CLASS="URL">
host.bbb.example.com</EM>
even though the <EM CLASS="URL">
example.com</EM>
zone includes only delegations for the <EM CLASS="URL">
aaa.example.com</EM>
and <EM CLASS="URL">
bbb.example.com</EM>
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 nameservers. Every name in the DNS tree is a <EM CLASS="Emphasis">
domain</EM>
, even if it is <EM CLASS="Emphasis">
terminal</EM>
, that is, has no <EM CLASS="Emphasis">
subdomains</EM>
. Every subdomain is a domain and every domain except the root is also a subdomain. The terminology is not intuitive and we suggest that you read RFCs 1033, 1034 and 1035 to gain a complete understanding of this difficult and subtle topic.</P>
<P CLASS="3LevelContinued">
<A NAME="pgfId=1007878">
</A>
Though BIND is a Domain Nameserver, it deals primarily in terms of zones. The master and slave declarations in the <EM CLASS="pathname">
named.conf</EM>
file specify zones, not domains. When you ask some other site if it is willing to be a slave server for your <EM CLASS="Emphasis">
domain</EM>
, you are actually asking for slave service for some collection of zones.</P>
<P CLASS="3LevelContinued">
<A NAME="pgfId=997426">
</A>
Each zone will have one <EM CLASS="Emphasis">
primary master</EM>
(also called <EM CLASS="Emphasis">
primary</EM>
) server which loads the zone contents from some local file edited by humans or perhaps generated mechanically from some other local file which is edited by humans. There there will be some number of <EM CLASS="Emphasis">
slave</EM>
(also called <EM CLASS="Emphasis">
secondary) </EM>
servers, which load the zone contents using the DNS protocol (that is, the secondary servers will contact the primary and fetch the zone data using TCP). This set of servers--the primary and all of its secondaries--should be listed in the NS records in the parent zone and will constitute a <EM CLASS="Emphasis">
delegation</EM>
. This set of servers must also be listed in the zone file itself, usually under the <CODE CLASS="Program-Process">
@</CODE>
name which indicates the <EM CLASS="Emphasis">
top level</EM>
or <EM CLASS="Emphasis">
root</EM>
of the current zone. You can list servers in the zone's top-level <CODE CLASS="Program-Process">
@</CODE>
NS records that are not in the parent's NS delegation, but you cannot list servers in the parent's delegation that are not present in the zone's <CODE CLASS="Program-Process">
@</CODE>
.</P>
<P CLASS="3LevelContinued">
<A NAME="pgfId=997428">
</A>
Any servers listed in the NS records must be configured as <EM CLASS="Emphasis">
authoritative</EM>
for the zone. A server is authoritative for a zone when it has been configured to answer questions for that zone with authority, which it does by setting the &quot;authoritative answer&quot; (AA) bit in reply packets. A server may be authoritative for more than one zone. The authoritative data for a zone is composed of all of the Resource Records (RRs)--the data associated with names in a tree-structured name space--attached to all of the nodes from the top node of the zone down to leaf nodes or nodes above cuts around the bottom edge of the zone.</P>
<P CLASS="3LevelContinued">
<A NAME="pgfId=997430">
</A>
Adding a zone as a type master or type slave will tell the server to answer questions for the zone authoritatively. If the server is able to load the zone into memory without any errors it will set the AA bit when it replies to queries for the zone. See RFCs 1034 and 1035 for more information about the AA bit.</P>
</DIV>
<DIV>
<OL>
<H4 CLASS="3Level">
<A NAME="pgfId=997431">
</A>
1.4.3 Servers</H4>
</OL>
<P CLASS="3LevelContinued">
<A NAME="pgfId=997432">
</A>
A DNS server can be master for some zones and slave for others or can be only a master, or only a slave, or can serve no zones and just answer queries via its <EM CLASS="Emphasis">
cache</EM>
. Master servers are often also called <EM CLASS="Emphasis">
primaries</EM>
and slave servers are often also called <EM CLASS="Emphasis">
secondaries</EM>
. Both master/primary and slave/secondary servers are authoritative for a zone.</P>
<P CLASS="3LevelContinued">
<A NAME="pgfId=997433">
</A>
All servers keep data in their cache until the data expires, based on a Time To Live (TTL) field which is maintained for all resource records.</P>
<DIV>
<OL>
<H5 CLASS="4Level">
<A NAME="pgfId=997434">
</A>
1.4.3.1 Master Server</H5>
</OL>
<P CLASS="4LevelContinued">
<A NAME="pgfId=997435">
</A>
The <EM CLASS="Emphasis">
primary master server</EM>
is the ultimate source of information about a domain. The primary master is an authoritative server configured to be the source of zone transfer for one or more secondary servers. The primary master server obtains data for the zone from a file on disk.</P>
</DIV>
<DIV>
<OL>
<H5 CLASS="4Level">
<A NAME="pgfId=997436">
</A>
1.4.3.2 Slave Server </H5>
</OL>
<P CLASS="4LevelContinued">
<A NAME="pgfId=997437">
</A>
A <EM CLASS="Emphasis">
slave server</EM>
, also called a <EM CLASS="Emphasis">
secondary server</EM>
, is an authoritative server that uses zone transfers from the primary master server to retrieve the zone data. Optionally, the slave server obtains zone data from a cache on disk. Slave servers provide necessary redundancy. All secondary/slave servers are named in the NS RRs for the zone.</P>
</DIV>
<DIV>
<OL>
<H5 CLASS="4Level">
<A NAME="pgfId=997438">
</A>
1.4.3.3 Caching Only Server</H5>
</OL>
<P CLASS="4LevelContinued">
<A NAME="pgfId=997439">
</A>
Some servers are <EM CLASS="Emphasis">
caching only servers</EM>
. This means that the server caches the information that it receives and uses it until the data expires. A caching only server 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 it needs.</P>
</DIV>
<DIV>
<OL>
<H5 CLASS="4Level">
<A NAME="pgfId=997440">
</A>
1.4.3.4 Forwarding Server</H5>
</OL>
<P CLASS="4LevelContinued">
<A NAME="pgfId=997441">
</A>
Instead of interacting with the nameservers for the root and other domains, a <EM CLASS="Emphasis">
forwarding server</EM>
always forwards queries it cannot satisfy from its authoritative data or cache to a fixed list of other servers. The forwarded queries are also known as <EM CLASS="Emphasis">
recursive queries</EM>
, the same type as a client would send to a server. There may be one or more servers forwarded to, and they are queried in turn until the list is exhausted or an answer is found. A forwarding server 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 internal DNS servers and an Internet firewall. Servers unable to pass packets through the firewall would forward to the server that can do it, and that server would query the Internet DNS servers on the internal server's behalf. 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.</P>
<P CLASS="4LevelContinued">
<A NAME="pgfId=997442">
</A>
There is no prohibition against declaring a server to be a forwarder even though it has master and/or slave 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 forwarders list.</P>
</DIV>
<DIV>
<OL>
<H5 CLASS="4Level">
<A NAME="pgfId=997443">
</A>
1.4.3.5 Stealth Server</H5>
</OL>
<P CLASS="4LevelContinued">
<A NAME="pgfId=1014846">
</A>
A <EM CLASS="Emphasis">
stealth server</EM>
is a server that answers authoritatively for a zone, but is not listed in that zone's NS records. Stealth servers can be used as a way to centralize distribution of a zone, without having to edit the zone on a remote nameserver. Where the master file for a zone resides on a stealth server in this way, it is often referred to as a &quot;hidden primary&quot; configuration. Stealth servers can also be a way to keep a local copy of a zone for rapid access to the zone's records, even if all &quot;official&quot; nameservers for the zone are inaccessible.</P>
</DIV>
</DIV>
</DIV>
<HR ALIGN="center">
<p>Return to <A href="Bv9ARM.html">BIND 9 Administrator Reference Manual</A> table of contents.</p>
</BODY>
</HTML>

View File

@@ -1,114 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML EXPERIMENTAL 970324//EN">
<!--
- Copyright (C) 2000 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.
-->
<!-- $Id: Bv9ARM.2.html,v 1.5.2.4 2000/08/22 19:29:06 gson Exp $ -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML EXPERIMENTAL 970324//EN">
<HTML>
<HEAD>
<META NAME="GENERATOR" CONTENT="Adobe FrameMaker 5.5/HTML Export Filter">
<LINK REL="STYLESHEET" HREF="Bv9ARM.css">
<TITLE> Section 2. BIND Resource Requirements</TITLE></HEAD>
<BODY BGCOLOR="#ffffff">
<OL>
<H1 CLASS="1Level">
<A NAME="pgfId=997350">
</A>
Section 2. BIND Resource Requirements</H1>
</OL>
<DIV>
<OL>
<H3 CLASS="2Level">
<A NAME="pgfId=997351">
</A>
2.1 Hardware requirements</H3>
</OL>
<P CLASS="2LevelContinued">
<A NAME="pgfId=997352">
</A>
DNS hardware requirements have traditionally been quite modest. For many installations, servers that have been pensioned off from active duty have performed admirably as DNS servers.</P>
<P CLASS="2LevelContinued">
<A NAME="pgfId=997353">
</A>
The DNSSEC and IPv6 features of BIND&nbsp;9 may prove to be quite CPU intensive however, so organizations that make heavy use of these features may wish to consider larger systems for these applications. BIND&nbsp;9 is now fully multithreaded, allowing full utilization of multiprocessor systems for installations that need it.</P>
</DIV>
<DIV>
<OL>
<H3 CLASS="2Level">
<A NAME="pgfId=997354">
</A>
2.2 CPU Requirements</H3>
</OL>
<P CLASS="2LevelContinued">
<A NAME="pgfId=997355">
</A>
CPU requirements for BIND&nbsp;9 range from i486-class machines for serving of static zones without caching, to enterprise-class machines if you intend to process many dynamic updates and DNSSEC signed zones, serving many thousands of queries per second.</P>
</DIV>
<DIV>
<OL>
<H3 CLASS="2Level">
<A NAME="pgfId=997356">
</A>
2.3 Memory Requirements </H3>
</OL>
<P CLASS="2LevelContinued">
<A NAME="pgfId=997357">
</A>
The memory of the server has to be large enough to fit the cache and zones loaded off disk. Future releases of BIND&nbsp;9 will provide methods to limit the amount of memory used by the cache, at the expense of reducing cache hit rates and causing more DNS traffic. It is still good practice to have enough memory to load all zone and cache data into memory--unfortunately, the best way to determine this for a given installation is to watch the nameserver in operation. After a few weeks the server process should reach a relatively stable size where entries are expiring from the cache as fast as they are being inserted. Ideally, the resource limits should be set higher than this stable size.</P>
</DIV>
<DIV>
<OL>
<H3 CLASS="2Level">
<A NAME="pgfId=997358">
</A>
2.4 Nameserver Intensive Environment Issues</H3>
</OL>
<P CLASS="2LevelContinued">
<A NAME="pgfId=997359">
</A>
For nameserver intensive environments, there are two alternative configurations that may be used. The first is where clients and any second-level internal nameservers query a main nameserver, which has enough memory to build a large cache. This approach minimizes the bandwidth used by external name lookups. The second alternative is to set up second-level internal nameservers to make queries independently. In this configuration, none of the individual machines needs to have as much memory or CPU power as in the first alternative, but this has the disadvantage of making many more external queries, as none of the nameservers share their cached data.</P>
</DIV>
<DIV>
<OL>
<H3 CLASS="2Level">
<A NAME="pgfId=997360">
</A>
2.5 Supported Operating Systems</H3>
</OL>
<P CLASS="2LevelContinued">
<A NAME="pgfId=997361">
</A>
ISC BIND&nbsp;9 compiles and runs on the following operating systems:</P>
<P CLASS="2LevelContinued">
<A NAME="pgfId=997362">
</A>
IBM AIX 4.3<BR>
Compaq Digital/Tru64 UNIX 4.0D<BR>
HP HP-UX 11<BR>
IRIX64 6.5<BR>
Red Hat Linux 6.0, 6.1<BR>
Sun Solaris 2.6, 7, 8 (beta)<BR>
FreeBSD 3.4-STABLE<BR>
NetBSD-current with &quot;unproven&quot; pthreads</P>
</DIV>
<HR ALIGN="center">
<p>Return to <A href="Bv9ARM.html">BIND 9 Administrator Reference Manual</A> table of contents.</p>
</BODY>
</HTML>

View File

@@ -1,660 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML EXPERIMENTAL 970324//EN">
<!--
- Copyright (C) 2000 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.
-->
<!-- $Id: Bv9ARM.3.html,v 1.5.2.5 2000/08/22 19:29:08 gson Exp $ -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML EXPERIMENTAL 970324//EN">
<HTML>
<HEAD>
<META NAME="GENERATOR" CONTENT="Adobe FrameMaker 5.5/HTML Export Filter">
<LINK REL="STYLESHEET" HREF="Bv9ARM.css">
<TITLE> Section 3. Nameserver Configuration</TITLE></HEAD>
<BODY BGCOLOR="#ffffff">
<H1 CLASS="1Level">
<A NAME="pgfId=997350">
</A>
Section 3. Nameserver Configuration</H1>
<P CLASS="1LevelContinued">
<A NAME="pgfId=997351">
</A>
In this section we provide some suggested configurations along with guidelines for their use. We also address the topic of reasonable option setting.</P>
<DIV>
<H3 CLASS="2Level">
<A NAME="pgfId=997353">
</A>
3.1 <A NAME="30164">
</A>
Sample Configurations</H3>
<DIV>
<H4 CLASS="3Level">
<A NAME="pgfId=1079232">
</A>
3.1.1 A Caching-only Nameserver</H4>
<P CLASS="3LevelContinued">
<A NAME="pgfId=1079238">
</A>
The following sample configuration is appropriate for a caching-only name server for use by clients internal to a corporation. All queries from outside clients are refused.</P>
<PRE>
<CODE><STRONG>
// Two corporate subnets we wish to allow queries from.
acl &quot;corpnets&quot; { 192.168.4.0/24; 192.168.7.0/24; };
options {
directory &quot;/etc/namedb&quot;; // Working directory
pid-file &quot;named.pid&quot;; // Put pid file in working dir
allow-query { &quot;corpnets &quot;; };
};
// Root server hints
zone &quot;.&quot; { type hint; file &quot;root.hint&quot;; };
// Provide a reverse mapping for the loopback address 127.0.0.1
zone &quot;0.0.127.in-addr.arpa&quot; {
type master;
file &quot;localhost.rev&quot;;
notify no;
};</STRONG></CODE>
</PRE>
</DIV>
<DIV>
<H4 CLASS="3Level">
<A NAME="pgfId=1079323">
</A>
3.1.2 An Authoritative-only Nameserver</H4>
<P CLASS="3LevelContinued">
<A NAME="pgfId=1079327">
</A>
This sample configuration is for an authoritative-only server that is the master server for &quot;<EM CLASS="pathname">example.com</EM>&quot; and a slave for the subdomain &quot;<EM CLASS="pathname">eng.example.com</EM>&quot;.</P>
<PRE>
<CODE><STRONG>options {
directory &quot;/etc/namedb&quot;; // Working directory
pid-file &quot;named.pid&quot;; // Put pid file in working dir
allow-query { any; }; // This is the default
recursion no; // Do not provide recursive service
};
// Root server hints
zone &quot;.&quot; { type hint; file &quot;root.hint&quot;; };&nbsp;
// Provide a reverse mapping for the loopback address 127.0.0.1
zone &quot;0.0.127.in-addr.arpa&quot; {
type master;
file &quot;localhost.rev&quot;;
notify no;
};
// We are the master server for example.com
zone &quot;example.com&quot; {
type master;
file &quot;example.com.db&quot;;
// IP addresses of slave servers allowed to transfer example.com
allow-transfer {
192.168.4.14;
192.168.5.53;
};
};
// We are a slave server for eng.example.com
zone &quot;eng.example.com&quot; {
type slave;
file &quot;eng.example.com.bk&quot;;
// IP address of eng.example.com master server
masters { 192.168.4.12; };
};
</STRONG></CODE></PRE>
</DIV>
</DIV>
<DIV>
<H3 CLASS="2Level">
<A NAME="pgfId=997410">
</A>
3.2 Load Balancing</H3>
<P CLASS="2LevelContinued">
<A NAME="pgfId=997411">
</A>
Primitive load balancing can be achieved in DNS using multiple A records for one name.</P>
<P CLASS="2LevelContinued">
<A NAME="pgfId=997412">
</A>
For example, if you have three WWW servers with network addresses of 10.0.0.1, 10.0.0.2 and 10.0.0.3, a set of records such as the following means that clients will connect to each machine one third of the time:</P>
<PRE CLASS="2Level-fixed1"><A NAME="pgfId=997454"></A>
&nbsp;</PRE>
<TABLE>
<TR>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="CellBody">
<A NAME="pgfId=997415">
</A>
Name</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="CellBody">
<A NAME="pgfId=997417">
</A>
TTL</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="CellBody">
<A NAME="pgfId=997419">
</A>
CLASS</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="CellBody">
<A NAME="pgfId=997421">
</A>
TYPE</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="CellBody">
<A NAME="pgfId=997423">
</A>
Resource Record (RR) Data</P>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="CellBody">
<A NAME="pgfId=997425">
</A>
<EM CLASS="grammar_literal">
www</EM>
</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="CellBody">
<A NAME="pgfId=997427">
</A>
<EM CLASS="grammar_literal">
600</EM>
</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="CellBody">
<A NAME="pgfId=997429">
</A>
<EM CLASS="grammar_literal">
IN</EM>
</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="CellBody">
<A NAME="pgfId=997431">
</A>
<EM CLASS="grammar_literal">
A</EM>
</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="CellBody">
<A NAME="pgfId=997433">
</A>
<EM CLASS="grammar_literal">
10.0.0.1</EM>
</P>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="CellBody">
<A NAME="pgfId=997435">
</A>
<EM CLASS="grammar_literal">
</EM>
&nbsp;</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="CellBody">
<A NAME="pgfId=997437">
</A>
<EM CLASS="grammar_literal">
600</EM>
</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="CellBody">
<A NAME="pgfId=997439">
</A>
<EM CLASS="grammar_literal">
IN</EM>
</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="CellBody">
<A NAME="pgfId=997441">
</A>
<EM CLASS="grammar_literal">
A</EM>
</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="CellBody">
<A NAME="pgfId=997443">
</A>
<EM CLASS="grammar_literal">
10.0.0.2</EM>
</P>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="CellBody">
<A NAME="pgfId=997445">
</A>
<EM CLASS="grammar_literal">
</EM>
&nbsp;</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="CellBody">
<A NAME="pgfId=997447">
</A>
<EM CLASS="grammar_literal">
600</EM>
</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="CellBody">
<A NAME="pgfId=997449">
</A>
<EM CLASS="grammar_literal">
IN</EM>
</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="CellBody">
<A NAME="pgfId=997451">
</A>
<EM CLASS="grammar_literal">
A</EM>
</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="CellBody">
<A NAME="pgfId=997453">
</A>
<EM CLASS="grammar_literal">
10.0.0.3</EM>
</P>
</TD>
</TR>
</TABLE>
<P CLASS="2LevelContinued">
<A NAME="pgfId=997455">
</A>
When a resolver queries for these records, BIND will rotate them and respond to the query with the records in a different order. In the example above, clients will randomly receive records in the order 1, 2, 3; 2, 3, 1; and 3, 1, 2. Most clients will use the first record returned and discard the rest.</P>
<P CLASS="2LevelContinued">
<A NAME="pgfId=997456">
</A>
For more detail on ordering responses, check the <CODE CLASS="Program-Process">
rrset-order</CODE>
substatement in the <CODE CLASS="Program-Process">
options</CODE>
statement under <A HREF="Bv9ARM.6.html#22766" CLASS="XRef">RRset Ordering</A>. This substatement is not supported in BIND&nbsp;9, and only the ordering scheme described above is available.</P>
</DIV>
<DIV>
<H3 CLASS="2Level">
<A NAME="pgfId=997460">
</A>
3.3 <A NAME="35205">
</A>
Notify</H3>
<P CLASS="2LevelContinued">
<A NAME="pgfId=997461">
</A>
DNS Notify is a mechanism that allows master nameservers to notify their slave servers of changes to a zone's data. In response to a <CODE CLASS="Program-Process">NOTIFY</CODE> from a master server, the slave will check to see that its version of the zone is the current version and, if not, initiate a transfer.</P>
<P CLASS="2LevelContinued">
<A NAME="pgfId=1078896">
</A>
DNS Notify is fully documented in RFC 1996. See also the description of the zone option <CODE CLASS="Program-Process">
also-notify</CODE>
under <A HREF="Bv9ARM.6.html#32057" CLASS="XRef">Zone Transfers</A>. More information about <CODE CLASS="Program-Process">notify</CODE> can be found under <A HREF="Bv9ARM.6.html#12205" CLASS="XRef">Boolean Options</A>.</P>
</DIV>
<DIV>
<H3 CLASS="2Level">
<A NAME="pgfId=1078903">
</A>
3.4 Nameserver Operations</H3>
<DIV>
<H4 CLASS="3Level">
<A NAME="pgfId=997464">
</A>
3.4.1 Tools for Use With the Nameserver Daemon</H4>
<P CLASS="3LevelContinued">
<A NAME="pgfId=997465">
</A>
There are several indispensable diagnostic, administrative and monitoring tools available to the system administrator for controlling and debugging the nameserver daemon. We describe several in this section </P>
<DIV>
<H5 CLASS="4Level">
<A NAME="pgfId=997466">
</A>
3.4.1.1 Diagnostic Tools</H5>
</DIV>
<DIV>
<H5 CLASS="Subhead4">
<A NAME="pgfId=997467">
</A>
dig</H5>
<P CLASS="4LevelContinued">
<A NAME="pgfId=997468">
</A>
The domain information groper (<CODE CLASS="Program-Process">
dig</CODE>
) is a command line tool that can be used to gather information from the Domain Name System servers. Dig has two modes: simple interactive mode for a single query, and batch mode which executes a query for each in a list of several query lines. All query options are accessible from the command line.</P>
</DIV>
<DIV>
<H5 CLASS="Subhead4">
<A NAME="pgfId=997469">
</A>
Usage</H5>
<PRE>
<CODE><STRONG>
dig [@server] domain [&lt;query-type&gt;] [&lt;query-class&gt;]
[+&lt;query-option&gt;] [-&lt;dig-option&gt;] [%comment]</STRONG></CODE>
</PRE>
<P CLASS="4LevelContinued">
<A NAME="pgfId=997471">
</A>
The usual simple use of dig will take the form</P>
<PRE>
<CODE><STRONG>
dig @server domain query-type query-class</STRONG></CODE>
</PRE>
<P CLASS="4LevelContinued">
<A NAME="pgfId=997473">
</A>
For more information and a list of available commands and options, see the <CODE CLASS="Program-Process">
dig</CODE> man page.</P>
</DIV>
<DIV>
<H5 CLASS="Subhead4">
<A NAME="pgfId=997474">
</A>
host</H5>
<P CLASS="4LevelContinued">
<A NAME="pgfId=997475">
</A>
The<EM CLASS="pathname">
</EM>
<CODE CLASS="Program-Process">
host</CODE>
<EM CLASS="pathname">
</EM>
utility provides a simple DNS lookup using a command-line interface for looking up Internet hostnames. By default, the utility converts between host names and Internet addresses, but its functionality can be extended with the use of options.</P>
</DIV>
<DIV>
<H5 CLASS="Subhead4">
<A NAME="pgfId=997476">
</A>
Usage</H5>
<PRE>
<CODE><STRONG>
host [-aCdlrTwv] [-c class] [-N ndots] [-t type]
[-W timeout] [-R retries] hostname [server]
</STRONG></CODE></PRE>
For more information and a list of available commands and options, see the <CODE CLASS="Program-Process">
host</CODE> man page.<p></P>
<DIV>
<H5 CLASS="Subhead4">
<A NAME="pgfId=997478">
</A>
nslookup</H5>
<P CLASS="4LevelContinued">
<A NAME="pgfId=997479">
</A>
<CODE CLASS="Program-Process">
nslookup</CODE>
is a program used to query Internet domain nameservers. <CODE CLASS="Program-Process">
nslookup</CODE>
has two modes: interactive and non-interactive. Interactive mode allows the user to query nameservers for information about various hosts and domains or to print a list of hosts in a domain. Non-interactive mode is used to print just the name and requested information for a host or domain.</P>
</DIV>
<DIV>
<H5 CLASS="Subhead4">
<A NAME="pgfId=997480">
</A>
Usage</H5>
<PRE>
<CODE><STRONG>
nslookup [-option ...] [host-to-find | -[server]]</STRONG></CODE>
</PRE>
<P CLASS="4LevelContinued">
<A NAME="pgfId=997482">
</A>
Interactive mode is entered when no arguments are given (the default nameserver will be used) or when the first argument is a hyphen (`-') and the second argument is the host name or Internet address of a nameserver.</P>
<P CLASS="4LevelContinued">
<A NAME="pgfId=997483">
</A>
Non-interactive mode is used when the name or Internet address of the host to be looked up is given as the first argument. The optional second argument specifies the host name or address of a nameserver.</P>
<P CLASS="4LevelContinued">
<A NAME="pgfId=997484">
</A>
The options listed under the &quot;set&quot; command (see the <CODE CLASS="Program-Process">
nslookup</CODE>
man page for details) can be specified in the <EM CLASS="pathname">
.nslookuprc</EM>
file in the user's home directory if they are listed one per line. Options can also be specified on the command line if they precede the arguments and are prefixed with a hyphen. For example, to change the default query type to host information, and the initial time-out to 10 seconds, type:</P>
<PRE>
<CODE><STRONG>
nslookup -query=hinfo -timeout=10</STRONG></CODE>
</PRE>
<P CLASS="4LevelContinued">
<A NAME="pgfId=1079183">
</A>
For more information and a list of available commands and options, see the <CODE CLASS="Program-Process">
nslookup</CODE>
man page.</P>
<P CLASS="4LevelContinued">
<A NAME="pgfId=1079184">
</A>
Due to its arcane user interface and frequently inconsistent behavior, we do not recommend the use of <CODE CLASS="Program-Process">nslookup</CODE>. Use <CODE CLASS="Program-Process">dig</CODE> instead.</P>
</DIV>
<DIV>
<H5 CLASS="4Level">
<A NAME="pgfId=1079185">
</A>
3.4.1.2 Administrative Tools</H5>
<P CLASS="4LevelContinued">
<A NAME="pgfId=997488">
</A>
Administrative tools play an integral part in the management of a server.</P>
</DIV>
<DIV>
<H5 CLASS="Subhead4"> <A NAME="pgfId=997489"> </A> rndc</H5>
<P CLASS="4LevelContinued"> <A NAME="pgfId=997490"> </A> The remote name
daemon control (<CODE CLASS="Program-Process">rndc</CODE>) program allows
the system administrator to control the operation of a nameserver. If
you run (<code class="Program-Process">rndc</code>) without any options
it will display a usage message as follows: </P>
<H5 CLASS="Subhead4">
<A NAME="pgfId=997469">
</A>
Usage</H5>
<PRE>
<CODE><STRONG>rndc [-c config] [-s server] [-p port] [-y key] command [command ...]
</STRONG></CODE></PRE>
<CODE><STRONG>command</STRONG></CODE> is one of the following for named:
<TABLE>
<TR>
<TD>*<code>status</code></TD>
<TD>Display ps(1) status of named.</TD>
</TR>
<TR>
<TD>*<CODE>dumpdb</CODE></TD> <TD>Dump database and cache to /var/tmp/named_dump.db.</TD>
</TR>
<TR>
<TD><CODE>reload</CODE></TD> <TD>Reload configuration file and zones.</TD>
</TR>
<TR>
<TD>*<CODE>stats</CODE></TD> <TD>Dump statistics to /var/tmp/named.stats.</TD>
</TR>
<TR>
<TD>*<CODE>trace</CODE></TD> <TD>Increment debugging level by one.</TD>
</TR>
<TR>
<TD>*<CODE>notrace</CODE></TD> <TD>Set debugging level to 0.</TD>
</TR>
<TR>
<TD>*<CODE>querylog</CODE></TD> <TD>Toggle query logging.</TD>
</TR>
<TR>
<TD>*<CODE>stop</CODE></TD> <TD>Stop the server.</TD>
</TR>
<TR>
<TD>*<CODE>restart</CODE></TD> <TD>Restart the server.</TD>
</TR>
<TR>
<TD>* == not yet implemented</TD>
</TR>
</TABLE>
<p>As noted above, "reload" is the only command available for BIND 9.0.0.
The other commands, and more, are planned to be implemented for future
releases.</p>
<p> A configuration file is required, since all communication with the server is authenticated with digital signatures that rely on a shared secret, and there is no way to provide that secret other than with a configuration file. The default location for the rndc configuration file is <EM>/etc/rndc.conf</EM>, but an alternate location can be specified with the "<CODE>-c</CODE>" option.</p>
<p>The format of the configuration file is similar to that of named.conf, but limited to only three statements, the <CODE>options{}</CODE>, <CODE>key{}</CODE> and <CODE>server{}</CODE> statements. These statements are what associate the secret keys to the servers with which they are meant to be shared. The order of statements is not significant.</p>
<p>The <CODE>options{}</CODE> statement has two clauses: <CODE>default-server</CODE> and default-key. <CODE>default-server</CODE> takes a host name or address argument and represents the server that will be contacted if no "<CODE>-s</CODE>" option is provided on the command line. default-key takes the name of the key as its argument, as defined by a <CODE>key{}</CODE> statement. In the future a default-port clause will be added to specify the port to which <CODE>rndc</CODE> should connect.</p>
<p>The <CODE>key{}</CODE> statement names a key with its string argument. The string is required by the server to be a valid domain name, though it need not actually be hierarchical; thus, a string like "rndc_key" is a valid name. The <CODE>key{}</CODE> statement has two clauses: <CODE>algorithm</CODE> and <CODE>secret</CODE>. While the configuration parser will accept any string as the argument to algorithm, currently only the string "hmac-md5" has any meaning. The secret is a base-64 encoded string, typically generated with either <CODE>dnssec-keygen</CODE> or <CODE>mmencode</CODE>.</p>
<p>The <CODE>server{}</CODE> statement uses the key clause to associate a <CODE>key{}</CODE>-defined key with a server. The argument to the <CODE>server{}</CODE> statement is a host name or address (addresses must be double quoted). The argument to the key clause is the name of key as defined by the <CODE>key{}</CODE> statement. A port clause will be added to a future release to specify the port to which rndc should connect on the given server.</p>
<p>A sample minimal configuration file is as follows:</p>
<PRE><CODE><STRONG>key rndc_key {
algorithm "hmac-md5";
secret "c3Ryb25nIGVub3VnaCBmb3IgYSBtYW4gYnV0IG1hZGUgZm9yIGEgd29tYW4K";
};</STRONG></CODE>
<CODE><STRONG>options {
default-server localhost;
default-key rndc_key;
};</STRONG></CODE>
</PRE>
<p>This file, if installed as<EM> /etc/rndc.conf</EM>, would allow the command:</p>
<p><strong><code>$ rndc reload</code></strong></p>
<p>to connect to 127.0.0.1 port 953 and cause the nameserver to reload, if a nameserver on the local machine were running with following controls statements:</p>
<PRE><CODE><STRONG>controls {
inet 127.0.0.1 allow { localhost; } keys { rndc_key; };
};</STRONG></CODE>
</PRE>
<p>and it had an identical key statement for <CODE>rndc_key</CODE>.</p>
<P CLASS="4LevelContinued">&nbsp;</P>
</DIV>
<H4 CLASS="3Level">
<A NAME="pgfId=998650">
</A>
3.4.2 Signals</H4>
<P CLASS="3LevelContinued">
<A NAME="pgfId=998651">
</A>
Certain UNIX signals cause the name server to take specific actions, as described in the following table. These signals can be sent using the <CODE CLASS="Program-Process">
kill</CODE>
command.</P>
<P CLASS="3LevelContinued">
<A NAME="pgfId=1073295">
</A>
&nbsp;</P>
<TABLE>
<TR>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="CellBody4">
<A NAME="pgfId=1073306">
</A>
<CODE CLASS="Program-Process">
SIGHUP</CODE>
</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="CellBody">
<A NAME="pgfId=1073308">
</A>
Causes the server to read <CODE CLASS="Program-Process">
named.conf</CODE>
and reload the database. </P>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="CellBody4">
<A NAME="pgfId=1073310">
</A>
<CODE CLASS="Program-Process">
SIGTERM</CODE>
</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="CellBody">
<A NAME="pgfId=1073312">
</A>
Causes the server to clean up and exit.</P>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="CellBody4">
<A NAME="pgfId=1073322">
</A>
<CODE CLASS="Program-Process">
SIGINT</CODE>
</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="CellBody">
<A NAME="pgfId=1073324">
</A>
Causes the server to clean up and exit.</P>
</TD>
</TR>
</TABLE>
</DIV>
</DIV>
<HR ALIGN="center">
<p>Return to <A href="Bv9ARM.html">BIND 9 Administrator Reference Manual</A> table of contents.</p>
</div></BODY></HTML>

File diff suppressed because it is too large Load Diff

View File

@@ -1,96 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML EXPERIMENTAL 970324//EN">
<!--
- Copyright (C) 2000 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.
-->
<!-- $Id: Bv9ARM.5.html,v 1.5.2.4 2000/08/22 19:29:10 gson Exp $ -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML EXPERIMENTAL 970324//EN">
<HTML>
<HEAD>
<META NAME="GENERATOR" CONTENT="Adobe FrameMaker 5.5/HTML Export Filter">
<LINK REL="STYLESHEET" HREF="Bv9ARM.css">
<TITLE> Section 5. The BIND 9 Lightweight Resolver</TITLE></HEAD>
<BODY BGCOLOR="#ffffff">
<OL>
<H1 CLASS="1Level">
<A NAME="pgfId=1001240">
</A>
Section 5. <A NAME="22731">
</A>
The BIND&nbsp;9 Lightweight Resolver</H1>
</OL>
<DIV>
<OL>
<H3 CLASS="2Level">
<A NAME="pgfId=1001241">
</A>
5.1 The Lightweight Resolver Library</H3>
</OL>
<P CLASS="2LevelContinued">
<A NAME="pgfId=1001242">
</A>
Traditionally applications have been linked with a stub resolver library that sends recursive DNS queries to a local caching name server.</P>
<P CLASS="2LevelContinued">
<A NAME="pgfId=1001243">
</A>
IPv6 introduces new complexity into the resolution process, such as following A6 chains and DNAME records, and simultaneous lookup of IPv4 and IPv6 addresses. These are hard or impossible to implement in a traditional stub resolver.</P>
<P CLASS="2LevelContinued">
<A NAME="pgfId=1001244">
</A>
Instead, BIND&nbsp;9 provides resolution services to local clients using a combination of a lightweight resolver library and a resolver daemon process running on the local host. These communicate using a simple UDP-based protocol, the &quot;lightweight resolver protocol&quot; that is distinct from and simpler than the full DNS protocol.</P>
</DIV>
<DIV>
<OL>
<H3 CLASS="2Level">
<A NAME="pgfId=1001245">
</A>
5.2 Running a Resolver Daemon</H3>
</OL>
<P CLASS="2LevelContinued">
<A NAME="pgfId=1001246">
</A>
To use the lightweight resolver interface, the system must run the resolver daemon <CODE CLASS="Program-Process">
lwresd</CODE>
.</P>
<P CLASS="2LevelContinued">
<A NAME="pgfId=1001247">
</A>
Applications using the lightweight resolver library will make UDP requests to the IPv4 loopback address (127.0.0.1) on port 921. The daemon will try to find the answer to the questions &quot;what are the addresses for host <EM CLASS="URL">
foo.example.com</EM>
?&quot; and &quot;what are the names for IPv4 address 204.152.184.79?&quot;</P>
<P CLASS="2LevelContinued">
<A NAME="pgfId=1001248">
</A>
The daemon currently only looks in the DNS, but in the future it may use other sources such as <EM CLASS="grammar_literal">
/etc/hosts</EM>
, NIS, etc.</P>
<P CLASS="2LevelContinued">
<A NAME="pgfId=1001249">
</A>
The <CODE CLASS="Program-Process">
lwresd</CODE>
daemon is essentially a stripped-down, caching-only name server that answers requests using the lightweight resolver protocol rather than the DNS protocol. Because it needs to run on each host, it is designed to require no or minimal configuration. It uses the name servers listed on <CODE CLASS="Program-Process">
nameserver</CODE>
lines in <EM CLASS="pathname">
/etc/resolv.conf</EM>
as forwarders, but is also capable of doing the resolution autonomously if none are specified.</P>
</DIV>
<HR ALIGN="center">
<p>Return to <A href="Bv9ARM.html">BIND 9 Administrator Reference Manual</A> table of contents.</p>
</BODY>
</HTML>

File diff suppressed because it is too large Load Diff

View File

@@ -1,228 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML EXPERIMENTAL 970324//EN">
<!--
- Copyright (C) 2000 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.
-->
<!-- $Id: Bv9ARM.7.html,v 1.5.2.5 2000/09/18 17:02:12 gson Exp $ -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML EXPERIMENTAL 970324//EN">
<HTML>
<HEAD>
<META NAME="GENERATOR" CONTENT="Adobe FrameMaker 5.5/HTML Export Filter">
<LINK REL="STYLESHEET" HREF="Bv9ARM.css">
<TITLE> Section 7. BIND&nbsp;9 Security Considerations</TITLE></HEAD>
<BODY BGCOLOR="#ffffff">
<OL>
<H1 CLASS="1Level">
<A NAME="pgfId=997350">
</A>
Section 7. BIND&nbsp;9 Security Considerations</H1>
</OL>
<DIV>
<OL>
<H3 CLASS="2Level">
<A NAME="pgfId=997352">
</A>
7.1 <A NAME="32222">
</A>
Access Control Lists</H3>
</OL>
<P CLASS="2LevelContinued">
<A NAME="pgfId=997353">
</A>
Access Control Lists (ACLs), are address match lists that you can set up and nickname for future use in <CODE CLASS="Program-Process">
allow-query</CODE>
, <CODE CLASS="Program-Process">
allow-recursion</CODE>
, <CODE CLASS="Program-Process">
blackhole</CODE>
, <CODE CLASS="Program-Process">
allow-transfer</CODE>
, etc.</P>
<P CLASS="2LevelContinued">
<A NAME="pgfId=997354">
</A>
Using ACLs allows you to have finer control over who can access your nameserver, without cluttering up your config files with huge lists of IP addresses.</P>
<P CLASS="2LevelContinued">
<A NAME="pgfId=997355">
</A>
It is a <EM CLASS="Emphasis">
good idea</EM>
to use ACLs, and to control access to your server. Limiting access to your server by outside parties can help prevent spoofing and DoS attacks against your server.</P>
<P CLASS="2LevelContinued">
<A NAME="pgfId=997356">
</A>
Here is an example of how to properly apply ACLs:</P>
<PRE>
<CODE><STRONG>// Set up an ACL named &quot;bogusnets&quot; that will block RFC1918 space,
// which is commonly used in spoofing attacks.
acl bogusnets { 0.0.0.0/8; 1.0.0.0/8; 2.0.0.0/8; 192.0.2.0/24; 224.0.0.0/3;
10.0.0.0/8; 172.16.0.0/12; 192.168.0.0/16; };
// Set up an ACL called our-nets. Replace this with the real IP numbers.
acl our-nets { x.x.x.x/24; x.x.x.x/21; };
options {
...
...
allow-query { our-nets; };
allow-recursion { our-nets; };
...
blackhole { bogusnets; };
...
};
zone &quot;example.com&quot; {
type master;
file &quot;m/example.com&quot;;
allow-query { any; };
};
</STRONG></CODE>
</PRE>
<P CLASS="2LevelContinued">
<A NAME="pgfId=997363">
</A>
This allows recursive queries of the server from the outside unless recursion has been previously disabled.</P>
<P CLASS="2LevelContinued">
<A NAME="pgfId=1028031">
</A>
For more information on how to use ACLs to protect your server, see the <EM CLASS="Emphasis">
AUSCERT</EM>
advisory at<BR>
<a href="ftp://ftp.auscert.org.au/pub/auscert/advisory/AL-1999.004.dns_dos">
ftp://ftp.auscert.org.au/pub/auscert/advisory/AL-1999.004.dns_dos</a>
</DIV>
<DIV>
<OL>
<H3 CLASS="2Level">
<A NAME="pgfId=997365">
</A>
7.2 <CODE CLASS="Program-Process">
chroot</CODE>
and <CODE CLASS="Program-Process">
setuid</CODE>
(for UNIX servers)</H3>
</OL>
<P CLASS="2LevelContinued">
<A NAME="pgfId=997366">
</A>
On UNIX servers, it is possible to run BIND in a <EM CLASS="Emphasis">
chrooted</EM>
environment (<CODE CLASS="Program-Process">
chroot()</CODE>
) by specifying the &quot;<CODE CLASS="Program-Process">
-t</CODE>
&quot; option. This can help improve system security by placing BIND in a &quot;sandbox,&quot; which will limit the damage done if a server is compromised.</P>
<P CLASS="2LevelContinued">
<A NAME="pgfId=997367">
</A>
Another useful feature in the UNIX version of BIND is the ability to run the daemon as a nonprivileged user ( <CODE CLASS="Program-Process">
-u</CODE>
<EM CLASS="variable">
user</EM>
). We suggest running as a nonprivileged user when using the <CODE CLASS="Program-Process">
chroot</CODE>
feature.</P>
<P CLASS="2LevelContinued">
<A NAME="pgfId=997368">
</A>
Here is an example command line to load BIND in a <CODE CLASS="Program-Process">
chroot()</CODE>
sandbox, <BR>
<CODE CLASS="Program-Process">
<STRONG>/var/named</STRONG></CODE>
, and to run <CODE CLASS="Program-Process">
<STRONG>named setuid</STRONG></CODE>
to user 202:</P>
<PRE>
<CODE><STRONG>/usr/local/bin/named -u 202 -t /var/named
</STRONG></CODE></PRE>
<DIV>
<OL>
<H4 CLASS="3Level">
<A NAME="pgfId=997370">
</A>
7.2.1 The <CODE CLASS="Program-Process">
chroot</CODE>
Environment</H4>
</OL>
<P CLASS="3LevelContinued">
<A NAME="pgfId=997371">
</A>
In order for a <CODE CLASS="Program-Process">
chroot()</CODE>
environment to work properly in a particular directory (for example, <EM CLASS="pathname">
/var/named</EM>
), you will need to set up an environment that includes everything BIND needs to run. From BIND's point of view, <EM CLASS="pathname">
/var/named</EM>
is the root of the filesystem. You will need <EM CLASS="pathname">
/dev/null</EM>
, and any library directories and files that BIND needs to run on your system. Please consult your operating system's instructions if you need help figuring out which library files you need to copy over to the <CODE CLASS="Program-Process">
chroot()</CODE>
sandbox.</P>
<P CLASS="3LevelContinued">
<A NAME="pgfId=997372">
</A>
If you are running an operating system that supports static binaries, you can also compile BIND statically and avoid the need to copy system libraries over to your <CODE CLASS="Program-Process">
chroot()</CODE>
sandbox.</P>
</DIV>
<DIV>
<OL>
<H4 CLASS="3Level">
<A NAME="pgfId=997373">
</A>
7.2.2 Using the <CODE CLASS="Program-Process">
setuid</CODE>
Function </H4>
</OL>
<P CLASS="3LevelContinued">
<A NAME="pgfId=997374">
</A>
Prior to running the <CODE CLASS="Program-Process">
named</CODE>
daemon, use the <CODE CLASS="Program-Process">
touch</CODE>
utility (to change file access and modification times) or the <CODE CLASS="Program-Process">
chown</CODE>
utility (to set the user id and/or group id) on files to which you want BIND to write.</P>
</DIV>
</DIV>
<DIV>
<OL>
<H3 CLASS="2Level">
<A NAME="pgfId=997375">
</A>
7.3 Dynamic Updates</H3>
</OL>
<P CLASS="2LevelContinued">
<A NAME="pgfId=997376">
</A>
Access to the dynamic update facility should be strictly limited. In earlier versions of BIND the only way to do this was based on the IP address of the host requesting the update. BIND&nbsp;9 also supports authenticating updates cryptographically by means of transaction signatures (TSIG). The use of TSIG is strongly recommended.</P>
<P CLASS="2LevelContinued">
<A NAME="pgfId=1006806">
</A>
Some sites choose to keep all dynamically updated DNS data in a subdomain and delegate that subdomain to a separate zone. This way, the top-level zone containing critical data such as the IP addresses of public web and mail servers need not allow dynamic update at all.</P>
</DIV>
<HR ALIGN="center">
<p>Return to <A href="Bv9ARM.html">BIND 9 Administrator Reference Manual</A> table of contents.</p>
</BODY>
</HTML>

View File

@@ -1,102 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML EXPERIMENTAL 970324//EN">
<!--
- Copyright (C) 2000 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.
-->
<!-- $Id: Bv9ARM.8.html,v 1.5.2.4 2000/08/22 19:29:15 gson Exp $ -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML EXPERIMENTAL 970324//EN">
<HTML>
<HEAD>
<META NAME="GENERATOR" CONTENT="Adobe FrameMaker 5.5/HTML Export Filter">
<LINK REL="STYLESHEET" HREF="Bv9ARM.css">
<TITLE> Section 8. Troubleshooting</TITLE></HEAD>
<BODY BGCOLOR="#ffffff">
<OL>
<H1 CLASS="1Level">
<A NAME="pgfId=997350">
</A>
Section 8. Troubleshooting</H1>
</OL>
<DIV>
<OL>
<H3 CLASS="2Level">
<A NAME="pgfId=997382">
</A>
8.1 Common Problems</H3>
</OL>
<DIV>
<OL>
<H4 CLASS="3Level">
<A NAME="pgfId=997383">
</A>
8.1.1 It's not working; how can I figure out what's wrong?</H4>
</OL>
<P CLASS="3LevelContinued">
<A NAME="pgfId=997384">
</A>
The best solution to solving installation and configuration issues is to take preventative measures by setting up logging files beforehand. (See the <A HREF="Bv9ARM.3.html#30164" CLASS="XRef">sample configurations</A>) in Section 3. The log files provide a source of hints and information that can be used to figure out what went wrong and how to fix the problem.</P>
</DIV>
</DIV>
<DIV>
<OL>
<H3 CLASS="2Level">
<A NAME="pgfId=997388">
</A>
8.2 Incrementing and Changing the Serial Number</H3>
</OL>
<P CLASS="2LevelContinued">
<A NAME="pgfId=1001230">
</A>
Zone serial numbers are just numbers--they aren't date related. A lot of people set them to a number that represents a date, usually of the form YYYYMMDDRR. A number of people have been testing these numbers for Y2K compliance and have set the number to the year 2000 to see if it will work. They then try to restore the old serial number. This will cause problems because serial numbers are used to indicate that a zone has been updated. If the serial number on the slave server is lower than the serial number on the master, the slave server will attempt to update its copy of the zone.</P>
<P CLASS="2LevelContinued">
<A NAME="pgfId=997390">
</A>
Setting the serial number to a lower number on the master server than the slave server means that the slave will not perform updates to its copy of the zone.</P>
<P CLASS="2LevelContinued">
<A NAME="pgfId=997391">
</A>
The solution to this is to add 2147483647 (2^31-1) to the number, reload the zone and make sure all slaves have updated to the new zone serial number, then reset the number to what you want it to be, and reload the zone again.</P>
</DIV>
<DIV>
<OL>
<H3 CLASS="2Level">
<A NAME="pgfId=997392">
</A>
8.3 Where Can I Get Help?</H3>
</OL>
<P CLASS="2LevelContinued">
<A NAME="pgfId=1001264">
</A>
The Internet Software Consortium (ISC) offers a wide range of support and service agreements for BIND and DHCP servers. Four levels of premium support are available and each level includes support for all ISC programs, significant discounts on products and training, and a recognized priority on bug fixes and non-funded feature requests. In addition, ISC offers a standard support agreement package which includes services ranging from bug fix announcements to remote support. It also includes training in BIND and DHCP.</P>
<P CLASS="2LevelContinued">
<A NAME="pgfId=997394">
</A>
To discuss arrangements for support, contact
<A HREF="mailto:info@isc.org">info@isc.org</A>
<CODE CLASS="Program-Process">
</CODE>
or visit the ISC web page at<BR>
<A HREF="http://www.isc.org/services/support/">
http://www.isc.org/services/support/</A> to read more.</P>
</DIV>
</DIV>
<HR ALIGN="center">
<p>Return to <A href="Bv9ARM.html">BIND 9 Administrator Reference Manual</A> table of contents.</p>
</BODY>
</HTML>

View File

@@ -1,910 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML EXPERIMENTAL 970324//EN">
<!--
- Copyright (C) 2000 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.
-->
<!-- $Id: Bv9ARM.9.html,v 1.1.2.3 2000/08/22 19:29:17 gson Exp $ -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML EXPERIMENTAL 970324//EN">
<HTML>
<HEAD>
<META NAME="GENERATOR" CONTENT="Adobe FrameMaker 5.5/HTML Export Filter">
<LINK REL="STYLESHEET" HREF="Bv9ARM.css">
<TITLE>Appendices</TITLE></HEAD>
<BODY BGCOLOR="#ffffff">
<DIV>
<H1 CLASS="1Level">
<A NAME="pgfId=1007883">
</A>
<P ALIGN="center">
Appendices
</P>
</H1>
<DIV>
<H3 CLASS="2Level">
<A NAME="pgfId=997352">
</A>
Appendix A. Acknowledgements</H3>
<DIV>
<H6 CLASS="AppendixLevel2">
<A NAME="pgfId=1000953">
</A>
A Brief History of the DNS and BIND</H6>
<P CLASS="2LevelContinued">
<A NAME="pgfId=1000944">
</A>
Although the &quot;official&quot; beginning of the Domain Name System occurred in 1984 with the publication of RFC 920, the core of the new system was described in 1983 in RFCs 882 and 883. From 1984 to 1987, the ARPAnet (the precursor to today's Internet) became a testbed of experimentation for developing the new naming/addressing scheme in an rapidly expanding, operational network environment. New RFCs were written and published in 1987 that modified the original documents to incorporate improvements based on the working model. RFC 1034, &quot;Domain Names-Concepts and Facilities,&quot; and RFC 1035, &quot;Domain Names-Implementation and Specification&quot; were published and became the standards upon which all DNS implementations are built.</P>
<P CLASS="2LevelContinued">
<A NAME="pgfId=1000945">
</A>
The first working domain name server, called &quot;Jeeves,&quot; was written in 1983-84 by Paul Mockapetris for operation on DEC Tops-20 machines located at the University of Southern California's Information Sciences Institute (USC-ISI) and SRI International's Network Information Center (SRI-NIC). A DNS server for Unix machines, the Berkeley Internet Name Domain (BIND) package, was written soon after by a group of graduate students at the University of California at Berkeley under a grant from the US Defense Advanced Research Projects Administration (DARPA). Versions of BIND through 4.8.3 were maintained by the Computer Systems Research Group (CSRG) at UC Berkeley. Douglas Terry, Mark Painter, David Riggle and Songnian Zhou made up the initial BIND project team. After that, additional work on the software package was done by Ralph Campbell. Kevin Dunlap, a Digital Equipment Corporation employee on loan to the CSRG, worked on BIND for 2 years, from 1985 to 1987. Many other people also contributed to BIND development during that time: Doug Kingston, Craig Partridge, Smoot Carl-Mitchell, Mike Muuss, Jim Bloom and Mike Schwartz. BIND maintenance was subsequently handled by Mike Karels and O. Kure.</P>
<P CLASS="2LevelContinued">
<A NAME="pgfId=1000946">
</A>
BIND versions 4.9 and 4.9.1 were released by Digital Equipment Corporation (now Compaq Computer Corporation). Paul Vixie, then a DEC employee, became BIND's primary caretaker. Paul was assisted by Phil Almquist, 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 others.</P>
<P CLASS="2LevelContinued">
<A NAME="pgfId=1000947">
</A>
BIND Version 4.9.2 was sponsored by Vixie Enterprises. Paul Vixie became BIND's principal architect/programmer.</P>
<P CLASS="2LevelContinued">
<A NAME="pgfId=1000948">
</A>
BIND versions from 4.9.3 onward have been developed and maintained by the Internet Software Consortium with support being provided by ISC's sponsors. As co-architects/programmers, Bob Halley and Paul Vixie released the first production-ready version of BIND version 8 in May 1997.</P>
<P CLASS="2LevelContinued">
<A NAME="pgfId=1000986">
</A>
BIND development work is made possible today by the sponsorship of several corporations, and by the tireless work efforts of numerous individuals.</P>
</DIV>
</DIV>
<DIV>
<H3 CLASS="AppendixLevel1">
<A NAME="pgfId=1001064">
</A>
<A NAME="13688">
</A>
Appendix B. Historical DNS Information</H3>
<DIV>
<H6 CLASS="AppendixLevel2">
<A NAME="pgfId=1046008">
</A>
<A NAME="38866">
</A>
Classes of Resource Records</H6>
<DIV>
<H6 CLASS="AppendixLevel3">
<A NAME="pgfId=1046031">
</A>
HS = hesiod</H6>
<P CLASS="3LevelContinued">
<A NAME="pgfId=1046032">
</A>
The <EM CLASS="Optional-meta-syntax">
hesiod </EM>
class is an information service developed by MIT's Project Athena. It is used to share information about various systems databases, such as users, groups, printers and so on. The keyword <CODE CLASS="Program-Process">
hs</CODE>
is a synonym for hesiod.</P>
</DIV>
<DIV>
<H6 CLASS="AppendixLevel3">
<A NAME="pgfId=1046033">
</A>
CH = chaos</H6>
<P CLASS="3LevelContinued">
<A NAME="pgfId=1046034">
</A>
The <CODE CLASS="Program-Process">
chaos</CODE>
class is used to specify zone data for the MIT-developed CHAOSnet, a LAN protocol created in the mid-1970s.</P>
</DIV>
</DIV>
</DIV>
<DIV>
<H3 CLASS="AppendixLevel1">
<A NAME="pgfId=1046214">
</A>
Appendix C. General DNS Reference Information</H3>
<DIV>
<H6 CLASS="AppendixLevel2">
<A NAME="pgfId=1046040">
</A>
IPv6 addresses (A6)</H6>
<P CLASS="2LevelContinued">
<A NAME="pgfId=1046041">
</A>
IPv6 addresses are 128-bit identifiers for interfaces and sets of interfaces which were introduced in the DNS to facilitate scalable Internet routing. There are three types of addresses: <EM CLASS="Emphasis">
Unicast</EM>
, an identifier for a single interface; <EM CLASS="Emphasis">
Anycast</EM>
, an identifier for a set of interfaces; and <EM CLASS="Emphasis">
Multicast</EM>
, an identifier for a set of interfaces. Here we describe the global Unicast address scheme. For more information, see RFC 2374.</P>
<P CLASS="2LevelContinued">
<A NAME="pgfId=1046042">
</A>
The aggregatable global Unicast address format is as follows:</P>
<P CLASS="2LevelContinued">
<A NAME="pgfId=1046104">
</A>
&nbsp;</P>
<TABLE>
<TR>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody-fixedfontLG">
<A NAME="pgfId=1046045">
</A>
3</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody-fixedfontLG">
<A NAME="pgfId=1046047">
</A>
13</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody-fixedfontLG">
<A NAME="pgfId=1046049">
</A>
8</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody-fixedfontLG">
<A NAME="pgfId=1046051">
</A>
24</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody-fixedfontLG">
<A NAME="pgfId=1046053">
</A>
16</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody-fixedfontLG">
<A NAME="pgfId=1046055">
</A>
64 bits</P>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody-fixedfontLG">
<A NAME="pgfId=1046057">
</A>
FP</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody-fixedfontLG">
<A NAME="pgfId=1046059">
</A>
TLA ID</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody-fixedfontLG">
<A NAME="pgfId=1046061">
</A>
RES</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody-fixedfontLG">
<A NAME="pgfId=1046063">
</A>
NLA ID</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody-fixedfontLG">
<A NAME="pgfId=1046065">
</A>
SLA ID</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody-fixedfontLG">
<A NAME="pgfId=1046067">
</A>
Interface ID</P>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="4">
<P CLASS="CellBody-fixedfontLG">
<A NAME="pgfId=1046069">
</A>
&lt;------ Public Topology ------&gt;</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody-fixedfontLG">
<A NAME="pgfId=1046077">
</A>
&nbsp;</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody-fixedfontLG">
<A NAME="pgfId=1046079">
</A>
&nbsp;</P>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody-fixedfontLG">
<A NAME="pgfId=1046081">
</A>
&nbsp;</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody-fixedfontLG">
<A NAME="pgfId=1046083">
</A>
&nbsp;</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody-fixedfontLG">
<A NAME="pgfId=1046085">
</A>
&nbsp;</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody-fixedfontLG">
<A NAME="pgfId=1046087">
</A>
&nbsp;</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody-fixedfontLG">
<A NAME="pgfId=1046089">
</A>
&lt;-Site Topology-&gt;</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody-fixedfontLG">
<A NAME="pgfId=1046091">
</A>
&nbsp;</P>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody-fixedfontLG">
<A NAME="pgfId=1046093">
</A>
&nbsp;</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody-fixedfontLG">
<A NAME="pgfId=1046095">
</A>
&nbsp;</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody-fixedfontLG">
<A NAME="pgfId=1046097">
</A>
&nbsp;</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody-fixedfontLG">
<A NAME="pgfId=1046099">
</A>
&nbsp;</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody-fixedfontLG">
<A NAME="pgfId=1046101">
</A>
&nbsp;</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody-fixedfontLG">
<A NAME="pgfId=1046103">
</A>
&lt;------ Interface Identifier ------&gt;</P>
</TD>
</TR>
</TABLE>
<P CLASS="2LevelContinued">
<A NAME="pgfId=1046142">
</A>
Where</P>
<TABLE>
<TR>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody">
<A NAME="pgfId=1046107">
</A>
FP</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody">
<A NAME="pgfId=1046109">
</A>
=</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody">
<A NAME="pgfId=1046111">
</A>
Format Prefix (001)</P>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody">
<A NAME="pgfId=1046113">
</A>
TLA ID</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody">
<A NAME="pgfId=1046115">
</A>
=</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody">
<A NAME="pgfId=1046117">
</A>
Top-Level Aggregation Identifier</P>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody">
<A NAME="pgfId=1046119">
</A>
RES</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody">
<A NAME="pgfId=1046121">
</A>
=</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody">
<A NAME="pgfId=1046123">
</A>
Reserved for future use</P>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody">
<A NAME="pgfId=1046125">
</A>
NLA ID</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody">
<A NAME="pgfId=1046127">
</A>
=</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody">
<A NAME="pgfId=1046129">
</A>
Next-Level Aggregation Identifier</P>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody">
<A NAME="pgfId=1046131">
</A>
SLA ID</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody">
<A NAME="pgfId=1046133">
</A>
=</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody">
<A NAME="pgfId=1046135">
</A>
Site-Level Aggregation Identifier</P>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody">
<A NAME="pgfId=1046137">
</A>
INTERFACE ID</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody">
<A NAME="pgfId=1046139">
</A>
=</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody">
<A NAME="pgfId=1046141">
</A>
Interface Identifier</P>
</TD>
</TR>
</TABLE>
<P CLASS="2LevelContinued">
<A NAME="pgfId=1046143">
</A>
The <EM CLASS="Emphasis">
Public Topology</EM>
is provided by the upstream provider or ISP, and (roughly) corresponds to the IPv4 <EM CLASS="Emphasis">
network</EM>
section of the address range. The <EM CLASS="Emphasis">
Site Topology</EM>
is where you can subnet this space, much the same as subnetting an IPv4 /16 network into /24 subnets. The <EM CLASS="Emphasis">
Interface Identifier</EM>
is the address of an individual interface on a given network. (With IPv6, addresses belong to interfaces rather than machines.)</P>
<P CLASS="2LevelContinued">
<A NAME="pgfId=1046144">
</A>
The subnetting capability of IPv6 is much more flexible than that of IPv4: subnetting can now be carried out on bit boundaries, in much the same way as Classless InterDomain Routing (CIDR).</P>
<P CLASS="2LevelContinued">
<A NAME="pgfId=1046145">
</A>
The internal structure of the Public Topology for an A6 global unicast address consists of:</P>
<P CLASS="2LevelContinued">
<A NAME="pgfId=1046163">
</A>
&nbsp;</P>
<TABLE>
<TR>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody">
<A NAME="pgfId=1046148">
</A>
3</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody">
<A NAME="pgfId=1046150">
</A>
13</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody">
<A NAME="pgfId=1046152">
</A>
8</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody">
<A NAME="pgfId=1046154">
</A>
24</P>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody">
<A NAME="pgfId=1046156">
</A>
FP</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody">
<A NAME="pgfId=1046158">
</A>
TLA ID</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody">
<A NAME="pgfId=1046160">
</A>
RES</P>
</TD>
<TD ROWSPAN="1" COLSPAN="1" valign="top">
<P CLASS="CellBody">
<A NAME="pgfId=1046162">
</A>
NLA ID</P>
</TD>
</TR>
</TABLE>
<P CLASS="2LevelContinued">
<A NAME="pgfId=1046164">
</A>
A 3 bit FP (Format Prefix) of 001 indicates this is a global Unicast address. FP lengths for other types of addresses may vary.</P>
<P CLASS="2LevelContinued">
<A NAME="pgfId=1046165">
</A>
13 TLA (Top Level Aggregator) bits give the prefix of your top-level IP backbone carrier.</P>
<P CLASS="2LevelContinued">
<A NAME="pgfId=1046166">
</A>
8 Reserved bits</P>
<P CLASS="2LevelContinued">
<A NAME="pgfId=1046167">
</A>
24 bits for Next Level Aggregators. This allows organizations with a TLA to hand out portions of their IP space to client organizations, so that the client can then split up the network further by filling in more NLA bits, and hand out IPv6 prefixes to their clients, and so forth.</P>
<P CLASS="2LevelContinued">
<A NAME="pgfId=1046168">
</A>
There is no particular structure for the Site topology section. Organizations can allocate these bits in any way they desire.</P>
<P CLASS="2LevelContinued">
<A NAME="pgfId=1046169">
</A>
The Interface Identifier must be unique on that network. On ethernet networks, one way to ensure this is to set the address to the first three bytes of the hardware address, &quot;FFFE&quot;, then the last three bytes of the hardware address. The lowest significant bit of the first byte should then be complemented. Addresses are written as 32-bit blocks separated with a colon, and leading zeros of a block may be omitted, for example:</P>
<P CLASS="2LevelContinued">
<A NAME="pgfId=1046170">
</A>
<CODE CLASS="Program-Process">
3ffe:8050:201:9:a00:20ff:fe81:2b32</CODE>
</P>
<P CLASS="2LevelContinued">
<A NAME="pgfId=1046171">
</A>
IPv6 address specifications are likely to contain long strings of zeros, so the architects have included a shorthand for specifying them. The double colon (`::') indicates the longest possible string of zeros that can fit, and can be used only once in an address.</P>
</DIV>
</DIV>
<DIV>
<H3 CLASS="AppendixLevel1">
<A NAME="pgfId=1029291">
</A>
<A NAME="35452">
</A>
Appendix D. Bibliography (and Suggested Reading)</H3>
<DIV>
<H4 CLASS="AppendixLevel2">
<A NAME="pgfId=999193">
</A>
<A NAME="42144">
</A>
Request for Comments (RFCs)</H4>
<P CLASS="2LevelContinued">
<A NAME="pgfId=999780">
</A>
Specification documents for the Internet protocol suite, including the DNS, are published as part of the Request for Comments (RFCs) series of technical notes. The standards themselves are defined by the Internet Engineering Task Force (IETF) and the Internet Engineering Steering Group (IESG). RFCs can be obtained online via FTP at <BR>
<EM>ftp://www.isi.edu/in-notes/RFCxxx.txt</EM>
(where
<EM>xxx</EM>
is the number of the RFC). RFCs are also available via the Web at <EM CLASS="URL">
<A HREF="http://www.ietf.org/rfc/">http://www.ietf.org/rfc/</A></EM>
.</P>
<DIV>
<H4 CLASS="AppendixLevel3">
<A NAME="pgfId=999212">
</A>
Standards</H4>
<P CLASS="Biblio">
<A NAME="pgfId=999776">
</A>
RFC974. Partridge, C. <EM CLASS="doc-title">
Mail Routing and the Domain System</EM>
. January 1986.</P>
<P CLASS="Biblio">
<A NAME="pgfId=999777">
</A>
RFC1034. Mockapetris, P.V. <EM CLASS="doc-title">
Domain Names - Concepts and Facilities</EM>
. P.V. November 1987.</P>
<P CLASS="Biblio">
<A NAME="pgfId=1000013">
</A>
RFC1035. Mockapetris, P. V. <EM CLASS="doc-title">
Domain Names - Implementation and Specification</EM>
. November 1987.</P>
</DIV>
<DIV>
<H6 CLASS="AppendixLevel3">
<A NAME="pgfId=999218">
</A>
<A NAME="17631">
</A>
Proposed Standards</H6>
<P CLASS="Biblio">
<A NAME="pgfId=999220">
</A>
RFC2181. Elz, R., R. Bush. <EM CLASS="doc-title">
Clarifications to the DNS Specification</EM>
. July 1997.</P>
<P CLASS="Biblio">
<A NAME="pgfId=999221">
</A>
RFC2308. Andrews, M. <EM CLASS="doc-title">
Negative Caching of DNS Queries</EM>
. March 1998.</P>
<P CLASS="Biblio">
<A NAME="pgfId=999222">
</A>
RFC1995. Ohta, M. <EM CLASS="doc-title">
Incremental Zone Transfer in DNS</EM>
. August 1996.</P>
<P CLASS="Biblio">
<A NAME="pgfId=999223">
</A>
RFC1996. Vixie, P. <EM CLASS="doc-title">
A Mechanism for Prompt Notification of Zone Changes</EM>
. August 1996.</P>
<P CLASS="Biblio">
<A NAME="pgfId=999747">
</A>
RFC2136. Vixie, P., S. Thomson, Y. Rekhter, J. Bound. <EM CLASS="doc-title">
Dynamic Updates in the Domain Name System</EM>
. April 1997.</P>
<P CLASS="Biblio">
<A NAME="pgfId=1045908">
</A>
RFC2845. Vixie, P., O. Gudmundsson, D. Eastlake 3rd, B. Wellington. <EM CLASS="doc-title">
Secret Key Transaction Authentication for DNS (TSIG)</EM>
. May 2000.</P>
</DIV>
<DIV>
<H6 CLASS="AppendixLevel3">
<A NAME="pgfId=999227">
</A>
Proposed Standards Still Under Development</H6>
<P CLASS="3LevelContinued">
<A NAME="pgfId=999436">
</A>
<EM CLASS="Emphasis">
Note:</EM> the following list of RFCs are undergoing major revision by the IETF.</P>
<P CLASS="Biblio">
<A NAME="pgfId=999230">
</A>
RFC1886. Thomson, S., C. Huitema. <EM CLASS="doc-title">
DNS Extensions to support IP version 6</EM>
. S. December 1995.</P>
<P CLASS="Biblio">
<A NAME="pgfId=999231">
</A>
RFC2065. Eastlake, 3rd, D., C. Kaufman. <EM CLASS="doc-title">
Domain Name System Security Extensions</EM>
. January 1997.</P>
<P CLASS="Biblio">
<A NAME="pgfId=999232">
</A>
RFC2137. Eastlake, 3rd, D. <EM CLASS="doc-title">
Secure Domain Name System Dynamic Update</EM>
. April 1997.</P>
</DIV>
<DIV>
<H6 CLASS="AppendixLevel3">
<A NAME="pgfId=999235">
</A>
Other Important RFCs About DNS Implementation</H6>
<P CLASS="Biblio">
<A NAME="pgfId=999237">
</A>
RFC1535. Gavron, E. <EM CLASS="doc-title">
A Security Problem and Proposed Correction With Widely Deployed DNS Software.</EM>
October 1993.</P>
<P CLASS="Biblio">
<A NAME="pgfId=1000173">
</A>
RFC1536. Kumar, A., J. Postel, C. Neuman, P. Danzig, S. Miller. <EM CLASS="doc-title">
Common DNS Implementation Errors and Suggested Fixes</EM>
. October 1993.</P>
<P CLASS="Biblio">
<A NAME="pgfId=999239">
</A>
RFC1982. Elz, R., R. Bush. <EM CLASS="doc-title">
Serial Number Arithmetic</EM>
. August 1996.</P>
</DIV>
<DIV>
<H6 CLASS="AppendixLevel3">
<A NAME="pgfId=999242">
</A>
Resource Record Types</H6>
<P CLASS="Biblio">
<A NAME="pgfId=999244">
</A>
RFC1183. Everhart, C.F., L. A. Mamakos, R. Ullmann, P. Mockapetris. <EM CLASS="doc-title">
New DNS RR Definitions</EM>
. October 1990.</P>
<P CLASS="Biblio">
<A NAME="pgfId=999249">
</A>
RFC1706. Manning, B., R. Colella. <EM CLASS="doc-title">
DNS NSAP Resource Records</EM>
. October 1994.</P>
<P CLASS="Biblio">
<A NAME="pgfId=999253">
</A>
RFC2168. Daniel, R., M. Mealling. <EM CLASS="doc-title">
Resolution of Uniform Resource Identifiers using the Domain Name System. June 1997.</EM>
</P>
<P CLASS="Biblio">
<A NAME="pgfId=999254">
</A>
RFC1876. Davis, C., P. Vixie, T. Goodwin, I. Dickinson. <EM CLASS="doc-title">
A Means for Expressing Location Information in the Domain Name System</EM>
. January 1996.</P>
<P CLASS="Biblio">
<A NAME="pgfId=999255">
</A>
RFC2052. Gulbrandsen, A., P. Vixie. <EM CLASS="doc-title">
A DNS RR for Specifying the Location of Services.</EM>
October 1996.</P>
<P CLASS="Biblio">
<A NAME="pgfId=1000261">
</A>
RFC2163. Allocchio, A. U<EM CLASS="doc-title">
sing the Internet DNS to Distribute MIXER Conformant Global Address Mapping</EM>
. January 1998.</P>
<P CLASS="Biblio">
<A NAME="pgfId=1000251">
</A>
RFC2230. Atkinson, R. <EM CLASS="doc-title">
Key Exchange Delegation Record for the DNS</EM>
. October 1997.</P>
</DIV>
<DIV>
<H6 CLASS="AppendixLevel3">
<A NAME="pgfId=999260">
</A>
DNS and the Internet</H6>
<P CLASS="Biblio">
<A NAME="pgfId=999262">
</A>
RFC1101. Mockapetris, P. V. <EM CLASS="doc-title">
DNS Encoding of Network Names and Other Types</EM>
. April 1989.</P>
<P CLASS="Biblio">
<A NAME="pgfId=999263">
</A>
RFC1123. Braden, R. <EM CLASS="doc-title">
Requirements for Internet Hosts - Application and Support</EM>
. October 1989.</P>
<P CLASS="Biblio">
<A NAME="pgfId=999264">
</A>
RFC1591. Postel, J. D<EM CLASS="doc-title">
omain Name System Structure and Delegation</EM>
. March 1994.</P>
<P CLASS="Biblio">
<A NAME="pgfId=999265">
</A>
RFC2317. Eidnes, H., G. de Groot, P. Vixie. <EM CLASS="doc-title">
Classless IN-ADDR.ARPA Delegation</EM>
. March 1998.</P>
</DIV>
<DIV>
<H6 CLASS="AppendixLevel3">
<A NAME="pgfId=999274">
</A>
DNS Operations</H6>
<P CLASS="Biblio">
<A NAME="pgfId=999276">
</A>
RFC1537. Beertema, P. <EM CLASS="doc-title">
Common DNS Data File Configuration Errors</EM>
. October 1993.</P>
<P CLASS="Biblio">
<A NAME="pgfId=999277">
</A>
RFC1912. Barr, D. <EM CLASS="doc-title">
Common DNS Operational and Configuration Errors</EM>
. February 1996.</P>
<P CLASS="Biblio">
<A NAME="pgfId=1054098">
</A>
RFC1912. Barr, D. <EM CLASS="doc-title">
Common DNS Operational and Configuration Errors</EM>
. February 1996.</P>
<P CLASS="Biblio">
<A NAME="pgfId=1054096">
</A>
RFC2010. Manning, B., P. Vixie. <EM CLASS="doc-title">
Operational Criteria for Root Name Servers.</EM>
October 1996.</P>
<P CLASS="Biblio">
<A NAME="pgfId=1000361">
</A>
RFC2219. Hamilton, M., R. Wright. <EM CLASS="doc-title">
Use of DNS Aliases for Network Services.</EM>
October 1997.</P>
</DIV>
<DIV>
<H6 CLASS="AppendixLevel3">
<A NAME="pgfId=999282">
</A>
Other DNS-related RFCs</H6>
</DIV>
</DIV>
</DIV>
</DIV>
<DIV>
<P CLASS="3LevelContinued">
<A NAME="pgfId=999409">
</A>
<EM CLASS="Emphasis">
Note:</EM> the following list of RFCs, although DNS-related, are not concerned with implementing software.</P>
<P CLASS="Biblio">
<A NAME="pgfId=999284">
</A>
RFC1464. Rosenbaum, R. <EM CLASS="doc-title">
Using the Domain Name System To Store Arbitrary String Attributes</EM>
. May 1993.</P>
<P CLASS="Biblio">
<A NAME="pgfId=999285">
</A>
RFC1713. Romao, A. <EM CLASS="doc-title">
Tools for DNS Debugging</EM>
. November 1994.</P>
<P CLASS="Biblio">
<A NAME="pgfId=999286">
</A>
RFC1794. Brisco, T. <EM CLASS="doc-title">
DNS Support for Load Balancing</EM>
. April 1995.</P>
<P CLASS="Biblio">
<A NAME="pgfId=999287">
</A>
RFC2240. Vaughan, O. <EM CLASS="doc-title">
A Legal Basis for Domain Name Allocation</EM>
. November1997.</P>
<P CLASS="Biblio">
<A NAME="pgfId=999288">
</A>
RFC2345. Klensin, J., T. Wolf, G. Oglesby. <EM CLASS="doc-title">
Domain Names and Company Name Retrieval</EM>
. May 1998.</P>
<P CLASS="Biblio">
<A NAME="pgfId=999289">
</A>
RFC2352. Vaughan, O. <EM CLASS="doc-title">
A Convention For Using Legal Names as Domain Names</EM>
. May 1998.</P>
<DIV>
<H6 CLASS="AppendixLevel3">
<A NAME="pgfId=999292">
</A>
Obsolete and Unimplemented Experimental RRs</H6>
<P CLASS="Biblio">
<A NAME="pgfId=999294">
</A>
RFC1712. Farrell, C., M. Schulze, S. Pleitner, D. Baldoni. <EM CLASS="doc-title">
DNS Encoding of Geographical Location</EM>
. November 1994.</P>
</DIV>
<DIV>
<H6 CLASS="AppendixLevel2">
<A NAME="pgfId=999195">
</A>
<A NAME="">
</A>
Internet Drafts</H6>
<P CLASS="2LevelContinued">
<A NAME="pgfId=1000609">
</A>
Internet Drafts (IDs) are rough-draft working documents of the Internet Engineering Task Force. They are, in essence, RFCs in the preliminary stages of development. Implementors are cautioned not to regard IDs as archival, and they should not be quoted or cited in any formal documents unless accompanied by the disclaimer that they are &quot;works in progress.&quot; IDs have a lifespan of six months after which they are deleted unless updated by their authors.</P>
</DIV>
<DIV>
<H6 CLASS="AppendixLevel2">
<A NAME="pgfId=1000764">
</A>
Other BIND Documents</H6>
<DIV>
Albitz, Paul and Cricket Liu. 1998. <EM CLASS="doc-title">
DNS and BIND</EM>
. Sebastopol, CA: O'Reilly and Associates.</P>
<HR ALIGN="center">
<p>Return to <A href="Bv9ARM.html">BIND 9 Administrator Reference Manual</A> table of contents.</p>
</DIV>
</DIV>
</DIV>
</BODY>
</HTML>

File diff suppressed because it is too large Load Diff

View File

@@ -1,90 +1,828 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML EXPERIMENTAL 970324//EN">
<!--
- Copyright (C) 2000 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.
-->
<!-- $Id: Bv9ARM.html,v 1.4.2.4 2000/08/22 19:29:19 gson Exp $ -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML EXPERIMENTAL 970324//EN">
<HTML>
<HEAD>
<META NAME="GENERATOR" CONTENT="Adobe FrameMaker 5.5/HTML Export Filter">
<LINK REL="STYLESHEET" HREF="Bv9ARM.css">
<TITLE>BIND 9 Administrator Reference Manual</TITLE></HEAD>
<BODY BGCOLOR="#ffffff">
<DIV ALIGN="left">
<A HREF="http://www.isc.org/"><IMG SRC="isc.color.gif" ALT="ISC logo" WIDTH="144" HEIGHT="90" ALIGN="left" HSPACE="30" BORDER="0"></A>
</DIV>
<DIV ALIGN="left">
<H2>BIND 9<BR>Administrator Reference Manual</H2>
<br>
<h2>July, 2000</H2>
</DIV>
<HR ALIGN="center">
<H6 CLASS="Title">
<A NAME="pgfId=21862">
</A>
Table of Contents</H6>
</DIV>
<OL>
<H2 CLASS="1LevelTOC">
<A HREF="Bv9ARM.1.html#pgfId=1007883" CLASS="Hypertext">
Section 1. Introduction </A>
</H2>
<H2 CLASS="1LevelTOC">
<A HREF="Bv9ARM.2.html#pgfId=997350" CLASS="Hypertext">
Section 2. BIND Resource Requirements</A>
</H2>
<H2 CLASS="1LevelTOC">
<A HREF="Bv9ARM.3.html#pgfId=997350" CLASS="Hypertext">
Section 3. Nameserver Configuration</A>
</H2>
<H2 CLASS="1LevelTOC">
<A HREF="Bv9ARM.4.html#pgfId=997350" CLASS="Hypertext">
Section 4. Advanced Concepts</A>
</H2>
<H2 CLASS="1LevelTOC">
<A HREF="Bv9ARM.5.html#pgfId=1001240" CLASS="Hypertext">
Section 5. The BIND&nbsp;9 Lightweight Resolver</A>
</H2>
<H2 CLASS="1LevelTOC">
<A HREF="Bv9ARM.6.html#pgfId=997350" CLASS="Hypertext">
Section 6. BIND&nbsp;9 Configuration Reference</A>
</H2>
<H2 CLASS="1LevelTOC">
<A HREF="Bv9ARM.7.html#pgfId=997350" CLASS="Hypertext">
Section 7. BIND&nbsp;9 Security Considerations</A>
</H2>
<H2 CLASS="1LevelTOC">
<A HREF="Bv9ARM.8.html#pgfId=997350" CLASS="Hypertext">
Section 8. Troubleshooting</A>
</H2>
<H2 CLASS="1LevelTOC">
<A HREF="Bv9ARM.9.html#pgfId=997350" CLASS="Hypertext">
Section 9. Appendices</A>
</H2>
</OL>
<HR ALIGN="center">
<DIV ALIGN="center">
Copyright &copy;2000 Internet Software Consortium
</DIV>
</BODY>
</HTML>
<HTML
><HEAD
><TITLE
></TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.41"><LINK
REL="NEXT"
TITLE="Introduction "
HREF="Bv9ARM.ch01.html"></HEAD
><BODY
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="BOOK"
><A
NAME="AEN1"
></A
><DIV
CLASS="TOC"
><DL
><DT
><B
>Table of Contents</B
></DT
><DT
>1. <A
HREF="Bv9ARM.ch01.html"
>Introduction</A
></DT
><DD
><DL
><DT
>1.1. <A
HREF="Bv9ARM.ch01.html#AEN7"
>Scope of Document</A
></DT
><DT
>1.2. <A
HREF="Bv9ARM.ch01.html#AEN13"
>Organization of This Document</A
></DT
><DT
>1.3. <A
HREF="Bv9ARM.ch01.html#AEN32"
>Conventions Used in This Document</A
></DT
><DT
>1.4. <A
HREF="Bv9ARM.ch01.html#AEN121"
>Discussion of Domain Name System (<SPAN
CLASS="acronym"
>DNS</SPAN
>) Basics and
<SPAN
CLASS="acronym"
>BIND</SPAN
></A
></DT
><DD
><DL
><DT
>1.4.1. <A
HREF="Bv9ARM.ch01.html#AEN136"
>Nameservers</A
></DT
><DT
>1.4.2. <A
HREF="Bv9ARM.ch01.html#AEN157"
>Types of Zones</A
></DT
><DT
>1.4.3. <A
HREF="Bv9ARM.ch01.html#AEN194"
>Servers</A
></DT
></DL
></DD
></DL
></DD
><DT
>2. <A
HREF="Bv9ARM.ch02.html"
><SPAN
CLASS="acronym"
>BIND</SPAN
> Resource Requirements</A
></DT
><DD
><DL
><DT
>2.1. <A
HREF="Bv9ARM.ch02.html#AEN230"
>Hardware requirements</A
></DT
><DT
>2.2. <A
HREF="Bv9ARM.ch02.html#AEN238"
>CPU Requirements</A
></DT
><DT
>2.3. <A
HREF="Bv9ARM.ch02.html#AEN242"
>Memory Requirements</A
></DT
><DT
>2.4. <A
HREF="Bv9ARM.ch02.html#AEN247"
>Nameserver Intensive Environment Issues</A
></DT
><DT
>2.5. <A
HREF="Bv9ARM.ch02.html#AEN250"
>Supported Operating Systems</A
></DT
></DL
></DD
><DT
>3. <A
HREF="Bv9ARM.ch03.html"
>Nameserver Configuration</A
></DT
><DD
><DL
><DT
>3.1. <A
HREF="Bv9ARM.ch03.html#sample_configuration"
>Sample Configurations</A
></DT
><DD
><DL
><DT
>3.1.1. <A
HREF="Bv9ARM.ch03.html#AEN276"
>A Caching-only Nameserver</A
></DT
><DT
>3.1.2. <A
HREF="Bv9ARM.ch03.html#AEN280"
>An Authoritative-only Nameserver</A
></DT
></DL
></DD
><DT
>3.2. <A
HREF="Bv9ARM.ch03.html#AEN286"
>Load Balancing</A
></DT
><DT
>3.3. <A
HREF="Bv9ARM.ch03.html#notify"
>Notify</A
></DT
><DT
>3.4. <A
HREF="Bv9ARM.ch03.html#AEN374"
>Nameserver Operations</A
></DT
><DD
><DL
><DT
>3.4.1. <A
HREF="Bv9ARM.ch03.html#AEN376"
>Tools for Use With the Nameserver Daemon</A
></DT
><DT
>3.4.2. <A
HREF="Bv9ARM.ch03.html#AEN600"
>Signals</A
></DT
></DL
></DD
></DL
></DD
><DT
>4. <A
HREF="Bv9ARM.ch04.html"
>Advanced Concepts</A
></DT
><DD
><DL
><DT
>4.1. <A
HREF="Bv9ARM.ch04.html#dynamic_update"
>Dynamic Update</A
></DT
><DT
>4.2. <A
HREF="Bv9ARM.ch04.html#incremental_zone_transfers"
>Incremental Zone Transfers (IXFR)</A
></DT
><DT
>4.3. <A
HREF="Bv9ARM.ch04.html#AEN654"
>Split DNS</A
></DT
><DT
>4.4. <A
HREF="Bv9ARM.ch04.html#tsig"
>TSIG</A
></DT
><DD
><DL
><DT
>4.4.1. <A
HREF="Bv9ARM.ch04.html#AEN747"
>Generate Shared Keys for Each Pair of Hosts</A
></DT
><DT
>4.4.2. <A
HREF="Bv9ARM.ch04.html#AEN768"
>Copying the Shared Secret to Both Machines</A
></DT
><DT
>4.4.3. <A
HREF="Bv9ARM.ch04.html#AEN771"
>Informing the Servers of the Key's Existence</A
></DT
><DT
>4.4.4. <A
HREF="Bv9ARM.ch04.html#AEN783"
>Instructing the Server to Use the Key</A
></DT
><DT
>4.4.5. <A
HREF="Bv9ARM.ch04.html#AEN799"
>TSIG Key Based Access Control</A
></DT
><DT
>4.4.6. <A
HREF="Bv9ARM.ch04.html#AEN812"
>Errors</A
></DT
></DL
></DD
><DT
>4.5. <A
HREF="Bv9ARM.ch04.html#AEN816"
>TKEY</A
></DT
><DT
>4.6. <A
HREF="Bv9ARM.ch04.html#AEN831"
>SIG(0)</A
></DT
><DT
>4.7. <A
HREF="Bv9ARM.ch04.html#DNSSEC"
>DNSSEC</A
></DT
><DD
><DL
><DT
>4.7.1. <A
HREF="Bv9ARM.ch04.html#AEN847"
>Generating Keys</A
></DT
><DT
>4.7.2. <A
HREF="Bv9ARM.ch04.html#AEN867"
>Creating a Keyset</A
></DT
><DT
>4.7.3. <A
HREF="Bv9ARM.ch04.html#AEN879"
>Signing the Child's Keyset</A
></DT
><DT
>4.7.4. <A
HREF="Bv9ARM.ch04.html#AEN892"
>Signing the Zone</A
></DT
><DT
>4.7.5. <A
HREF="Bv9ARM.ch04.html#AEN908"
>Configuring Servers</A
></DT
></DL
></DD
><DT
>4.8. <A
HREF="Bv9ARM.ch04.html#AEN915"
>IPv6 Support in <SPAN
CLASS="acronym"
>BIND</SPAN
> 9</A
></DT
><DD
><DL
><DT
>4.8.1. <A
HREF="Bv9ARM.ch04.html#AEN929"
>Address Lookups Using AAAA Records</A
></DT
><DT
>4.8.2. <A
HREF="Bv9ARM.ch04.html#AEN934"
>Address Lookups Using A6 Records</A
></DT
><DT
>4.8.3. <A
HREF="Bv9ARM.ch04.html#AEN955"
>Address to Name Lookups Using Nibble Format</A
></DT
><DT
>4.8.4. <A
HREF="Bv9ARM.ch04.html#AEN962"
>Address to Name Lookups Using Bitstring Format</A
></DT
><DT
>4.8.5. <A
HREF="Bv9ARM.ch04.html#AEN969"
>Using DNAME for Delegation of IPv6 Reverse Addresses</A
></DT
></DL
></DD
></DL
></DD
><DT
>5. <A
HREF="Bv9ARM.ch05.html"
>The <SPAN
CLASS="acronym"
>BIND</SPAN
> 9 Lightweight Resolver</A
></DT
><DD
><DL
><DT
>5.1. <A
HREF="Bv9ARM.ch05.html#AEN989"
>The Lightweight Resolver Library</A
></DT
><DT
>5.2. <A
HREF="Bv9ARM.ch05.html#AEN995"
>Running a Resolver Daemon</A
></DT
></DL
></DD
><DT
>6. <A
HREF="Bv9ARM.ch06.html"
><SPAN
CLASS="acronym"
>BIND</SPAN
> 9 Configuration Reference</A
></DT
><DD
><DL
><DT
>6.1. <A
HREF="Bv9ARM.ch06.html#configuration_file_elements"
>Configuration File Elements</A
></DT
><DD
><DL
><DT
>6.1.1. <A
HREF="Bv9ARM.ch06.html#address_match_lists"
>Address Match Lists</A
></DT
><DT
>6.1.2. <A
HREF="Bv9ARM.ch06.html#AEN1212"
>Comment Syntax</A
></DT
></DL
></DD
><DT
>6.2. <A
HREF="Bv9ARM.ch06.html#Configuration_File_Grammar"
>Configuration File Grammar</A
></DT
><DD
><DL
><DT
>6.2.1. <A
HREF="Bv9ARM.ch06.html#AEN1319"
><B
CLASS="command"
>acl</B
> Statement Grammar</A
></DT
><DT
>6.2.2. <A
HREF="Bv9ARM.ch06.html#acl"
><B
CLASS="command"
>acl</B
> Statement Definition and
Usage</A
></DT
><DT
>6.2.3. <A
HREF="Bv9ARM.ch06.html#AEN1361"
><B
CLASS="command"
>controls</B
> Statement Grammar</A
></DT
><DT
>6.2.4. <A
HREF="Bv9ARM.ch06.html#AEN1370"
><B
CLASS="command"
>controls</B
> Statement Definition and
Usage</A
></DT
><DT
>6.2.5. <A
HREF="Bv9ARM.ch06.html#AEN1398"
><B
CLASS="command"
>include</B
> Statement Grammar</A
></DT
><DT
>6.2.6. <A
HREF="Bv9ARM.ch06.html#AEN1403"
><B
CLASS="command"
>include</B
> Statement Definition and
Usage</A
></DT
><DT
>6.2.7. <A
HREF="Bv9ARM.ch06.html#AEN1410"
><B
CLASS="command"
>key</B
> Statement Grammar</A
></DT
><DT
>6.2.8. <A
HREF="Bv9ARM.ch06.html#AEN1417"
><B
CLASS="command"
>key</B
> Statement Definition and Usage</A
></DT
><DT
>6.2.9. <A
HREF="Bv9ARM.ch06.html#AEN1429"
><B
CLASS="command"
>logging</B
> Statement Grammar</A
></DT
><DT
>6.2.10. <A
HREF="Bv9ARM.ch06.html#AEN1468"
><B
CLASS="command"
>logging</B
> Statement Definition and
Usage</A
></DT
><DT
>6.2.11. <A
HREF="Bv9ARM.ch06.html#AEN1662"
><B
CLASS="command"
>options</B
> Statement Grammar</A
></DT
><DT
>6.2.12. <A
HREF="Bv9ARM.ch06.html#AEN1838"
><B
CLASS="command"
>options</B
> Statement Definition and
Usage</A
></DT
><DT
>6.2.13. <A
HREF="Bv9ARM.ch06.html#server_statement_grammar"
><B
CLASS="command"
>server</B
>
Statement Grammar</A
></DT
><DT
>6.2.14. <A
HREF="Bv9ARM.ch06.html#server_statement_definition_and_usage"
><B
CLASS="command"
>server</B
> Statement Definition
and Usage</A
></DT
><DT
>6.2.15. <A
HREF="Bv9ARM.ch06.html#AEN2750"
><B
CLASS="command"
>trusted-keys</B
> Statement Grammar</A
></DT
><DT
>6.2.16. <A
HREF="Bv9ARM.ch06.html#AEN2766"
><B
CLASS="command"
>trusted-keys</B
> Statement Definition
and Usage</A
></DT
><DT
>6.2.17. <A
HREF="Bv9ARM.ch06.html#AEN2774"
><B
CLASS="command"
>view</B
> Statement Grammar</A
></DT
><DT
>6.2.18. <A
HREF="Bv9ARM.ch06.html#AEN2786"
><B
CLASS="command"
>view</B
> Statement Definition and Usage</A
></DT
><DT
>6.2.19. <A
HREF="Bv9ARM.ch06.html#zone_statement_grammar"
><B
CLASS="command"
>zone</B
>
Statement Grammar</A
></DT
><DT
>6.2.20. <A
HREF="Bv9ARM.ch06.html#AEN2902"
><B
CLASS="command"
>zone</B
> Statement Definition and Usage</A
></DT
></DL
></DD
><DT
>6.3. <A
HREF="Bv9ARM.ch06.html#AEN3213"
>Zone File</A
></DT
><DD
><DL
><DT
>6.3.1. <A
HREF="Bv9ARM.ch06.html#types_of_resource_records_and_when_to_use_them"
>Types of Resource Records and When to Use Them</A
></DT
><DT
>6.3.2. <A
HREF="Bv9ARM.ch06.html#AEN3533"
>Discussion of MX Records</A
></DT
><DT
>6.3.3. <A
HREF="Bv9ARM.ch06.html#Setting_TTLs"
>Setting TTLs</A
></DT
><DT
>6.3.4. <A
HREF="Bv9ARM.ch06.html#AEN3654"
>Inverse Mapping in IPv4</A
></DT
><DT
>6.3.5. <A
HREF="Bv9ARM.ch06.html#AEN3681"
>Other Zone File Directives</A
></DT
><DT
>6.3.6. <A
HREF="Bv9ARM.ch06.html#AEN3738"
><SPAN
CLASS="acronym"
>BIND</SPAN
> Master File Extension: the <B
CLASS="command"
>$GENERATE</B
> Directive</A
></DT
></DL
></DD
></DL
></DD
><DT
>7. <A
HREF="Bv9ARM.ch07.html"
><SPAN
CLASS="acronym"
>BIND</SPAN
> 9 Security Considerations</A
></DT
><DD
><DL
><DT
>7.1. <A
HREF="Bv9ARM.ch07.html#Access_Control_Lists"
>Access Control Lists</A
></DT
><DT
>7.2. <A
HREF="Bv9ARM.ch07.html#AEN3819"
><B
CLASS="command"
>chroot</B
> and <B
CLASS="command"
>setuid</B
> (for
UNIX servers)</A
></DT
><DD
><DL
><DT
>7.2.1. <A
HREF="Bv9ARM.ch07.html#AEN3842"
>The <B
CLASS="command"
>chroot</B
> Environment</A
></DT
><DT
>7.2.2. <A
HREF="Bv9ARM.ch07.html#AEN3857"
>Using the <B
CLASS="command"
>setuid</B
> Function</A
></DT
></DL
></DD
><DT
>7.3. <A
HREF="Bv9ARM.ch07.html#AEN3865"
>Dynamic Updates</A
></DT
></DL
></DD
><DT
>8. <A
HREF="Bv9ARM.ch08.html"
>Troubleshooting</A
></DT
><DD
><DL
><DT
>8.1. <A
HREF="Bv9ARM.ch08.html#AEN3873"
>Common Problems</A
></DT
><DD
><DL
><DT
>8.1.1. <A
HREF="Bv9ARM.ch08.html#AEN3875"
>It's not working; how can I figure out what's wrong?</A
></DT
></DL
></DD
><DT
>8.2. <A
HREF="Bv9ARM.ch08.html#AEN3879"
>Incrementing and Changing the Serial Number</A
></DT
><DT
>8.3. <A
HREF="Bv9ARM.ch08.html#AEN3884"
>Where Can I Get Help?</A
></DT
></DL
></DD
><DT
>A. <A
HREF="Bv9ARM.ch09.html"
>Appendices</A
></DT
><DD
><DL
><DT
>A.1. <A
HREF="Bv9ARM.ch09.html#AEN3900"
>Acknowledgements</A
></DT
><DD
><DL
><DT
>A.1.1. <A
HREF="Bv9ARM.ch09.html#AEN3902"
>A Brief History of the <SPAN
CLASS="acronym"
>DNS</SPAN
> and <SPAN
CLASS="acronym"
>BIND</SPAN
></A
></DT
></DL
></DD
><DT
>A.2. <A
HREF="Bv9ARM.ch09.html#historical_dns_information"
>Historical <SPAN
CLASS="acronym"
>DNS</SPAN
> Information</A
></DT
><DD
><DL
><DT
>A.2.1. <A
HREF="Bv9ARM.ch09.html#classes_of_resource_records"
>Classes of Resource Records</A
></DT
></DL
></DD
><DT
>A.3. <A
HREF="Bv9ARM.ch09.html#AEN3941"
>General <SPAN
CLASS="acronym"
>DNS</SPAN
> Reference Information</A
></DT
><DD
><DL
><DT
>A.3.1. <A
HREF="Bv9ARM.ch09.html#AEN3944"
>IPv6 addresses (A6)</A
></DT
></DL
></DD
><DT
>A.4. <A
HREF="Bv9ARM.ch09.html#bibliography"
>Bibliography (and Suggested Reading)</A
></DT
><DD
><DL
><DT
>A.4.1. <A
HREF="Bv9ARM.ch09.html#rfcs"
>Request for Comments (RFCs)</A
></DT
><DT
>A.4.2. <A
HREF="Bv9ARM.ch09.html#internet_drafts"
>Internet Drafts</A
></DT
><DT
>A.4.3. <A
HREF="Bv9ARM.ch09.html#AEN4550"
>Other Documents About <SPAN
CLASS="acronym"
>BIND</SPAN
></A
></DT
></DL
></DD
></DL
></DD
></DL
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="Bv9ARM.ch01.html"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Introduction</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

File diff suppressed because it is too large Load Diff

View File

@@ -1,3 +1,4 @@
/*
* Copyright (C) 1999, 2000 Internet Software Consortium.
*
@@ -15,7 +16,7 @@
* SOFTWARE.
*/
/* $Id: adb.c,v 1.142 2000/06/22 21:54:19 tale Exp $ */
/* $Id: adb.c,v 1.142.2.1 2000/10/20 21:45:46 gson Exp $ */
/*
* Implementation notes
@@ -416,7 +417,10 @@ static isc_result_t dbfind_a6(dns_adbname_t *, isc_stdtime_t);
(r) == DNS_R_NCACHENXRRSET)
#define AUTH_NX(r) ((r) == DNS_R_NXDOMAIN || \
(r) == DNS_R_NXRRSET)
#define NXDOMAIN_RESULT(r) ((r) == DNS_R_NXDOMAIN || \
(r) == DNS_R_NCACHENXDOMAIN)
#define NXRRSET_RESULT(r) ((r) == DNS_R_NCACHENXRRSET || \
(r) == DNS_R_NXRRSET)
static void
DP(int level, const char *format, ...) {
@@ -2537,10 +2541,17 @@ dns_adb_createfind(dns_adb_t *adb, isc_task_t *task, isc_taskaction_t action,
}
/*
* Listen to negative cache hints, and don't start
* another query.
* If the name doesn't exist at all, don't bother with
* v6 queries; they won't work.
*
* If the name does exist but we didn't get our data, go
* ahead and try a6.
*
* If the result is neigher of these, try a fetch for A.
*/
if (NCACHE_RESULT(result) || AUTH_NX(result))
if (NXDOMAIN_RESULT(result))
goto fetch;
else if (NXRRSET_RESULT(result))
goto v6;
wanted_fetches |= DNS_ADBFIND_INET;
@@ -2569,6 +2580,47 @@ dns_adb_createfind(dns_adb_t *adb, isc_task_t *task, isc_taskaction_t action,
goto post_copy;
}
/*
* If the name doesn't exist at all, jump to the fetch
* code.
*
* If the name exists but the A6 doesn't, try starting
* an aaaa database search.
*
* If neither of these are true, say we want an A6 fetch
* and perhaps we'll get lucky.
*/
if (NXDOMAIN_RESULT(result))
goto fetch;
else if (NXRRSET_RESULT(result))
goto aaaa;
else {
wanted_fetches |= DNS_ADBFIND_INET6;
goto fetch;
}
aaaa:
result = dbfind_name(adbname, now, dns_rdatatype_aaaa);
if (result == ISC_R_SUCCESS) {
DP(DEF_LEVEL,
"dns_adb_createfind: found AAAA for name %p",
adbname);
goto fetch;
}
/*
* Did we get a CNAME or DNAME? This should have hit
* during the A6 query, but we'll reproduce it here Just
* In Case.
*/
if (result == DNS_R_ALIAS) {
DP(DEF_LEVEL,
"dns_adb_createfind: name %p is an alias",
adbname);
alias = ISC_TRUE;
goto post_copy;
}
/*
* Listen to negative cache hints, and don't start
* another query.
@@ -3211,7 +3263,7 @@ dbfind_a6(dns_adbname_t *adbname, isc_stdtime_t now) {
* for now.
*/
DP(NCACHE_LEVEL,
"adb name %p: Caching auth negative entry for AAAA",
"adb name %p: Caching auth negative entry for A6",
adbname);
adbname->expire_v6 = now + 30;
break;

View File

@@ -1,3 +1,3 @@
LIBINTERFACE = 1
LIBINTERFACE = 2
LIBREVISION = 0
LIBAGE = 0
LIBAGE = 1

View File

@@ -15,7 +15,7 @@
* SOFTWARE.
*/
/* $Id: confzone.c,v 1.47.2.1 2000/07/25 22:47:39 gson Exp $ */
/* $Id: confzone.c,v 1.47.2.3 2000/10/18 19:10:27 gson Exp $ */
#include <config.h>
@@ -575,12 +575,17 @@ dns_c_zone_validate(dns_c_zone_t *zone)
dns_c_iplist_t *iplist = NULL;
dns_ssutable_t *ssutable = NULL;
isc_result_t tmpres;
dns_c_forw_t tmpfwd;
isc_result_t result = ISC_R_SUCCESS;
const char *autherr = "zone '%s': allow-update is ignored when "
"update-policy is also used";
const char *nomasterserr = "zone '%s': missing 'masters' entry";
const char *emptymasterserr = "zone '%s': 'masters' value is empty";
const char *disabledzone = "zone '%s': is disabled";
const char *forwarderr = "zone '%s': the per-zone 'forward' statement "
"is not yet implemented";
const char *forwarderserr = "zone '%s': the per-zone 'forwarders' "
"statment is not yet implemented";
/*
* Check if zone is diabled. This isn't really a validation, just a
@@ -633,6 +638,16 @@ dns_c_zone_validate(dns_c_zone_t *zone)
}
}
if (dns_c_zone_getforward(zone, &tmpfwd) == ISC_R_SUCCESS)
isc_log_write(dns_lctx, DNS_LOGCATEGORY_CONFIG,
DNS_LOGMODULE_CONFIG, ISC_LOG_WARNING,
forwarderr, zone->name);
if (dns_c_zone_getforwarders(zone, &iplist) == ISC_R_SUCCESS)
isc_log_write(dns_lctx, DNS_LOGCATEGORY_CONFIG,
DNS_LOGMODULE_CONFIG, ISC_LOG_WARNING,
forwarderserr, zone->name);
return (result);
}

View File

@@ -15,7 +15,7 @@
* SOFTWARE.
*/
/* $Id: message.c,v 1.131.2.9 2000/10/12 00:14:42 mws Exp $ */
/* $Id: message.c,v 1.131.2.10 2000/10/20 21:44:09 gson Exp $ */
/***
*** Imports
@@ -2745,7 +2745,8 @@ dns_message_sectiontotext(dns_message_t *msg, dns_section_t section,
}
result = dns_message_nextname(msg, section);
} while (result == ISC_R_SUCCESS);
if ((flags & DNS_MESSAGETEXTFLAG_NOHEADERS) == 0)
if ((flags & DNS_MESSAGETEXTFLAG_NOHEADERS) == 0 &&
(flags & DNS_MESSAGETEXTFLAG_NOCOMMENTS) == 0)
ADD_STRING(target, "\n");
if (result == ISC_R_NOMORE)
result = ISC_R_SUCCESS;
@@ -2794,7 +2795,9 @@ dns_message_pseudosectiontotext(dns_message_t *msg,
ADD_STRING(target, ";; TSIG PSEUDOSECTION:\n");
result = dns_rdataset_totext(ps, name, omit_final_dot,
ISC_FALSE, target);
ADD_STRING(target, "\n");
if ((flags & DNS_MESSAGETEXTFLAG_NOHEADERS) == 0 &&
(flags & DNS_MESSAGETEXTFLAG_NOCOMMENTS) == 0)
ADD_STRING(target, "\n");
return (result);
case DNS_PSEUDOSECTION_SIG0:
ps = dns_message_getsig0(msg, &name);
@@ -2804,7 +2807,8 @@ dns_message_pseudosectiontotext(dns_message_t *msg,
ADD_STRING(target, ";; SIG0 PSEUDOSECTION:\n");
result = dns_rdataset_totext(ps, name, omit_final_dot,
ISC_FALSE, target);
if ((flags & DNS_MESSAGETEXTFLAG_NOHEADERS) == 0)
if ((flags & DNS_MESSAGETEXTFLAG_NOHEADERS) == 0 &&
(flags & DNS_MESSAGETEXTFLAG_NOCOMMENTS) == 0)
ADD_STRING(target, "\n");
return (result);
}

View File

@@ -15,7 +15,7 @@
* SOFTWARE.
*/
/* $Id: tsigconf.c,v 1.7.2.1 2000/07/28 00:05:41 gson Exp $ */
/* $Id: tsigconf.c,v 1.7.2.2 2000/10/26 06:07:35 gson Exp $ */
#include <config.h>
@@ -80,10 +80,6 @@ add_initial_keys(dns_c_kdeflist_t *list, dns_tsig_keyring_t *ring,
alg = &tempalg;
}
if (strlen(key->secret) % 4 != 0) {
ret = ISC_R_BADBASE64;
goto failure;
}
secretalloc = secretlen = strlen(key->secret) * 3 / 4;
secret = isc_mem_get(mctx, secretlen);
if (secret == NULL) {

View File

@@ -1,3 +1,3 @@
LIBINTERFACE = 1
LIBINTERFACE = 2
LIBREVISION = 0
LIBAGE = 0
LIBAGE = 1

View File

@@ -19,7 +19,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
/* $Id: getaddrinfo.c,v 1.23.2.4 2000/08/03 20:23:01 gson Exp $ */
/* $Id: getaddrinfo.c,v 1.23.2.5 2000/10/19 23:57:20 gson Exp $ */
#include <config.h>
@@ -35,7 +35,6 @@
#include <string.h>
#include <errno.h>
#include <stdlib.h>
#include <resolv.h>
#include <lwres/lwres.h>
#include <lwres/net.h>

View File

@@ -1194,11 +1194,11 @@ EOF
netbsd*)
if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib'
archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
else
archive_cmds='$LD -Bshareable $libobjs $deplibs $linkopts -o $lib'
archive_cmds='$LD -Bshareable $libobjs $deplibs $linkopts -o $lib' # a.out
# can we support soname and/or expsyms with a.out? -oliva
else
archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib'
archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' # ELF
fi
;;

View File

@@ -1,4 +1,4 @@
# $Id: version,v 1.15.2.13 2000/09/16 01:38:28 gson Exp $
# $Id: version,v 1.15.2.14 2000/10/20 20:35:36 gson Exp $
#
# This file must follow /bin/sh rules. It is imported directly via
# configure.
@@ -6,5 +6,5 @@
MAJORVER=9
MINORVER=0
PATCHVER=1
RELEASETYPE=b
RELEASETYPE=rc
RELEASEVER=1