[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