Linux下檢測IP地址衝突及解決方法

散盡浮華發表於2016-10-21

 

問題說明:
在公司辦公網內的一臺物理機A上安裝了linux系統(ip:192.168.9.120),在上面部署了jenkins,redmine,svn程式。由於是在辦公網內,這臺機器和同事電腦都是在同一網段的。
突然某天問題出來了:有部分同事遠端ssh登陸不上這臺linux系統的機器,jenkins/redmine/svn也登陸不上,其他部分同事可以正常使用。

後來發現,是因為這臺linux機器的ip被人佔用了,ip地址衝突引起的!!

下面介紹下檢查ip地址是否衝突的方法:
---------------------------------------------------
第一種方法(arping):

只需要在另一臺同網段的linux機器B上(比如:129.168.9.200)上執行下面的命令(不能在本機arping檢驗自己的ip):

只需要在另一臺同網段的linux機器B上(比如:129.168.9.200)上執行下面的命令(不能在本機arping檢驗自己的ip):
[root@dev ~]# arping 192.168.9.120
ARPING 192.168.1.120 from 192.168.9.200 eth0
Unicast reply from 192.168.9.120 [40:F4:EC:76:79:C2] 3.084ms
Unicast reply from 192.168.9.120 [50:7B:9D:25:29:59] 0.817ms
Unicast reply from 192.168.9.120 [50:7B:9D:25:29:59] 0.810ms

........

如果只檢查出一個MAC地址,則表示網內A機器的的IP:192.168.9.120是唯一的

如果有以上資訊即查出兩個MAC地址,則表示網內有一臺MAC地址為40:F4:EC:76:79:C2的主機IP地址與A機器相同。

這時可以通過ifconfig命令驗證A機器,如下發現:A機器的MAC地址是50:7B:9D:25:29:59 。
我們可以用區域網掃描軟體找到MAC地址為40:F4:EC:76:79:C2的主機,並將其隔離或更換IP地址。
[root@redmine ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 50:7B:9D:25:29:59
inet addr:192.168.9.120 Bcast:192.168.9.255 Mask:255.255.255.0
inet6 addr: fe80::527b:9dff:fe25:2959/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:573710854 errors:0 dropped:0 overruns:0 frame:0
TX packets:849943293 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:58543890628 (54.5 GiB) TX bytes:1248037935176 (1.1 TiB)

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:17370722 errors:0 dropped:0 overruns:0 frame:0
TX packets:17370722 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:65642509325 (61.1 GiB) TX bytes:65642509325 (61.1 GiB)

---------------------------------------------------------
檢驗原理:
arping命令是以廣播地址傳送arp packets,乙太網內所有的主機都會收到這個arp packets,但是本機收到之後不會Reply任何資訊。
當我們在linux主機端上執行下面的命令時:
arping 192.168.9.120  
會預設使用eth0,向區域網內所有的主機傳送一個:
who has 192.168.9.120的arp request,tell 192.168.9.120 your mac address,

當這臺windows主機端收到這個arp packets後,則會應答:
"I am 192.168.9.120 , mac是00:25:e4:6a:4b:f4",這樣我們會收到mac地址為00:25:e4:6a:4b:f4的windows主機的Reply資訊。
---------------------------------------------------------

---------------------------------------------------------
第二種方法(arp-scan)

arp-scan這個工具會在本地網路傳送ARP(Address Resolution Protocol)(地址解析協議)包來收集地址。如果有多個MAC地址聲稱擁有相同的IP地址,那麼這裡就存在衝突。

首先安裝arp-scan則輸入:
[root@dev ~]# yum install -y arp-scan
------------------------------------
如果報錯說沒有這個軟體包,則需要提前安裝epel軟體倉庫
centos5 64位:
rpm -ivh http://dl.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm

centos6 64位:
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

centos6 64位:
yum install -y http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-8.noarch.rpm
------------------------------------

要檢測IP衝突,執行下面的命令:

[root@dev ~]# arp-scan -l
Interface: eth0, datalink type: EN10MB (Ethernet)
Starting arp-scan 1.9.2 with 256 hosts (http://www.nta-monitor.com/tools-resources/security-tools/arp-scan/)
192.168.9.1 00:25:b3:f9:16:3e Hewlett Packard
192.168.9.2 30:8d:99:ab:42:40 Hewlett Packard
192.168.9.4 24:26:42:a6:81:f9 SHARP Corporation.
192.168.9.7 f4:ce:46:3e:15:d6 Hewlett Packard
192.168.9.8 08:2e:5f:bd:0f:43 Hewlett Packard
192.168.9.9 00:21:5a:84:9d:0c Hewlett Packard
................
................
192.168.9.119 68:f7:28:d5:d4:26 LCFC(HeFei) Electronics Technology co., ltd
192.168.9.120 50:7b:9d:25:29:59 LCFC(HeFei) Electronics Technology co., ltd
192.168.9.120 40:F4:EC:76:79:C2 VMware, Inc. (DUP: 2)
192.168.9.121 00:23:24:9b:09:89 G-PRO COMPUTER
192.168.9.122 b8:88:e3:35:8e:74 COMPAL INFORMATION (KUNSHAN) CO., LTD.
...............
...............

110 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.9.2: 256 hosts scanned in 2.257 seconds (113.42 hosts/sec). 110 responded

由上面資訊可知:192.168.9.120這個IP衝突了,因為它出現了兩次,並且可知這個ip被vmware虛擬機器佔用了。
需要找到使用這個ip的機器,將其ip更換即可!

1)“arp-scan -l” 命令表示檢視與本機在同一區域網內的所有機器的ip使用情況
2)“arp-scan –I eth0 -l” 命令表示檢視與本機在同一區域網內的所有主機的eth0網路卡的ip使用情況

--------------------------------------------------------
windows本機使用“arp -a”命令檢視是否有ip衝突:

如果查出有兩個ip一樣,就說明ip衝突了。

相關文章