How to: Detect Duplicate IP Address With arping command under Linux

Posted on in Categories , , , , , , , , last updated November 23, 2007

Q. I run quite large network with different subnets. I’d like to know how can I find out duplicate IP address under Linux / UNIX?

A. You can use arpping command. The arping utility performs an action similar to ping command, but at the Ethernet layer. You can send ARP REQUEST to a neighbor host / computers.

Task: Send ARP request

Let us find out reachability of an IP on the local Ethernet with arping i.e send ARP request 192.168.1.1:
$ sudo arping -I eth0 -c 3 192.168.1.1
Output:

ARPING 192.168.1.1 from 192.168.1.106 ra0
Unicast reply from 192.168.1.1 [00:18:39:6A:C6:8B]  2.232ms
Unicast reply from 192.168.1.1 [00:18:39:6A:C6:8B]  1.952ms
Sent 3 probes (1 broadcast(s))
Received 3 response(s)

Where,

  • -I eth0 : Specify network interface i.e. name of network device where to send ARP REQUEST packets. This option is required.
  • -c 3 : Stop after sending 3 ARP REQUEST packets

Task: Find duplicate IP

The -D option specifies duplicate address detection mode (DAD). It returns exit status 0, if DAD succeeded i.e. no replies are received.
$ sudo arping -D -I eth0 -c 2 192.168.1.1
If 192.168.1.1 duplicated you should see zero exit status:
$ echo $?
Always use following syntax for duplicate address detection with arping:
$ sudo arping -D -I <interface-name> -c 2 <IP-ADDRESS-TO-TEST>
$ echo $?

References:

Posted by: Vivek Gite

The author is the creator of nixCraft and a seasoned sysadmin and a trainer for the Linux operating system/Unix shell scripting. He has worked with global clients and in various industries, including IT, education, defense and space research, and the nonprofit sector. Follow him on Twitter, Facebook, Google+.

8 comment

  1. still the problem persists, even after using lan guard software i am able to find out the mac address of the duplicate ip, it makes my network to respond to mail server requests to slow down partially

  2. Q. I want arpiing library to be run in a thread and check contiuously for IP address collision. If duplicate IP collosion occurs it should notify my process as well as store the last host m/c mac as a proc entry? I did change arping utility to library and spawn a thread with the following argument to libary
    “arping -d -I eth0 -c 2 10.129.170.131”
    but i am getting the following error on 3 rd packet sent :
    arping: libnet_build_arp(): libnet_pblock_find(): couldn’t find protocol block
    arping: libnet_build_ethernet(): libnet_pblock_find(): couldn’t find protocol block

  3. Hi,
    Can you please show to find [MAC flapping] same mac address being learned on different ports . usually to trouble shoot this we collect mac table multiple time and find the single mac address being learned on different ports .My colleague are using some tool but they want to share it with me.

    plzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz help me with this :)

Leave a Comment