複製鏈接
請複製以下鏈接發送給好友

lmhosts

鎖定
lmhosts是用來進行NETBIOS名靜態解析的。將NETBIOS名和IP地址對應起來,功能類似於DNS,只不過DNS是將域名/主機名和IP對應。LMHOSTS文件是個純文本文件,微軟提供了一個示例程序LMHOSTS.SAM,而根據不同的windows操作系統,在windows nt 3.1、windows nt 3.5、windows nt 3.51以及windows nt 4.0和windows 2000上述操作系統當中位於C:\WinNT\System32\Drivers\Etc目錄下,而在其它版本的windows操作系統當中該文件的位置都位於C:\Windows\System32\Dirvers\etc目錄當中。
外文名
lmhosts
簡    介
進行NETBIOS名靜態解析
功    能
類似於DNS
採    用
路徑是“藍網實驗室”所採用的

lmhosts示例

DNS示意 DNS示意
這裏的路徑是“藍網實驗室”所採用的,可自行參照實際安裝情況而靈活改變。如果我們需要啓用LMHOSTS文件查詢(至於什麼時候會用到這種解析方式,我們在下面會講到),則應該將其改名為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”按鈕來獲取。

lmhosts工作進程

由我們前面的《關於WINS》及《關於NetBIOS》等專輯大家已經知道,LMHOSTS文件的應用場合是沒有WINS服務器的網絡環境,引入LMHOSTS文件的目的是用來解決廣播方式無法跨越路由器的侷限的,LMHOSTS文件與廣播方式相輔相行實現網段內外的全通信。這裏我們再來看一下它們的的工作進程:
1:系統啓動時將LMHOSTS文件中被設為#PRE的地址和機器名預載到內存中;
2:客户端發出查詢請求時,先在Cache中檢查是否已存在目的IP地址;
3:找到了自不用説,如果在Cache中沒有找到,系統改用廣播方式再次查找;
4:這次找到了也自不用説,如果廣播查詢還是沒有找到,就得用到LMHOSTS文件了;
5:找到啦,好!把它也添加到Cache中保存起來(看你下次還往哪跑^_^);還是沒有找到?!對不起,俺只得報錯了,你就在客户端去等着看錯誤信息吧。

lmhosts跨域操作

那麼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文件管理
這裏提到的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。