From: Tomek Mrugalski Date: Fri, 1 Jun 2012 13:02:10 +0000 (+0200) Subject: [1651] BIND10 Guide updated (dhcp4 and libdhcp++ sections) X-Git-Tag: trac2351_base~234 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=adbe84e00e58cd7ca74e131ecc53992299ff9894;p=thirdparty%2Fkea.git [1651] BIND10 Guide updated (dhcp4 and libdhcp++ sections) --- diff --git a/doc/guide/bind10-guide.html b/doc/guide/bind10-guide.html index b879af5dd2..b2286f4602 100644 --- a/doc/guide/bind10-guide.html +++ b/doc/guide/bind10-guide.html @@ -1,4 +1,4 @@ -BIND 10 Guide

BIND 10 Guide

Administrator Reference for BIND 10

This is the reference guide for BIND 10 version +BIND 10 Guide

BIND 10 Guide

Administrator Reference for BIND 10

This is the reference guide for BIND 10 version 20120405.

Abstract

BIND 10 is a framework that features Domain Name System (DNS) suite and Dynamic Host Configuration Protocol (DHCP) servers managed by Internet Systems Consortium (ISC). It @@ -10,9 +10,9 @@ The most up-to-date version of this document (in PDF, HTML, and plain text formats), along with other documents for BIND 10, can be found at http://bind10.isc.org/docs. -


List of Tables

3.1.

Preface

Table of Contents

1. Acknowledgements

1. Acknowledgements

ISC would like to acknowledge generous support for +


List of Tables

3.1.

Preface

Table of Contents

1. Acknowledgements

1. Acknowledgements

ISC would like to acknowledge generous support for BIND 10 development of DHCPv4 and DHCPv6 components provided - by Comcast.

Chapter 1. Introduction

BIND is the popular implementation of a DNS server, developer interfaces, and DNS tools. BIND 10 is a rewrite of BIND 9. BIND 10 is written in C++ and Python @@ -23,7 +23,7 @@

This guide covers the experimental prototype of BIND 10 version 20120405. -

1.1. Supported Platforms

+

1.1. Supported Platforms

BIND 10 builds have been tested on Debian GNU/Linux 5 and unstable, Ubuntu 9.10, NetBSD 5, Solaris 10, FreeBSD 7 and 8, CentOS Linux 5.3, and MacOS 10.6. @@ -162,7 +162,7 @@ and, of course, DNS. These include detailed developer documentation and code examples. -

Chapter 2. Installation

2.1. Building Requirements

+

Chapter 2. Installation

2.1. Building Requirements

In addition to the run-time requirements, building BIND 10 from source code requires various development include headers.

Note

@@ -224,14 +224,14 @@ the Git code revision control system or as a downloadable tar file. It may also be available in pre-compiled ready-to-use packages from operating system vendors. -

2.3.1. Download Tar File

+

2.3.1. Download Tar File

Downloading a release tar file is the recommended method to obtain the source code.

The BIND 10 releases are available as tar file downloads from ftp://ftp.isc.org/isc/bind10/. Periodic development snapshots may also be available. -

2.3.2. Retrieve from Git

+

2.3.2. Retrieve from Git

Downloading this "bleeding edge" code is recommended only for developers or advanced users. Using development code in a production environment is not recommended. @@ -265,7 +265,7 @@ autoheader, automake, and related commands. -

2.3.3. Configure before the build

+

2.3.3. Configure before the build

BIND 10 uses the GNU Build System to discover build environment details. To generate the makefiles using the defaults, simply run: @@ -296,16 +296,16 @@

If the configure fails, it may be due to missing or old dependencies. -

2.3.4. Build

+

2.3.4. Build

After the configure step is complete, to build the executables from the C++ code and prepare the Python scripts, run:

$ make

-

2.3.5. Install

+

2.3.5. Install

To install the BIND 10 executables, support files, and documentation, run:

$ make install

-

Note

The install step may require superuser privileges.

2.3.6. Install Hierarchy

+

Note

The install step may require superuser privileges.

2.3.6. Install Hierarchy

