Kea DHCP: Difference between revisions

From Dave-Wiki
Jump to navigation Jump to search
No edit summary
Line 54: Line 54:
   COMMIT;
   COMMIT;


==Sync db Between Two Hosts==
==Sync db Between Two Host Reservations==


===Manual Dump of Hosts===
   mysqldump kea_db -u kea-user -p --tables hosts > kea-hosts.sql
   mysqldump kea_db -u kea-user -p --tables hosts > kea-hosts.sql
===Crontab for use on Standby peers===
  */5 * * * * mysqldump -h net1.lambnet.us -u net2 -p<password> --single-transaction kea_db hosts | mysql -u net2 -p<password> kea_db


...
...

Revision as of 01:17, 6 March 2024

Leases

Leases are stored in memfile, by default. But you can also have them written to a CSV file:

 "lease-database": {
     "type": "memfile", // write leases to memfile...
     "persist": true,
     "name": "/tmp/kea-leases4.csv", // ...but also write them to csv
     "lfc-interval": 3600,
     "max-row-errors": 100
 },

MySQL

To use host reservations from MySQL, you need to add the "hosts-database" section to the "Dhcp4" section of the config file, like this:

 "hosts-database": {
     "type": "mysql",
     "name": "kea_db",
     "user": "kea-user",
     "password": "super-secret-password",
     "host": "localhost",
     "port": 3306
 },

Subnet-Ids need to be defined in your subnet declarations, too.

You can use both the hosts database and the configuration file for host reservations at the same time.

IPv4 Reservations

Insert Statement Example:

 SELECT host_id,dhcp_identifier,dhcp4_subnet_id,ipv4_address,hostname FROM hosts;
 
 START TRANSACTION;
 SET @ipv4_reservation='10.1.70.11';
 SET @hostname = 'windows-pc';
 SET @identifier_type='hw-address';
 SET @identifier_value='be:ef:be:ef:be:ef';
 SET @dhcp4_subnet_id=70;
 
 INSERT INTO hosts (dhcp_identifier,
                    dhcp_identifier_type,
                    dhcp4_subnet_id,
                    ipv4_address,
                    hostname)
 VALUES (UNHEX(REPLACE(@identifier_value, ':', )),
 	(SELECT type FROM host_identifier_type WHERE name=@identifier_type),
         @dhcp4_subnet_id,
         INET_ATON(@ipv4_reservation),
         @hostname);
 
 COMMIT;

Sync db Between Two Host Reservations

Manual Dump of Hosts

 mysqldump kea_db -u kea-user -p --tables hosts > kea-hosts.sql

Crontab for use on Standby peers

 */5 * * * * mysqldump -h net1.lambnet.us -u net2 -p<password> --single-transaction kea_db hosts | mysql -u net2 -p<password> kea_db

...

MySQL Performance Tuning

Configure in /etc/mysql/my.cnf:

[mysqld]
innodb_flush_log_at_trx_commit=2

Control-Agent Commands

[ { "arguments": [ "build-report", "config-backend-pull", "config-get", "config-reload", "config-set", "config-test", "config-write", "dhcp-disable", "dhcp-enable", "ha-continue", "ha-heartbeat", "ha-maintenance-cancel", "ha-maintenance-notify", "ha-maintenance-start", "ha-reset", "ha-scopes", "ha-sync", "ha-sync-complete-notify", "lease4-add", "lease4-del", "lease4-get", "lease4-get-all", "lease4-get-by-client-id", "lease4-get-by-hostname", "lease4-get-by-hw-address", "lease4-get-page", "lease4-resend-ddns", "lease4-update", "lease4-wipe", "lease6-add", "lease6-bulk-apply", "lease6-del", "lease6-get", "lease6-get-all", "lease6-get-by-duid", "lease6-get-by-hostname", "lease6-get-page", "lease6-resend-ddns", "lease6-update", "lease6-wipe", "leases-reclaim", "libreload", "list-commands", "server-tag-get", "shutdown", "statistic-get", "statistic-get-all", "statistic-remove", "statistic-remove-all", "statistic-reset", "statistic-reset-all", "statistic-sample-age-set", "statistic-sample-age-set-all", "statistic-sample-count-set", "statistic-sample-count-set-all", "status-get", "version-get" ], "result": 0 } ]

Links

ISC-Kea
https://kea.readthedocs.io/en/latest/arm/config.html
Stork
https://stork.readthedocs.io/en/v1.8.0/
https://gitlab.isc.org/isc-projects/stork/-/wikis/Screenshots