[Kea-users] Help with setting up MySQL backend for KEA
phincylp
phincylp at gmail.com
Sat Jun 27 10:20:16 UTC 2020
Hello,
I am trying to setup KEA dhcp to replace our old ISC dhcp infrastructure. I
am trying to use MySQL backend for host database. Leases are written to a
file in /dev/shm/
Following configuration is working fine.
{
// DHCPv4 configuration starts in this line
"Dhcp4": {
"valid-lifetime": 1000,
"renew-timer": 1000,
"rebind-timer": 2000,
"hooks-libraries": [
{
"library": "/opt/keadhcp/lib/kea/hooks/libdhcp_host_cmds.so"
},
{
"library": "/opt/keadhcp/lib/kea/hooks/libdhcp_lease_cmds.so"
}
],
"interfaces-config": {
"interfaces": [ "bond0" ],
"dhcp-socket-type": "udp"
},
"control-socket": {
"socket-name": "/tmp/kea4-ctrl-socket",
"socket-type": "unix"
},
"host-reservation-identifiers": [
"hw-address"
],
// And we specify the type of lease database
"lease-database": {
"lfc-interval": 3600,
"max-row-errors": 100,
"name": "/dev/shm/kea-dhcp4.csv",
"persist": true,
"type": "memfile"
},
"client-classes":[
{
"name": "ipxe_client",
"test": "substring(option[77].hex,0,4) == 'iPXE'"
},
{
"name": "pxeclient",
"test": "substring(option[60].hex,0,9) == 'PXEClient'",
"boot-file-name": "undionly.kpxe",
"next-server": "10.252.183.12"
},
{
"name": "bootp_client",
"test": "member('ipxe_client') and member('pxeclient')",
"boot-file-name": "http://10.252.183.12/ipxe/default"
},
{
"name": "dhcp_client",
"test": "not(member('ipxe_client') or member('pxeclient'))"
},
{
"name": "my_client",
"test": "member('ipxe_client') or member('pxeclient') or
member('dhcp_client')"
},
{
"name": "pxe_only_client",
"test": "not(member('ipxe_client')) and member('pxeclient') and
member('KNOWN')",
"boot-file-name": "undionly.kpxe",
"next-server": "10.252.183.12"
},
{
"name": "kickstart_client",
"test": "member('bootp_client') and member('KNOWN')",
"boot-file-name": "http://10.252.183.12/ipxe/undidefault"
}
],
// "subnet4": <?include "/dev/shm/kea_subnets.conf"?>,
"subnet4": [{
"subnet": "10.252.183.0/26",
"client-class": "my_client",
"option-data": [{"data": "10.252.183.1", "name": "routers"}],
"pools": [{"pool": "10.252.183.11 - 10.252.183.63"}],
"id": 390628,
"reservations": [
{
"hostname": "app101.lab.myhost.com",
"hw-address": "ac:1f:6b:7c:e9:02",
"ip-address": "10.252.183.46",
"next-server": "10.252.183.12"
}
]
}
],
"loggers": [
{
"name": "kea-dhcp4",
"output_options": [
{
"output": "/var/log/kea-debug.log",
"maxver": 8,
"maxsize": 1073741824,
"flush": false,
"pattern": "%d{%j %H:%M:%S.%q} %c %m\n"
}
],
"severity": "INFO"
}
]
}
}
If I run a curl query to kea api, I get
$ curl -X POST -H "Content-Type: application/json" -d '{"command":
"reservation-get", "arguments": {"identifier": "ac:1f:6b:7c:e9:02",
"subnet-id": 390628, "identifier-type" :"hw-address"}, "service":
["dhcp4"]}' http://localhost:8000/ | jq
% Total % Received % Xferd Average Speed Time Time Time
Current
Dload Upload Total Spent Left
Speed
100 447 100 291 100 156 98k 54054 --:--:-- --:--:-- --:--:--
142k
[
{
"arguments": {
"boot-file-name": "",
"client-classes": [],
"hostname": "app101.lab.myhost.com",
"hw-address": "ac:1f:6b:7c:e9:02",
"ip-address": "10.252.183.46",
"next-server": "10.252.183.12",
"option-data": [],
"server-hostname": ""
},
"result": 0,
"text": "Host found."
}
]
All looking good here. I am able to PXE boot my host, it sends PXE call
first, DHCP sends next-server and undionly.kpxe file. Then host loads
undionly.kpxe file and makes another dhcp call with IPXE, this time, host
sends "http://10.252.183.12/ipxe/undidefault".
Problem appear when I move the reservation to the MySQL database. As per the
logs, I can see KEA is resolving the configs for the host when a dhcp
request is seen, and responding fine. I confirmed this with tcpdump as well.
Also reservation-get command via rest api gives the same result as above.
However, the host go into DHCP loop. It never do a TFTP call to download the
undionly.kpxe file.
As soon as I delete the reservation from MySQL and add it back to
configuration, things start working. If there is not reservation(either in
MySQL or config file, things are still working as expected. That is, it
loads, undionly.kpxe and then http://10.252.183.12/ipxe/default from
boop_client class)
Any help with the above issue is welcome.
--
Sent from: http://kea-users.7364.n8.nabble.com/
More information about the Kea-users
mailing list