Proxy arp does not work

Proxy arp does not work

Post by <spie.. » Sat, 10 Jul 1999 04:00:00

    Proxy arp does not work under 2.2.x and 2.3.x. I've dug through
the code (and put debugging printk's) enough to know that it can never
work.  There are several things wrong.

    First, the /proc display of the arp table is hosed. It will never
print the correct arp entry: the interface HW address for
proxy/published arp entries. I've managed to correct this fairly easily.
It works now for me. I'll post the changes file once I fix the other

   Second, the ioctl functions that add the arp entries are hosed. They
will never add the publish/proxy arp entry properly. I've managed to
correct this as well. I removed support for netmasks, but these aren't
officially supported by newer kernels anyway.

   Third, the ioctl functions that delete the published/proxty arp
entries are hosed. They will never delete a proxy arp entry correctly.
I'm currently working on a fix for this. I expect to complete this
tomorrow or this weekend.

   Fourth, the actual arp_response code does not handle proxy arp
situations correctly. Even if you add, display and delete your
proxy arp entries correctly, the arp system will not publish the
arp entries at all. This is the last thing that I plan to fix.

  Once these four problems are solved, I plan to post and submit the
patch to the appropriate people.

  The user space arp program also needs a minor cosmetic fix too. A
single line change.

  If someone would like to volunteer (all you static NAT people, speak
up!) to test the patches, please send me email at




1. Proxy arp not working in Linux

I'm having a problem configuring proxy arp.  My understanding is that
first proxy arp must be enabled in the kernel by setting one or more of
these variables to "1".


Inititially, I set just eth0, but then tried setting them all when it
didn't work.  I set the variables in /etc/sysctl.conf, stopped and
restarted the interface, and checked to make certain they were all set.

After setting the kernel variables, I added a permanent, published arp
table entry as follows:

# arp -s 00:B0:D0:B5:52:F9 pub

Also tried this:

# arp -i eth0 -s -D eth0 pub

Here's what's in the arp cache after adding the entry:

# arp -an
? ( at 00:0D:56:A3:90:83 [ether] on eth0
? ( at 00:00:0C:07:AC:01 [ether] on eth0
? ( at * PERM PUP on eth0

# cat /proc/net/arp
IP address       HW type     Flags       HW address            Mask
Device    0x1         0x2         00:0D:56:A3:90:83     *
eth0     0x1         0x2         00:00:0C:07:AC:01     *
eth0   0x1         0xc         00:00:00:00:00:00     *

The "*" in the arp -an output doesn't look right, and the HW address
for is definitely not right.

But, just to see if it would respond I pinged it from another box on
the local subnet.  I don't expect icmp echo replies at this point,
since the box is not routing.  But I did expect to see an arp reply if
it was configured correctly.  But there's no reply.  I tried the same
thing on a Solaris system and it works fine.  What else needs to be
done to make this work in Linux?  I tried it on two different Redhat
systems, 2.6.11-1.14_FC3 and 2.6.9-5.Elsmp, with the same results.

2. stupid newbie question

3. does proxy arp not work in solaris 2.3 or 2.4?

4. how to get the pid

5. proxy arp not working in ppp session

6. dvi to fax (g3) conversion ?

7. Proxy-arp command not working

8. Times since reboot data of a website

9. ppp connection proxy arp not working

10. I can not get ARP to work, even though /proc/net/arp is correct!

11. Proxy-ARP without subnetting almost done

12. mstppp, proxy arp,what am i doing wrong?

13. Proxy arp (how to add an arp entry)