While tools like nmap are excellent for scanning for IPs (specifically ports) sometimes you have to take it to the next level in case you get very slow or erratic responses from hosts on your network. Using the ARP layer, you can check to see the actual MAC addresses that are responding to your requests. The command that does this is called arping.
Example syntax:
sudo arping -I eth0 -c 3 192.168.1.175
This will ping the IP 192.168.1.175 (the -I means use ethernet port eth0) and request the MAC address (3 times, which is the -c modifier) back:
ARPING 192.168.1.175 from 192.168.1.165 eth0 Unicast reply from 192.168.1.175 [00:25:90:53:CA:F8] 0.694ms Unicast reply from 192.168.1.175 [00:25:90:53:CA:F8] 0.760ms Unicast reply from 192.168.1.175 [00:25:90:53:CA:F8] 0.761ms Sent 3 probes (1 broadcast(s)) Received 3 response(s)
Obviously check to make sure you get the same MAC address each time. If not, then you have a dup. If you do see a different MAC then obviously you have two machines with that same IP. But if you want to lookup which ARP-to-IP of any machine is, try running:
arp -n | grep -i "00:25:90:66:28:FC"
Which in my personal case returns (this was not a duplicate IP, just showing the output of the command; if you run just arp -n on a small network, you can track down the dup. On a large network, this can be a pretty long chart).
Address HWtype HWaddress Flags Mask Iface 192.168.1.165 ether 00:25:90:66:28:FC C eth0