lmhosts

lmhosts

lmhosts是用來進行NETBIOS名靜態解析的。將NETBIOS名和IP位址對應起來,功能類似於DNS,只不過DNS是將域名/主機名和IP對應。 LMHOSTS 檔案是個純文本檔案,微軟提供了一個示例程式 LMHOSTS.SAM,位於 C:\WinNT\System32\Drivers\Etc 目錄下。

示例

DNS示意 DNS示意

這裡的路徑是“藍網實驗室”所採用的,可自行參照實際安裝情況而靈活改變。如果我們需要啟用 LMHOSTS 檔案查詢(至於什麼時候會用到這種解析方式,我們在下面會講到),則應該將其改名為 LMHOSTS,當然推薦的方法是製作副本(即另外儲存為LMHOSTS),這樣可免除將原檔案失手改錯而不得不從安裝光碟里解壓還原出來的麻煩。

套用

Windows NT 4.0 Server Windows NT 4.0 Server

安裝過 Windows NT 4.0 Server 的網友很清楚,就是如果安裝了 TCP/IP 協定,則我們依次選取“開始”/“設定”/“控制臺”/“網路”/“協定”/“TCP/IP通信協定”/“屬性”/“WINS 屬性”,則可以在當前頁框裡看見,系統默認的是“啟用 LMHOSTS 查詢”,同時還可以啟用的是“啟用 DNS ”。按照我們前面講到的,如果想要使用保存在其他目錄中甚或其他計算機中的 LMHOSTS 檔案,則可以單擊旁邊的“導入 LMHOSTS”按鈕來獲取。

工作進程

由我們前面的《關於 WINS 》及《關於 NetBIOS》等專輯大家已經知道,LMHOSTS 檔案的套用場合是沒有 WINS 伺服器的網路環境,引入 LMHOSTS 檔案的目的是用來解決廣播方式無法跨越路由器的局限的,LMHOSTS 檔案與廣播方式相輔相行實現網段內外的全通信。這裡我們再來看一下它們的的工作進程:

1、系統啟動時將 LMHOSTS 檔案中被設為#PRE的地址和機器名預載到記憶體中;

2、客戶端發出查詢請求時,先在 Cache 中檢查是否已存在目的 IP 地址;

3、找到了自不用說,如果在 Cache 中沒有找到,系統改用廣播方式再次查找;

4、這次找到了也自不用說,如果廣播查詢還是沒有找到,就得用到 LMHOSTS 檔案了;

5、找到啦,好!把它也添加到 Cache 中保存起來(看你下次還往哪跑^_^);還是沒有找到?!對不起,俺只得報錯了,你就在客戶端去等著看錯誤信息吧。

跨域操作

那么 LMHOSTS 檔案的跨域操作又是如何實現的呢?還記得三天前的第一講嗎?我們說到了一個 #DOM:Domain_Name 命令。假定我們這裡有兩個域:Lanhome01和Lanhome02,其 IP 地址分別為 192.168.0.1 和 192.168.1.10,計算機名分別為 Heatch01 和 Heatch02,現在有一台域 Lanhome01 的工作站 cxy01 想要登錄到域 Lanhome02,但我們在網路上沒有運行 WINS 服務。如果僅通過廣播方式,cxy01無法被 Lanhome02域控制器審核並驗證身份。這裡只需在 LMHOSTS 檔案添加如下一行即可:

192.168.1.10  Heatch02 #PRE #DOM:Lanhome02

運行

LMHOSTS檔案最適合網路上沒有WINS伺服器的環境,因為此時只好使用廣播的方式。但是由於大部分的路由器不會將廣播信息傳送到其他網路,因此利用廣播方式可能無法與其他網段內的主機通信每一次就可以利用LNHOSTS檔案來解決問題。

以下說明LMHOSTS檔案如何與廣播方式互操作(假設網路上沒有WINS伺服器)

1、如果LMHOSTS檔案內有項信息被設為#PE,則計算機啟動時,此項信息就會預先被載入到NetBIOS名稱快取內。

2、當計算機要查詢其他計算機的IP位址時,它會先檢查NetBIOS名稱快取內是否已經存在此計算機的IP位址。

3、如果從NetBIOS名稱快取內找不到對方的IP位址,則改用廣播的方式。

4、如果廣播的方式也失敗的話,則改用LMHOSTS檔案查詢。

5、如果在LMHOSTS檔案內仍然找不到對方的IP位址,則將看到警告信息。

6、若從LMHOSTS檔案中找到對方的IP位址,則此信息會被存儲在NetBIOS名稱快取中一段時間,以供下次使用。

可以利用nbstat -R命令將NetBIOS名稱快取內的信息清除,此命令同時會重新由LMHOSTS檔案內載入內含#PRE的信息。

管理

LMHOSTS檔案管理 LMHOSTS檔案管理

這裡提到的 LMHOSTS 檔案的管理實際也是上一講內容的強化,即跟上面的 #DOM 命令一樣,我們這一節著重的是 #INCLUDE 命令。因為 LMHOSTS 檔案是獨立存放在每台機器上的,如果整個網路發生了數據變動,則必須為每台機器的 LMHOSTS 檔案進行修改,雖然它們都存放於 C:\WinNT\System32\Drivers\Etc目錄中很好定位,但動起手來還是很麻煩。如果通過 #INCLUDE 命令就可以一勞永逸。我們這裡將它再次拿出來講,是提醒大家注意其檔案路徑的表示方法。

以上一講中的例子再次說明如下:

# The following example illustrates all of these extensions:

# 102.54.94.97  rhino  #PRE #DOM:networking  #net group's DC

# 102.54.94.102 "appname \0x14"  #special app server

# 102.54.94.123  popular  #PRE #source server

# 102.54.94.117  localsrv #PRE #needed for the include

#BEGIN_ALTERNATE

#INCLUDE \\localsrv\public\lmhosts

#INCLUDE \\rhino\public\lmhosts

#END_ALTERNATE

# end of this file.

如果共享的 LMHOSTS 檔案位於域名為 Lanhome01 的 Heatch01 的機器中,其路徑為 C:\WinNT\System32\Drivers\Etc,現在我們對這個 LMHOSTS 檔案已經進行了多處修改,因為同屬一個網路,所以我們還要對 Lanhome02 中 Heatch02 機器的 LMHOSTS 檔案做相應修改,但我們不希望在今後仍要進行重複的工作,因此,我們可以做如下操作:

1、將 Heatch01 機器的 C:\WinNT\System32\Drivers\Etc 目錄共享為 Share;

2、對 Heatch02 機器的 LMHOSTS 檔案做如下修改:

192.168.0.1 Heatch01 #PRE #DOM:Lanhome01

#INCLUDE \\Heatch01\Share\LMHOSTS

對於 LMHOSTS 本身的管理來說,就是儘可能的最佳化其結構,利用系統的搜尋,比如減少注釋、將常用的IP位址及其計算機名稱都通過 #PRE 命令預載到 Cache 中並把它們放在檔案的最後(為什麼?——因為它們在系統啟動時就已經載入到 Cache 中了,如果在廣播失敗後查詢 LMHOSTS 檔案又先從它們開始,豈不浪費時間?!)。

如果覺得有必要,可以使用 NBTSTAT -R 命令來清除 Cache 中的數據並重新從 LMHOSTS 檔案中 Preload。

相關詞條

相關搜尋

熱門詞條

聯絡我們