Hi Jaco,
   The "raw" socket type is only applicable to kea-dhcp4. It is not available
for kea-dhcp6.

"raw" socket support relies on Kea capturing Ethernet frames directly at Layer 2
of the OSI model; tun0 is a layer three interface.
/Peter

On 19/06/2025 11.16, Jaco Kroon wrote:
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

--
Peter Davies
Support Engineer
Internet Systems Corporation

--
ISC funds the development of this software with paid support subscriptions. 
Contact us at https://www.isc.org/contact/ for more information.

To unsubscribe visit https://lists.isc.org/mailman/listinfo/kea-users.

Kea-users mailing list
Kea-users@lists.isc.org
https://lists.isc.org/mailman/listinfo/kea-users

Reply via email to