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
problems.
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
Thanks.
Steve