[Kea-users] Kea 1.1.0, MySQL and client-id
Olivier Français
olivier.francais at corp.ovh.com
Thu Jan 5 09:41:53 UTC 2017
Hello,
I think I have the same issue. I try to do host reservation with a
client-id and a cisco device without success.
It works with mac address, but not with client-id.
I've try to change the identifiers for :
"host-reservation-identifiers": [ "auto" ]
and
"host-reservation-identifiers": [ "client-id" ]
but it doesn't work.
My device get and ip address, but not the reserved IP.
I took the client-id value from the lease table :
kea=> SELECT * FROM lease4;
-[ RECORD 1 ]--+-----------------------------
address | 3232235782
hwaddr | \xc8f9f9f79440
client_id | \x0073772d3235373431332d326b
valid_lifetime | 180
expire | 2017-01-05 09:35:55+00
subnet_id | 1
fqdn_fwd | t
fqdn_rev | t
hostname | sw-257413-2k
state | 0
kea=> SELECT * FROM hosts;
-[ RECORD 1 ]---------+-----------------------------
host_id | 3
dhcp_identifier | \x0073772d3235373431332d326b
dhcp_identifier_type | 3
dhcp4_subnet_id | 1
dhcp6_subnet_id |
ipv4_address | 3232235801
hostname |
dhcp4_client_classes |
dhcp6_client_classes |
dhcp4_next_server | 16777216
dhcp4_server_hostname |
dhcp4_boot_file_name |
I use PostgreSQL 9.4.10 with Kea :
1.1.0
tarball
linked with:
log4plus 1.1.2
OpenSSL 1.1.0c 10 Nov 2016
database:
MySQL backend 5.0, library 10.0.28-MariaDB
PostgreSQL backend 3.0, library 90409
Memfile backend 2.0
If it can help.
Thanks
--
Olivier Français
olivier.francais at corp.ovh.com
On mer., 2017-01-04 at 14:56 -0500, Jeffery Harrell wrote:
> Thanks for the suggestion, Marcin. No luck though. I haven’t yet had
> the opportunity to really systematically go through my configuration
> to look for the fault, but here’s what I can tell you so far:
>
>
> I added the client-id host identifier type to my MySQL database. I
> believe I did this correctly.
>
>
> MariaDB [kea]> SELECT * FROM host_identifier_type;
> +------+------------+
> | type | name |
> +------+------------+
> | 0 | hw-address |
> | 1 | duid |
> | 2 | circuit-id |
> | 3 | client-id |
> +------+------------+
> 4 rows in set (0.00 sec)
>
>
> I set “host-reservation-identifiers” to “auto” in the Dhcp4 section of
> kea.conf as you suggested. (Everything that follows is the same as
> what I get if I set it to “auto” or to any combination of “hw-address”
> and “client-id” with or without other tokens. If I JUST set it to
> “hw-address” then Kea doesn’t bother trying to look up host
> reservations by client ID, which is exactly what I’d expect.)
>
>
> Then I created a host reservation with a client ID. The reservation
> looks like this:
>
>
> MariaDB [kea]> SELECT * FROM hosts WHERE host_id=272 \G
> *************************** 1. row ***************************
> host_id: 272
> dhcp_identifier: milo
> dhcp_identifier_type: 3
> dhcp4_subnet_id: 168715520
> dhcp6_subnet_id: NULL
> ipv4_address: 168715522
> hostname: milo.dallas.charlietango.com
> dhcp4_client_classes: NULL
> dhcp6_client_classes: NULL
> dhcp4_next_server: NULL
> dhcp4_server_hostname: NULL
> dhcp4_boot_file_name: NULL
>
>
> The dhcp_identifier looks like plain text but it was created in what I
> assume is the proper way, by passing MySQL a hex representation of a
> sequence of bytes with the UNHEX function. I think it’s right and
> proper.
>
>
> MariaDB [kea]> SELECT HEX(dhcp_identifier) FROM hosts WHERE
> host_id=272;
> +----------------------+
> | HEX(dhcp_identifier) |
> +----------------------+
> | 6D696C6F |
> +----------------------+
>
>
> Here’s the relevant debug log output from an attempt to get a DHCP
> lease using this client ID. I tested from a Linux VM with the command
> line “dhclient -I milo -v.” It’s worth pointing out there’s a
> DHCP-relaying router between the client and the server, but I see the
> same results when there’s no router in the way.
>
>
> 2017-01-04 13:34:00.731 DEBUG [kea-dhcp4.packets/4117]
> DHCP4_BUFFER_RECEIVED received buffer from 10.14.99.254:68 to
> 10.14.99.23:67 over interface ens192
> 2017-01-04 13:34:00.731 DEBUG [kea-dhcp4.options/4117]
> DHCP4_BUFFER_UNPACK parsing buffer received from 10.14.99.254 to
> 10.14.99.23 over interface ens192
> 2017-01-04 13:34:00.731 DEBUG [kea-dhcp4.packets/4117]
> DHCP4_PACKET_RECEIVED [hwtype=1 00:50:56:bc:89:97], cid=[6d:69:6c:6f],
> tid=0xd70f580e: DHCPDISCOVER (type 1) received from 10.14.99.254 to
> 10.14.99.23 on interface ens192
>
>
> That’s both the correct MAC address and the correct client ID in
> hexadecimal. The IP 10.14.99.254 is the IP of the DHCP server’s side
> of the relaying router, and 10.14.99.23 is the IP of the DHCP server.
>
>
> 2017-01-04 13:34:00.731 DEBUG [kea-dhcp4.packets/4117]
> DHCP4_QUERY_DATA [hwtype=1 00:50:56:bc:89:97], cid=[6d:69:6c:6f],
> tid=0xd70f580e, packet details: local_address=10.14.99.23:67,
> remote_adress=10.14.99.254:68, msg_type=DHCPDISCOVER (1),
> transid=0xd70f580e,
> options:
> type=050, len=004: 10.14.101.2 (ipv4-address)
> type=053, len=001: 1 (uint8)
> type=055, len=013: 1(uint8) 28(uint8) 2(uint8) 121(uint8) 15(uint8)
> 6(uint8) 12(uint8) 40(uint8) 41(uint8) 42(uint8) 26(uint8) 119(uint8)
> 3(uint8)
> type=061, len=004: 6d:69:6c:6f
>
>
> Here we see Kea seems to properly decode option 61. I think.
>
>
> 2017-01-04 13:34:00.732 DEBUG [kea-dhcp4.dhcpsrv/4117]
> DHCPSRV_CFGMGR_SUBNET4_ADDR selected subnet 10.14.101.0/24 for packet
> received by matching address 10.14.101.254
> 2017-01-04 13:34:00.732 DEBUG [kea-dhcp4.packets/4117]
> DHCP4_SUBNET_SELECTED [hwtype=1 00:50:56:bc:89:97], cid=[6d:69:6c:6f],
> tid=0xd70f580e: the subnet with ID 168715520 was selected for client
> assignments
> 2017-01-04 13:34:00.732 DEBUG [kea-dhcp4.packets/4117]
> DHCP4_SUBNET_DATA [hwtype=1 00:50:56:bc:89:97], cid=[6d:69:6c:6f],
> tid=0xd70f580e: the selected subnet details: 10.14.101.0/24
>
>
> This is all correct, based on the giaddr from the relaying router, I’m
> assuming.
>
>
> 2017-01-04 13:34:00.732 DEBUG [kea-dhcp4.hosts/4117]
> HOSTS_CFG_GET_ONE_SUBNET_ID_IDENTIFIER get one host with IPv4
> reservation for subnet id 168715520, identified by hwaddr=005056BC8997
> 2017-01-04 13:34:00.732 DEBUG [kea-dhcp4.hosts/4117]
> HOSTS_CFG_GET_ALL_IDENTIFIER get all hosts with reservations using
> identifier: hwaddr=005056BC8997
> 2017-01-04 13:34:00.732 DEBUG [kea-dhcp4.hosts/4117]
> HOSTS_CFG_GET_ALL_IDENTIFIER_COUNT using identifier
> hwaddr=005056BC8997, found 0 host(s)
> 2017-01-04 13:34:00.732 DEBUG [kea-dhcp4.hosts/4117]
> HOSTS_CFG_GET_ONE_SUBNET_ID_IDENTIFIER_NULL host not found using
> subnet id 168715520 and identifier hwaddr=005056BC8997
>
>
> I assume these are all reports that Kea is trying to look up a host
> reservation using the MAC address. There is no such host reservation
> in the database so it’s proper that these should fail.
>
>
> 2017-01-04 13:34:00.732 DEBUG [kea-dhcp4.hosts/4117]
> HOSTS_CFG_GET_ONE_SUBNET_ID_IDENTIFIER get one host with IPv4
> reservation for subnet id 168715520, identified by client-id=6D696C6F
> 2017-01-04 13:34:00.732 DEBUG [kea-dhcp4.hosts/4117]
> HOSTS_CFG_GET_ALL_IDENTIFIER get all hosts with reservations using
> identifier: client-id=6D696C6F
> 2017-01-04 13:34:00.732 DEBUG [kea-dhcp4.hosts/4117]
> HOSTS_CFG_GET_ALL_IDENTIFIER_COUNT using identifier
> client-id=6D696C6F, found 0 host(s)
>
>
> I would have expected that to succeed, though. There IS a reservation
> with that subnet ID and that client ID … at least I think there is.
>
>
> Am I not encoding the client ID correctly in the database? That’s the
> only thing I can think of that would be throwing this off. I’ve tried
> (superficially) looking at the MySQL query log, but it’s not very
> helpful because Kea uses prepared statements that MySQL doesn’t seem
> to log by default, or something like that. I haven’t figured it out
> yet.
>
> On January 4, 2017 at 11:17:48 AM, Marcin Siodelski (marcin at isc.org)
> wrote:
>
> >
> > Jeffery,
> >
> > I think I found the flaw in Kea which may result in behavior you're
> > observing. Thankfully, I also have a good guess how to work around
> > this
> > problem.
> >
> > Can you please try adding the following parameter to your DHCPv4
> > server
> > configuration:
> >
> > "host-reservation-identifiers": [ "auto" ]
> > ?
> >
> > Other values should also work:
> >
> > "host-reservation-identifiers": [ "circuit-id", "hw-address",
> > "duid",
> > "client-id" ],
> >
> > OR
> >
> > "host-reservation-identifiers": [ "client-id" ],
> >
> > Marcin
> >
> > On 03.01.2017 18:57, Jeffery Harrell wrote:
> > > Hi, Marcin. Thanks for the reply. I did try inserting the missing
> > row
> > > into our MySQL database. I also tried setting up an isolated test
> > > environment this morning using PostgreSQL 9.5 as the backend but
> > > client-id reservations weren't working for me there either, so it
> > seems
> > > pretty obvious that I'm doing something wrong. MAC address-based
> > > reservations work like a charm, but if I try to get Kea to give me
> > a
> > > lease based on a client id reservation in a subnet with a pool, it
> > gives
> > > me an IP from the pool, and if I try to get one out of a subnet
> > with no
> > > pool it just doesn't give a lease at all.
> > >
> > > Like I said, it seems to me to be a configuration problem on my
> > end. I'm
> > > going to try to go through things very systematically following
> > the
> > > documentation carefully to see if I can find my error.
> > >
> > > On Tue, Jan 3, 2017 at 1:05 AM, Marcin Siodelski <marcin at isc.org
> > > <mailto:marcin at isc.org>> wrote:
> > >
> > > On 03.01.2017 03:55, Jeffery Harrell wrote:
> > > > I hope this isn’t a frequently asked question or anything; I’ve
> > > searched
> > > > and searched. Is it a known issue that client-id-based host
> > > reservations
> > > > aren’t currently working using the MySQL backend? I ask because
> > (A) I
> > > > can’t seem to get one to work in my environment, which may well
> > be my
> > > > fault, but (B)
> > > > comparing /usr/share/kea/scripts/mysql/dhcpdb_create.mysql
> > > > and /usr/share/kea/scripts/pgsql/dhcpdb_create.pgsql I see that
> > the
> > > > contents of host_identifier_type aren’t the same. The Postgres
> > > version has
> > > >
> > > > INSERT INTO host_identifier_type VALUES (3, 'client-id’);
> > > >
> > > > while the MySQL version stops at #2, circuit-id. This makes me
> > > wonder if
> > > > client-id host reservations aren’t supposed to be working with
> > the
> > > MySQL
> > > > backend right now? I thought maybe I’d ask to see if there was a
> > quick
> > > > answer that could save me more hours of fiddling around and
> > trying to
> > > > read the source code.
> > > >
> > > > Again, apologies if I’m treading on old ground. Thanks!
> > > >
> > > >
> > >
> > > Hello Jeffery,
> > >
> > > It seems to be a bug in our MySQL database creation scripts. The
> > > host_identifier_type table should include 'client-id' entry. Other
> > than
> > > that, the 'client-id' based reservations should work for MySQL.
> > >
> > > Did you try yo insert the dhcp_identifier_type of 3 into the hosts
> > table
> > > for your reservation?
> > >
> > > Marcin
> > >
> > >
> >
> >
> _______________________________________________
> Kea-users mailing list
> Kea-users at lists.isc.org
> https://lists.isc.org/mailman/listinfo/kea-users
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part
URL: <https://lists.isc.org/pipermail/kea-users/attachments/20170105/0afd816f/attachment.bin>
More information about the Kea-users
mailing list