前一段时间,我住的小区宽带改造(西安广电小区网络),管理员为了对付万恶的arp病毒和残酷的广播风暴,登记了每个用户家庭登入的终端的MAC地址进行了绑定配置,由于小区网络拓扑构成简单,所以取消了动态地址分配DHCP,统一给用户分配了静态IP。
   这样一来,我在电脑(真机)上安装的虚拟机VMware,因为最初搭建的时候采用的是桥接方式,直连到物理网络,所以现在无法获取IP地址,以致不能连入internet,自己随意手动输入一个静态IP又很容易因为和已使用IP相同而造成地址冲突问题。。。但是,我又不想采用真机搭建代理服务器的形式,所以,就想到用下面的手段来查找和获取小区局域网内空闲的IP地址。
    因为现在90%以上的用户都在自己的计算机上安装了防火墙,所以,我们利用PING命令发出的试探往往得到的是Request timed out (请求超时),从而很难判断目标IP是否存在。
    其实,就算目标计算机对PING命令进行了屏蔽,我们(发出命令方)仍然会在自己计算机上获得一些信息,这就是ARP(地址解析协议)在局域网内进行了广播以后给我们返回的信息。
    知道了这些,我们就可以开始行动了。。。
    首先,ping IP地址进行测试。
遇到这样的,不用我说,大家也都知道这个IP地址已经存在被使用了。。
更多的时候,会是下面这样:
这个时候,就需要用arp -a命令来进一步判断了:
这样看来,这个IP地址实际已被占用。。。
于是,我们可以重复上面的步骤来继续寻找可能空闲的ip地址。
针对我们小区内网分配的是192.168.1.X的C类私有地址,所以可以简单的写一个批处理程序帮我们查找。
新建一个文本文档,写入内容如下(保存名称为:findip.bat):
@echo off
cls
if "%1x"=="x" goto help
if "%2x"=="x" goto startip
if "%3x"=="x" goto endip
@echo finding...wait...
arp -d
for /l %%i in (%2,1,%3) do ping -n 4 %1.%%i
@echo finish...
ping 127.0.0.1 -i 5 >nul
@echo the ip address in the nether list is exist and occupied,  please choose another one without the list.
arp -a
goto end
:startip
@echo Warning: the startip and endip are absent!
goto help
:endip
@echo Warning: the endip is missing!
goto help
:help
@echo 此命令的用法是: findip[C类地址网络位][开始IP地址][结束IP地址]
@echo for example: findip 192.168.1 1 254
pause press any key to quit
:end
 
(附件中我上传了编辑好的这个文件
将此批处理文件放到%systemroot%下,然后在cmd中执行,如截图所示:
 
最后的list中显示的结果即是被占用的IP地址,然后我们就可以方便的选出没有被占用的IP地址进行使用了。