前言

大部分网络没有绑定 IP/MAC,如果随便配置 IP 就会导致 IP 冲突,如果几台机器还好,如果机器多了就不好找了。在 Linux 有一些专门的 arp 工具可以找到对应的 MAC。

知道冲突 IP

发现某台机器(例如:192.168.1.100)上面的服务,老是连接错误,或者直接拒绝连接,查看防火墙规则都是正常的,也尝试清空,不限制访问,但是问题还在。这时候就怀疑这个 IP 是不是跟其他机器冲突了(有些服务器上可能配置了虚拟 IP)。

直接使用 arping 去查询 IP 对应的 MAC,如果冲突,可以发现有时候返回不同的 MAC 地址,这时候就可以根据 MAC 找到对应的机器。

arping 192.168.1.100
ARPING 192.168.1.100 from 192.168.1.30 em1
Unicast reply from 192.168.1.100 [04:F4:EC:76:79:C2] 3.084ms
Unicast reply from 192.168.1.100 [50:7B:9D:25:29:59] 0.817ms
Unicast reply from 192.168.1.100 [50:7B:9D:25:29:59] 0.922ms
...

多个 IP 冲突

如果有多个 IP 都出现上面的情况,就有可能是多个 IP 出现的冲突,这时候一个个 IP 找效率太低了。这时候就可以用 arp-scan 去发送 arp 包,获取 IP/MAC 地址。如果一个 IP 出现多个 MAC,就是 IP 冲突了

如果是 Centos/REHL 系列可以直接安装 epel-release 这个 yum 源,里面就有 arp-scan 这个包。

yum -y install arp-scan
arp-scan -l
Interface: wlp58s0, datalink type: EN10MB (Ethernet)
Starting arp-scan 1.9 with 256 hosts
192.168.1.1	88:25:93:22:66:7c	(Unknown)
192.168.1.53	78:67:d7:ac:0f:6d	(Unknown)
192.168.1.54	ec:d0:9f:9a:b7:f9	(Unknown)
192.168.1.56	e4:b2:fb:a7:22:37	(Unknown)
...
192.168.1.100 04:F4:EC:76:79:C2 (Unknown)
192.168.1.100 50:7B:9D:25:29:59 (Unknown)
...
192.168.1.55	4c:57:ca:d8:eb:b0	(Unknown)

5 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.9: 256 hosts scanned in 2.066 seconds (123.91 hosts/sec). 15 responded

网关冲突

如果本网段 IP 都可以正常访问,但是跨网段就出现异常,那一般是网关冲突,直接使用 arping 一下网关 IP 就可以查找到对应的 MAC。

(注:资产收集的时候,最好能收集到网卡的 MAC,IP 冲突的时候,就可以快速地找到对应的机器)