> > What everybody seems to be telling me is that because IP is routable, > > ARP replies are also routable, and the kernel is free to mix and match > > IP addresses with Ethernet interfaces however it likes according to > > it's IP routing conventions. I don't agree with this. > > You don't agree that it's what's happening, or you don't agree that it > should be the way that the kernel operates?
The latter, as you guessed correctly. I think the kernel is applying IP routing rules to ethernet ARP replies. I don't think it should be doing this, because an ARP reply is clearly related to a physical ethernet address. ARP has nothing to do with IP networks, only with ethernet networks and with a single IP address. At least that's how I understand ARP. Or is an ARP reply actually an IP packet? Maybe it is, but I don't think so, I'm assuming it's an ethernet packet. > What you're doing with those two cards is somewhat analogous to going > scuba diving with two snorkels. You have two interfaces (snorkels) to > the same network (air), but have arbitrarily assigned them addresses > (left and right). Air comes in through one or both snorkels, but your > lungs don't know which they came from. When you exhale, your lungs > have no power to specify which snorkel the air escapes from. > > What you're trying to do is say something like "air that enters > through my left snorkel must only exit through my left snorkel". No, that's not what I'm looking for at all. Exhaling doesn't interest me right now, although I do think the kernel could and should evenly distribute outgoing packets across the two network cards. Also I think it would be cool for some server bound to eth1 to have all it's transmissions go out of eth1, even when eth0 is another valid route to the destination. But that's an entirely different problem from my current one. In your analogy, inhaling is where my problem lies. In theory I should be able to hook up the left snorkle to a room containing cold air and the right snorkle to another room containing warm air, and that should guarantee that my left and right nostrils get cold and warm air, respectively. It's not happening though, because the kernel, involving what I believe are mangled ARP replies, is giving wrong instructions to whoever hooks up the snorkles, and both hot and cold air are entering the same nostril, while the other nostril is going unused for inhaling. That all the air gets mixed up inside the lungs is another matter entirely that I'm not concerning my self with right now. Where air gets exhaled doesn't concern my right now, either. All I care about is that when ethernet address E1 is bound to IP address I1, everybody else on the network knows it. The kernel is telling everybody else on the network that E0 = I1, which is wrong. E0 = I0 and E1 = I1. The kernel should tell the network that E1 = I1, and I don't really even care if it physically transmits that little message over network card E0, as long as the message itself is correct. [ But given that the ARP reply must (I assume) contain the address E1, it seems like it would be really easy for the kernel to figure out that the ARP packet should be transmitted over E1. ] Why do I want this? At this point it's mostly academic, I know I can get my system working using only one network card + IP aliasing. However, I think this ARP problem is a glaring problem that should be easy to fix and will also have benefits for people doing load balancing. -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]