跨網(wǎng)段NetBios主機(jī)名無法解析該如何處理
本文主要給大家詳細(xì)的介紹了對于用戶主機(jī)如果與他要訪問的主機(jī)不在同一個網(wǎng)段的話,就可能無法把主機(jī)名轉(zhuǎn)換為IP地址就無法通過主機(jī)名來訪問另一個網(wǎng)段的主機(jī)。遇到這種情況的話,該如何處理呢?下面文章將給出詳細(xì)解答。
在企業(yè)內(nèi)部局域網(wǎng)中,用戶訪問網(wǎng)絡(luò)上的主機(jī)往往有兩種方式。一是直到對方的主機(jī)名(NetBios名),通過主機(jī)名來查找對方的計算機(jī);二是通過IP地址來定位所需要訪問的網(wǎng)絡(luò)主機(jī)。其實***種方法,其歸根究底仍然是通過IP地址來定位網(wǎng)絡(luò)主機(jī)。計算機(jī)或者網(wǎng)絡(luò)上的其他設(shè)備會把這個主機(jī)名字轉(zhuǎn)換為IP地址,然后再通過這個IP地址去尋找需要訪問的網(wǎng)絡(luò)主機(jī)。由于這個解析的過程對于用戶來說是透明的,所以就給用戶造成了一個錯覺,以為可以通過主機(jī)名字來訪問。
如下圖所示,是NetBios名稱的相關(guān)信息。XP是本級的名字,后面Status狀態(tài)為Registered。就表示這個主機(jī)名已經(jīng)在網(wǎng)絡(luò)上進(jìn)行了注冊,后續(xù)其他的主機(jī)不能夠使用這個主機(jī)名字了。而Type處顯示的是Unique(唯一),就表示這個主機(jī)名字在網(wǎng)絡(luò)上是唯一的。如此的話網(wǎng)絡(luò)設(shè)備就可以把這個唯一的主機(jī)名與一個唯一的IP地址對應(yīng)。
這個把主機(jī)名跟IP地址對應(yīng)的過程就叫做名稱解析。在同一個網(wǎng)段內(nèi),用戶通過主機(jī)名來訪問網(wǎng)絡(luò)上的主機(jī)是沒有問題的。但是跨網(wǎng)段的話,利用這種方式就會有一定的困難。如客戶段是微軟操作系統(tǒng)的話,則在進(jìn)行這個主機(jī)名解析的時候,采用的是b-node的方式根據(jù)主機(jī)名來查找其他計算機(jī)的IP地址,這是一種廣播信息的方式。但是默認(rèn)情況下大部分的路由器都會隔離廣播信息,即不會將廣播信息發(fā)送到其他網(wǎng)段內(nèi),以提高網(wǎng)絡(luò)性能。所有用戶主機(jī)如果與他要訪問的主機(jī)不在同一個網(wǎng)段的話,就可能無法把主機(jī)名轉(zhuǎn)換為IP地址,用戶就無法通過主機(jī)名來訪問另一個網(wǎng)段的主機(jī)。遇到這種情況的話,該如何處理呢?
一、LMHOSTS文件的用途
如果客戶段無法從網(wǎng)絡(luò)設(shè)備中得到某個主機(jī)名對應(yīng)的IP地址的話,則此時客戶端往往還不會這么輕易放棄。他們會去查詢本機(jī)內(nèi)的LMHOSTS文件,看看這文件中是否有主機(jī)名對應(yīng)的IP地址。LMHOSTS文件是一個純文本文件,可以利用記事本等工具來編輯這個文件。網(wǎng)絡(luò)管理員需要注意的是,與此類似的還有一個驕傲作HOSTS的文件。其作用跟LMHOSTS文件類似,但是仍然有比較大的差別。光從訪問順序來分析就有很大的不同。通常情況下在域名解析的時候,客戶端往往是先查看HOSTS文件,看看有沒有對應(yīng)的紀(jì)錄。如果沒有的話則再通過網(wǎng)絡(luò)上的DNS等域名解析設(shè)備進(jìn)行解析??梢奓MHOSTS文件是客戶端進(jìn)行主機(jī)名解析的***一招。如果這一招也不行的話,那么客戶端就會顯示找不到這臺網(wǎng)絡(luò)主機(jī)。
二、LMHOSTS文件的編寫規(guī)則
LMHOSTS文件其實就是一個IP地址與NETBIOS主機(jī)名字之間的一個對應(yīng)關(guān)系,所以其內(nèi)容比較簡單。但是由于這是一個網(wǎng)絡(luò)參數(shù)的配置文件,為此在格式上會有比較嚴(yán)格的要求。下面幾條規(guī)則的話,網(wǎng)絡(luò)管理員需要牢記。
一是IP地址與主機(jī)名的話有順序關(guān)系,不能夠前后顛倒。通常情況下,計算機(jī)的IP地址應(yīng)該放置在***列。第二列才是主機(jī)名稱。如果弄亂這個順序的話,如***列寫為主機(jī)名,第二列寫為IP地址,則客戶端將無法識別這個文件。
二是需要注意如果在計算機(jī)中包含特殊符號的處理。在計算機(jī)名字定義的時候,往往沒有嚴(yán)格的要求。如可以使用大寫字母、小寫字母,甚至利用空格符號來定義計算機(jī)名字。如XP xp這個名字也是很法的。但是對于這些含有空格的主機(jī)名字,在LMHOSTS文件中需要進(jìn)行特殊的處理。通常情況下,如果主機(jī)名字中含有空格,則需要利用雙引號把這個主機(jī)名字包含起來,既“XP xp”。注意這里面有多少個空格一個都不能少。很顯然這么處理會比較麻煩。為此在給電腦起名字的時候,***不要使用特殊字符,也不要采用空格等等。
三、LMHOSTS文件在網(wǎng)絡(luò)中的應(yīng)用
筆者認(rèn)為,LMHOSTS文件是HOSTS文件與DNS服務(wù)器的一個很好的補充。通常情況下,如果在局域網(wǎng)中沒有部署WINS服務(wù)器,或者存在多網(wǎng)段的話,則采用LMHOSTS文件無疑是一個不錯的選擇。
為什么這么說呢?其實筆者只要舉一個例子就可以說明這個問題。如現(xiàn)在有個客戶端需要訪問筆者這臺主機(jī)名字為XP的電腦。那么客戶端會如何處理呢?
1、由于用戶不知道主機(jī)名字為XP電腦的IP地址,只知道主機(jī)名字。為此用戶會輸入主機(jī)名。然后客戶端操作系統(tǒng)會負(fù)責(zé)對這個名字進(jìn)行解析。當(dāng)客戶端需要把某個主機(jī)名字解析為IP地址的話,則其首先會檢查NetBios名稱緩存內(nèi)是否已經(jīng)存在這個IP地址與主機(jī)名字的對應(yīng)關(guān)系。如果存在的話,則直接采用這個紀(jì)錄信息;如果不存在的話,則會改用廣播方式。
2、若通過廣播方式仍然找不到主機(jī)名字與IP地址的對應(yīng)關(guān)系的話,則就會查詢LMHOSTS文件。如果找到了,就會采用這條紀(jì)錄,并把這條紀(jì)錄信息保存到NetBios的緩存中,以方便下次使用。如果仍然找不到對應(yīng)的紀(jì)錄的話,那么***客戶端就會提示錯誤信息。
從上面的分析中可以看出,如果企業(yè)網(wǎng)絡(luò)環(huán)境中存在著多網(wǎng)段的情況時,通過廣播的方式進(jìn)行主機(jī)名稱解析行不通。此時LMHOSTS文件無疑是解決這個主機(jī)名解析問題的比較好的手段。網(wǎng)絡(luò)管理員只需要把主機(jī)的名稱與IP地址的對應(yīng)關(guān)系在這個文件中定義即可。
四、LMHOSTS文件的使用要點
1、讓一些常用的對應(yīng)關(guān)系在系統(tǒng)啟動時就寫入NETBIOS緩存。從上面的分析中,網(wǎng)絡(luò)管理員可以發(fā)現(xiàn)在客戶端啟動的時候,會在內(nèi)存中劃分一個小區(qū)域用來保存NETBIOS信息。這個區(qū)域就叫做NETBIOS緩存。通常情況下,客戶端在進(jìn)行主機(jī)名解析的時候,往往會先從NETBIOS緩存中去查找信息。如果有相關(guān)紀(jì)錄的話就會直接采用。而不用進(jìn)行后續(xù)的嘗試。為此對于一些常用的對應(yīng)關(guān)系,那么把他們的紀(jì)錄在系統(tǒng)啟動的時候就加入到這個緩存中,無疑可以提高主機(jī)名解析的速度,提高網(wǎng)絡(luò)訪問的效率。如網(wǎng)絡(luò)管理員在網(wǎng)絡(luò)中部署了一臺文件服務(wù)器,名字叫做Share。為了其安全起見,把這個服務(wù)器放置在另外一個網(wǎng)段中。為了提高文件服務(wù)器的訪問速度,應(yīng)該讓這個主機(jī)名與IP地址的對應(yīng)關(guān)系在客戶端啟動的時候,就自動加入到NETBIOS緩存中。如此的話,可以明顯提高客戶段訪問服務(wù)器的效率。雖然通過***次訪問后,客戶段也會把這個信息紀(jì)錄到NETBIOS緩存中,但是客戶段下次重新啟動后,這個信息就會從緩存中清除。故下次訪問時,又需要經(jīng)歷一個主機(jī)名解析的過程。為此筆者在日常管理中,往往把這些文件服務(wù)器、打印服務(wù)器等常用的主機(jī)名字與IP地址的對應(yīng)關(guān)系,加入到LMHOSTS文件中,并讓其在客戶端啟動的時候,就自動加入到緩存中。要實現(xiàn)這個目的,其實很簡單。只需要在對應(yīng)的紀(jì)錄后面,加入#PRE即可??蛻舳嗽趩拥臅r候,發(fā)現(xiàn)LMHOSTS文件中有帶#PRE的紀(jì)錄,就會直接把其加入到NETBIOS的緩存中。
2、實現(xiàn)LMHOSTS容錯功能。如果客戶端的這個文件被意外刪除或者不明原因的損壞時,客戶段就無法正常訪問這個文件。此時該如何處理呢?為此網(wǎng)絡(luò)管理員就會想到能否為這個文件提供一些容錯的功能。當(dāng)客戶端上的這個文件損壞時,客戶端操作系統(tǒng)能夠很快的從另外一個文件中獲取所需要的信息。在微軟操作系統(tǒng)下的LMHOSTS文件,其實已經(jīng)提供了類似的容錯功能。如在這個文件中,可以加入#INCLUDE關(guān)鍵字,后面跟上路徑已經(jīng)文件名字,即可以為其提供容錯功能。如果本機(jī)中的LMHOSTS文件無法訪問或者找不到對應(yīng)紀(jì)錄的話,則客戶端會去訪問這個文件。其實這個關(guān)鍵字的作用是系統(tǒng)會自動去讀取這個路徑指定文件中的信息,并把這些信息加入到本機(jī)的LMHOSTS文件中。在使用這個容錯措施的時候需要注意,#符號必須加上。一般來說#符號后面的內(nèi)容表示注釋,沒有實際的意義。但是如果#符號后面加上了一些特殊的關(guān)鍵字,則對于操作系統(tǒng)來說就會有特殊的含義。如上面提到的#PRE,就是指示操作系統(tǒng)在啟動的時候,需要將這一行紀(jì)錄信息加入到NETBIOS緩存中。另外這個備用的LMHOSTS文件可以在本機(jī)上的其他位置,也可以在網(wǎng)絡(luò)上的其它主機(jī)中。同時網(wǎng)絡(luò)管理員還可以部署多個備用的LMHOSTS文件。不過話又說回來,LMHOSTS文件在于精而不在于多。出于容錯的需要,一般指定一個備用的LMHOSTS文件即可。