// list of parameters supported by Kea DHCPv4 server along with the brief
// description of each parameter.
{
- // Kea DHCPv4 server configuration begins here.
- "Dhcp4": {
- // Global bootfile name to be set in the 'file' field.
- "boot-file-name": "/dev/null",
-
- // Ordered list of client classes used by the DHCPv4 server.
- "client-classes": [
- {
- // Class specific bootfile name to be set in the 'file' field.
- "boot-file-name": "/tmp/bootfile.efi",
-
- // Class name.
- "name": "phones_server1",
-
- // Class specific next server address to use in bootstrap, which
- // is set in 'siaddr' field.
- "next-server": "10.2.3.4",
-
- // Class specific DHCPv4 options list.
- "option-data": [],
-
- // Class specific DHCPv4 option definitions, i.e. custom formats
- // specified for non-standard options.
- "option-def": [],
-
- // Class specific optional server hostname, which is set in
- // 'sname' field.
- "server-hostname": "",
-
- // Class selection expression. The DHCP packet is assigned to this
- // class when the given expression evaluates to true.
- "test": "member('HA_server1')"
- },
- {
- // Default value of the class specific bootfile name. Empty name
- // means that the bootfile name is unspecified.
- "boot-file-name": "",
+ // Kea DHCPv4 server configuration begins here.
+ "Dhcp4": {
+ // Global bootfile name to be set in the 'file' field.
+ "boot-file-name": "/dev/null",
+
+ // Ordered list of client classes used by the DHCPv4 server.
+ "client-classes": [
+ {
+ // Class specific bootfile name to be set in the 'file' field.
+ "boot-file-name": "/tmp/bootfile.efi",
+
+ // Class name.
+ "name": "phones_server1",
+
+ // Class specific next server address to use in bootstrap, which
+ // is set in 'siaddr' field.
+ "next-server": "10.2.3.4",
+
+ // Class specific DHCPv4 options list.
+ "option-data": [],
+
+ // Class specific DHCPv4 option definitions, i.e. custom formats
+ // specified for non-standard options.
+ "option-def": [],
+
+ // Class specific optional server hostname, which is set in
+ // 'sname' field.
+ "server-hostname": "",
+
+ // Class selection expression. The DHCP packet is assigned to this
+ // class when the given expression evaluates to true.
+ "test": "member('HA_server1')"
+ },
+ {
+ // Default value of the class specific bootfile name. Empty name
+ // means that the bootfile name is unspecified.
+ "boot-file-name": "",
- // Second class name.
- "name": "phones_server2",
+ // Second class name.
+ "name": "phones_server2",
- // Default value of the class specific next server address. The
- // zero IPv4 address means that it is unspecified.
- "next-server": "0.0.0.0",
+ // Default value of the class specific next server address. The
+ // zero IPv4 address means that it is unspecified.
+ "next-server": "0.0.0.0",
- // Class specific DHCPv4 options list.
- "option-data": [],
+ // Class specific DHCPv4 options list.
+ "option-data": [],
- // Class specific DHCPv4 option definitions, i.e. custom formats
- // specified for non-standard options.
- "option-def": [],
+ // Class specific DHCPv4 option definitions, i.e. custom formats
+ // specified for non-standard options.
+ "option-def": [],
- // Class specific optional server hostname, which is set in
- // 'sname' field.
- "server-hostname": "",
+ // Class specific optional server hostname, which is set in
+ // 'sname' field.
+ "server-hostname": "",
- // Class selection expression. The DHCP packet is assigned to this
- // class when the given expression evaluates to true.
- "test": "member('HA_server2')"
- },
+ // Class selection expression. The DHCP packet is assigned to this
+ // class when the given expression evaluates to true.
+ "test": "member('HA_server2')"
+ },
- {
- // Third class name.
- "name": "late",
-
- // Boolean flag indicating that the class expression is only evaluated
- // when the class is required, e.g. selected address pool configuration
- // includes this class name in its "require-client-classes" list. The
- // default value false means that the class test expression must
- // always be evaluated.
- "only-if-required": true,
-
- // Class selection expression.
- "test": "member('ALL')"
- }
- ],
-
- // Command control socket configuration parameters for Kea DHCPv4 server.
- "control-socket": {
- // Location of the unix domain socket file the DHCPv4 server uses
- // to receive control commands from the Kea Control Agent or the
- // local server administrator.
- "socket-name": "/tmp/kea-dhcp4-ctrl.sock",
-
- // Control socket type used by the Kea DHCPv4 server. The 'unix'
- // socket is currently the only supported type.
- "socket-type": "unix"
- },
+ {
+ // Third class name.
+ "name": "late",
- // Time in seconds specifying how long a declined lease should be
- // excluded from DHCP assignments. The default value is 24 hours.
- "decline-probation-period": 86400,
-
- // Name Change Requests forwarding configuration for Kea DHCPv4 server.
- // NCRs are sent to Kea D2 module to update DNS upon allocation of the
- // DHCP leases.
- "dhcp-ddns": {
- // Boolean flag indicating if Kea DHCPv4 server must generate NCRs.
- // By default NCRs are not generated.
- "enable-updates": false,
-
- // Specifies a prefix to be prepended to the generated Client FQDN.
- "generated-prefix": "myhost",
-
- // String of zero or more characters with which to replace each
- // invalid character in the hostname or Client FQDN. The default
- // value is an empty string which will cause invalid characters
- // to be omitted rather than replaced.
- "hostname-char-replacement": "x",
-
- // Regular expression describing the invalid character set in
- // the hostname or Client FQDN.
- "hostname-char-set": "[^A-Za-z0-9.-]",
-
- // Specifies maximum number of NCRs to queue waiting to be sent
- // to Kea D2 server.
- "max-queue-size": 1024,
-
- // Packet format to use when sending NCRs to Kea D2 server.
- // Currently, only JSON format is supported.
- "ncr-format": "JSON",
-
- // Socket protocol to use when sending NCRs to D2. Currently,
- // only UDP is supported.
- "ncr-protocol": "UDP",
-
- // Boolean flag indicating that server should ignore DHCP client
- // wishes to update DNS on its own. With that flag set to true
- // the server will send DNS updates for both forward and
- // reverse DNS data. The default value is false, which indicates
- // that the server will delegate DNS update to the client when
- // requested.
- "override-client-update": false,
-
- // Boolean flag indicating that the server should override DHCP
- // client's wish to not update the DNS. With this parameter
- // set to true the server will send DNS update even when
- // the client requested no update.
- "override-no-update": false,
-
- // Suffix appended to the partial name sent to the DNS. The
- // default value is an empty string which indicates that no
- // suffix is appended.
- "qualifying-suffix": "",
-
- // Enumeration specifying whether the server should honor
- // hostname or Client FQDN sent by the client or replace
- // this name. The acceptable values are: "never" (use the
- // name the client sent), "always" (replace the name the
- // client sent), "when-present" (replace the name the client
- // sent, but do not generate one when the client didn't sent
- // the name), "when-not-present" (generate the name when
- // client didn't send one, otherwise leave the name the
- // client sent). The default value is "never".
- "replace-client-name": "never",
-
- // IP address that Kea DHCPv4 server should use to send
- // NCRs to D2. Default value of zero indicates that Kea
- // should pick suitable address.
- "sender-ip": "0.0.0.0",
-
- // Port number that Kea DHCPv4 server should use to send
- // NCRs to D2. Default value of zero indicates that Kea
- // should pick suitable port.
- "sender-port": 0,
-
- // IP address on which D2 listens for NCRs.
- "server-ip": "127.0.0.1",
-
- // Port number on which D2 listens for NCRs.
- "server-port": 53001
- },
+ // Boolean flag indicating that the class expression is only evaluated
+ // when the class is required, e.g. selected address pool configuration
+ // includes this class name in its "require-client-classes" list. The
+ // default value false means that the class test expression must
+ // always be evaluated.
+ "only-if-required": true,
- // Specifies the first of the two consecutive ports of the UDP
- // sockets used for communication between DHCPv6 and DHCPv4
- // servers. See RFC 7341.
- "dhcp4o6-port": 6767,
-
- // Boolean flag indicating whether or not the Kea DHCPv4 server
- // should send back Client Identifier option in its responses.
- // The default value is true which indicates that the option
- // must be sent back if the client included it. The false
- // value instructs the server to not send this option for
- // backward compatibility with older DHCP specifications which
- // stated that Client Identifier must not be sent back.
- "echo-client-id": true,
-
- // Collection of Kea DHCPv4 server parameters configuring how
- // the server should process expired DHCP leases.
- "expired-leases-processing": {
- // Specifies the number of seconds since last removal of
- // the expired leases when next removal should occur.
- "flush-reclaimed-timer-wait-time": 25,
-
- // Specifies the time period in seconds to keep expired
- // leases in the lease database (lease affinity).
- "hold-reclaimed-time": 3600,
-
- // Specifies the maximum number of expired leases that can be
- // processed in a single attempt to clean up the lease
- // database from the expired leases. If there are more
- // expired leases, they will be processed during the next
- // cleanup attempt.
- "max-reclaim-leases": 100,
-
- // Specifies the maximum time in milliseconds that the single
- // attempt to cleanup the lease database from the expired
- // leases may take.
- "max-reclaim-time": 250,
-
- // Specifies the time period in seconds since last attempt
- // to process expired leases to initiate the next attempt.
- "reclaim-timer-wait-time": 10,
-
- // Specifies the maximum number of expired leases processing
- // cycles which didn't result in full cleanup of the lease
- // database from the expired leases, after which a
- // warning message is issued.
- "unwarned-reclaim-cycles": 5
- },
-
- // List of hooks libraries and their specific configuration parameters
- // to be loaded by Kea DHCPv4 server.
- "hooks-libraries": [
- {
- // Location of the hooks library to be loaded.
- "library": "/opt/lib/hooks/libdhcp_lease_cmds.so",
-
- // Hook library specific configuration parameters.
- "parameters": { }
- }
- ],
-
- // List of access credentials to external sources of IPv4 reservations,
- "hosts-databases": [
- {
- // Name of the database to connect to.
- "name": "kea",
-
- // Host on which the database resides.
- "host": "localhost",
-
- // Database password.
- "password": "kea",
-
- // Port on which the database is available.
- "port": 3306,
-
- // Type of the database, e.g. "mysql", "pgsql", "cql".
- "type": "mysql",
-
- // User name to be used to access the database.
- "user": "kea"
- }
- ],
-
- // List of host reservation identifier types to be used by the
- // Kea DHCPv4 server to fetch static reservations for the
- // DHCP clients. All identifiers are used by default, which
- // means that the server will issue multiple queries to the
- // database to find if there is a reservation for the particular
- // client. If the particular deployment uses only subset, e.g.
- // one, identifier type, this identifier should be only listed
- // here to prevent unnecessary queries to the database.
- "host-reservation-identifiers": [
- "hw-address",
- "duid",
- "circuit-id",
- "client-id",
- "flex-id"
- ],
-
- // Specifies configuration of interfaces on which the Kea DHCPv4
- // server is listening to the DHCP queries.
- "interfaces-config": {
- // Specifies whether the server should use "udp" socket or
- // "raw" sockets to listen to the DHCP traffic. The "raw"
- // sockets are useful when direct DHCP traffic is being
- // received.
- "dhcp-socket-type": "udp",
-
- // Specifies a list of interfaces on which the Kea DHCPv4
- // server should listen to the DHCP requests.
- "interfaces": [
- "ethX"
+ // Class selection expression.
+ "test": "member('ALL')"
+ }
],
- // Enumeration which indicates what interface should be used
- // to send DHCP response to the client. The default value is
- // "same-as-inbound" which indicates that the response should
- // be sent via the interface on which the client's query
- // was received. The "use-routing" value indicates that the
- // Kea server should use kernel's routing table to find the
- // suitable interface,
- "outbound-interface": "same-as-inbound",
-
- // Boolean flag indicating if the available interfaces should
- // be re-detected upon server reconfiguration. The default value
- // is true which means that the interfaces are always
- // re-detected.
- "re-detect": true
- },
+ // Command control socket configuration parameters for Kea DHCPv4 server.
+ "control-socket": {
+ // Location of the unix domain socket file the DHCPv4 server uses
+ // to receive control commands from the Kea Control Agent or the
+ // local server administrator.
+ "socket-name": "/tmp/kea-dhcp4-ctrl.sock",
- // Specifies credentials to access lease database.
- "lease-database": {
- // memfile backend specific parameter specifying the interval
- // in seconds at which lease file should be cleaned up (outdated
- // lease entries are removed to prevent lease file from growing
- // infinitely).
- "lfc-interval": 3600,
-
- // Name of the lease file. In case of database it specifies the
- // database name.
- "name": "/tmp/kea-dhcp4.csv",
-
- // memfile specific parameter indicating whether leases should
- // be saved on persistent storage (disk) or not. The true value
- // is the default and it indicates that leases are stored in the
- // persistent storage. This setting must be used in production.
- // The false value should only be used for testing purposes
- // because non stored leases will be lost upon Kea server restart.
- "persist": true,
-
- // Lease database backend type, i.e. "memfile", "mysql", "pgsql"
- // or "cql".
- "type": "memfile"
- },
+ // Control socket type used by the Kea DHCPv4 server. The 'unix'
+ // socket is currently the only supported type.
+ "socket-type": "unix"
+ },
- // Boolean value indicating if the Kea DHCPv4 server should use client
- // identifier value sent by the client or ignore it. The default value
- // is true which indicate that the server should use client identifier
- // and that it takes precedence over client's MAC address. In deployments
- // where MAC address should take precedence this value can be set to
- // false, in which case the clients will be identified by MAC address.
- // This is specifically useful when clients don't generate unique
- // identifiers or these identifiers are not stable etc.
- "match-client-id": false,
-
- // Global value of the next server address set in 'siaddr' field.
- // The global value may be overriden in lower level configuration
- // scopes.
- "next-server": "192.0.2.123",
-
- // List of global DHCP options that Kea DHCPv4 server assigns to the
- // clients.
- "option-data": [
- {
- // Boolean flag indicating if the given option is always
- // send in response or only when requested. The default
- // value of false indicates that it is only sent when
+ // Time in seconds specifying how long a declined lease should be
+ // excluded from DHCP assignments. The default value is 24 hours.
+ "decline-probation-period": 86400,
+
+ // Name Change Requests forwarding configuration for Kea DHCPv4 server.
+ // NCRs are sent to Kea D2 module to update DNS upon allocation of the
+ // DHCP leases.
+ "dhcp-ddns": {
+ // Boolean flag indicating if Kea DHCPv4 server must generate NCRs.
+ // By default NCRs are not generated.
+ "enable-updates": false,
+
+ // Specifies a prefix to be prepended to the generated Client FQDN.
+ "generated-prefix": "myhost",
+
+ // String of zero or more characters with which to replace each
+ // invalid character in the hostname or Client FQDN. The default
+ // value is an empty string which will cause invalid characters
+ // to be omitted rather than replaced.
+ "hostname-char-replacement": "x",
+
+ // Regular expression describing the invalid character set in
+ // the hostname or Client FQDN.
+ "hostname-char-set": "[^A-Za-z0-9.-]",
+
+ // Specifies maximum number of NCRs to queue waiting to be sent
+ // to Kea D2 server.
+ "max-queue-size": 1024,
+
+ // Packet format to use when sending NCRs to Kea D2 server.
+ // Currently, only JSON format is supported.
+ "ncr-format": "JSON",
+
+ // Socket protocol to use when sending NCRs to D2. Currently,
+ // only UDP is supported.
+ "ncr-protocol": "UDP",
+
+ // Boolean flag indicating that server should ignore DHCP client
+ // wishes to update DNS on its own. With that flag set to true
+ // the server will send DNS updates for both forward and
+ // reverse DNS data. The default value is false, which indicates
+ // that the server will delegate DNS update to the client when
// requested.
- "always-send": false,
-
- // Option code. It is not required if the option name is
- // provided.
- "code": 6,
-
- // Boolean value indicating whether the option data specified
- // in the "data" field is specified as a string of hexadecimal
- // digits or in human readable CSV format.
- "csv-format": true,
-
- // Option data to be stored in the option payload.
- "data": "192.0.3.1, 192.0.3.2",
-
- // Option name. It is not required of the option code is
- // provided.
- "name": "domain-name-servers",
-
- // Option space. The default is the "dhcp4" option space which
- // groups top level DHCPv4 options.
- "space": "dhcp4"
- }
- ],
-
- // List of global option definitions, i.e. option formats, that the
- // Kea DHCPv4 server is using.
- "option-def": [
- {
- // Boolean flag indicating if the option definition comprises
- // an array of values of some type, e.g. array of IPv4 addresses.
- // The default value of false means that the option does not
- // comprise an array of values.
- "array": false,
-
- // Option code.
- "code": 6,
-
- // Holds a name of the option space encapsulated by this option.
- // All options that belong to this option space will be sent
- // as sub-options of this option. Empty string means that this
- // option doesn't encapsulate any option.
- "encapsulate": "",
-
- // Option name.
- "name": "my-option",
-
- // Specifies the types of fields within the option if the option
- // is said to be a "record" (see "type"). in this particular example
- // this option comprises two fields, 1 byte and 2 bytes long.
- "record-types": "uint8, uint16",
-
- // Name of the option space to which this option belongs.
- "space": "my-space",
-
- // Option type. All possible types are listed in the Kea
- // Administrator Reference Manual.
- "type": "record"
- }
- ],
-
- // Global value for the rebind timer, i.e. the time after which the
- // DHCP client enters rebind state if it fails to renew the lease.
- "rebind-timer": 40,
-
- // Global value for the renew timer, i.e. the timer after which the
- // DHCP client renews the lease.
- "renew-timer": 30,
-
- // Governs how the Kea DHCPv4 server should deal with the invalid
- // data received from the client.
- "sanity-checks": {
- // Specifies how the Kea DHCPv4 server should behave when invalid
- // data is read for a lease from the lease file. The following
- // values are supported "none" (don't attempt to correct the
- // lease information), "warn" (print a warning for subnet-id
- // related inconsistencies), "fix" (correct the subnet id by
- // trying to find the suitable subnet), "fix-del" (similar
- // to "fix" but delete the lease if no suitable subnet found),
- // "del" (delete the lease if the lease has invalid subnet
- // identifier value).
- "lease-checks": "warn"
- },
-
- // List of shared networks used by Kea DHCPv4 server. The shared
- // networks group subnets together.
- "shared-networks": [
- {
- // Shared network level bootfile name.
- "boot-file-name": "/dev/null",
-
- // Restricts this shared network to allow only clients
- // that belong to the particular client class. If an
- // empty string is provided, no restriction is applied.
- "client-class": "",
-
- // Specifies that this shared network is selected for the
- // requests received on the particular interface.
- "interface": "ethX",
-
- // Shared network level flag specifying whether the client
- // identifier should be used for identifying clients.
- "match-client-id": true,
-
- // Shared network name.
- "name": "my-secret-network",
-
- // Shared network level specification of the next server
- // to be sent in 'siaddr'.
- "next-server": "192.0.2.123",
-
- // List of shared network specific DHCP options.
- "option-data": [],
-
- // List of IPv4 relay addresses for which this shared
- // network is selected.
- "relay": {
- "ip-addresses": []
- },
-
- // Shared network level rebind timer.
- "rebind-timer": 41,
-
- // Shared network level renew timer.
- "renew-timer": 31,
-
- // Enumeration specifying server's mode of operation when it
- // fetches host reservations.
- "reservation-mode": "all",
+ "override-client-update": false,
+
+ // Boolean flag indicating that the server should override DHCP
+ // client's wish to not update the DNS. With this parameter
+ // set to true the server will send DNS update even when
+ // the client requested no update.
+ "override-no-update": false,
+
+ // Suffix appended to the partial name sent to the DNS. The
+ // default value is an empty string which indicates that no
+ // suffix is appended.
+ "qualifying-suffix": "",
+
+ // Enumeration specifying whether the server should honor
+ // hostname or Client FQDN sent by the client or replace
+ // this name. The acceptable values are: "never" (use the
+ // name the client sent), "always" (replace the name the
+ // client sent), "when-present" (replace the name the client
+ // sent, but do not generate one when the client didn't sent
+ // the name), "when-not-present" (generate the name when
+ // client didn't send one, otherwise leave the name the
+ // client sent). The default value is "never".
+ "replace-client-name": "never",
+
+ // IP address that Kea DHCPv4 server should use to send
+ // NCRs to D2. Default value of zero indicates that Kea
+ // should pick suitable address.
+ "sender-ip": "0.0.0.0",
+
+ // Port number that Kea DHCPv4 server should use to send
+ // NCRs to D2. Default value of zero indicates that Kea
+ // should pick suitable port.
+ "sender-port": 0,
+
+ // IP address on which D2 listens for NCRs.
+ "server-ip": "127.0.0.1",
+
+ // Port number on which D2 listens for NCRs.
+ "server-port": 53001
+ },
- // List of client classes which must be evaluated when this shared
- // network is selected for client assignments.
- "require-client-classes": [ "late" ],
+ // Specifies the first of the two consecutive ports of the UDP
+ // sockets used for communication between DHCPv6 and DHCPv4
+ // servers. See RFC 7341.
+ "dhcp4o6-port": 6767,
+
+ // Boolean flag indicating whether or not the Kea DHCPv4 server
+ // should send back Client Identifier option in its responses.
+ // The default value is true which indicates that the option
+ // must be sent back if the client included it. The false
+ // value instructs the server to not send this option for
+ // backward compatibility with older DHCP specifications which
+ // stated that Client Identifier must not be sent back.
+ "echo-client-id": true,
+
+ // Collection of Kea DHCPv4 server parameters configuring how
+ // the server should process expired DHCP leases.
+ "expired-leases-processing": {
+ // Specifies the number of seconds since last removal of
+ // the expired leases when next removal should occur.
+ "flush-reclaimed-timer-wait-time": 25,
+
+ // Specifies the time period in seconds to keep expired
+ // leases in the lease database (lease affinity).
+ "hold-reclaimed-time": 3600,
+
+ // Specifies the maximum number of expired leases that can be
+ // processed in a single attempt to clean up the lease
+ // database from the expired leases. If there are more
+ // expired leases, they will be processed during the next
+ // cleanup attempt.
+ "max-reclaim-leases": 100,
+
+ // Specifies the maximum time in milliseconds that the single
+ // attempt to cleanup the lease database from the expired
+ // leases may take.
+ "max-reclaim-time": 250,
+
+ // Specifies the time period in seconds since last attempt
+ // to process expired leases to initiate the next attempt.
+ "reclaim-timer-wait-time": 10,
+
+ // Specifies the maximum number of expired leases processing
+ // cycles which didn't result in full cleanup of the lease
+ // database from the expired leases, after which a
+ // warning message is issued.
+ "unwarned-reclaim-cycles": 5
+ },
- // Shared network level server hostname set in 'sname' field.
- "server-hostname": "",
+ // List of hooks libraries and their specific configuration parameters
+ // to be loaded by Kea DHCPv4 server.
+ "hooks-libraries": [
+ {
+ // Location of the hooks library to be loaded.
+ "library": "/opt/lib/hooks/libdhcp_lease_cmds.so",
- // List of IPv4 subnets belonging to this shared network.
- "subnet4": [
- {
- // Interface name matched against inbound interface name.
- // Used in DHCPv4o6. See RFC 7341.
- "4o6-interface": "",
+ // Hook library specific configuration parameters.
+ "parameters": { }
+ }
+ ],
- // Interface ID option value. See RFC 7341.
- "4o6-interface-id": "",
+ // List of access credentials to external sources of IPv4 reservations,
+ "hosts-databases": [
+ {
+ // Name of the database to connect to.
+ "name": "kea",
- // Prefix matched against source address. See RFC7341.
- "4o6-subnet": "2001:db8:1:1::/64",
+ // Host on which the database resides.
+ "host": "localhost",
- // Subnet level bootfile name, set in 'file' field.
- "boot-file-name": "",
+ // Database password.
+ "password": "kea",
- // Restricts this subnet to allow only clients that belong
- // to the particular client class. If an empty string is
- // provided, no restriction is applied.
- "client-class": "",
+ // Port on which the database is available.
+ "port": 3306,
- // Subnet unique identifier.
- "id": 1,
+ // Type of the database, e.g. "mysql", "pgsql", "cql".
+ "type": "mysql",
- // Specifies that this subnet is selected for the requests
- // received on the particular interface.
- "interface": "ethX",
+ // User name to be used to access the database.
+ "user": "kea"
+ }
+ ],
- // Subnet level flag specifying whether the client identifier
- // should be used for identifying clients.
- "match-client-id": true,
+ // List of host reservation identifier types to be used by the
+ // Kea DHCPv4 server to fetch static reservations for the
+ // DHCP clients. All identifiers are used by default, which
+ // means that the server will issue multiple queries to the
+ // database to find if there is a reservation for the particular
+ // client. If the particular deployment uses only subset, e.g.
+ // one, identifier type, this identifier should be only listed
+ // here to prevent unnecessary queries to the database.
+ "host-reservation-identifiers": [
+ "hw-address",
+ "duid",
+ "circuit-id",
+ "client-id",
+ "flex-id"
+ ],
- // Subnet level specification of the next server to be sent
- // in 'siaddr'.
- "next-server": "0.0.0.0",
+ // Specifies configuration of interfaces on which the Kea DHCPv4
+ // server is listening to the DHCP queries.
+ "interfaces-config": {
+ // Specifies whether the server should use "udp" socket or
+ // "raw" sockets to listen to the DHCP traffic. The "raw"
+ // sockets are useful when direct DHCP traffic is being
+ // received.
+ "dhcp-socket-type": "udp",
+
+ // Specifies a list of interfaces on which the Kea DHCPv4
+ // server should listen to the DHCP requests.
+ "interfaces": [
+ "ethX"
+ ],
- // Subnet level list of DHCP options.
- "option-data": [
- {
- // Boolean flag indicating if the particular option
- // should be always sent or sent only when requested.
- "always-send": false,
+ // Enumeration which indicates what interface should be used
+ // to send DHCP response to the client. The default value is
+ // "same-as-inbound" which indicates that the response should
+ // be sent via the interface on which the client's query
+ // was received. The "use-routing" value indicates that the
+ // Kea server should use kernel's routing table to find the
+ // suitable interface.
+ "outbound-interface": "same-as-inbound",
+
+ // Boolean flag indicating if the available interfaces should
+ // be re-detected upon server reconfiguration. The default value
+ // is true which means that the interfaces are always
+ // re-detected.
+ "re-detect": true
+ },
- // Option code.
- "code": 3,
+ // Specifies credentials to access lease database.
+ "lease-database": {
+ // memfile backend specific parameter specifying the interval
+ // in seconds at which lease file should be cleaned up (outdated
+ // lease entries are removed to prevent lease file from growing
+ // infinitely).
+ "lfc-interval": 3600,
+
+ // Name of the lease file. In case of database it specifies the
+ // database name.
+ "name": "/tmp/kea-dhcp4.csv",
+
+ // memfile specific parameter indicating whether leases should
+ // be saved on persistent storage (disk) or not. The true value
+ // is the default and it indicates that leases are stored in the
+ // persistent storage. This setting must be used in production.
+ // The false value should only be used for testing purposes
+ // because non stored leases will be lost upon Kea server restart.
+ "persist": true,
+
+ // Lease database backend type, i.e. "memfile", "mysql", "pgsql"
+ // or "cql".
+ "type": "memfile"
+ },
- // Boolean flag indicating if the option value specified
- // in "data" is a string of hexadecimal values or human
- // readable CSV value.
- "csv-format": true,
+ // Boolean value indicating if the Kea DHCPv4 server should use client
+ // identifier value sent by the client or ignore it. The default value
+ // is true which indicate that the server should use client identifier
+ // and that it takes precedence over client's MAC address. In deployments
+ // where MAC address should take precedence this value can be set to
+ // false, in which case the clients will be identified by MAC address.
+ // This is specifically useful when clients don't generate unique
+ // identifiers or these identifiers are not stable etc.
+ "match-client-id": false,
+
+ // Global value of the next server address set in 'siaddr' field.
+ // The global value may be overriden in lower level configuration
+ // scopes.
+ "next-server": "192.0.2.123",
+
+ // List of global DHCP options that Kea DHCPv4 server assigns to the
+ // clients.
+ "option-data": [
+ {
+ // Boolean flag indicating if the given option is always
+ // send in response or only when requested. The default
+ // value of false indicates that it is only sent when
+ // requested.
+ "always-send": false,
+
+ // Option code. It is not required if the option name is
+ // provided.
+ "code": 6,
+
+ // Boolean value indicating whether the option data specified
+ // in the "data" field is specified as a string of hexadecimal
+ // digits or in human readable CSV format.
+ "csv-format": true,
+
+ // Option data to be stored in the option payload.
+ "data": "192.0.3.1, 192.0.3.2",
+
+ // Option name. It is not required of the option code is
+ // provided.
+ "name": "domain-name-servers",
+
+ // Option space. The default is the "dhcp4" option space which
+ // groups top level DHCPv4 options.
+ "space": "dhcp4"
+ }
+ ],
- // Option data to be included in the option payload.
- "data": "192.0.3.1",
+ // List of global option definitions, i.e. option formats, that the
+ // Kea DHCPv4 server is using.
+ "option-def": [
+ {
+ // Boolean flag indicating if the option definition comprises
+ // an array of values of some type, e.g. array of IPv4 addresses.
+ // The default value of false means that the option does not
+ // comprise an array of values.
+ "array": false,
+
+ // Option code.
+ "code": 6,
+
+ // Holds a name of the option space encapsulated by this option.
+ // All options that belong to this option space will be sent
+ // as sub-options of this option. Empty string means that this
+ // option doesn't encapsulate any option.
+ "encapsulate": "",
+
+ // Option name.
+ "name": "my-option",
+
+ // Specifies the types of fields within the option if the option
+ // is said to be a "record" (see "type"). in this particular example
+ // this option comprises two fields, 1 byte and 2 bytes long.
+ "record-types": "uint8, uint16",
+
+ // Name of the option space to which this option belongs.
+ "space": "my-space",
+
+ // Option type. All possible types are listed in the Kea
+ // Administrator Reference Manual.
+ "type": "record"
+ }
+ ],
- // Option name.
- "name": "routers",
+ // Global value for the rebind timer, i.e. the time after which the
+ // DHCP client enters rebind state if it fails to renew the lease.
+ "rebind-timer": 40,
+
+ // Global value for the renew timer, i.e. the timer after which the
+ // DHCP client renews the lease.
+ "renew-timer": 30,
+
+ // Governs how the Kea DHCPv4 server should deal with the invalid
+ // data received from the client.
+ "sanity-checks": {
+ // Specifies how the Kea DHCPv4 server should behave when invalid
+ // data is read for a lease from the lease file. The following
+ // values are supported "none" (don't attempt to correct the
+ // lease information), "warn" (print a warning for subnet-id
+ // related inconsistencies), "fix" (correct the subnet id by
+ // trying to find the suitable subnet), "fix-del" (similar
+ // to "fix" but delete the lease if no suitable subnet found),
+ // "del" (delete the lease if the lease has invalid subnet
+ // identifier value).
+ "lease-checks": "warn"
+ },
- // Option space. The default value "dhcp4" designates the
- // top level option space.
- "space": "dhcp4"
- }
- ],
+ // List of shared networks used by Kea DHCPv4 server. The shared
+ // networks group subnets together.
+ "shared-networks": [
+ {
+ // Shared network level bootfile name.
+ "boot-file-name": "/dev/null",
- // List of IP address pools belonging to the subnet.
- "pools": [
- {
- // Restricts this pool to be only used for the client
- // requests belonging to a particular client class.
- "client-class": "phones_server1",
+ // Restricts this shared network to allow only clients
+ // that belong to the particular client class. If an
+ // empty string is provided, no restriction is applied.
+ "client-class": "",
- // Pool level list of DHCP options.
- "option-data": [],
+ // Specifies that this shared network is selected for the
+ // requests received on the particular interface.
+ "interface": "ethX",
- // Address range used for client assignments.
- "pool": "192.1.0.1 - 192.1.0.200",
+ // Shared network level flag specifying whether the client
+ // identifier should be used for identifying clients.
+ "match-client-id": true,
+
+ // Shared network name.
+ "name": "my-secret-network",
+
+ // Shared network level specification of the next server
+ // to be sent in 'siaddr'.
+ "next-server": "192.0.2.123",
+
+ // List of shared network specific DHCP options.
+ "option-data": [],
- // List of client classes which must be evaluated when this pool
- // is selected for client assignments.
- "require-client-classes": [ "late" ]
- },
- {
- // Restricts this pool to be only used for the client
- // requests belonging to a particular client class.
- "client-class": "phones_server2",
-
- // Pool level list of DHCP options.
- "option-data": [],
-
- // Address range used for client assignments.
- "pool": "192.3.0.1 - 192.3.0.200",
-
- // List of client classes which must be evaluated when this pool
- // is selected for client assignments.
- "require-client-classes": []
- }
- ],
-
- // Subnet level value of the rebind timer.
- "rebind-timer": 40,
-
- // List of IPv4 relay addresses for which this subnet is
- // selected.
- "relay": {
- "ip-addresses": [
- "192.168.56.1"
- ]
- },
-
- // Subnet level value of the renew timer.
- "renew-timer": 30,
-
- // Enumeration specifying server's mode of operation when it
- // fetches host reservations.
- "reservation-mode": "all",
-
- // List of static IPv4 reservations assigned to the clients belonging
- // to this subnet. For detailed example see reservations.json.
- "reservations": [
- {
- // Identifier used for client matching. Supported values are
- // "hw-address", "client-id", "duid", "circuit-id", "flex-id".
- "circuit-id": "01:11:22:33:44:55:66",
-
- // Reserved IP address.
- "ip-address": "192.0.2.204",
-
- // Reservation specific option data.
- "option-data": [
- {
- // Option name.
- "name": "vivso-suboptions",
-
- // Option data.
- "data": "4491"
- }
+ // List of IPv4 relay addresses for which this shared
+ // network is selected.
+ "relay": {
+ "ip-addresses": []
+ },
+
+ // Shared network level rebind timer.
+ "rebind-timer": 41,
+
+ // Shared network level renew timer.
+ "renew-timer": 31,
+
+ // Enumeration specifying server's mode of operation when it
+ // fetches host reservations.
+ "reservation-mode": "all",
+
+ // List of client classes which must be evaluated when this shared
+ // network is selected for client assignments.
+ "require-client-classes": [ "late" ],
+
+ // Shared network level server hostname set in 'sname' field.
+ "server-hostname": "",
+
+ // List of IPv4 subnets belonging to this shared network.
+ "subnet4": [
+ {
+ // Interface name matched against inbound interface name.
+ // Used in DHCPv4o6. See RFC 7341.
+ "4o6-interface": "",
+
+ // Interface ID option value. See RFC 7341.
+ "4o6-interface-id": "",
+
+ // Prefix matched against source address. See RFC7341.
+ "4o6-subnet": "2001:db8:1:1::/64",
+
+ // Subnet level bootfile name, set in 'file' field.
+ "boot-file-name": "",
+
+ // Restricts this subnet to allow only clients that belong
+ // to the particular client class. If an empty string is
+ // provided, no restriction is applied.
+ "client-class": "",
+
+ // Subnet unique identifier.
+ "id": 1,
+
+ // Specifies that this subnet is selected for the requests
+ // received on the particular interface.
+ "interface": "ethX",
+
+ // Subnet level flag specifying whether the client identifier
+ // should be used for identifying clients.
+ "match-client-id": true,
+
+ // Subnet level specification of the next server to be sent
+ // in 'siaddr'.
+ "next-server": "0.0.0.0",
+
+ // Subnet level list of DHCP options.
+ "option-data": [
+ {
+ // Boolean flag indicating if the particular option
+ // should be always sent or sent only when requested.
+ "always-send": false,
+
+ // Option code.
+ "code": 3,
+
+ // Boolean flag indicating if the option value specified
+ // in "data" is a string of hexadecimal values or human
+ // readable CSV value.
+ "csv-format": true,
+
+ // Option data to be included in the option payload.
+ "data": "192.0.3.1",
+
+ // Option name.
+ "name": "routers",
+
+ // Option space. The default value "dhcp4" designates the
+ // top level option space.
+ "space": "dhcp4"
+ }
+ ],
+
+ // List of IP address pools belonging to the subnet.
+ "pools": [
+ {
+ // Restricts this pool to be only used for the client
+ // requests belonging to a particular client class.
+ "client-class": "phones_server1",
+
+ // Pool level list of DHCP options.
+ "option-data": [],
+
+ // Address range used for client assignments.
+ "pool": "192.1.0.1 - 192.1.0.200",
+
+ // List of client classes which must be evaluated when this pool
+ // is selected for client assignments.
+ "require-client-classes": [ "late" ]
+ },
+ {
+ // Restricts this pool to be only used for the client
+ // requests belonging to a particular client class.
+ "client-class": "phones_server2",
+
+ // Pool level list of DHCP options.
+ "option-data": [],
+
+ // Address range used for client assignments.
+ "pool": "192.3.0.1 - 192.3.0.200",
+
+ // List of client classes which must be evaluated when this pool
+ // is selected for client assignments.
+ "require-client-classes": []
+ }
+ ],
+
+ // Subnet level value of the rebind timer.
+ "rebind-timer": 40,
+
+ // List of IPv4 relay addresses for which this subnet is
+ // selected.
+ "relay": {
+ "ip-addresses": [
+ "192.168.56.1"
]
- }
- ],
-
- // List of client classes which must be evaluated when this subnet
- // is selected for client assignments.
- "require-client-classes": [ "late" ],
-
- // Subnet level server hostname set in 'sname' field.
- "server-hostname": "",
-
- // Subnet prefix.
- "subnet": "192.0.0.0/8",
-
- // Subnet level valid lifetime.
- "valid-lifetime": 6000
- }
- ],
-
- // Shared network level valid lifetime.
- "valid-lifetime": 6001
- }
- ],
-
- // Global server hostname set in the 'sname' field.
- "server-hostname": "",
-
- // List of IPv4 subnets which don't belong to any shared network.
- "subnet4": [],
-
- // Global valid lifetime value.
- "valid-lifetime": 6000
- },
-
- // Logging configuration begins here.
- "Logging": {
-
- // List of loggers used by the servers using this configuration file.
- "loggers": [
- {
- // Debug level, a value between 0..99. The greater the value
- // the more detailed debug log.
- "debuglevel": 99,
-
- // Name of the logger.
- "name": "kea-dhcp4",
+ },
- // Configures how the log should be output.
- "output_options": [
- {
- // Determines whether the log should flushed to a file.
- "flush": true,
+ // Subnet level value of the renew timer.
+ "renew-timer": 30,
+
+ // Enumeration specifying server's mode of operation when it
+ // fetches host reservations.
+ "reservation-mode": "all",
+
+ // List of static IPv4 reservations assigned to the clients belonging
+ // to this subnet. For detailed example see reservations.json.
+ "reservations": [
+ {
+ // Identifier used for client matching. Supported values are
+ // "hw-address", "client-id", "duid", "circuit-id", "flex-id".
+ "circuit-id": "01:11:22:33:44:55:66",
+
+ // Reserved IP address.
+ "ip-address": "192.0.2.204",
+
+ // Reservation specific option data.
+ "option-data": [
+ {
+ // Option name.
+ "name": "vivso-suboptions",
+
+ // Option data.
+ "data": "4491"
+ }
+ ]
+ }
+ ],
+
+ // List of client classes which must be evaluated when this subnet
+ // is selected for client assignments.
+ "require-client-classes": [ "late" ],
+
+ // Subnet level server hostname set in 'sname' field.
+ "server-hostname": "",
+
+ // Subnet prefix.
+ "subnet": "192.0.0.0/8",
+
+ // Subnet level valid lifetime.
+ "valid-lifetime": 6000
+ }
+ ],
+
+ // Shared network level valid lifetime.
+ "valid-lifetime": 6001
+ }
+ ],
- // Specifies maximum filesize before the file is being rotated.
- "maxsize": 10240000,
+ // Global server hostname set in the 'sname' field.
+ "server-hostname": "",
- // Specifies the maximum number of rotated files being kept.
- "maxver": 1,
+ // List of IPv4 subnets which don't belong to any shared network.
+ "subnet4": [],
- // Specifies logging destination.
- "output": "stdout"
- }
- ],
+ // Global valid lifetime value.
+ "valid-lifetime": 6000
+ },
- // Specifies logging severity, i.e. "ERROR", "WARN", "INFO", "DEBUG".
- "severity": "INFO"
- }
- ]
- }
+ // Logging configuration begins here.
+ "Logging": {
+
+ // List of loggers used by the servers using this configuration file.
+ "loggers": [
+ {
+ // Debug level, a value between 0..99. The greater the value
+ // the more detailed debug log.
+ "debuglevel": 99,
+
+ // Name of the logger.
+ "name": "kea-dhcp4",
+
+ // Configures how the log should be output.
+ "output_options": [
+ {
+ // Determines whether the log should flushed to a file.
+ "flush": true,
+
+ // Specifies maximum filesize before the file is being rotated.
+ "maxsize": 10240000,
+
+ // Specifies the maximum number of rotated files being kept.
+ "maxver": 1,
+
+ // Specifies logging destination.
+ "output": "stdout"
+ }
+ ],
+
+ // Specifies logging severity, i.e. "ERROR", "WARN", "INFO", "DEBUG".
+ "severity": "INFO"
+ }
+ ]
+ }
}