From: Marcin Siodelski Date: Mon, 29 Aug 2016 14:51:38 +0000 (+0200) Subject: [3684] Added examples for PostgreSQL host database connection. X-Git-Tag: trac5006_base~8^2~4 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=98dae713dbfb243b2517f717b28d3dec845e513a;p=thirdparty%2Fkea.git [3684] Added examples for PostgreSQL host database connection. --- diff --git a/doc/Makefile.am b/doc/Makefile.am index 9b597fb462..3997e5cae5 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -14,6 +14,7 @@ nobase_dist_doc_DATA += examples/kea4/hooks.json nobase_dist_doc_DATA += examples/kea4/leases-expiration.json nobase_dist_doc_DATA += examples/kea4/multiple-options.json nobase_dist_doc_DATA += examples/kea4/mysql-reservations.json +nobase_dist_doc_DATA += examples/kea4/pgsql-reservations.json nobase_dist_doc_DATA += examples/kea4/reservations.json nobase_dist_doc_DATA += examples/kea4/several-subnets.json nobase_dist_doc_DATA += examples/kea4/single-subnet.json @@ -24,6 +25,7 @@ nobase_dist_doc_DATA += examples/kea6/hooks.json nobase_dist_doc_DATA += examples/kea6/leases-expiration.json nobase_dist_doc_DATA += examples/kea6/multiple-options.json nobase_dist_doc_DATA += examples/kea6/mysql-reservations.json +nobase_dist_doc_DATA += examples/kea6/pgsql-reservations.json nobase_dist_doc_DATA += examples/kea6/reservations.json nobase_dist_doc_DATA += examples/kea6/several-subnets.json nobase_dist_doc_DATA += examples/kea6/simple.json diff --git a/doc/examples/kea4/pgsql-reservations.json b/doc/examples/kea4/pgsql-reservations.json new file mode 100644 index 0000000000..c512c4d300 --- /dev/null +++ b/doc/examples/kea4/pgsql-reservations.json @@ -0,0 +1,96 @@ +# This is an example configuration file for the DHCPv4 server in Kea. +# It contains configuration of the PostgreSQL host database backend, used +# to retrieve reserved addresses, host names, DHCPv4 message fields +# and DHCP options from PostgreSQL database. +{ "Dhcp4": + +{ +# Kea is told to listen on ethX interface only. + "interfaces-config": { + "interfaces": [ "ethX" ] + }, + +# We need to specify lease type. As of May 2014, three backends are supported: +# memfile, mysql and pgsql. We'll just use memfile, because it doesn't require +# any prior set up. + "lease-database": { + "type": "memfile" + }, + +# Addresses will be assigned with valid lifetimes being 4000. Client +# is told to start renewing after 1000 seconds. If the server does not respond +# after 2000 seconds since the lease was granted, client is supposed +# to start REBIND procedure (emergency renewal that allows switching +# to a different server). + "valid-lifetime": 4000, + +# Renew and rebind timers are commented out. This implies that options +# 58 and 59 will not be sent to the client. In this case it is up to +# the client to pick the timer values according to RFC2131. Uncomment the +# timers to send these options to the client. +# "renew-timer": 1000, +# "rebind-timer": 2000, + + +# Kea supports reservations by several different types of identifiers: +# hw-address (hardware/MAC address of the client), duid (DUID inserted by the +# client), client-id (client identifier inserted by the client) and circuit-id +# (circuit identifier inserted by the relay agent). When told to do so, Kea can +# check for all of those identifier types, but it takes a costly database lookup +# to do so. It is therefore useful from a performance perspective to use only +# the reservation types that are actually used in a given network. + +# The example below is not optimal from a performance perspective, but it +# nicely showcases the host reservation capabilities. Please use the minimum +# set of identifier types used in your network. + "host-reservation-identifiers": [ "circuit-id", "hw-address", "duid", "client-id" ], + +# Specify connection to the database holding host reservations. The type +# specifies that the PostgreSQL database is used. user and password are the +# credentials used to connect to the database. host and name specify +# location of the host where the database instance is running, and the +# name of the database to use. The server processing a packet will first +# check if there are any reservations specified for this client in the +# reservations list, within the subnet (configuration file). If there are +# no reservations there, the server will try to retrieve reservations +# from this database. + "hosts-database": { + "type": "postgresql", + "name": "kea", + "user": "kea", + "password": "kea", + "host": "localhost" + }, + +# Define a subnet with a single pool of dynamic addresses. Addresses from +# this pool will be assigned to clients which don't have reservations in the +# database. Subnet identifier is equal to 1. If this subnet is selected for +# the client, this subnet id will be used to search for the reservations +# within the database. + "subnet4": [ + { + "pools": [ { "pool": "192.0.2.10 - 192.0.2.200" } ], + "subnet": "192.0.2.0/24", + "interface": "ethX", + "id": 1 + } + ] +}, + +# The following configures logging. It assumes that messages with at least +# informational level (info, warn, error) will will be logged to stdout. +"Logging": { + "loggers": [ + { + "name": "kea-dhcp4", + "output_options": [ + { + "output": "stdout" + } + ], + "severity": "INFO" + } + ] +} + +} diff --git a/doc/examples/kea6/pgsql-reservations.json b/doc/examples/kea6/pgsql-reservations.json new file mode 100644 index 0000000000..170c03e7d7 --- /dev/null +++ b/doc/examples/kea6/pgsql-reservations.json @@ -0,0 +1,91 @@ +# This is an example configuration file for the DHCPv6 server in Kea. +# It contains configuration of the PostgreSQL host database backend, used +# to retrieve reserved addresses, host names, DHCPv4 message fields +# and DHCP options from PostgreSQL database. +{ "Dhcp6": + +{ +# Kea is told to listen on ethX interface only. + "interfaces-config": { + "interfaces": [ "ethX" ] + }, + +# We need to specify lease type. As of May 2014, three backends are supported: +# memfile, mysql and pgsql. We'll just use memfile, because it doesn't require +# any prior set up. + "lease-database": { + "type": "memfile" + }, + +# This is pretty basic stuff, it has nothing to do with reservations. + "preferred-lifetime": 3000, + "valid-lifetime": 4000, + "renew-timer": 1000, + "rebind-timer": 2000, + +# Kea supports two types of identifiers in DHCPv6: hw-address (hardware/MAC address +# of the client) and duid (DUID inserted by the client). When told to do so, Kea can +# check for each of these identifier types, but it takes a costly database lookup +# to do so. It is therefore useful from a performance perspective to use only +# the reservation types that are actually used in a given network. + "host-reservation-identifiers": [ "duid", "hw-address" ], + +# Specify connection to the database holding host reservations. The type +# specifies that the PostgreSQL database is used. user and password are the +# credentials used to connect to the database. host and name specify +# location of the host where the database instance is running, and the +# name of the database to use. The server processing a packet will first +# check if there are any reservations specified for this client in the +# reservations list, within the subnet (configuration file). If there are +# no reservations there, the server will try to retrieve reservations +# from this database. + "hosts-database": { + "type": "postgresql", + "name": "kea", + "user": "kea", + "password": "kea", + "host": "localhost" + }, + +# Define a subnet with a pool of dynamic addresses and a pool of dynamic +# prefixes. Addresses and prefixes from those pools will be assigned to +# clients which don't have reservations in the database. Subnet identifier +# is equal to 1. If this subnet is selected for the client, this subnet +# id will be used to search for the reservations within the database. + "subnet6": [ + { + "subnet": "2001:db8:1::/48", + + "pools": [ { "pool": "2001:db8:1::/80" } ], + + "pd-pools": [ + { + "prefix": "2001:db8:1:8000::", + "prefix-len": 56, + "delegated-len": 64 + } + ], + "interface": "ethX", + "id": 1 + } + ] +}, + +# The following configures logging. Kea will log all debug messages +# to /var/log/kea-debug.log file. +"Logging": { + "loggers": [ + { + "name": "kea-dhcp6", + "output_options": [ + { + "output": "/var/log/kea-debug.log" + } + ], + "debuglevel": 99, + "severity": "DEBUG" + } + ] +} + +}