Set proper UDP reply source address on multihomed servers
When kresd
runs on a multihomed server, listening to universal IP address ::
and/or 0.0.0.0
, the UDP reply messages may not always be sent from the IP address that was targetted by the query, as the source address is determined solely by operating system without relation to the query. On virtually every system, this leads to replies being dropped.
A workaround is to let kresd
listen on each IP address separately, this is however quite complicated for dynamically configured devices.
Unbound, for instance, solves this issue by an experimental option interface-automatic
. Another solution would be to somehow dynamically watch for all new (de-)configured addresses and add/remove listening sockets on the fly, instead of using all-zero addresses.