发新话题
打印

如何知道网中IP是否占用

如何知道网中IP是否占用


问:我是一个小公司的网络管理员,最近总是出现IP地址冲突的问题,另外由于经常有外来人员使用笔记本连接公司网络,再加上公司的IP地址因为某种原因是手动设置的固定IP,公司对于IP地址分布也没有留有任何记录信息,所以当有新计算机要连接到网络中时只是随便设置一个,挑选的地址也是那些分布在网络末尾或比较大的数字,但是久而久之随意设置的IP地址过多,在新计算机连接网络时再设置IP地址很容易造成冲突。请问IT168的专家是否有好办法可以解决我目前遇到的问题,帮助我在设置IP地址前对网络中的所有IP地址进行扫描,明确哪个IP被占用,哪个没有被占用。当然了解了如何扫描网络中已占用的IP地址的话,我就可以将扫描到的地址打印进行保管,以后新计算机接入网络不使用这些地址即可。   
) v- ]( }; d! @
4 ?/ J- P2 Q8 |  |$ w 答:在网络中出现IP地址冲突的问题是非常麻烦的,一方面他扰乱了我们网络管理员管理网络,另一方面他影响了普通用户的正常上网。特别是对于部分中小公司来说经常将IP地址与网络资源访问权限相关联,一旦IP地址被占用非法用户将能非法使用网络资源。遇到这种情况我们如何查出哪个IP地址被占用呢?   
5 |' W& n: x2 w  ~+ ]/ o# \  R. f9 e; z2 z
正如前面网友提出的问题一样,当公司使用手动设置IP地址且没有有效管理设置的IP地址的话,很容易出现随意设置地址并经常冲突的问题。遇到这种情况也需要我们学会扫描整个网络,将已经连接到网络中的IP地址进行记录,防止地址冲突现象的发生。我们主要有以下几个办法可以帮助大家扫描网络中已用的IP地址。   : q4 I: O, T8 ?9 H$ B
, A, c, w1 s2 V0 O+ W7 H& ]
方法一:原始ping法   
  r9 K( q- h& m1 H: R7 t! f) K3 x/ \* s+ w$ }! S' V9 z. o9 o
第一个方法比较简单,而且受环境限制比较大。众所周知在没有安装防火墙和设置过滤规则的计算机上都容许ICMP协议数据包的通过,那么我们可以通过“ping ip地址”这个命令来查看该IP地址是否有计算机使用。   4 ]3 {9 ?' B9 w7 }/ \4 [6 n+ t

. Y2 V- [* V# a, _* N 通过任务栏的“开始->运行”,输入CMD后回车进入命令行模式。假设公司网络是192.168.1.0/255.255.255.0,那么我们可以通过ping 192.168.1.1,ping 192.168.1.2......ping 192.168.1.254来测试IP地址是否被占用。   
2 p# k) z& d9 z- J+ u! y
5 l$ ]4 g1 j7 A: z* F 由于原始ping法比较简单,这里就不详细说明了,但是这种方法遇到计算机上安装了防火墙对ICMP协议进行过滤的话,或者公司交换机和路由器上对ICMP实施ACL访问控制列表过滤的话就不可行了。因此这个方法受的局限比较大,一般测试的成功率不高,很容易把安装了防火墙的计算机对应的IP地址认为没有被使用。   
6 i$ B. I" O# l% F" F) |7 I1 w2 D0 P( Z1 {3 N  W
方法二:扫描器扫描法   % t9 }) p2 q( }- H5 R0 _0 @
, c' |; _1 Z, ~
以前笔者在进行:</BR>网络安全工作时就经常使用扫描器扫描网络中各个主机的漏洞,那么现在我们完全可以使用此方法来查看本网络有哪些IP地址被占用。由于扫描器扫描时并不是仅仅使用ICMP协议进行ping,我们可以设置,让扫描器多扫描几个端口,多扫描几个服务。这样即使计算机上安装了防火墙或者交换机上有访问控制列表过滤ICMP协议,只要该计算机开放了某些端口或某些服务,就不会出现漏报的问题。   5 r5 L' C- B1 F1 K
1 _- k1 M( Y* O- u$ s' B- y* f
通过扫描器扫描出来的IP地址列表还可以导出成HTML文件或TXT文件,这样方便我们保存和统计。   $ }$ f0 C. j  U! S6 h2 I2 S8 R' n

