Arping - libpcap.so.3 not found
I'm running pfSense version 2.0-BETA4 built on Sat Nov 27 2010. I have just installed the arping package. When I try to run it from the command line, I get this error message:
/libexec/ld-elf.so.1: Shared object "libpcap.so.3" not found, required by "arping"
I tried rebooting but still got the same error.
BTW, arping package version is 2.06
Here's a workaround that seems to work:
ln /lib/libpcap.so.7 /lib/libpcap.so.3
Not sure if this is the best long term solution however. I got the idea from this post.
Don't do that.
Arping should be 2.09, that's the one that was recompiled with proper dependencies.
Give it ~5 minutes for my commit to sync to the package server and try again.
Thanks Jim! I removed the symbolic and reinstalled the newer version of the package. It worked!
BTW, the reason I am using arping is because my ISP recently changed its arp cache timeout setting from a few minutes to a several hours. I discovered this recently when I swapped out my production router and replaced it with an identically configured test router (identical except for the interface MAC addresses). After doing the swap, the test router no longer received ANY packets where the destination IP was a virtual IP (i.e. CARP and Proxy ARP).
I was pulling my hair out, thinking that I misconfigured something on the test router because we've done similar router swaps in the past and never had problems with VIPs.
After waiting several hours, the ISP's arp cache finally cleared and the test router was again receiving packets with VIP destinations.
After searching the pfSense forums, I found the post Virtual IP Proxy Arp Not Working?, which was very helpful. In the post, Jimp suggested use arping -S. The original poster said that arping -S did not work for him. However, it DID work for me (thanks again Jim!).
In my case, I had to add the -i switch to specify which interface to send the arping out. Specifically, here is the syntax that worked for me and forced my ISP's arp cache to be cleared immediately:
arping -i <interface name="">-S <virtual ip="" address="" that="" i="" want="" cleared="" from="" arp="" cache=""><ip address="" of="" isp's="" gateway="">For example:
arping -i sis2 -S 192.168.1.50 192.168.1.1
I hope that helps someone else.
Side Note #1: I'm not sure if the -S switch causes a "gratuitous" arp packet to be sent out or if something else is happening under the hood. There is a good discussion of this here (scroll down to the "ARP Cache" section). If you're curious, version 2.09 of the arping package in pfSense version 2.0-BETA4 appears to use Thomas Habets' arping and not Alexey Kuznetsov's arping. If you were using Alexey Kuznetsov's arping, I think the magic switch for gratuitous arp is -U.
Side Note #2: In my case, my virtual IPs were CARP VIPs. However, I would imagine arping -S would probably also work with Proxy VIPs. I'll leave that as a proverbial "exercise for the reader". (Please leave a comment here if you tested it with Proxy VIP!)
Side Note 3#: Physical IPs (i.e. real interface IP, not virtual IP) seem to get automatically cleared from the ISP's arp cache immediately without using arping -S. (You might have to reboot or it might be enough just to bring the interface up. Can't remember in my case.)</ip></virtual></interface>