diff options
Diffstat (limited to 'doc/arm/configuration.rst')
-rw-r--r-- | doc/arm/configuration.rst | 320 |
1 files changed, 320 insertions, 0 deletions
diff --git a/doc/arm/configuration.rst b/doc/arm/configuration.rst new file mode 100644 index 0000000..0b8d8ec --- /dev/null +++ b/doc/arm/configuration.rst @@ -0,0 +1,320 @@ +.. Copyright (C) Internet Systems Consortium, Inc. ("ISC") +.. +.. SPDX-License-Identifier: MPL-2.0 +.. +.. This Source Code Form is subject to the terms of the Mozilla Public +.. License, v. 2.0. If a copy of the MPL was not distributed with this +.. file, you can obtain one at https://mozilla.org/MPL/2.0/. +.. +.. See the COPYRIGHT file distributed with this work for additional +.. information regarding copyright ownership. + +.. Configuration: + +Name Server Configuration +========================= + +In this chapter we provide some suggested configurations, along with +guidelines for their use. We suggest reasonable values for certain +option settings. + +.. _sample_configuration: + +Sample Configurations +--------------------- + +.. _cache_only_sample: + +A Caching-only Name Server +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +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 using the ``allow-query`` option. +The same effect can be achieved using suitable firewall +rules. + +:: + + // Two corporate subnets we wish to allow queries from. + acl corpnets { 192.168.4.0/24; 192.168.7.0/24; }; + options { + // Working directory + directory "/etc/namedb"; + + allow-query { corpnets; }; + }; + // Provide a reverse mapping for the loopback + // address 127.0.0.1 + zone "0.0.127.in-addr.arpa" { + type primary; + file "localhost.rev"; + notify no; + }; + +.. _auth_only_sample: + +An Authoritative-only Name Server +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +This sample configuration is for an authoritative-only server that is +the primary server for ``example.com`` and a secondary server for the subdomain +``eng.example.com``. + +:: + + options { + // Working directory + directory "/etc/namedb"; + // Do not allow access to cache + allow-query-cache { none; }; + // This is the default + allow-query { any; }; + // Do not provide recursive service + recursion no; + }; + + // Provide a reverse mapping for the loopback + // address 127.0.0.1 + zone "0.0.127.in-addr.arpa" { + type primary; + file "localhost.rev"; + notify no; + }; + // We are the primary server for example.com + zone "example.com" { + type primary; + file "example.com.db"; + // IP addresses of secondary servers allowed to + // transfer example.com + allow-transfer { + 192.168.4.14; + 192.168.5.53; + }; + }; + // We are a secondary server for eng.example.com + zone "eng.example.com" { + type secondary; + file "eng.example.com.bk"; + // IP address of eng.example.com primary server + masters { 192.168.4.12; }; + }; + +.. _load_balancing: + +Load Balancing +-------------- + +A primitive form of load balancing can be achieved in the DNS by using +multiple records (such as multiple A records) for one name. + +For example, assuming three HTTP 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: + ++-----------+------+----------+----------+----------------------------+ +| Name | TTL | CLASS | TYPE | Resource Record (RR) Data | ++-----------+------+----------+----------+----------------------------+ +| www | 600 | IN | A | 10.0.0.1 | ++-----------+------+----------+----------+----------------------------+ +| | 600 | IN | A | 10.0.0.2 | ++-----------+------+----------+----------+----------------------------+ +| | 600 | IN | A | 10.0.0.3 | ++-----------+------+----------+----------+----------------------------+ + +When a resolver queries for these records, BIND rotates them and +responds to the query with the records in a different order. In the +example above, clients randomly receive records in the order 1, 2, +3; 2, 3, 1; and 3, 1, 2. Most clients use the first record returned +and discard the rest. + +For more detail on ordering responses, check the ``rrset-order`` +sub-statement in the ``options`` statement; see :ref:`rrset_ordering`. + +.. _ns_operations: + +Name Server Operations +---------------------- + +.. _tools: + +Tools for Use With the Name Server Daemon +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +This section describes several indispensable diagnostic, administrative, +and monitoring tools available to the system administrator for +controlling and debugging the name server daemon. + +.. _diagnostic_tools: + +Diagnostic Tools +^^^^^^^^^^^^^^^^ + +The ``dig``, ``host``, and ``nslookup`` programs are all command-line +tools for manually querying name servers. They differ in style and +output format. + +``dig`` + ``dig`` is the most versatile and complete of these lookup tools. It + 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. + + For more information and a list of available commands and options, + see :ref:`man_dig`. + +``host`` + The ``host`` utility emphasizes simplicity and ease of use. By + default, it converts between host names and Internet addresses, but + its functionality can be extended with the use of options. + + For more information and a list of available commands and options, + see :ref:`man_host`. + +``nslookup`` + ``nslookup`` has two modes: interactive and non-interactive. + Interactive mode allows the user to query name servers 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. + + Due to its arcane user interface and frequently inconsistent + behavior, we do not recommend the use of ``nslookup``. Use ``dig`` + instead. + +.. _admin_tools: + +Administrative Tools +^^^^^^^^^^^^^^^^^^^^ + +Administrative tools play an integral part in the management of a +server. + +``named-checkconf`` + The ``named-checkconf`` program checks the syntax of a ``named.conf`` + file. + + For more information and a list of available commands and options, + see :ref:`man_named-checkconf`. + +``named-checkzone`` + The ``named-checkzone`` program checks a zone file for syntax and + consistency. + + For more information and a list of available commands and options, + see :ref:`man_named-checkzone`. + +``named-compilezone`` + This tool is similar to ``named-checkzone`` but it always dumps the zone content + to a specified file (typically in a different format). + + For more information and a list of available commands and options, + see :ref:`man_named-compilezone`. + +``rndc`` + The remote name daemon control (``rndc``) program allows the system + administrator to control the operation of a name server. + + See :ref:`man_rndc` for details of the available ``rndc`` + commands. + + ``rndc`` requires a configuration file, 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 ``/etc/rndc.conf``, but an alternate location + can be specified with the ``-c`` option. If the configuration file is + not found, ``rndc`` also looks in ``/etc/rndc.key`` (or whatever + ``sysconfdir`` was defined when the BIND build was configured). The + ``rndc.key`` file is generated by running ``rndc-confgen -a`` as + described in :ref:`controls_statement_definition_and_usage`. + + The format of the configuration file is similar to that of + ``named.conf``, but is limited to only four statements: the ``options``, + ``key``, ``server``, and ``include`` 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. + + The ``options`` statement has three clauses: ``default-server``, + ``default-key``, and ``default-port``. ``default-server`` takes a + host name or address argument and represents the server that is + contacted if no ``-s`` option is provided on the command line. + ``default-key`` takes the name of a key as its argument, as defined + by a ``key`` statement. ``default-port`` specifies the port to which + ``rndc`` should connect if no port is given on the command line or in + a ``server`` statement. + + The ``key`` statement defines a key to be used by ``rndc`` when + authenticating with ``named``. Its syntax is identical to the ``key`` + statement in ``named.conf``. The keyword ``key`` is followed by a key + name, which must be a valid domain name, though it need not actually + be hierarchical; thus, a string like ``rndc_key`` is a valid name. + The ``key`` statement has two clauses: ``algorithm`` and ``secret``. + While the configuration parser accepts any string as the argument + to ``algorithm``, currently only the strings ``hmac-md5``, + ``hmac-sha1``, ``hmac-sha224``, ``hmac-sha256``, + ``hmac-sha384``, and ``hmac-sha512`` have any meaning. The secret + is a Base64-encoded string as specified in :rfc:`3548`. + + The ``server`` statement associates a key defined using the ``key`` + statement with a server. The keyword ``server`` is followed by a host + name or address. The ``server`` statement has two clauses: ``key`` + and ``port``. The ``key`` clause specifies the name of the key to be + used when communicating with this server, and the ``port`` clause can + be used to specify the port ``rndc`` should connect to on the server. + + A sample minimal configuration file is as follows: + + :: + + key rndc_key { + algorithm "hmac-sha256"; + secret + "c3Ryb25nIGVub3VnaCBmb3IgYSBtYW4gYnV0IG1hZGUgZm9yIGEgd29tYW4K"; + }; + options { + default-server 127.0.0.1; + default-key rndc_key; + }; + + This file, if installed as ``/etc/rndc.conf``, allows the + command: + + ``$ rndc reload`` + + to connect to 127.0.0.1 port 953 and causes the name server to reload, + if a name server on the local machine is running with the following + controls statements: + + :: + + controls { + inet 127.0.0.1 + allow { localhost; } keys { rndc_key; }; + }; + + and it has an identical key statement for ``rndc_key``. + + Running the ``rndc-confgen`` program conveniently creates an + ``rndc.conf`` file, and also displays the corresponding + ``controls`` statement needed to add to ``named.conf``. + Alternatively, it is possible to run ``rndc-confgen -a`` to set up an + ``rndc.key`` file and not modify ``named.conf`` at all. + +Signals +~~~~~~~ + +Certain Unix signals cause the name server to take specific actions, as +described in the following table. These signals can be sent using the +``kill`` command. + ++--------------+-------------------------------------------------------+ +| ``SIGHUP`` | Causes the server to read ``named.conf`` and reload | +| | the database. | ++--------------+-------------------------------------------------------+ +| ``SIGTERM`` | Causes the server to clean up and exit. | ++--------------+-------------------------------------------------------+ +| ``SIGINT`` | Causes the server to clean up and exit. | ++--------------+-------------------------------------------------------+ + +.. include:: plugins.rst |