前一段時間,我住的小區寬帶改造(西安廣電小區網絡),管理者為了對付萬惡的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!
: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位址進行使用了。
本文轉自 jrfly331 51CTO部落格,原文連結:http://blog.51cto.com/mrfly/32257,如需轉載請自行聯系原作者