I had to temporarily create an overlapping subnet (yes, yes, I know…) until the DHCP server cycles through. I have the following addresses on a single interface:
12.34.56.1/24
12.34.56.241/28
When sending an ARP request for 12.34.56.242, it’s asking for a reply to 12.34.56.1, which some devices will ignore because that IP is outside of it’s subnet.
I’m guessing this is a bug in the linux kernel, where it’s going on the first matching IP address rather than the best match. Disabling and re-enabling the 12.34.56.1/24 address pushes it to “the bottom of the list,” allowing the ARP request to ask for replies to be sent to the right IP. I do not know how this will behave after a reboot, but I’m guessing the results will be unpredictable.
Yes, I’m working on fixing these overlapping subnets. I wasn’t happy with doing them to begin with, but I did expect the kernel to deal with them gracefully. Then again, I’m pretty sure nobody has ever accused Linux of having a robust or sensible TCP/IP stack.