摘錄地址:
http://publish.it168.com/2006/0518/20060518015901.shtml?positioncode=2169網友提問:我是一個小公司的網絡管理員,最近總是出現IP地址沖突的問題,另外由于經常有外來人員使用筆記本連接公司網絡,再加上公司的IP地址因為某種原因是手動設置的固定IP,公司對于IP地址分布也沒有留有任何記錄信息,所以當有新計算機要連接到網絡中時只是隨便設置一個,挑選的地址也是那些分布在網絡末尾或比較大的數字,但是久而久之隨意設置的IP地址過多,在新計算機連接網絡時再設置IP地址很容易造成沖突。請問IT168的專家是否有好辦法可以解決我目前遇到的問題,幫助我在設置IP地址前對網絡中的所有IP地址進行掃描,明確哪個IP被占用,哪個沒有被占用。當然了解了如何掃描網絡中已占用的IP地址的話,我就可以將掃描到的地址打印進行保管,以后新計算機接入網絡不使用這些地址即可。
??? 【IT168 網友解答】在網絡中出現IP地址沖突的問題是非常麻煩的,一方面他擾亂了我們網絡管理員管理網絡,另一方面他影響了普通用戶的正常上網。特別是對于部分中小公司來說經常將IP地址與網絡資源訪問權限相關聯,一旦IP地址被占用非法用戶將能非法使用網絡資源。遇到這種情況我們如何查出哪個IP地址被占用呢?
??? 正如前面網友提出的問題一樣,當公司使用手動設置IP地址且沒有有效管理設置的IP地址的話,很容易出現隨意設置地址并經常沖突的問題。遇到這種情況也需要我們學會掃描整個網絡,將已經連接到網絡中的IP地址進行記錄,防止地址沖突現象的發生。我們主要有以下幾個辦法可以幫助大家掃描網絡中已用的IP地址。
??? 方法一:原始ping法
??? 第一個方法比較簡單,而且受環境限制比較大。眾所周知在沒有安裝防火墻和設置過濾規則的計算機上都容許ICMP協議數據包的通過,那么我們可以通過“ping ip地址”這個命令來查看該IP地址是否有計算機使用。
??? 通過任務欄的“開始->運行”,輸入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法比較簡單,這里就不詳細說明了,但是這種方法遇到計算機上安裝了防火墻對ICMP協議進行過濾的話,或者公司交換機和路由器上對ICMP實施ACL訪問控制列表過濾的話就不可行了。因此這個方法受的局限比較大,一般測試的成功率不高,很容易把安裝了防火墻的計算機對應的IP地址認為沒有被使用。
??? 方法二:掃描器掃描法
??? 以前筆者在進行網絡安全工作時就經常使用掃描器掃描網絡中各個主機的漏洞,那么現在我們完全可以使用此方法來查看本網絡有哪些IP地址被占用。由于掃描器掃描時并不是僅僅使用ICMP協議進行ping,我們可以設置,讓掃描器多掃描幾個端口,多掃描幾個服務。這樣即使計算機上安裝了防火墻或者交換機上有訪問控制列表過濾ICMP協議,只要該計算機開放了某些端口或某些服務,就不會出現漏報的問題。
??? 通過掃描器掃描出來的IP地址列表還可以導出成HTML文件或TXT文件,這樣方便我們保存和統計。
??? 當然掃描器工具很多,這里推薦大家使用安全焦點出的X-SCAN和LANHELPER,感興趣的讀者可以自行下載使用。
??? 使用掃描器掃描法可以查看出網絡中幾乎全部計算機使用的IP地址,但是對于那些極個別的設置了防火墻的復雜規則,過濾了大部分常用端口和常見服務的計算機來說,還是會或多或少的出現漏報或錯報的問題,再加上掃描器掃描法還需要我們下載專門的工具,所以也給操作上帶來了不方便。
??? 方法三:sniffer監視法
??? 作為網絡管理員的我們應該都會使用sniffer,那么我們只需要在網絡中開啟sniffer對網絡傳輸的數據包進行監視,過一段時間就會查出有哪些IP地址有數據包發出,這樣就可以確定該IP地址已經被占用了。
??? 不過用sniffer的方法不能將已經占用的IP地址保存成文件輸出,而且給人有一種大材小用的感覺,畢竟sniffer正統不是用來做掃描IP地址的。
??? 方法四:ARP緩存法
??? 實際上筆者還發現了一個方法可以解決網友提出的問題,他的原理是通過ARP緩存來查看獲得的,不用使用任何第三方工具,使用系統自帶的ARP -A即可。
??? ARP緩存法是以前面介紹的ping法為基礎而來的,對于安裝了防火墻或設置過濾規則的計算機來說直接ping該IP地址是得不到返回信息的,但是有一點我們必須注意,那就是雖然無法從ping的返回信息中得出該IP地址是否被占用,但是從ARP緩存中卻可以看出來。防火墻等過濾設置可以不容許ICMP協議返回數據包給源地址,但是由于ARP是工作在二層上的,所以在ICMP協議數據包被過濾前ARP已經通過查看MAC的方式獲得了網絡中在線主機的MAC地址。
??? 只要網絡中的計算機想上網,那么他一定會將自己網卡的MAC地址告訴與其連接的交換機,接下來交換機也會進一步將他知道的MAC地址信息反饋給使用ping的主機。這樣我們在使用ping的主機上就能夠通過是否獲得MAC地址的方式來了解該IP地址對應的計算機是否在線了。
??? 通過任務欄的“開始->運行”,輸入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地址就是被占用的地址。
??? 對批處理命令熟悉的網絡管理員還可以自行編輯一個BAT命令來完成上面的一系列ping操作,BAT文件的內容如下:
FOR /L %i IN (0,1,255) Do ping X.X.X.%i -n 1
arp -a > IP.txt
??? 這個批處理文件將列出所有正在使用的IP地址跟他們的MAC地址,保存到ip.txt文件中。當然語句中的X.X.X.%i是可以進行修改的,例如公司網絡為192.168.1.0/255.255.255.0那么應該修改為
FOR /L %i IN (0,1,255) Do ping 192.168.1.%i -n 1
arp -a > IP.txt
??? 最后再把這個方法的原理進行總結——我們向網段內所有IP地址發送一個icmp包,也許他屏蔽了ICMP包,但是這不要緊,只要他使用了該IP地址就一定會回應一個他的mac地址的數據包過來,這樣用arp -a察看本地的arp緩存就能看到他的IP地址跟MAC地址了。
??? 小提示:
??? 我們也可以使用nbtstat -A IP命令來替代arp -a命令。
??? 也許有人會問計算機能夠禁止ARP數據包的通過呢?實際上計算機上能禁止ICMP包,但是是不可能禁止arp包的,如果禁止了arp,那么交換機就找不到該計算機了,該計算機也無法連接網絡,訪問網絡上的任何資源了。所以說ARP緩存法讓我們通過現象看到了本質,即使ping無法返回任何有用信息,但是實際上他已經幫助我們找出了在線主機對應的MAC地址,進一步了解了他的IP地址。
??? 總結:
??? 本文介紹了四種方法來解決查看網絡中已經使用的IP地址的辦法,當然各種方法有各種方法的特點,有的使用了第三方工具但是查看地址列表更加清晰,有的沒有使用軟件僅僅采用系統自帶命令但是受到網絡環境的局限,而有的雖然沒有任何工具,但是需要編寫批處理文件,難度較大。當然究竟采取哪個方法來解決實際問題,是需要我們這些網絡管理員自己去比較,自己去選擇的。個人推薦使用第四種方法——ARP緩存法