Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm trying to implement Direct Server Return scheme for our web cluster and I think i got stuck with some ARP issues. For testing purposes I deployed 2 virtual servers (inside ESXi environment).

Host A: eth0 (VIP) is our director with its virtual ip on eth0
Host B: eth0, lo:0 is one of the webapp nodes, which runs httpd daemon

These two servers are on the same ethernet segment. As you can see host B has its loopback interface aliased to hold the VIP ( In order for server B not to reply to VIP arp filtering is implemented via arptables:

arptables -A IN -d -j DROP
arptables -A OUT -s -j mangle --mangle-ip-s

Everything seemed good so far until i tried to ping host B from host A. "Destination host Unreachable" is what i got. By running tcpdump on host B i discovered that it did receive ARP requests from host A, but didn't send replies. Meanwhile ARP requests from other nodes we successfully replied by host B. So it looks like host A can't communicate with another machine, holding its VIP. Even though i did arp filtering. This is weird for me actually.
Any suggestions? Btw i'm running Centos 6.

share|improve this question

From the way this is setup when host B gets the ping from host A, and then tries to respond, it won't even have to do an arp request(which you want to mangle) in order to 'reach', it is already directly connected. You can confirm this by printing the arp table on host B and seeing that there is already a record for I've never used DSR in a setup where the VIP is in a subnet that has real server IPs in it. Usually the VIPs are bound to loopback and are in different subnets with routing setup. It prevents both this issue and also having to mangle arp tables which can lead to some really giant debugging headaches later on.

share|improve this answer
Thanks for the reply. Actually i figured out my mistake. I forgot to add primary ip to the host A so it should look like eth0, lo:0 – user91730 Aug 22 '11 at 16:48

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.