The following is the layout of the complete BIND 10 installation:

  • bin/ — @@ -360,9 +360,8 @@ In its default configuration, the bind10 master process will also start up b10-cmdctl for administration tools to - communicate with the system, - b10-stats for statistics collection, and - b10-stats-httpd for statistics reporting. + communicate with the system, and + b10-stats for statistics collection.

    3.1. Starting BIND 10

    To start the BIND 10 service, simply run bind10. Run it with the --verbose switch to @@ -398,7 +397,7 @@ during startup or shutdown. Unless specified, the component is started in usual way. This is the list of components that need to be started in a special way, with the value of special used for them: -

    Table 3.1. 

    ComponentSpecialDescription
    b10-authauthAuthoritative server
    b10-resolverresolverThe resolver
    b10-cmdctlcmdctlThe command control (remote control interface)


    +

    Table 3.1. 

    ComponentSpecialDescription
    b10-authauthAuthoritative server
    b10-resolverresolverThe resolver
    b10-cmdctlcmdctlThe command control (remote control interface)


    The kind specifies how a failure of the component should be handled. If it is set to dispensable @@ -626,12 +625,12 @@ shutdown the details and relays (over a b10-msgq command channel) the configuration on to the specified module.

    -

    Chapter 8. Authoritative Server

    The b10-auth is the authoritative DNS server. It supports EDNS0 and DNSSEC. It supports IPv6. Normally it is started by the bind10 master process. -

    8.1. Server Configurations

    +

    8.1. Server Configurations

    b10-auth is configured via the b10-cfgmgr configuration manager. The module name is Auth. @@ -711,7 +710,7 @@ This may be a temporary setting until then. if configured.)

    -

    8.2. Data Source Backends

    Note

    +

    8.2. Data Source Backends

    Note

    For the development prototype release, b10-auth supports a SQLite3 data source backend and in-memory data source backend. @@ -771,7 +770,7 @@ This may be a temporary setting until then. and/or zones[0] for the relevant zone as needed.) -

    8.3. Loading Master Zones Files

    +

    8.3. Loading Master Zones Files

    RFC 1035 style DNS master zone files may imported into a BIND 10 SQLite3 data source by using the b10-loadzone utility. @@ -800,7 +799,7 @@ This may be a temporary setting until then. If you reload a zone already existing in the database, all records from that prior zone disappear and a whole new set appears. -

Chapter 9. Incoming Zone Transfers

Incoming zones are transferred using the b10-xfrin process which is started by bind10. When received, the zone is stored in the corresponding BIND 10 @@ -818,7 +817,7 @@ This may be a temporary setting until then. In the current development release of BIND 10, incoming zone transfers are only available for SQLite3-based data sources, that is, they don't work for an in-memory data source. -

9.1. Configuration for Incoming Zone Transfers

+

9.1. Configuration for Incoming Zone Transfers

In practice, you need to specify a list of secondary zones to enable incoming zone transfers for these zones (you can still trigger a zone transfer manually, without a prior configuration @@ -834,7 +833,7 @@ This may be a temporary setting until then. > config commit

(We assume there has been no zone configuration before). -

9.2. Enabling IXFR

+

9.2. Enabling IXFR

As noted above, b10-xfrin uses AXFR for zone transfers by default. To enable IXFR for zone transfers for a particular zone, set the use_ixfr @@ -886,7 +885,7 @@ This may be a temporary setting until then. (i.e. no SOA record for it), b10-zonemgr will automatically tell b10-xfrin to transfer the zone in. -

9.4. Trigger an Incoming Zone Transfer Manually

+

9.4. Trigger an Incoming Zone Transfer Manually

To manually trigger a zone transfer to retrieve a remote zone, you may use the bindctl utility. For example, at the bindctl prompt run: @@ -935,7 +934,7 @@ Xfrout/transfer_acl[0] {"action": "ACCEPT"} any (default)

TSIGs in the incoming messages and to sign responses.

Note

The way to specify zone specific configuration (ACLs, etc) is likely to be changed. -

Chapter 11. Recursive Name Server

+

Chapter 11. Recursive Name Server

The b10-resolver process is started by bind10. @@ -969,7 +968,7 @@ Xfrout/transfer_acl[0] {"action": "ACCEPT"} any (default)

(Replace the 2 as needed; run config show - Resolver/listen_on if needed.)

11.1. Access Control

+ Resolver/listen_on” if needed.)

11.1. Access Control

By default, the b10-resolver daemon only accepts DNS queries from the localhost (127.0.0.1 and ::1). The Resolver/query_acl configuration may @@ -1002,7 +1001,7 @@ Xfrout/transfer_acl[0] {"action": "ACCEPT"} any (default)

(Replace the 2 as needed; run config show Resolver/query_acl if needed.)

Note

This prototype access control configuration - syntax may be changed.

11.2. Forwarding

+ syntax may be changed.

11.2. Forwarding

To enable forwarding, the upstream address and port must be configured to forward queries to, such as: @@ -1051,21 +1050,18 @@ Xfrout/transfer_acl[0] {"action": "ACCEPT"} any (default)

significant limitations. See Section 12.4, “DHCPv4 Server Limitations” for details.

- The DHCPv4 server is implemented as b10-dhcp4 - daemon. As it is not configurable yet, it is fully autonomous, - that is it does not interact with b10-cfgmgr. - To start DHCPv4 server, simply input: - -

-#cd src/bin/dhcp4
-#./b10-dhcp4
-

