When migrating an ip-address to another server, you will notice it will take anywhere between 1 and 15 minutes for the ip-address to work on the new server. This is caused by the arp cache of the switch or gateway on the network. But don’t worry: you don’t just have to wait for it to expire.
Why it happens
ARP (Address Resolution Protocol) provides a translation between ip-addresses and mac-addresses. Since the new server has another mac-address and the old one stays in the cache for some time, connections will not yet work. The cache usually only exists for some minutes and prevents asking for the mac-address of a certain ip-address over and over again.
One solution to this problem is to send a command to the gateway to tell it to update its cached mac-address. You need the ‘arping’ utility for this.
There are two packages in Debian that contain arping:
arping - sends IP and/or ARP pings (to the mac address) iputils-arping - Tool to send ICMP echo requests to an ARP address
I’ve had best results with the ‘iputils’ one, so I recommend to install that one. This is mainly because the other package’s command does not implement the required -U flag.
aptitude install iputils-arping
I haven’t installed arping on CentOS yet, but was told the package is in the RPMForge repository.
The command looks like this:
arping -s ip_address -c1 -U ip_addresss_of_gateway
-s is the source ip-address, the one you want to update the mac-address of
-c1 sends just one arping
-U is Unsolicited arp mode to update neighbours’ arp caches
This is followed by the ip-address of the gateway you want to update. In most cases this is your default gateway for this network.
Example: you moved 192.168.0.100 to a new server and your gateway is 192.168.0.254, you’d run:
arping -s 192.168.0.100 -c1 -U 192.168.0.254
After you’ve send the arping, the gateway will update the mac-address it knows of the ip-address and traffic for this ip-address will start flowing to the new server.
Bottom line: whenever you migrate an ip-address to another server, use arping to minimize downtime.