[Kea-users] mixing raw and udp sockets
Jaco Kroon
jaco at uls.co.za
Thu Jun 19 09:16:42 UTC 2025
Hi Peter,
Is there an explanation of why when binding to tun0/172.17.0.0 and using
raw sockets the frame isn't received? Two specific notes for this which
may be relevant.
1. tun0 isn't ethernet.
2. In this case there are external nodes connecting to the "local" node
using tinc (not my choice) and then does a dhcp relay already.
Is there a possibility of making it such that if the interface is
ethernet then to use "raw" otherwise use "udp", even perhaps as special
"dhcp-socket-type" of say "etherraw" or some other phrase that makes sense?
Being the author of dhcpv6relay plugin in pppd, and having seen how
tricky it can be to receive multicast traffic I get that raw sockets may
be a "simple" solution, but is there honestly no way to set a udp socket
to receive broadcast traffic? Even for 0.0 to 255.255.255.255?
Description for SO_BROADCAST seems to relate more to sending rather than
receiving, but frankly, it seems odd that raw sockets are required for
receiving broadcast packets.
Yes, DHCPv6 is multicast not broadcast, so I may well be missing the
mark completely ...
Kind regards,
Jaco
On 2025/06/19 10:47, Peter Davies wrote:
> Hi Jaco,
> I am afraid it is not possible to mix the "udp" and "raw" socket
> types.
>
> The "interfaces-config"."interfaces" contain a list of interfaces with
> an optional
> IP address for Kea to listen to.
>
> The "interface-config"."dhcp-socket-type" option contains information
> about the
> socket type to use.
>
> Kea will not load a configuration containing multiple occurrences of
> "interfaces-config".
>
> If you need to mix socket types, you will need to run multiple Kea
> processes.
>
> Alternately, you could investigate the possibility of relaying the
> local broadcast
> traffic and using the "udp" socket type.
>
> /Peter
>
>
> On 18/06/2025 15.26, Jaco Kroon wrote:
>> Hi All,
>>
>> ISC dhcpd always refused to bind non-ethernet sockets. Which was
>> fine, but resulted in some issues.
>>
>> I'm now in a situation where I've got a setup where I've got a couple
>> of local interfaces (ethernet), which needs to bind raw, and then a
>> tun0 interface which is not ethernet, and based on testing have to
>> use udp sockets else kea-dhcp4 will not receive the incoming
>> (relayed) DHCP frames.
>>
>> Is there any way to mix and match socket types within a single
>> kea-dhcp4 instance?
>>
>> "interfaces": [ "tun0/172.17.0.0", "eth0", "eth1" ]
>>
>> Is the current setup, and eth* works when "dhcp-socket-type":"raw",
>> and "tun0/..." when "dhcp-socket-type":"udp".
>>
>> Suggestions and ideas?
>>
>> Kind regards,
>> Jaco
>
More information about the Kea-users
mailing list