- - Depending on your installation, b10-dhcp4 - binary may reside in src/bin/dhcp4 in your source code - directory, in /usr/local/bin/b10-dhcp4 or other directory - you specified during compilation. - + b10-dhcp4 is a BIND10 component and is being + run under BIND10 framework. To add a DHCPv4 process to the set of running + BIND10 services, you can use following commands in bindctl: +

> config add Boss/components b10-dhcp4
+> config set Boss/components/b10-dhcp4/kind dispensable
+> config commit

+ To shutdown running b10-dhcp4, please use the + following command: +

> Dhcp4 shutdown

+ or +

> config remove Boss/components b10-dhcp4
+> config commit

At start, the server will detect available network interfaces and will attempt to open UDP sockets on all interfaces that are up, running, are not loopback, and have IPv4 address @@ -1125,13 +1121,7 @@ const std::string HARDCODED_SERVER_ID = "192.0.2.1";

currently hardcoded. The only way to tweak configuration is to directly modify source code. See see Section 12.2, “DHCPv4 Server Configuration” for details.

  • Upon start, the server will open sockets on all interfaces that are not loopback, are up and running and - have IPv4 address. Support for multiple interfaces is not - coded in reception routines yet, so if you are running - this code on a machine that has many interfaces and - b10-dhcp4 happens to listen on wrong - interface, the easiest way to work around this problem is - to turn down other interfaces. This limitation will be - fixed shortly.
  • PRL (Parameter Request List, a list of options + have IPv4 address.
  • PRL (Parameter Request List, a list of options requested by a client) is currently ignored and server assigns DNS SERVER and DOMAIN NAME options.
  • b10-dhcp4 does not support BOOTP. That is a design choice. This limitation is @@ -1261,22 +1251,10 @@ const std::string HARDCODED_DNS_SERVER = "2001:db8:1::1";

    14.1. Interface detection

    Both DHCPv4 and DHCPv6 components share network interface detection routines. Interface detection is currently only supported on Linux systems.

    For non-Linux systems, there is currently stub - implementation provided. As DHCP servers need to know available - addresses, there is a simple mechanism implemented to provide - that information. User is expected to create interfaces.txt - file. Format of this file is simple. It contains list of - interfaces along with available address on each interface. This - mechanism is temporary and is going to be removed as soon as - interface detection becomes available on non-Linux - systems. Here is an example of the interfaces.txt file: -

    -# For DHCPv6, please specify link-local address (starts with fe80::)
    -# If in doubt, check output of 'ifconfig -a' command.
    -eth0 fe80::21e:8cff:fe9b:7349
    -
    -# For DHCPv4, please use following format:
    -#eth0 192.0.2.5

    -

    14.2. DHCPv4/DHCPv6 packet handling

    TODO: Describe packet handling here, with pointers to wiki

  • Chapter 15. Statistics

    + implementation provided. Interface manager detects loopback + interfaces only as their name (lo or lo0) can be easily predicted. + Please contact BIND10 development team if you are interested + in running DHCP components on systems other than Linux.

    14.2. DHCPv4/DHCPv6 packet handling

    TODO: Describe packet handling here, with pointers to wiki

    Chapter 15. Statistics

    The b10-stats process is started by bind10. It periodically collects statistics data from various modules @@ -1314,7 +1292,7 @@ eth0 fe80::21e:8cff:fe9b:7349 } }

    -

    Chapter 16. Logging

    16.1. Logging configuration

    +

    Chapter 16. Logging

    16.1. Logging configuration

    The logging system in BIND 10 is configured through the Logging module. All BIND 10 modules will look at the @@ -1323,7 +1301,7 @@ eth0 fe80::21e:8cff:fe9b:7349 -

    16.1.1. Loggers

    +

    16.1.1. Loggers

    Within BIND 10, a message is logged through a component called a "logger". Different parts of BIND 10 log messages @@ -1344,7 +1322,7 @@ eth0 fe80::21e:8cff:fe9b:7349 (what to log), and the output_options (where to log). -

    16.1.1.1. name (string)

    +

    16.1.1.1. name (string)

    Each logger in the system has a name, the name being that of the component using it to log messages. For instance, if you want to configure logging for the resolver module, @@ -1417,7 +1395,7 @@ eth0 fe80::21e:8cff:fe9b:7349 Auth.cache logger will appear in the output with a logger name of b10-auth.cache). -

    16.1.1.2. severity (string)

    +

    16.1.1.2. severity (string)

    This specifies the category of messages logged. Each message is logged with an associated severity which @@ -1433,7 +1411,7 @@ eth0 fe80::21e:8cff:fe9b:7349 -

    16.1.1.3. output_options (list)

    +

    16.1.1.3. output_options (list)

    Each logger can have zero or more output_options. These specify where log @@ -1443,7 +1421,7 @@ eth0 fe80::21e:8cff:fe9b:7349 The other options for a logger are: -

    16.1.1.4. debuglevel (integer)

    +

    16.1.1.4. debuglevel (integer)

    When a logger's severity is set to DEBUG, this value specifies what debug messages should be printed. It ranges @@ -1452,7 +1430,7 @@ eth0 fe80::21e:8cff:fe9b:7349 If severity for the logger is not DEBUG, this value is ignored. -

    16.1.1.5. additive (true or false)

    +

    16.1.1.5. additive (true or false)

    If this is true, the output_options from the parent will be used. For example, if there are two @@ -1466,18 +1444,18 @@ eth0 fe80::21e:8cff:fe9b:7349 -

    16.1.2. Output Options

    +

    16.1.2. Output Options

    The main settings for an output option are the destination and a value called output, the meaning of which depends on the destination that is set. -

    16.1.2.1. destination (string)

    +

    16.1.2.1. destination (string)

    The destination is the type of output. It can be one of: -

    • console
    • file
    • syslog

    16.1.2.2. output (string)

    +

    • console
    • file
    • syslog

    16.1.2.2. output (string)

    Depending on what is set as the output destination, this value is interpreted as follows: @@ -1507,12 +1485,12 @@ eth0 fe80::21e:8cff:fe9b:7349 The other options for output_options are: -

    16.1.2.2.1. flush (true of false)

    +

    16.1.2.2.1. flush (true of false)

    Flush buffers after each log message. Doing this will reduce performance but will ensure that if the program terminates abnormally, all messages up to the point of termination are output. -

    16.1.2.2.2. maxsize (integer)

    +

    16.1.2.2.2. maxsize (integer)

    Only relevant when destination is file, this is maximum file size of output files in bytes. When the maximum size is reached, the file is renamed and a new file opened. @@ -1521,11 +1499,11 @@ eth0 fe80::21e:8cff:fe9b:7349 etc.)

    If this is 0, no maximum file size is used. -

    16.1.2.2.3. maxver (integer)

    +

    16.1.2.2.3. maxver (integer)

    Maximum number of old log files to keep around when rolling the output file. Only relevant when destination is file. -

    16.1.3. Example session

    +

    16.1.3. Example session

    In this example we want to set the global logging to write to the file /var/log/my_bind10.log, @@ -1686,7 +1664,7 @@ Logging/loggers[0]/output_options[0]/maxver 8 integer (modified) And every module will now be using the values from the logger named *. -

    16.2. Logging Message Format

    +

    16.2. Logging Message Format

    Each message written by BIND 10 to the configured logging destinations comprises a number of components that identify the origin of the message and, if the message indicates diff --git a/doc/guide/bind10-guide.xml b/doc/guide/bind10-guide.xml index 714b0932c5..d51bb0dd11 100644 --- a/doc/guide/bind10-guide.xml +++ b/doc/guide/bind10-guide.xml @@ -2047,7 +2047,7 @@ then change those defaults with config set Resolver/forward_addresses[0]/address To shutdown running b10-dhcp4, please use the following command: - > dhcp4 shutdown + > Dhcp4 shutdown or > config remove Boss/components b10-dhcp4 > config commit @@ -2154,13 +2154,7 @@ const std::string HARDCODED_SERVER_ID = "192.0.2.1"; Upon start, the server will open sockets on all interfaces that are not loopback, are up and running and - have IPv4 address. Support for multiple interfaces is not - coded in reception routines yet, so if you are running - this code on a machine that has many interfaces and - b10-dhcp4 happens to listen on wrong - interface, the easiest way to work around this problem is - to turn down other interfaces. This limitation will be - fixed shortly. + have IPv4 address. PRL (Parameter Request List, a list of options @@ -2418,22 +2412,10 @@ const std::string HARDCODED_DNS_SERVER = "2001:db8:1::1"; currently only supported on Linux systems. For non-Linux systems, there is currently stub - implementation provided. As DHCP servers need to know available - addresses, there is a simple mechanism implemented to provide - that information. User is expected to create interfaces.txt - file. Format of this file is simple. It contains list of - interfaces along with available address on each interface. This - mechanism is temporary and is going to be removed as soon as - interface detection becomes available on non-Linux - systems. Here is an example of the interfaces.txt file: - -# For DHCPv6, please specify link-local address (starts with fe80::) -# If in doubt, check output of 'ifconfig -a' command. -eth0 fe80::21e:8cff:fe9b:7349 - -# For DHCPv4, please use following format: -#eth0 192.0.2.5 - + implementation provided. Interface manager detects loopback + interfaces only as their name (lo or lo0) can be easily predicted. + Please contact BIND10 development team if you are interested + in running DHCP components on systems other than Linux.