[Dnsmasq-discuss] Weird Routing/FW/dnsmasq problem
simon at thekelleys.org.uk
Mon Oct 31 15:27:55 GMT 2005
Dan Shechter wrote:
> Again, this is pretty much what I've seen as well.
> I'm using Windows XP SP2 as a client.
> The exact situation is that when the XP machine is
> Connected/disconnected from net A -> B WITHIN 10 seconds,
> it performs the sequence of events described in my previous e-mail...
> If the disconnection is for MORE than about 10 seconds,
> The DHCP request is from address 0.0.0.0 which of course, succeeds,
> almost immediately.
> The unpleasant part is that these scenarios happen much too often in
> wireless roaming environments, which is where I'm at... :(
> The unfortunate bit of Microsoft's client behaviour, is that it resends
> the same request 3 times, displays an annoying, "Network is lost"
> balloon popup, and only then issues a discover from 0.0.0.0 which
> succeeds, 40 seconds after it "appeared" on network B.
> All of my attempts to somehow propagate the packet through Linux, using
> any combination of iptables / -j MARK / iproute2 packages have failed
Argh, it's taken me this long to twig that this conversation follows on
from earlier stuff where dnsmasq failed to generate the a NAK because
the claimed address wasn't on the current network. Must wake up!
That got fixed in 2.23, and in the process, we disovered that XP's DHCP
client is in fact moving to REBINDING state during those 10 seconds.
This means that it sets the ciaddr field in the DHCP packet, causing the
previous (now fixed) problem. Clearly the wonderful people at Microsoft
are _also_ setting the packet source address, and hence confusing the
I'm slighly confused, since as part of the previous fix Gyorgy Farkas
did some tests on XP and produced some packet captures which didn't show
this effect. Also, the previous problem could only have occured if the
DHCPREQUEST in REBINBING state was being recieved at user level by
dnsmasq. What has changed which is stopping that from happening now?
Following from Oliver's suggestion, there's another sysctl variable,
bootp_relay, which might be just what's needed, except that it's not
More information about the Dnsmasq-discuss