搜尋此網誌

2010/02/04

於Windows 7中的網路地圖,看到XP和2003的機器

Windows 7中的網路地圖功能,利用連結階層拓樸探索 / Link Layer Topology Discovery (LLTD),可以方便的看出網路拓樸結構,雖然微軟在Windows XP SP2後有支援,但是即使安裝後,卻都無法正常顯示。另外Windows 2003沒有LLTD的驅動支援,本文筆記了實作的方法和步驟:如何能在網路地圖中,顯示Windows XP和2003的機器。另外,Windows 2003微軟官方並沒有提供LLTD回應程式,故不能保證裝完後系統沒有問題


從Windows Vista起,微軟在作業系統中加入了網路地圖的功能,說實在Vista用的人不多,在家中PC沒幾台,我也不怎麼重視這東西。
最近公司有買了Windows 7的版權,雖然大部份的電腦都還在Windows XP,不過我很好奇,網路地圖作出來是怎樣子?

無奈AD目前是2003,還沒有升級到2008的打算,在網域GPIO中,並沒有相關的設定,於是我在自己這一台Windows 7的電腦,先把相關功能開啟;執行以下這行:
mmc gpedit.msc
接著找到本機電腦原則->電腦設定->系統管理範本->網路->連結階層網路拓樸搜索,這項目有二個設定:
開啟Mapper I/O (LLTDIO) 驅動程式,以及開啟Responder (RSPNDR) 驅動程式二個項目;前者可發出查詢訊號,後者可設定是否要回應。在這裡,我們把二者階設定啟用,我勾選允許在網域中操作,及禁止在私人網路中操作後,按套用。到 控制台\網路和網際網路\網路和共用中心下,選取檢視完整網路地圖,這時只看到我這台PC,匣道及網際網路三個圖示連結。因為大部份的機器皆沒啟動服務,故皆查不到。
微軟有提供XP版的RSPNDR可供安裝(KB922120):
http://www.microsoft.com/downloads/details.aspx?displaylang=zh-tw&FamilyID=4f01a31d-ee46-481e-ba11-37f485fa34ea (繁體中文)

http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=4f01a31d-ee46-481e-ba11-37f485fa34ea (英文)

如果下載完後直接安裝,會有以下三種狀況:
Windows 2003: 不給安裝
Windows XP: SP3系統下,不給安裝
Windows XP: SP2下安裝完啥事也沒發生

XP並沒有LLTD驅動程式。這應該表示XP只能回應查詢,不能只動查詢。下載下來之後,別執行該程式。開一個命令列視窗,貢到下載的目錄,執行以下指令(下例為英文版):

WindowsXP-KB922120-v5-x86-ENU.exe -x

該目錄應會有以下的檔案和資料夾:
  • spuninst.exe
  • spmsg.dll
  • update (資料夾)
  • SP2QFE (資料夾)
  • SP2GDR (資料夾)


再下來,我們要手動安裝RSPNDR到XP/2003中 (沒錯! 在測試過後,Windows 2003也適用):
  • 把SP2QFE資料夾下的rspndr.sys和rspndr.exe複製到Windows system32的Drivers資料夾中
  • 把SP2QFE中子資料夾ip下的rspndr.inf複製到Windows系統資料夾下的inf資料夾中
  • 到drivers資料夾中執行rspndr.exe -i指令
  • 在登錄中建立機碼:HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\LLTD
  • 在上述建立的機碼下,產生六個DWORD值:AllowLLTDioOnDomain,AllowLLTDioOnPublicNet,ProhibitLLTDioOnPrivateNet,EnableLLTDio,AllowRspndrOnDomain,AllowRspndrOnPublicNet,
  • ProhibitRspndrOnPrivateNet,EnableRspndr
  • 除了EnableRspndr,ProhibitRspndrOnPrivateNet和AllowRspndrOnDomain三個設為一外,其它皆設為0
  • 你也可以將下方綠色文字,用記事本開啟後,存為.reg檔案後,再雙點擊該檔案將登錄檔匯入,我命名為lltd.reg,並放在剛上方解開的資料夾下:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\LLTD]
"AllowLLTDioOnDomain"=dword:00000001
"AllowLLTDioOnPublicNet"=dword:00000000
"ProhibitLLTDioOnPrivateNet"=dword:00000001
"EnableLLTDio"=dword:00000000
"AllowRspndrOnDomain"=dword:00000001
"AllowRspndrOnPublicNet"=dword:00000000
"ProhibitRspndrOnPrivateNet"=dword:00000001
"EnableRspndr"=dword:00000001



最後,重新啟動RSPNDR服務:
  • sc stop rspndr
  • sc start rspndr


這樣子你就裝完一台電腦了。由此我的AD是Windows 2003,雖然登錄可自行在GPO中設定,不過由於電腦數不多,我還是直接每台設定,不過在每台安裝前,我寫了一個批次檔如下所列,並命名為instxpsp3:
copy "C:\LLTD_Responder\SP2QFE\rspndr.exe" "%windir%\system32\drivers"
copy "C:\LLTD_Responder\SP2QFE\rspndr.sys" "%windir%\system32\drivers"
copy "C:\LLTD_Responder\SP2QFE\ip\rspndr.inf" "%windir%\inf"
cd "%windir%\system32\drivers"
cd "%SystemDrive%"
rspndr -i
regedit /s "C:\LLTD_Responder\lltd.reg"
sc stop rspndr
sc start rspndr


如果上述的步驟都作好了,卻還是沒有電腦顯示在網路地圖上的話,還有一個可能,就是防火牆擋掉了LLTD的服務。LLTD使用Ethernet type 0x88D9來作為通訊用。以我公司的環境來說,0x88D9是不能通的,設定開通後就能看到網路地圖。

安裝方式:
把從微軟下載下來,解開的RSPNDR驅動程式複製到名為LLTD_Responder資料夾中。再將該資料夾複製到要安裝的電腦的C:\下,按著在該電腦,用有該本機系統管理員權限的帳號,執行上方的批次檔即可。
不把該批次檔放在網路,是因為我是偷偷用遠端背景安裝,安裝時並不能存取網路,故要複製到該電腦的本機磁碟機中。
在家中用上述方式可能會看不到,因為我登錄的機碼設定只能在網域中使用,禁止在私網中使用,只要更改設定值就行了。
在Windows 2003中,裝完後如下,網路中會多出一個叫連結階層拓樸探索回應程式的服務:



Windows XP結果也是類似:


最後,放上二張完成後的網路地圖: