I am trying to run dnrd (2.20.3) on all my interfaces but I find that if it starts just after net.br0 has started (and this is the case during boot) then it doesn't actually bind to that interface and I have to start it again. However, if I specifically ask it to bind to that interface (-a 192.168.1.200) then it works. It also works if I add "sleep 2" to the init script. I'm not sure whether this is really dnrd's fault. No other daemons seem to have this problem but I thought I'd post this here first anyway.
(In reply to comment #0) > I am trying to run dnrd (2.20.3) on all my interfaces but I find that if it > starts just after net.br0 has started (and this is the case during boot) then > it doesn't actually bind to that interface and I have to start it again. > However, if I specifically ask it to bind to that interface (-a 192.168.1.200) > then it works. It also works if I add "sleep 2" to the init script. I'm not > sure whether this is really dnrd's fault. No other daemons seem to have this > problem but I thought I'd post this here first anyway. Could you please show the output of "netstat -nlp"? Verify that dnrd binds to 0.0.0.0. Thanks!
Ah doing that made me realise what it is. I'm running dnsmasq on the same server but I've only been using it as a DHCP and PXE server. I hadn't configured the DNS settings so it hadn't occurred to me that it was also listening on port 53. I guess adding that delay allowed dnrd to always start after dnsmasq. Having said that, dnsmasq is only listening on eth1, not br0. dnrd shouldn't fail to bind to br0 just because eth1 is tied up on port 53. Maybe there is a bug here?
Ah just figured that out. It's the bind-interfaces option in dnsmasq. Unless you enable that, it still binds to all interfaces but only accepts requests from the interface you've chosen. I've enabled that and now it leaves br0 free for dnrd to use. I added rc_before="dnrd" to /etc/conf.d/dnsmasq to ensure it starts before dnrd.