Fixing Linux network stack's ARP request behaviour.

Try to send ARP requests from a local source address belonging to the
same subnet as the target host. This is required for multi-homed hosts,
on which the incoming and outgoing routing path differs.

For example, host A belongs to subnet 1 and 2 whereas host B belongs
only to subnet 1.

If host B tries to establish a connection to host A on subnet 2, the
packages arrive on subnet 2, but host A answers on subnet 1 (as it has a
direct route to host B). By default, this results in the following ARP
request:
ARP, Request who-has <IP-HOST-B-SUBNET-1> tell <IP-HOST-A-SUBNET-2>

The ARP request on host B will either be dropped by the reverse path filter or remain unanswered as host B is not on the same subnet.

Setting net.ipv4.conf.all.arp_announce=1 will change the behaviour to the following request:
ARP, Request who-has <IP-HOST-B-SUBNET-1> tell <IP-HOST-A-SUBNET-1>