Browse Source

[3684] Added examples for PostgreSQL host database connection.

Marcin Siodelski 8 years ago
parent
commit
98dae713db

+ 2 - 0
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

+ 96 - 0
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"
+        }
+    ]
+}
+
+}

+ 91 - 0
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"
+        }
+    ]
+}
+
+}