ARP behavior in FreeBSD vs Linux

Jeremie Le Hen jeremie at le-hen.org
Mon Sep 19 09:25:52 PDT 2005


Hi,

> > >>> 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 seems that it has been so for a long time since 2.2 kernel days.
> 
> > > 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.

FYI, proxy ARPing for a whole subnet might be enabled on Linux with
the following sysctl, in order to create what they call a "pseudo-bridge" :

	/proc/sys/net/ipv4/conf/<iface>/proxy_arp

When a Linux box is a router between two subnets A and B, if a host on A
issues an ARP request about a host on B (because they think to be on
the same physical network), the Linux box will reply with its own MAC
address, and conversely.

> > > 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.

This behaviour can be controlled with :

	/proc/sys/net/ipv4/conf/<iface>/rp_filter


These sysctl are explained in the Linux kernel source :

	linux/Documentation/networking/ip-sysctl.txt

Please, don't blame me because this is not FreeBSD-centric.

Regards,
-- 
Jeremie Le Hen
< jeremie at le-hen dot org >< ttz at chchile dot org >


More information about the freebsd-net mailing list