2 ~8 |$ K0 b9 P1 M5 v3 h 当然扫描器工具很多,这里推荐大家使用安全焦点出的X-SCAN和LANHELPER,感兴趣的读者可以自行下载使用。   
( R/ c+ y# m, Z2 R& n9 H1 s; X) E' i+ M
使用扫描器扫描法可以查看出网络中几乎全部计算机使用的IP地址,但是对于那些极个别的设置了防火墙的复杂规则,过滤了大部分常用端口和常见服务的计算机来说,还是会或多或少的出现漏报或错报的问题,再加上扫描器扫描法还需要我们下载专门的工具,所以也给操作上带来了不方便。   ! Q( q# L! {+ Z' i+ c5 q. h
2 o- x4 d7 G/ H( U% B( k
法三:sniffer监视法   6 h# ~0 L/ B# I6 _8 }0 t' N
2 @4 _8 L' Q; n( J. `" ~0 B
作为网络管理员的我们应该都会使用sniffer,那么我们只需要在网络中开启sniffer对网络传输的数据包进行监视,过一段时间就会查出有哪些IP地址有数据包发出,这样就可以确定该IP地址已经被占用了。   
6 x% L; i: d/ b! e7 Z0 R' Q7 w7 z6 M6 `( {! C% W9 g
不过用sniffer的方法不能将已经占用的IP地址保存成文件输出,而且给人有一种大材小用的感觉,毕竟sniffer正统不是用来做扫描IP地址的。   - [! v( B9 e) J7 J2 f$ C* \
0 Y! E# X2 m, ~8 ^( q- r: S+ T
方法四:ARP缓存法   + I" `0 i0 ~4 F( e" `( M
& ^+ [1 E8 W- q) H
实际上笔者还发现了一个方法可以解决网友提出的问题,他的原理是通过ARP缓存来查看获得的,不用使用任何第三方工具,使用系统自带的ARP -A即可。   2 z! b5 M* ~7 k6 p6 z7 b" c$ a

4 g9 d' t1 h7 Y8 t, d; i7 w. C( p ARP缓存法是以前面介绍的ping法为基础而来的,对于安装了防火墙或设置过滤规则的计算机来说直接ping该IP地址是得不到返回信息的,但是有一点我们必须注意,那就是虽然无法从ping的返回信息中得出该IP地址是否被占用,但是从ARP缓存中却可以看出来。防火墙等过滤设置可以不容许ICMP协议返回数据包给源地址,但是由于ARP是工作在二层上的,所以在ICMP协议数据包被过滤前ARP已经通过查看MAC的方式获得了网络中在线主机的MAC地址。   
  V/ V% A+ b1 Q* s* ]" n7 Q* @) w: o1 O
* W4 D' R* W0 j+ B 只要网络中的计算机想上网,那么他一定会将自己网卡的MAC地址告诉与其连接的交换机,接下来交换机也会进一步将他知道的MAC地址信息反馈给使用ping的主机。这样我们在使用ping的主机上就能够通过是否获得MAC地址的方式来了解该IP地址对应的计算机:</BR>是否在线了。   1 R; a/ p7 K  u+ H
  x' a# w& v8 {; _0 C. o
通过任务栏的“开始->运行”,输入CMD后回车进入命令行模式。假设公司网络是192.168.1.0/255.255.255.0,那么我们可以通过ping 192.168.1.1,ping 192.168.1.2......ping 192.168.1.254来测试IP地址是否被占用。当然不管ping返回的是通还是不通,全部ping完后执行arp -a命令显示ARP缓存表,出现在缓存表中的IP地址就是被占用的地址。   
- O9 N6 G7 G& Q" M1 ]) x6 J
) P3 Z0 ^, }+ }' b4 n/ e2 D" ]- ] 对批处理命令熟悉的网络管理员还可以自行编辑一个BAT命令来完成上面的一系列ping操作,BAT文件的内容如下:   
3 a5 ~( ~$ S; @) W
" D* s6 O1 ]3 R/ K, ` FOR /L %i IN (0,1,255) Do ping X.X.X.%i -n 1   
, Q1 s/ d& |% A0 V: ?' i% v3 H7 V7 t' ]6 L! |2 U
arp -a > IP.txt   / G' V! B/ ~: P/ Y

+ J( W; X, `5 |3 P: @ 这个批处理文件将列出所有正在使用的IP地址跟他们的MAC地址,保存到ip.txt文件中。当然语句中的X.X.X.%i是可以进行修改的,例如公司网络为192.168.1.0/255.255.255.0那么应该修改为   ( r2 q9 ~+ W" i
+ C; N8 [# P. b+ B
FOR /L %i IN (0,1,255) Do ping 192.168.1.%i -n 1   
: Q0 @$ ?- H. F/ s. a5 G+ D+ a9 d' W
arp -a > IP.txt   
4 E3 d$ Y+ B# T9 n7 x* G+ o; O% t8 {* F7 b, g5 S
最后再把这个方法的原理进行总结——我们向网段内所有IP地址发送一个icmp包,也许他屏蔽了ICMP包,但是这不要紧,只要他使用了该IP地址就一定会回应一个他的mac地址的数据包过来,这样用arp -a察看本地的arp缓存就能看到他的IP地址跟MAC地址了。   
* F, K: `1 P3 o7 g4 r9 D5 o9 P. z1 b0 o9 o- k
小提示:   
# b, `1 X9 u: K3 `& X' ]+ E2 f! H8 Y: J' c% z5 b
我们也可以使用nbtstat -A IP命令来替代arp -a命令。   
! o" D1 ^* o( E8 I. ]
* z' C( y% T  ?7 ]- [0 j# D6 ]4 I/ Q$ _6 S 也许有人会问计算机能够禁止ARP数据包的通过呢?实际上计算机上能禁止ICMP包,但是是不可能禁止arp包的,如果禁止了arp,那么交换机就找不到该计算机了,该计算机也无法连接网络,访问网络上的任何资源了。所以说ARP缓存法让我们通过现象看到了本质,即使ping无法返回任何有用信息,但是实际上他已经帮助我们找出了在线主机对应的MAC地址,进一步了解了他的IP地址。   
# f* B/ D  l; U
) q4 w' p2 ?' _2 S  j; w: y' D 总结:   
) ]* D7 M( n9 A$ T* n( u
% j( c6 P* F2 O( t6 X 本文介绍了四种方法来解决查看网络中已经使用的IP地址的办法,当然各种方法有各种方法的特点,有的使用了第三方工具但是查看地址列表更加清晰,有的没有使用软件仅仅采用系统自带命令但是受到网络环境的局限,而有的虽然没有任何工具,但是需要编写批处理文件,难度较大。当然究竟采取哪个方法来解决实际问题,是需要我们这些网络管理员自己去比较,自己去选择的。个人推荐使用第四种方法——ARP缓存法。   :



点击图标进入精品网摘收藏 欢迎大家加入网络收藏夹

TOP

发新话题