Kea DHCP: Difference between revisions
No edit summary |
|||
Line 1: | Line 1: | ||
=Leases= | ==Control== | ||
==Leases== | |||
Leases are stored in memfile, by default. But you can also have them written to a CSV file: | Leases are stored in memfile, by default. But you can also have them written to a CSV file: | ||
Line 11: | Line 13: | ||
}, | }, | ||
=MySQL= | ==MySQL== | ||
To use host reservations from MySQL, you need to add the <code>"hosts-database"</code> section to the <code>"Dhcp4"</code> section of the config file, like this: | To use host reservations from MySQL, you need to add the <code>"hosts-database"</code> section to the <code>"Dhcp4"</code> section of the config file, like this: | ||
Line 28: | Line 30: | ||
You can use both the hosts database and the configuration file for host reservations at the same time. | You can use both the hosts database and the configuration file for host reservations at the same time. | ||
==IPv4 Reservations== | ===IPv4 Reservations=== | ||
Insert Statement Example: | Insert Statement Example: | ||
Line 54: | Line 56: | ||
COMMIT; | COMMIT; | ||
==Sync db Between Two Hosts== | ===Sync db Between Two Hosts=== | ||
====Manual Dump of Host Reservations==== | |||
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=== | ====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 | */5 * * * * mysqldump -h net1.lambnet.us -u net2 -p<password> --single-transaction kea_db hosts | mysql -u net2 -p<password> kea_db | ||
Line 65: | Line 68: | ||
... | ... | ||
==MySQL Performance Tuning== | ===MySQL Performance Tuning=== | ||
Configure in <code>/etc/mysql/my.cnf</code>: | Configure in <code>/etc/mysql/my.cnf</code>: | ||
Line 72: | Line 75: | ||
innodb_flush_log_at_trx_commit=2 | innodb_flush_log_at_trx_commit=2 | ||
=Kea-Shell= | ==Kea-Shell== | ||
==Commands== | ===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 } ] | [ { "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 } ] | ||
===Get Status=== | ====Get Status==== | ||
kea-shell --host 10.144.30.8 --service dhcp4 status-get | kea-shell --host 10.144.30.8 --service dhcp4 status-get |
Revision as of 23:14, 19 July 2024
Control
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 Hosts
Manual Dump of Host Reservations
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
Kea-Shell
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 } ]
Get Status
kea-shell --host 10.144.30.8 --service dhcp4 status-get