mirror of
https://gitlab.isc.org/isc-projects/kea
synced 2025-09-02 15:05:16 +00:00
[1367] DHCPv6 doc added, DHCPv4 doc updated.
This commit is contained in:
File diff suppressed because one or more lines are too long
@@ -1817,7 +1817,8 @@ then change those defaults with config set Resolver/forward_addresses[0]/address
|
|||||||
clients. Even though principles of both DHCPv4 and DHCPv6 are
|
clients. Even though principles of both DHCPv4 and DHCPv6 are
|
||||||
somewhat similar, these are two radically different
|
somewhat similar, these are two radically different
|
||||||
protocols. BIND10 offers server implementations for both DHCPv4
|
protocols. BIND10 offers server implementations for both DHCPv4
|
||||||
and DHCPv6.</para>
|
and DHCPv6. This chapter is about DHCP for IPv4. For description of
|
||||||
|
DHCPv6 server, see <xref linkend="dhcp6"/>.</para>
|
||||||
|
|
||||||
<note>
|
<note>
|
||||||
<para>
|
<para>
|
||||||
@@ -1832,9 +1833,9 @@ then change those defaults with config set Resolver/forward_addresses[0]/address
|
|||||||
</para>
|
</para>
|
||||||
</note>
|
</note>
|
||||||
|
|
||||||
<section>
|
<section id="dhcp4-usage">
|
||||||
<title>Server Usage</title>
|
<title>DHCPv4 Server Usage</title>
|
||||||
<para>BIND10 provides experimental DHCPv4 server component since
|
<para>BIND10 provides DHCPv4 server component since
|
||||||
December 2011. It is currently described as skeleton server and
|
December 2011. It is currently described as skeleton server and
|
||||||
can be described as an early prototype that is not yet fully
|
can be described as an early prototype that is not yet fully
|
||||||
functional. It is mature enough to conduct first tests in lab
|
functional. It is mature enough to conduct first tests in lab
|
||||||
@@ -1873,7 +1874,7 @@ then change those defaults with config set Resolver/forward_addresses[0]/address
|
|||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section id="dhcp4-config">
|
<section id="dhcp4-config">
|
||||||
<title>Server Configuration</title>
|
<title>DHCPv4 Server Configuration</title>
|
||||||
<para>
|
<para>
|
||||||
DHCPv4 server does not have lease database implemented yet
|
DHCPv4 server does not have lease database implemented yet
|
||||||
or any support for configuration, so every time the same set
|
or any support for configuration, so every time the same set
|
||||||
@@ -1885,13 +1886,13 @@ then change those defaults with config set Resolver/forward_addresses[0]/address
|
|||||||
configuration is to tweak its source code. To do so, please edit
|
configuration is to tweak its source code. To do so, please edit
|
||||||
src/bin/dhcp4/dhcp4_srv.cc file and modify following parameters:
|
src/bin/dhcp4/dhcp4_srv.cc file and modify following parameters:
|
||||||
<screen>
|
<screen>
|
||||||
const std::string HARDCODED_LEASE = "10.3.2.222"; // assigned lease
|
const std::string HARDCODED_LEASE = "192.0.2.222"; // assigned lease
|
||||||
const std::string HARDCODED_NETMASK = "255.255.255.0";
|
const std::string HARDCODED_NETMASK = "255.255.255.0";
|
||||||
const uint32_t HARDCODED_LEASE_TIME = 60; // in seconds
|
const uint32_t HARDCODED_LEASE_TIME = 60; // in seconds
|
||||||
const std::string HARDCODED_GATEWAY = "10.3.2.2";
|
const std::string HARDCODED_GATEWAY = "192.0.2.1";
|
||||||
const std::string HARDCODED_DNS_SERVER = "8.8.8.8";
|
const std::string HARDCODED_DNS_SERVER = "192.0.2.2";
|
||||||
const std::string HARDCODED_DOMAIN_NAME = "isc.example.org";
|
const std::string HARDCODED_DOMAIN_NAME = "isc.example.com";
|
||||||
const std::string HARDCODED_SERVER_ID = "10.3.1.1";</screen>
|
const std::string HARDCODED_SERVER_ID = "192.0.2.1";</screen>
|
||||||
|
|
||||||
Lease database and configuration support is planned for 2012.
|
Lease database and configuration support is planned for 2012.
|
||||||
</para>
|
</para>
|
||||||
@@ -1906,23 +1907,25 @@ const std::string HARDCODED_SERVER_ID = "10.3.1.1";</screen>
|
|||||||
</para>
|
</para>
|
||||||
<itemizedlist>
|
<itemizedlist>
|
||||||
<listitem>
|
<listitem>
|
||||||
<simpara>During initial IPv4 node configuration, where server has to
|
<simpara>During initial IPv4 node configuration, where
|
||||||
send packet to a node that does not have IPv4 address
|
server has to send packet to a node that does not have
|
||||||
assigned yet, server requires certain tricks (or hacks) to
|
IPv4 address assigned yet, server requires certain tricks
|
||||||
transmit such packets. This is not implemented yet, therefore
|
(or hacks) to transmit such packets. This is not
|
||||||
DHCPv4 server supports relayed traffic only.</simpara>
|
implemented yet, therefore DHCPv4 server supports relayed
|
||||||
|
traffic only.</simpara>
|
||||||
</listitem>
|
</listitem>
|
||||||
<listitem>
|
<listitem>
|
||||||
<simpara>It provides a single, fixed, hardcoded lease to
|
<simpara><command>b10-dhcp4</command> provides a single,
|
||||||
any client that asks. There is no lease manager
|
fixed, hardcoded lease to any client that asks. There is
|
||||||
implemented. If two clients request addresses, they will
|
no lease manager implemented. If two clients request
|
||||||
both get the same fixed address.</simpara>
|
addresses, they will both get the same fixed
|
||||||
|
address.</simpara>
|
||||||
</listitem>
|
</listitem>
|
||||||
<listitem>
|
<listitem>
|
||||||
<simpara>Server does not support any configuration
|
<simpara><command>b10-dhcp4</command> does not support any
|
||||||
mechanisms yet. The whole configuration is currently
|
configuration mechanisms yet. The whole configuration is
|
||||||
hardcoded. The only way to tweak configuration is to
|
currently hardcoded. The only way to tweak configuration
|
||||||
directly modify source code. See see <xref
|
is to directly modify source code. See see <xref
|
||||||
linkend="dhcp4-config"/> for details.</simpara>
|
linkend="dhcp4-config"/> for details.</simpara>
|
||||||
</listitem>
|
</listitem>
|
||||||
<listitem>
|
<listitem>
|
||||||
@@ -1932,8 +1935,9 @@ const std::string HARDCODED_SERVER_ID = "10.3.1.1";</screen>
|
|||||||
coded in reception routines yet, so if you are running
|
coded in reception routines yet, so if you are running
|
||||||
this code on a machine that has many interfaces and
|
this code on a machine that has many interfaces and
|
||||||
<command>b10-dhcp4</command> happens to listen on wrong
|
<command>b10-dhcp4</command> happens to listen on wrong
|
||||||
interface, the easiest way to is to down other
|
interface, the easiest way to work around this problem is
|
||||||
interfaces. This limitation will be fixed shortly.</simpara>
|
to down other interfaces. This limitation will be fixed
|
||||||
|
shortly.</simpara>
|
||||||
</listitem>
|
</listitem>
|
||||||
<listitem>
|
<listitem>
|
||||||
<simpara>PRL (Parameter Request List) is currently ignored
|
<simpara>PRL (Parameter Request List) is currently ignored
|
||||||
@@ -1943,7 +1947,7 @@ const std::string HARDCODED_SERVER_ID = "10.3.1.1";</screen>
|
|||||||
<listitem>
|
<listitem>
|
||||||
<simpara><command>b10-dhcp4</command> does not support
|
<simpara><command>b10-dhcp4</command> does not support
|
||||||
BOOTP. That is a design choice. This limitation is
|
BOOTP. That is a design choice. This limitation is
|
||||||
permanent. If have legacy nodes that can't use DHCP and
|
permanent. If you have legacy nodes that can't use DHCP and
|
||||||
require BOOTP support, please use latest version of ISC DHCP
|
require BOOTP support, please use latest version of ISC DHCP
|
||||||
<ulink url="http://www.isc.org/software/dhcp"/>.</simpara>
|
<ulink url="http://www.isc.org/software/dhcp"/>.</simpara>
|
||||||
</listitem>
|
</listitem>
|
||||||
@@ -1951,24 +1955,162 @@ const std::string HARDCODED_SERVER_ID = "10.3.1.1";</screen>
|
|||||||
<simpara>Interface detection is currently working on Linux
|
<simpara>Interface detection is currently working on Linux
|
||||||
only. See <xref linkend="iface-detect"/> for details.</simpara>
|
only. See <xref linkend="iface-detect"/> for details.</simpara>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<simpara>Address renewal (RENEW), rebinding (REBIND),
|
||||||
|
confirmation (CONFIRM), duplication report (DECLINE) and
|
||||||
|
release (RELEASE) are not supported yet.</simpara>
|
||||||
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<simpara>DNS Update is not supported yet.</simpara>
|
||||||
|
</listitem>
|
||||||
</itemizedlist>
|
</itemizedlist>
|
||||||
|
|
||||||
</section>
|
</section>
|
||||||
</chapter>
|
</chapter>
|
||||||
|
|
||||||
<chapter id="dhcp6-srv">
|
<chapter id="dhcp6">
|
||||||
<title>DHCPv6 Server</title>
|
<title>DHCPv6 Server</title>
|
||||||
<section id="dhcp6-limit">
|
<para>Dynamic Host Configuration Protocol for IPv6 (DHCPv6) is
|
||||||
<title>DHCPv6 Server Limitations</title>
|
specified in RFC3315. BIND10 provides DHCPv6 server implementation
|
||||||
|
that is described in this chapter. For DHCPv4 server
|
||||||
|
implementation, see <xref linkend="dhcp4"/>.
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<note>
|
||||||
<para>
|
<para>
|
||||||
Relayed traffic is not supported.
|
As of December 2011, both DHCPv4 and DHCPv6 components are
|
||||||
|
skeleton servers. That means that while they are capable of
|
||||||
|
performing DHCP configuration, they are not fully functional
|
||||||
|
yet. In particular, both do not have functional lease
|
||||||
|
databases. This means that they will assign the same, fixed,
|
||||||
|
hardcoded addresses to any client that will ask. See <xref
|
||||||
|
linkend="dhcp4-limit"/> and <xref linkend="dhcp6-limit"/> for
|
||||||
|
detailed description.
|
||||||
|
</para>
|
||||||
|
</note>
|
||||||
|
|
||||||
|
<section id="dhcp6-usage">
|
||||||
|
<title>DHCPv6 Server Usage</title>
|
||||||
|
<para>
|
||||||
|
BIND10 provides DHCPv6 server component since September
|
||||||
|
2011. It is currently described as skeleton server and can be
|
||||||
|
described as an early prototype that is not yet fully
|
||||||
|
functional. It is mature enough to conduct first tests in lab
|
||||||
|
environment, but it has significant limitations. See <xref
|
||||||
|
linkend="dhcp6-limit"/> for details.
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
DHCPv6 server is implemented as <command>b10-dhcp6</command>
|
||||||
|
daemon. As it is configurable yet, it is fully autonomous,
|
||||||
|
i.e. it does not interact with <command>b10-cfgmgr</command>.
|
||||||
|
To start DHCPv6 server, simply input:
|
||||||
|
|
||||||
|
<screen>
|
||||||
|
#<userinput>cd src/bin/dhcp6</userinput>
|
||||||
|
#<userinput>./b10-dhcp6</userinput>
|
||||||
|
</screen>
|
||||||
|
|
||||||
|
Depending on your installation, <command>b10-dhcp6</command>
|
||||||
|
binary may reside in src/bin/dhcp6 in your source code
|
||||||
|
directory, in /usr/local/bin/b10-dhcp6 or other directory
|
||||||
|
you specified during compilation.
|
||||||
|
|
||||||
|
Afre start, 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
|
||||||
|
assigned.
|
||||||
|
|
||||||
|
Server will then listen to incoming traffic. Currently
|
||||||
|
supported client messages are SOLICIT and REQUEST. Server
|
||||||
|
will respond to them with ADVERTISE and REPLY, respectively.
|
||||||
|
|
||||||
|
As DHCPv6 server opens privileged ports, it requires root
|
||||||
|
access. Make sure you run this daemon as root.
|
||||||
</para>
|
</para>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
<section id="dhcp6-config">
|
||||||
|
<title>DHCPv6 Server Configuration</title>
|
||||||
|
<para>
|
||||||
|
DHCPv4 server does not have lease database implemented yet
|
||||||
|
or any support for configuration, so every time the same set
|
||||||
|
of configuration options (including the same fixed address)
|
||||||
|
will be assigned every time.
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
At this stage of development, the only way to alter server
|
||||||
|
configuration is to tweak its source code. To do so, please edit
|
||||||
|
src/bin/dhcp6/dhcp6_srv.cc file and modify following parameters:
|
||||||
|
<screen>
|
||||||
|
const std::string HARDCODED_LEASE = "2001:db8:1::1234:abcd";
|
||||||
|
const uint32_t HARDCODED_T1 = 1500; // in seconds
|
||||||
|
const uint32_t HARDCODED_T2 = 2600; // in seconds
|
||||||
|
const uint32_t HARDCODED_PREFERRED_LIFETIME = 3600; // in seconds
|
||||||
|
const uint32_t HARDCODED_VALID_LIFETIME = 7200; // in seconds
|
||||||
|
const std::string HARDCODED_DNS_SERVER = "2001:db8:1::1";</screen>
|
||||||
|
|
||||||
|
Lease database and configuration support is planned for 2012.
|
||||||
|
</para>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section id="dhcp6-limit">
|
||||||
|
<title>DHCPv6 Server Limitations</title>
|
||||||
|
<para>
|
||||||
|
<itemizedlist>
|
||||||
|
<listitem>
|
||||||
|
<simpara>Relayed traffic is not supported.</simpara>
|
||||||
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<simpara><command>b10-dhcp6</command> provides a single,
|
||||||
|
fixed, hardcoded lease to any client that asks. There is no
|
||||||
|
lease manager implemented. If two clients request addresses,
|
||||||
|
they will both get the same fixed address.</simpara>
|
||||||
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<simpara><command>b10-dhcp6</command> does not support any
|
||||||
|
configuration mechanisms yet. The whole configuration is
|
||||||
|
currently hardcoded. The only way to tweak configuration
|
||||||
|
is to directly modify source code. See see <xref
|
||||||
|
linkend="dhcp6-config"/> for details.</simpara>
|
||||||
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<simpara>Upon start, server will open sockets on all
|
||||||
|
interfaces that are not loopback, are up, running and are
|
||||||
|
multicast capable and have IPv6 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 <command>b10-dhcp6</command> happens to
|
||||||
|
listen on wrong interface, the easiest way to work around
|
||||||
|
this problem is to down other interfaces. This limitation
|
||||||
|
will be fixed shortly.</simpara>
|
||||||
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<simpara>Temporary addresses are not supported yet.</simpara>
|
||||||
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<simpara>Prefix delegation is not supported yet.</simpara>
|
||||||
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<simpara>Address renewal (RENEW), rebinding (REBIND),
|
||||||
|
confirmation (CONFIRM), duplication report (DECLINE) and
|
||||||
|
release (RELEASE) are not supported yet.</simpara>
|
||||||
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<simpara>DNS Update is not supported yet.</simpara>
|
||||||
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<simpara>Interface detection is currently working on Linux
|
||||||
|
only. See <xref linkend="iface-detect"/> for details.</simpara>
|
||||||
|
</listitem>
|
||||||
|
</itemizedlist>
|
||||||
|
</para>
|
||||||
|
</section>
|
||||||
|
|
||||||
</chapter>
|
</chapter>
|
||||||
|
|
||||||
<chapter id="libdhcp++">
|
<chapter id="libdhcp">
|
||||||
<title>libdhcp++ library</title>
|
<title>libdhcp++ library</title>
|
||||||
<para>libdhcp++ is a common library written in C++ that is
|
<para>libdhcp++ is a common library written in C++ that is
|
||||||
handles many DHCP-related tasks, like DHCPv4 and DHCPv6 packets
|
handles many DHCP-related tasks, like DHCPv4 and DHCPv6 packets
|
||||||
@@ -2008,6 +2150,11 @@ eth0 fe80::21e:8cff:fe9b:7349
|
|||||||
</para>
|
</para>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
<section id="packet-handling">
|
||||||
|
<title>DHCPv4/DHCPv6 packet handling</title>
|
||||||
|
<para>TODO: Describe packet handling here, with pointers to wiki</para>
|
||||||
|
</section>
|
||||||
|
|
||||||
</chapter>
|
</chapter>
|
||||||
|
|
||||||
<chapter id="statistics">
|
<chapter id="statistics">
|
||||||
|
Reference in New Issue
Block a user