mirror of
https://gitlab.isc.org/isc-projects/kea
synced 2025-08-30 21:45:37 +00:00
Working, have some UTs that still need to be fixed /doc/examples/kea4/advanced.json /doc/examples/kea4/all-keys-netconf.json /doc/examples/kea4/all-keys-netconf.json /doc/examples/kea4/all-keys.json /doc/examples/kea4/comments.json /doc/examples/kea4/config-backend.json /doc/examples/kea4/ha-load-balancing-server1-mt-with-tls.json /doc/examples/kea4/ha-load-balancing-server2-mt.json /doc/examples/kea6/advanced.json /doc/examples/kea6/all-keys-netconf.json /doc/examples/kea6/all-keys.json /doc/examples/kea6/comments.json /doc/examples/kea6/config-backend.json /doc/examples/kea6/ha-hot-standby-server1-with-tls.json /doc/examples/kea6/ha-hot-standby-server2.json removed /tmp path from socket-name /src/bin/dhcp4/tests/config_parser_unittest.cc /src/bin/dhcp4/tests/ctrl_dhcp4_srv_unittest.cc /src/bin/dhcp4/tests/dhcp4_srv_unittest.cc /src/bin/dhcp4/tests/dhcp4_test_utils.cc /src/bin/dhcp4/tests/dhcp4_test_utils.h /src/bin/dhcp6/tests/config_parser_unittest.cc /src/bin/dhcp6/tests/ctrl_dhcp6_srv_unittest.cc /src/bin/dhcp6/tests/dhcp6_srv_unittest.cc /src/bin/dhcp6/tests/dhcp6_test_utils.cc /src/bin/dhcp6/tests/dhcp6_test_utils.h updated tests /src/lib/config/Makefile.am /src/lib/config/meson.build defined CONTROL_SOCKET_DIR /src/lib/config/tests/unix_command_config_unittests.cc /src/lib/config/tests/unix_command_mgr_unittests.cc updated tests /src/lib/config/unix_command_config.* UnixCommandConfig - added PathChecker singleton and methods to set and validate socket path/permissions /src/lib/util/filesystem.* Added getPermsissions() and hasPermsission() /src/lib/util/tests/filesystem_unittests.cc new permissions tests
268 lines
12 KiB
JSON
268 lines
12 KiB
JSON
// This is an example configuration of the Kea DHCPv4 server. It uses High
|
|
// Availability hook library and Lease Commands hook library to enable
|
|
// High Availability function for the DHCP server. Note that almost exactly
|
|
// the same configuration must be used on the second server (partner).
|
|
// The only difference is that "this-server-name" must be set to "server1"
|
|
// on this other server. Also, the interface configuration depends on the
|
|
// network settings of the particular machine.
|
|
//
|
|
// The servers using this configuration work in load balancing mode.
|
|
{
|
|
|
|
// DHCPv4 configuration starts here.
|
|
"Dhcp4": {
|
|
// Add names of your network interfaces to listen on.
|
|
"interfaces-config": {
|
|
// The DHCPv4 server listens on this interface.
|
|
"interfaces": [ "eth0" ]
|
|
},
|
|
|
|
// Control socket is required for communication between the Control
|
|
// Agent and the DHCP server. High Availability with MT does not require
|
|
// Control Agent to be running because lease updates are sent over the
|
|
// RESTful API between the HA peers using the server dedicated listener.
|
|
// The Control Agent is used only to handle user commands.
|
|
"control-socket": {
|
|
"socket-type": "unix",
|
|
"socket-name": "kea4-ctrl-socket"
|
|
},
|
|
|
|
// Multi-threading parameters.
|
|
"multi-threading": {
|
|
// By default, Kea processes packets on multiple threads if the hardware permits.
|
|
"enable-multi-threading": true,
|
|
|
|
// When multi-threading is enabled, Kea will process packets on a
|
|
// number of multiple threads configurable through this option.
|
|
"thread-pool-size": 4,
|
|
|
|
// When multi-threading is enabled, Kea will read packets from the
|
|
// interface and append a working item to the thread pool. This
|
|
// option configures the maximum number of items that can be queued.
|
|
"packet-queue-size": 64
|
|
},
|
|
|
|
// Use Memfile lease database backend to store leases in a CSV file.
|
|
// Depending on how Kea was compiled, it may also support SQL databases
|
|
// (MySQL and/or PostgreSQL). Those database backends require more
|
|
// parameters, like name, host and possibly user and password.
|
|
// There are dedicated examples for each backend. See Section 7.2.2 "Lease
|
|
// Storage" for details.
|
|
"lease-database": {
|
|
// Memfile is the simplest and easiest backend to use. It's an in-memory
|
|
"type": "memfile"
|
|
},
|
|
|
|
// Client classes will associate address pools with certain servers taking
|
|
// part in providing High Availability.
|
|
"client-classes": [
|
|
// phones class
|
|
{
|
|
"name": "phones",
|
|
"test": "substring(option[60].hex,0,6) == 'Aastra'"
|
|
},
|
|
// laptops are everything but phones.
|
|
{
|
|
"name": "laptops",
|
|
"test": "not member('phones')"
|
|
},
|
|
// Some phones will be handled by server1. Whether the HA_server1
|
|
// or HA_server2 is assigned for the client is a matter of load
|
|
// balancing performed by the HA hook library.
|
|
{
|
|
"name": "phones_server1",
|
|
"test": "member('phones') and member('HA_server1')"
|
|
},
|
|
// Some phones will be handled by server2.
|
|
{
|
|
"name": "phones_server2",
|
|
"test": "member('phones') and member('HA_server2')"
|
|
},
|
|
// Some laptops will be handled by server1.
|
|
{
|
|
"name": "laptops_server1",
|
|
"test": "member('laptops') and member('HA_server1')"
|
|
},
|
|
// Some laptops will be handled by server2.
|
|
{
|
|
"name": "laptops_server2",
|
|
"test": "member('laptops') and member('HA_server2')"
|
|
}
|
|
],
|
|
|
|
// HA requires two hook libraries to be loaded: libdhcp_lease_cmds.so and
|
|
// libdhcp_ha.so. The former handles incoming lease updates from the HA peers.
|
|
// The latter implements high availability feature for Kea.
|
|
"hooks-libraries": [
|
|
// The lease_cmds library must be loaded because HA makes use of it to
|
|
// deliver lease updates to the server as well as synchronize the
|
|
// lease database after failure.
|
|
{
|
|
"library": "/opt/lib/kea/hooks/libdhcp_lease_cmds.so",
|
|
"parameters": { }
|
|
},
|
|
{
|
|
// The HA hook library should be loaded.
|
|
"library": "/opt/lib/kea/hooks/libdhcp_ha.so",
|
|
"parameters": {
|
|
// High Availability configuration is specified for the HA hook library.
|
|
// Each server should have the same HA configuration, except for the
|
|
// "this-server-name" parameter.
|
|
"high-availability": [ {
|
|
// This parameter points to this server instance. The respective
|
|
// HA peers must have this parameter set to their own names.
|
|
"this-server-name": "server2",
|
|
// The HA mode is set to load-balancing. In this mode, the active
|
|
// servers share the traffic (50/50).
|
|
"mode": "load-balancing",
|
|
// Heartbeat is to be sent every 10 seconds if no other control
|
|
// commands are transmitted.
|
|
"heartbeat-delay": 10000,
|
|
// Maximum time for partner's response to a heartbeat, after which
|
|
// failure detection is started. This is specified in milliseconds.
|
|
"max-response-delay": 60000,
|
|
// The following parameters control how the server detects the
|
|
// partner's failure. The ACK delay sets the threshold for the
|
|
// 'secs' field of the received discovers. This is specified in
|
|
// milliseconds.
|
|
"max-ack-delay": 5000,
|
|
// This specifies the number of clients which send messages to
|
|
// the partner but appear to not receive any response.
|
|
"max-unacked-clients": 5,
|
|
// This specifies the maximum timeout (in milliseconds) for the server
|
|
// to complete sync. If you have a large deployment (high tens or
|
|
// hundreds of thausands of clients), you may need to increase it
|
|
// further. The default value is 60000ms (60 seconds).
|
|
"sync-timeout": 60000,
|
|
// To not experience performance degradation when the Kea server is
|
|
// processing packets on multiple threads, the High Availability module
|
|
// must have multi-threading enabled.
|
|
"multi-threading": {
|
|
// Enable High Availability to benefit from multi-threading. Default: true.
|
|
"enable-multi-threading": true,
|
|
// When running in MT mode, the dedicated listener is used to handle
|
|
// lease updates.
|
|
"http-dedicated-listener": true,
|
|
// The number of threads used to handle incoming requests.
|
|
// A value of 0 instructs the server to use the same number of
|
|
// threads that the Kea core is using for DHCP multi-threading.
|
|
"http-listener-threads": 0,
|
|
// The number of threads used to handle outgoing requests.
|
|
// A value of 0 instructs the server to use the same number of
|
|
// threads that the Kea core is using for DHCP multi-threading.
|
|
"http-client-threads": 0
|
|
},
|
|
"peers": [
|
|
// This is the configuration of the HA peer.
|
|
{
|
|
"name": "server1",
|
|
// Specifies the URL on which the partner's control
|
|
// channel can be reached. The Control Agent is not required
|
|
// to run on the partner's machine if multi-threading is enabled.
|
|
// The "http-host" and "http-port" values must be set to different
|
|
// values then the ones used by the Control Agent.
|
|
"url": "http://192.168.56.33:8000/",
|
|
// The partner is primary. This server is secondary.
|
|
"role": "primary"
|
|
},
|
|
// This is the configuration of this server instance.
|
|
{
|
|
"name": "server2",
|
|
// This specifies the URL of this server instance. The
|
|
// Control Agent is not required to run along with this DHCPv4 server
|
|
// instance if multi-threading is enabled.
|
|
// The "http-host" and "http-port" values must be set to different
|
|
// values then the ones used by the Control Agent.
|
|
"url": "http://192.168.56.66:8000/",
|
|
// This server is secondary. The other one must be
|
|
// primary.
|
|
"role": "secondary"
|
|
}
|
|
]
|
|
} ]
|
|
}
|
|
}
|
|
],
|
|
|
|
// This example contains a single subnet declaration.
|
|
"subnet4": [
|
|
{
|
|
// Subnet id.
|
|
"id": 1,
|
|
|
|
// Subnet prefix.
|
|
"subnet": "192.0.3.0/24",
|
|
|
|
// Specify four address pools.
|
|
"pools": [
|
|
{
|
|
"pool": "192.0.3.100 - 192.0.3.125",
|
|
"client-classes": [ "phones_server1" ]
|
|
},
|
|
{
|
|
"pool": "192.0.3.126 - 192.0.3.150",
|
|
"client-classes": [ "laptops_server1" ]
|
|
},
|
|
{
|
|
"pool": "192.0.3.200 - 192.0.3.225",
|
|
"client-classes": [ "phones_server2" ]
|
|
},
|
|
{
|
|
"pool": "192.0.3.226 - 192.0.3.250",
|
|
"client-classes": [ "laptops_server2" ]
|
|
}
|
|
],
|
|
|
|
// These are options that are subnet specific. In most cases,
|
|
// you need to define at least routers option, as without this
|
|
// option your clients will not be able to reach their default
|
|
// gateway and will not have Internet connectivity.
|
|
"option-data": [
|
|
{
|
|
// For each IPv4 subnet you most likely need to specify at
|
|
// least one router.
|
|
"name": "routers",
|
|
"data": "192.0.3.1"
|
|
}
|
|
],
|
|
|
|
// This subnet will be selected for queries coming from the following
|
|
// IP address.
|
|
"relay": { "ip-addresses": [ "192.168.56.1" ] }
|
|
}
|
|
],
|
|
|
|
// The following configures logging. It assumes that messages with at
|
|
// least informational level (info, warn, error and fatal) should be
|
|
// logged to stdout. Alternatively, you can specify stderr here, a filename
|
|
// or 'syslog', which will store output messages via syslog.
|
|
"loggers": [
|
|
{
|
|
// This section affects kea-dhcp4, which is the base logger for DHCPv4
|
|
// component. It tells DHCPv4 server to write all log messages (on
|
|
// severity INFO or more) to a file.
|
|
"name": "kea-dhcp4",
|
|
"output-options": [
|
|
{
|
|
"output": "stdout"
|
|
}
|
|
],
|
|
"severity": "INFO",
|
|
"debuglevel": 0
|
|
},
|
|
{
|
|
// This section specifies configuration of the HA hook library-specific
|
|
// logger.
|
|
"name": "kea-dhcp4.ha-hooks",
|
|
"output-options": [
|
|
{
|
|
"output": "stdout"
|
|
}
|
|
],
|
|
"severity": "INFO",
|
|
"debuglevel": 99
|
|
}
|
|
]
|
|
}
|
|
}
|