ARP behavior in FreeBSD vs Linux
Sam Leffler
sam at errno.com
Sun Sep 18 10:52:57 PDT 2005
Pieter de Boer wrote:
> Chuck Swiger wrote:
>
>>> In contrast, on Linux (by default), it
>>> responds as long as the target IP address in ARP Request matches with
>>> any "local" IP address on the system, which is not necessarily an IP
>>> address assigned to the interface through which the ARP request is
>>> received.
>>
>> This sounds like "proxy ARPing" is enabled by default on your
>> particular flavor of Linux. I don't think they all do that,
>> hopefully, any more than ipforwarding should be enabled by default
>> just because a machine has two NICs.
>
> What Motonori Shindo described is actually the default behaviour for
> Linux kernels (at least my 2.6.8-kernel does it by default). It could be
> seen as a sort of proxy-arp, but only for the host itself, not other
> systems. Let me try to describe when it happens. Say you have
> 192.168.42.42 bound on eth0 and have eth1 connected to some ethernet
> LAN. When a host on that eth1-connected LAN sends an 'arp who-has
> 192.168.42.42', a Linux system will answer that arp-request with it's
> eth1 MAC-address, although the IP-address is bound on eth0 and the arp
> request comes in on eth0. FreeBSD obviously doesn't do this.
>
>>> Is there any advantage/disadvantage in ARP implementation on FreeBSD
>>> over that of Linux? Thanks.
>
> I was unhappily surprised by this 'feature'. I find it pretty
> counter-intuitive. I expect two interfaces to be seperated inside a
> kernel, but Linux more or less binds them together. Incoming traffic on
> the 'wrong' interface will gladly be accepted, too. This broke things
> for me, because I didn't want to have that certain IP-address accessible.
>
> That said, this happens only when you have two interfaces connected to
> the same subnet, which is a bit evil anyhow. It may be beneficial for
> Linux to do things this way, perhaps for redundancy-purposes (two
> interfaces, one IP-address, IP reachable over both interfaces, when one
> fails, the other takes over.. no idea if that works out-of-the-box).
>
The linux design philosophy, based on postings from various
implementors, is that ip addresses are bound to a host, not to a
particular interface. I believe the arp behaviour reflects this.
Sam
More information about the freebsd-net
mailing list