123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
- "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
- <!ENTITY mdash "—" >
- ]>
- <chapter id="dhcp-ddns-server">
- <title>The DHCP-DDNS Server</title>
- <para>
- The DHCP-DDNS Server (kea-dhcp-ddns, known informally as D2) conducts the client side of
- the DDNS protocol (defined in RFC 2136) on behalf of the DHCPv4 and DHCPv6
- servers (kea-dhcp4 and kea-dhcp6 respectively). The DHCP servers construct
- DDNS update requests, known as NameChangeRequests (NCRs), based upon DHCP
- lease change events and then post these to D2. D2 attempts to match
- each such request to the appropriate DNS server(s) and carry out the
- necessary conversation with those servers to update the DNS data.
- </para>
- <para>
- In order to match a request to the appropriate DNS servers, D2 must have a
- catalog of servers from which to select. In fact, D2 has two such catalogs,
- one for forward DNS and one for reverse DNS; these catalogs are referred
- to as DDNS Domain Lists. Each list consists of one or more named DDNS
- Domains. Further, each DDNS Domain has a list of one or more DNS
- servers that publish the DNS data for that domain.
- </para>
- <para>
- When conducting forward domain matching, D2 will compare the FQDN in
- the request against the name of each forward DDNS Domain. The domain
- whose name matches the longest portion of the FQDN is considered the
- best match. For example, if the FQDN is "myhost.sample.example.com.",
- and there are two forward domains in the catalog: "sample.example.com."
- and "example.com.", the former is regarded as the best match. In some
- cases, it may not be possible to find a suitable match. Given the same two
- forward domains there would be no match for the FQDN, "bogus.net", so the
- request would be rejected. Finally, if there are no forward DDNS Domains
- defined, D2 will simply disregard the forward update portion of requests.
- </para>
- <para>
- When conducting reverse domain matching, D2 constructs a reverse
- FQDN from the lease address in the request and compare that against
- the name of each reverse DDNS Domain. Again, the domain whose name matches
- the longest portion of the FQDN is considered the best match. For instance,
- if the lease address is "172.16.1.40" and there are two reverse domains in
- the catalog: "1.16.172.in-addr.arpa." and "16.172.in-addr.arpa", the
- former is the best match. As with forward matching, it is possible to not
- find a suitable match. Given the same two domains, there would be no
- match for the lease address, "192.168.1.50", and the request would be
- rejected. Finally, if there are no reverse DDNS Domains defined, D2 will
- simply disregard the reverse update portion of requests.
- </para>
- <section id="dhcp-ddns-server-start-stop">
- <title>Starting and Stopping the DHCP-DDNS Server</title>
- <para>
- <command>kea-dhcp-ddns</command> is the Kea DHCP-DDNS server
- and, due to the nature of DDNS, it is run alongside either the
- DHCPv4 or DHCPv6 components (or both). Like other parts of
- Kea, it is a separate binary that can be run on its own or through
- <command>keactrl</command> (see <xref linkend="keactrl"/>). In
- normal operation, controlling <command>kea-dhcp-ddns</command>
- with <command>keactrl</command> is recommended. However, it is also
- possible to run the DHCP-DDNS server directly. It accepts the
- following command-line switches:
- </para>
- <itemizedlist>
- <listitem>
- <simpara>
- <command>-c <replaceable>file</replaceable></command> -
- specifies the configuration file. This is the only mandatory
- switch.</simpara>
- </listitem>
- <listitem>
- <simpara>
- <command>-d</command> - specifies whether the server
- logging should be switched to debug/verbose mode. In verbose mode,
- the logging severity and debuglevel specified in the configuration
- file are ignored and "debug" severity and the maximum debuglevel
- (99) are assumed. The flag is convenient, for temporarily
- switching the server into maximum verbosity, e.g. when
- debugging.</simpara>
- </listitem>
- <listitem>
- <simpara>
- <command>-v</command> - prints out Kea version and exits.
- </simpara>
- </listitem>
- <listitem>
- <simpara>
- <command>-V</command> - prints out Kea extended version with
- additional parameters and exits.
- </simpara>
- </listitem>
- <listitem>
- <simpara>
- <command>-W</command> - prints out Kea configuration report
- and exits.
- </simpara>
- </listitem>
- </itemizedlist>
- <para>
- The <command>-V</command> command returns the versions of the
- external libraries dynamically linked.
- </para>
- <para>
- The <command>-W</command> command describes the environment used
- to build Kea. This command displays a copy of the
- <filename>config.report</filename> file produced by
- <userinput>./configure</userinput> that is embedded in the
- executable binary.
- </para>
- <para>
- The <filename>config.report</filename> may also be accessed more
- directly. The following command may be used to extract this
- information. The binary <userinput>path</userinput> may be found
- in the install directory or in the <filename>.libs</filename>
- subdirectory in the source treee. For example
- <filename>kea/src/bin/d2/.libs/kea-dhcp-ddns</filename>.
- <screen>
- strings <userinput>path</userinput>/kea-dhcp-ddns | sed -n 's/;;;; //p'
- </screen>
- </para>
- <para>
- Upon start up the module will load its configuration and begin listening
- for NCRs based on that configuration.
- </para>
- <para>
- During startup the server will attempt to create a PID file of the
- form: [localstatedir]/[conf name].kea-dhcp-ddns.pid
- where:
- <itemizedlist>
- <listitem>
- <simpara><command>localstatedir</command>: The value as passed into the
- build configure script. It defaults defaults to "/usr/local/var". Note
- that this value may be overridden at run time by setting the environment
- variable KEA_PIDFILE_DIR. This is intended primarily for testing purposes.
- </simpara>
- </listitem>
- <listitem>
- <simpara><command>conf name</command>: The confguration file name
- used to start the server, minus all preceding path and file extension.
- For example, given a pathname of "/usr/local/etc/kea/myconf.txt", the
- portion used would be "myconf".
- </simpara>
- </listitem>
- </itemizedlist>
- If the file already exists and contains the PID of a live process,
- the server will issue a DHCP_DDNS_ALREADY_RUNNING log message and exit. It
- is possible, though unlikely, that the file is a remnant of a system crash
- and the process to which the PID belongs is unrelated to Kea. In such a
- case it would be necessary to manually delete the PID file.
- </para>
- </section> <!-- end start-stop -->
- <section id="d2-configuration">
- <title>Configuring the DHCP-DDNS Server</title>
- <para>
- Before starting <command>kea-dhcp-ddns</command> module for the
- first time, a configuration file needs to be created. The following default
- configuration is a template that can be customised to your requirements.
- <screen>
- <userinput>"DhcpDdns": {
- "ip_address": "127.0.0.1",
- "port": 53001,
- "dns_server_timeout": 100,
- "ncr_protocol": "UDP",
- "ncr_format": "JSON",
- "tsig_keys": [ ],
- "forward_ddns": {
- "ddns_domains": [ ]
- },
- "reverse_ddns": {
- "ddns_domains": [ ]
- }
- }</userinput>
- </screen>
- </para>
- <para>
- The configuration can be divided as follows, each of which is described
- in its own section:
- </para>
- <itemizedlist>
- <listitem>
- <simpara>
- <command>Global Server Parameters</command> -
- values which control connectivity and global server behavior
- </simpara>
- </listitem>
- <listitem>
- <simpara>
- <command>TSIG Key Info</command> -
- defines the TSIG keys used for secure traffic with DNS servers
- </simpara>
- </listitem>
- <listitem>
- <simpara>
- <command>Forward DDNS</command> -
- defines the catalog of Forward DDNS Domains
- </simpara>
- </listitem>
- <listitem>
- <simpara>
- <command>Reverse DDNS</command> -
- defines the catalog of Forward DDNS Domains
- </simpara>
- </listitem>
- </itemizedlist>
- <section id="d2-server-parameter-config">
- <title>Global Server Parameters</title>
- <itemizedlist>
- <listitem><simpara>
- <command>ip_address</command> - IP address on which D2
- listens for requests. The default is the local loopback interface at
- address 127.0.0.1. You may specify either an IPv4 or IPv6 address.
- </simpara></listitem>
- <listitem><simpara>
- <command>port</command> - Port on which D2 listens for requests. The default value
- is 53001.
- </simpara></listitem>
- <listitem><simpara>
- <command>dns_server_timeout</command> - The maximum amount
- of time in milliseconds, that D2 will wait for a response from a
- DNS server to a single DNS update message.
- </simpara></listitem>
- <listitem><simpara>
- <command>ncr_protocol</command> - Packet format to use when sending requests to D2.
- Currently only JSON format is supported. Other formats may be available
- in future releases.
- </simpara></listitem>
- <listitem><simpara>
- <command>ncr_format</command> - Socket protocol to use when sending requests to D2.
- Currently only UDP is supported. TCP may be available in an upcoming
- release.
- </simpara></listitem>
- </itemizedlist>
- <para>
- D2 must listen for change requests on a known address and port. By
- default it listens at 127.0.0.1 on port 53001. The following example
- illustrates how to change D2's global parameters so it will listen
- at 192.168.1.10 port 900:
- <screen>
- "DhcpDdns": {
- <userinput>"ip_address": "192.168.1.10",
- "port": 900,</userinput>
- ...
- }
- }</screen>
- </para>
- <warning>
- <simpara>
- It is possible for a malicious attacker to send bogus
- NameChangeRequests to the DHCP-DDNS server. Addresses
- other than the IPv4 or IPv6 loopback addresses (127.0.0.1
- or ::1) should only be used for testing purposes, but
- note that local users may still communicate with the
- DHCP-DDNS server. A future version of Kea will implement
- authentication to guard against such attacks.
- </simpara>
- <!-- see ticket #3514 -->
- </warning>
- <note>
- <simpara>
- If the ip_address and port are changed, it will be necessary to change the
- corresponding values in the DHCP servers' "dhcp-ddns" configuration section.
- </simpara>
- </note>
- </section> <!-- "d2-server-parameter-config" -->
- <section id="d2-tsig-key-list-config">
- <title>TSIG Key List</title>
- <para>
- A DDNS protocol exchange can be conducted with or without TSIG
- (defined in <ulink url="http://tools.ietf/org/html/rfc2845">RFC
- 2845</ulink>). This configuration section allows the administrator
- to define the set of TSIG keys that may be used in such
- exchanges.</para>
- <para>To use TSIG when updating entries in a DNS Domain,
- a key must be defined in the TSIG Key List and referenced by
- name in that domain's configuration entry. When D2 matches a
- change request to a domain, it checks whether the domain has
- a TSIG key associated with it. If so, D2 will use that key to
- sign DNS update messages sent to and verify responses received
- from the domain's DNS server(s). For each TSIG key required by
- the DNS servers that D2 will be working with there must be a
- corresponding TSIG key in the TSIG Key list.</para>
- <para>
- As one might gather from the name, the tsig_key section of the
- D2 configuration lists the TSIG keys. Each entry describes a
- TSIG key used by one or more DNS servers to authenticate requests
- and sign responses. Every entry in the list has three parameters:
- <itemizedlist>
- <listitem>
- <simpara>
- <command>name</command> -
- a unique text label used to identify this key within the
- list. This value is used to specify which key (if any) should be
- used when updating a specific domain. So long as it is unique its
- content is arbitrary, although for clarity and ease of maintenance
- it is recommended that it match the name used on the DNS server(s).
- It cannot be blank.
- </simpara>
- </listitem>
- <listitem>
- <simpara>
- <command>algorithm</command> -
- specifies which hashing algorithm should be used with this
- key. This value must specify the same algorithm used for the
- key on the DNS server(s). The supported algorithms are listed below:
- <itemizedlist>
- <listitem>
- <command>HMAC-MD5</command>
- </listitem>
- <listitem>
- <command>HMAC-SHA1</command>
- </listitem>
- <listitem>
- <command>HMAC-SHA224</command>
- </listitem>
- <listitem>
- <command>HMAC-SHA256</command>
- </listitem>
- <listitem>
- <command>HMAC-SHA384</command>
- </listitem>
- <listitem>
- <command>HMAC-SHA512</command>
- </listitem>
- </itemizedlist>
- This value is not case sensitive.
- </simpara>
- </listitem>
- <listitem>
- <simpara>
- <command>digest_bits</command> -
- is used to specify the minimum truncated length in bits.
- The default value 0 means truncation is forbidden, not 0
- values must be an integral number of octets, be greater
- than 80 and the half of the full length. Note in BIND9
- this parameter is appended after a dash to the algorithm
- name.
- </simpara>
- </listitem>
- <listitem>
- <simpara>
- <command>secret</command> -
- is used to specify the shared secret key code for this key. This value is
- case sensitive and must exactly match the value specified on the DNS server(s).
- It is a base64-encoded text value.
- </simpara>
- </listitem>
- </itemizedlist>
- </para>
- <para>
- As an example, suppose that a domain D2 will be updating is
- maintained by a BIND9 DNS server which requires dynamic updates
- to be secured with TSIG. Suppose further that the entry for
- the TSIG key in BIND9's named.conf file looks like this:
- <screen>
- :
- key "key.four.example.com." {
- algorithm hmac-sha224;
- secret "bZEG7Ow8OgAUPfLWV3aAUQ==";
- };
- :
- </screen>
- By default, the TSIG Key list is empty:
- <screen>
- "DhcpDdns": {
- <userinput>"tsig_keys": [ ]</userinput>,
- ...
- }
- </screen>
- We must extend the list with a new key:
- <screen>
- "DhcpDdns": {
- "tsig_keys": [
- <userinput> {
- "name": "key.four.example.com.",
- "algorithm": "HMAC-SHA224",
- "secret": "bZEG7Ow8OgAUPfLWV3aAUQ=="
- }</userinput>
- ],
- ...
- }
- </screen>
- </para>
- <para>These steps would be repeated for each TSIG key needed. Note that
- the same TSIG key can be used with more than one domain.</para>
- </section>
- <!-- "d2-tsig-key-list-config" -->
- <section id="d2-forward-ddns-config">
- <title>Forward DDNS</title>
- <para>
- The Forward DDNS section is used to configure D2's forward update
- behavior. Currently it contains a single parameter, the catalog of
- forward DDNS Domains, which is a list of structures.
- <screen>
- "DhcpDdns": {
- <userinput>"forward_ddns": {
- "ddns_domains": [ ]
- }</userinput>,
- ...
- }
- </screen>
- By default, this list is empty, which will cause the server to ignore
- the forward update portions of requests.
- </para>
- <section id="add-forward-ddns-domain">
- <title>Adding Forward DDNS Domains</title>
- <para>
- A forward DDNS Domain maps a forward DNS zone to a set of
- DNS servers which maintain the forward DNS data (i.e. name to
- address mapping) for that zone. You will need one forward DDNS
- Domain for each zone you wish to service. It may very well
- be that some or all of your zones are maintained by the same
- servers. You will still need one DDNS Domain per zone. Remember
- that matching a request to the appropriate server(s) is done
- by zone and a DDNS Domain only defines a single zone.
- </para>
- <para>
- This section describes how to add Forward DDNS Domains. Repeat these
- steps for each Forward DDNS Domain desired. Each Forward DDNS Domain
- has the following parameters:
- <itemizedlist>
- <listitem>
- <simpara>
- <command>name</command> -
- The fully qualified domain name (or zone) that this DDNS Domain
- can update. This is value used to compare against the request
- FQDN during forward matching. It must be unique within the
- catalog.
- </simpara>
- </listitem>
- <listitem>
- <simpara>
- <command>key_name</command> -
- If TSIG is used with this domain's servers, this
- value should be the name of the key from within the TSIG Key List
- to use. If the value is blank (the default), TSIG will not be
- used in DDNS conversations with this domain's servers.
- </simpara>
- </listitem>
- <listitem>
- <simpara>
- <command>dns_servers</command> -
- A list of one or more DNS servers which can conduct the server
- side of the DDNS protocol for this domain. The servers
- are used in a first to last preference. In other words, when D2
- begins to process a request for this domain it will pick the
- first server in this list and attempt to communicate with it.
- If that attempt fails, it will move to next one in the list and
- so on until the it achieves success or the list is exhausted.
- </simpara>
- </listitem>
- </itemizedlist>
- To create a new forward DDNS Domain, one must add a new domain
- element and set its parameters:
- <screen>
- "DhcpDdns": {
- "forward_ddns": {
- "ddns_domains": [
- <userinput>{
- "name": "other.example.com.",
- "key_name": "",
- "dns_servers": [
- ]
- }</userinput>
- ]
- }
- }
- </screen>
- It is permissible to add a domain without any servers. If that domain
- should be matched to a request, however, the request will fail. In
- order to make the domain useful though, we must add at least one DNS
- server to it.
- </para>
- <section id="add-forward-dns-servers">
- <title>Adding Forward DNS Servers</title>
- <para>
- This section describes how to add DNS servers to a Forward DDNS Domain.
- Repeat them for as many servers as desired for a each domain.
- </para>
- <para>
- Forward DNS Server entries represent actual DNS servers which
- support the server side of the DDNS protocol. Each Forward DNS Server
- has the following parameters:
- <itemizedlist>
- <listitem>
- <simpara>
- <command>hostname</command> -
- The resolvable host name of the DNS server. This value is not
- yet implemented.
- </simpara>
- </listitem>
- <listitem>
- <simpara>
- <command>ip_address</command> -
- The IP address at which the server listens for DDNS requests.
- This may be either an IPv4 or an IPv6 address.
- </simpara>
- </listitem>
- <listitem>
- <simpara>
- <command>port</command> -
- The port on which the server listens for DDNS requests. It
- defaults to the standard DNS service port of 53.
- </simpara>
- </listitem>
- </itemizedlist>
- To create a new forward DNS Server, one must add a new server
- element to the domain and fill in its parameters. If for
- example the service is running at "172.88.99.10", then set it as
- follows:
- <screen>
- "DhcpDdns": {
- "forward_ddns": {
- "ddns_domains": [
- {
- "name": "other.example.com.",
- "key_name": "",
- "dns_servers": [
- <userinput>{
- "hostname": "",
- "ip_address": "172.88.99.10",
- "port": 53
- }</userinput>
- ]
- }
- ]
- }
- }
- </screen>
- </para>
- <note><simpara>
- As stated earlier, "hostname" is not yet supported so, the parameter
- "ip_address" must be set to the address of the DNS server.
- </simpara></note>
- </section> <!-- "add-forward-dns-servers" -->
- </section> <!-- "add-forward-ddns-domains" -->
- </section> <!-- "d2-forward-ddns-config" -->
- <section id="d2-reverse-ddns-config">
- <title>Reverse DDNS</title>
- <para>
- The Reverse DDNS section is used to configure D2's reverse update
- behavior, and the concepts are the same as for the forward DDNS
- section. Currently it contains a single parameter, the catalog of
- reverse DDNS Domains, which is a list of structures.
- <screen>
- "DhcpDdns": {
- <userinput>"reverse_ddns": {
- "ddns_domains": [ ]
- }</userinput>
- ...
- }
- </screen>
- By default, this list is empty, which will cause the server to ignore
- the reverse update portions of requests.
- </para>
- <section id="add-reverse-ddns-domain">
- <title>Adding Reverse DDNS Domains</title>
- <para>
- A reverse DDNS Domain maps a reverse DNS zone to a set of DNS
- servers which maintain the reverse DNS data (address to name
- mapping) for that zone. You will need one reverse DDNS Domain
- for each zone you wish to service. It may very well be that
- some or all of your zones are maintained by the same servers;
- even then, you will still need one DDNS Domain entry for each
- zone. Remember that matching a request to the appropriate
- server(s) is done by zone and a DDNS Domain only defines a
- single zone.
- </para>
- <para>
- This section describes how to add Reverse DDNS Domains. Repeat these
- steps for each Reverse DDNS Domain desired. Each Reverse DDNS Domain
- has the following parameters:
- <itemizedlist>
- <listitem>
- <simpara>
- <command>name</command> -
- The fully qualified reverse zone that this DDNS Domain
- can update. This is the value used during reverse matching
- which will compare it with a reversed version of the request's
- lease address. The zone name should follow the appropriate
- standards: for example, to to support the IPv4 subnet 172.16.1,
- the name should be. "1.16.172.in-addr.arpa.". Similarly,
- to support an IPv6 subent of 2001:db8:1, the name should be
- "1.0.0.0.8.B.D.0.1.0.0.2.ip6.arpa."
- Whatever the name, it must be unique within the catalog.
- </simpara>
- </listitem>
- <listitem>
- <simpara>
- <command>key_name</command> -
- If TSIG should be used with this domain's servers, then this
- value should be the name of that key from the TSIG Key List.
- If the value is blank (the default), TSIG will not be
- used in DDNS conversations with this domain's servers. Currently
- this value is not used as TSIG has not been implemented.
- </simpara>
- </listitem>
- <listitem>
- <simpara>
- <command>dns_servers</command> -
- a list of one or more DNS servers which can conduct the server
- side of the DDNS protocol for this domain. Currently the servers
- are used in a first to last preference. In other words, when D2
- begins to process a request for this domain it will pick the
- first server in this list and attempt to communicate with it.
- If that attempt fails, it will move to next one in the list and
- so on until the it achieves success or the list is exhausted.
- </simpara>
- </listitem>
- </itemizedlist>
- To create a new reverse DDNS Domain, one must add a new domain element
- and set its parameters. For example, to support subnet 2001:db8:1::,
- the following configuration could be used:
- <screen>
- "DhcpDdns": {
- "reverse_ddns": {
- "ddns_domains": [
- <userinput>{
- "name": "1.0.0.0.8.B.D.0.1.0.0.2.ip6.arpa.",
- "key_name": "",
- "dns_servers": [
- ]
- }</userinput>
- ]
- }
- }
- </screen>
- It is permissible to add a domain without any servers. If that domain
- should be matched to a request, however, the request will fail. In
- order to make the domain useful though, we must add at least one DNS
- server to it.
- </para>
- <section id="add-reverse-dns-servers">
- <title>Adding Reverse DNS Servers</title>
- <para>
- This section describes how to add DNS servers to a Reverse DDNS Domain.
- Repeat them for as many servers as desired for each domain.
- </para>
- <para>
- Reverse DNS Server entries represents a actual DNS servers which
- support the server side of the DDNS protocol. Each Reverse DNS Server
- has the following parameters:
- <itemizedlist>
- <listitem>
- <simpara>
- <command>hostname</command> -
- The resolvable host name of the DNS server. This value is
- currently ignored.
- </simpara>
- </listitem>
- <listitem>
- <simpara>
- <command>ip_address</command> -
- The IP address at which the server listens for DDNS requests.
- </simpara>
- </listitem>
- <listitem>
- <simpara>
- <command>port</command> -
- The port on which the server listens for DDNS requests. It
- defaults to the standard DNS service port of 53.
- </simpara>
- </listitem>
- </itemizedlist>
- To create a new reverse DNS Server, one must first add a new server
- element to the domain and fill in its parameters. If for
- example the service is running at "172.88.99.10", then set it as
- follows:
- <screen>
- "DhcpDdns": {
- "reverse_ddns": {
- "ddns_domains": [
- {
- "name": "1.0.0.0.8.B.D.0.1.0.0.2.ip6.arpa.",
- "key_name": "",
- "dns_servers": [
- <userinput>{
- "hostname": "",
- "ip_address": "172.88.99.10",
- "port": 53
- }</userinput>
- ]
- }
- ]
- }
- }
- </screen>
- </para>
- <note>
- <simpara>
- As stated earlier, "hostname" is not yet supported so, the parameter
- "ip_address" must be set to the address of the DNS server.
- </simpara>
- </note>
- </section> <!-- "add-reverse-dns-servers" -->
- </section> <!-- "add-reverse-ddns-domains" -->
- </section> <!-- "d2-reverse-ddns-config" -->
- <section id="d2-exmaple-config">
- <title>Example DHCP-DDNS Server Configuration</title>
- <para>
- This section provides an example DHCP-DDNS server configuration based
- on a small example network. Let's suppose our example network has
- three domains, each with their own subnet.
- <table>
- <title>Our example network</title>
- <tgroup cols='4' align='left'>
- <colspec colname='domain'/>
- <colspec colname='subnet'/>
- <colspec colname='fservers'/>
- <colspec colname='rservers'/>
- <thead>
- <row>
- <entry>Domain</entry>
- <entry>Subnet</entry>
- <entry>Forward DNS Servers</entry>
- <entry>Reverse DNS Servers</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>four.example.com</entry>
- <entry>192.0.2.0/24</entry>
- <entry>172.16.1.5, 172.16.2.5</entry>
- <entry>172.16.1.5, 172.16.2.5</entry>
- </row>
- <row>
- <entry>six.example.com</entry>
- <entry>2001:db8:1::/64</entry>
- <entry>3001:1::50</entry>
- <entry>3001:1::51</entry>
- </row>
- <row>
- <entry>example.com</entry>
- <entry>192.0.0.0/16</entry>
- <entry>172.16.2.5</entry>
- <entry>172.16.2.5</entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </para>
- <para>
- We need to construct three forward DDNS Domains:
- <table>
- <title>Forward DDNS Domains Needed</title>
- <tgroup cols='3' align='left'>
- <colspec colname='num'/>
- <colspec colname='name'/>
- <colspec colname='servers'/>
- <thead>
- <row>
- <entry>#</entry>
- <entry>DDNS Domain Name</entry>
- <entry>DNS Servers</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>1.</entry>
- <entry>four.example.com.</entry>
- <entry>172.16.1.5, 172.16.2.5</entry>
- </row>
- <row>
- <entry>2.</entry>
- <entry>six.example.com.</entry>
- <entry>3001:1::50</entry>
- </row>
- <row>
- <entry>3.</entry>
- <entry>example.com.</entry>
- <entry>172.16.2.5</entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- As discussed earlier, FQDN to domain matching is based on the longest
- match. The FQDN, "myhost.four.example.com.", will match the first
- domain ("four.example.com") while "admin.example.com." will match the
- third domain ("example.com"). The
- FQDN, "other.example.net." will fail to match any domain and would
- be rejected.
- </para>
- <para>
- The following example configuration specified the Forward DDNS Domains.
- <screen><userinput>
- "DhcpDdns": {
- "forward_ddns": {
- "ddns_domains": [
- {
- "name": "four.example.com.",
- "key_name": "",
- "dns_servers": [
- { "ip_address": "172.16.1.5" },
- { "ip_address": "172.16.2.5" }
- ]
- },
- {
- "name": "six.example.com.",
- "key_name": "",
- "dns_servers": [
- { "ip_address": "2001:db8::1" }
- ]
- },
- {
- "name": "example.com.",
- "key_name": "",
- "dns_servers": [
- { "ip_address": "172.16.2.5" }
- ]
- },
- ]
- }
- }</userinput>
- </screen>
- </para>
- <para>
- Similarly, we need to construct the three reverse DDNS Domains:
- <table>
- <title>Reverse DDNS Domains Needed</title>
- <tgroup cols='3' align='left'>
- <colspec colname='num'/>
- <colspec colname='DDNS Domain name'/>
- <colspec colname='DDNS Domain DNS Servers'/>
- <thead>
- <row>
- <entry>#</entry>
- <entry>DDNS Domain Name</entry>
- <entry>DNS Servers</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>1.</entry>
- <entry>2.0.192.in-addr.arpa.</entry>
- <entry>172.16.1.5, 172.16.2.5</entry>
- </row>
- <row>
- <entry>2.</entry>
- <entry>1.0.0.0.8.d.b.0.1.0.0.2.ip6.arpa.</entry>
- <entry>3001:1::50</entry>
- </row>
- <row>
- <entry>3.</entry>
- <entry>0.182.in-addr.arpa.</entry>
- <entry>172.16.2.5</entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- An address of "192.0.2.150" will match the first domain,
- "2001:db8:1::10" will match the second domain, and "192.0.50.77"
- the third domain.
- </para>
- <para>
- These Reverse DDNS Domains are specified as follows:
- <screen><userinput>
- "DhcpDdns": {
- "reverse_ddns": {
- "ddns_domains": [
- {
- "name": "2.0.192.in-addr.arpa.",
- "key_name": "",
- "dns_servers": [
- { "ip_address": "172.16.1.5" },
- { "ip_address": "172.16.2.5" }
- ]
- }
- {
- "name": "1.0.0.0.8.B.D.0.1.0.0.2.ip6.arpa.",
- "key_name": "",
- "dns_servers": [
- { "ip_address": "2001:db8::1" }
- ]
- }
- {
- "name": "0.192.in-addr.arpa.",
- "key_name": "",
- "dns_servers": [
- { "ip_address": "172.16.2.5" }
- ]
- }
- ]
- }
- }</userinput>
- </screen>
- </para>
- </section> <!-- end of "d2-example" -->
- </section> <!-- end of section "d2-configuration" -->
- <section>
- <title>DHCP-DDNS Server Limitations</title>
- <para>The following are the current limitations of the DHCP-DDNS Server.</para>
- <itemizedlist>
- <listitem>
- <simpara>
- Requests received from the DHCP servers are placed in a
- queue until they are processed. Currently all queued requests
- are lost when the server shuts down.
- </simpara>
- </listitem>
- </itemizedlist>
- </section>
- </chapter> <!-- DHCP-DDNS Server -->
|