在企业内部局域网中,用户访问网络上的主机往往有两种方式。一是直到对方的主机名(NetBios名),通过主机名来查找对方的计算机;二是通过IP地址来定位所需要访问的网络主机。其实第一种方法,其归根究底仍然是通过IP地址来定位网络主机。计算机或者网络上的其他设备会把这个主机名字转换为IP地址,然后再通过这个IP地址去寻找需要访问的网络主机。由于这个解析的过程对于用户来说是透明的,所以就给用户造成了一个错觉,以为可以通过主机名字来访问。
如下图所示,是NetBios名称的相关信息。XP是本级的名字,后面Status状态为Registered。就表示这个主机名已经在网络上进行了注册,后续其他的主机不能够使用这个主机名字了。而Type处显示的是Unique(唯一),就表示这个主机名字在网络上是唯一的。如此的话网络设备就可以把这个唯一的主机名与一个唯一的IP地址对应。
这个把主机名跟IP地址对应的过程就叫做名称解析。在同一个网段内,用户通过主机名来访问网络上的主机是没有问题的。但是跨网段的话,利用这种方式就会有一定的困难。如客户段是微软操作系统的话,则在进行这个主机名解析的时候,采用的是b-node的方式根据主机名来查找其他计算机的IP地址,这是一种广播信息的方式。但是默认情况下大部分的路由器都会隔离广播信息,即不会将广播信息发送到其他网段内,以提高网络性能。所有用户主机如果与他要访问的主机不在同一个网段的话,就可能无法把主机名转换为IP地址,用户就无法通过主机名来访问另一个网段的主机。遇到这种情况的话,该如何处理呢?
一、LMHOSTS文件的用途
如果客户段无法从网络设备中得到某个主机名对应的IP地址的话,则此时客户端往往还不会这么轻易放弃。他们会去查询本机内的LMHOSTS文件,看看这文件中是否有主机名对应的IP地址。LMHOSTS文件是一个纯文本文件,可以利用记事本等工具来编辑这个文件。网络管理员需要注意的是,与此类似的还有一个骄傲作HOSTS的文件。其作用跟LMHOSTS文件类似,但是仍然有比较大的差别。光从访问顺序来分析就有很大的不同。通常情况下在域名解析的时候,客户端往往是先查看HOSTS文件,看看有没有对应的纪录。如果没有的话则再通过网络上的DNS等域名解析设备进行解析。可见LMHOSTS文件是客户端进行主机名解析的最后一招。如果这一招也不行的话,那么客户端就会显示找不到这台网络主机。
二、LMHOSTS文件的编写规则
LMHOSTS文件其实就是一个IP地址与NETBIOS主机名字之间的一个对应关系,所以其内容比较简单。但是由于这是一个网络参数的配置文件,为此在格式上会有比较严格的要求。下面几条规则的话,网络管理员需要牢记。
一是IP地址与主机名的话有顺序关系,不能够前后颠倒。通常情况下,计算机的IP地址应该放置在第一列。第二列才是主机名称。如果弄乱这个顺序的话,如第一列写为主机名,第二列写为IP地址,则客户端将无法识别这个文件。
二是需要注意如果在计算机中包含特殊符号的处理。在计算机名字定义的时候,往往没有严格的要求。如可以使用大写字母、小写字母,甚至利用空格符号来定义计算机名字。如XP xp这个名字也是很法的。但是对于这些含有空格的主机名字,在LMHOSTS文件中需要进行特殊的处理。通常情况下,如果主机名字中含有空格,则需要利用双引号把这个主机名字包含起来,既“XP xp”。注意这里面有多少个空格一个都不能少。很显然这么处理会比较麻烦。为此在给电脑起名字的时候,最好不要使用特殊字符,也不要采用空格等等。
三、LMHOSTS文件在网络中的应用
笔者认为,LMHOSTS文件是HOSTS文件与DNS服务器的一个很好的补充。通常情况下,如果在局域网中没有部署WINS服务器,或者存在多网段的话,则采用LMHOSTS文件无疑是一个不错的选择。
为什么这么说呢?其实笔者只要举一个例子就可以说明这个问题。如现在有个客户端需要访问笔者这台主机名字为XP的电脑。那么客户端会如何处理呢?
1、由于用户不知道主机名字为XP电脑的IP地址,只知道主机名字。为此用户会输入主机名。然后客户端操作系统会负责对这个名字进行解析。当客户端需要把某个主机名字解析为IP地址的话,则其首先会检查NetBios名称缓存内是否已经存在这个IP地址与主机名字的对应关系。如果存在的话,则直接采用这个纪录信息;如果不存在的话,则会改用广播方式。
2、若通过广播方式仍然找不到主机名字与IP地址的对应关系的话,则就会查询LMHOSTS文件。如果找到了,就会采用这条纪录,并把这条纪录信息保存到NetBios的缓存中,以方便下次使用。如果仍然找不到对应的纪录的话,那么最后客户端就会提示错误信息。
从上面的分析中可以看出,如果企业网络环境中存在着多网段的情况时,通过广播的方式进行主机名称解析行不通。此时LMHOSTS文件无疑是解决这个主机名解析问题的比较好的手段。网络管理员只需要把主机的名称与IP地址的对应关系在这个文件中定义即可。
四、LMHOSTS文件的使用要点
1、让一些常用的对应关系在系统启动时就写入NETBIOS缓存。从上面的分析中,网络管理员可以发现在客户端启动的时候,会在内存中划分一个小区域用来保存NETBIOS信息。这个区域就叫做NETBIOS缓存。通常情况下,客户端在进行主机名解析的时候,往往会先从NETBIOS缓存中去查找信息。如果有相关纪录的话就会直接采用。而不用进行后续的尝试。为此对于一些常用的对应关系,那么把他们的纪录在系统启动的时候就加入到这个缓存中,无疑可以提高主机名解析的速度,提高网络访问的效率。如网络管理员在网络中部署了一台文件服务器,名字叫做Share。为了其安全起见,把这个服务器放置在另外一个网段中。为了提高文件服务器的访问速度,应该让这个主机名与IP地址的对应关系在客户端启动的时候,就自动加入到NETBIOS缓存中。如此的话,可以明显提高客户段访问服务器的效率。虽然通过第一次访问后,客户段也会把这个信息纪录到NETBIOS缓存中,但是客户段下次重新启动后,这个信息就会从缓存中清除。故下次访问时,又需要经历一个主机名解析的过程。为此笔者在日常管理中,往往把这些文件服务器、打印服务器等常用的主机名字与IP地址的对应关系,加入到LMHOSTS文件中,并让其在客户端启动的时候,就自动加入到缓存中。要实现这个目的,其实很简单。只需要在对应的纪录后面,加入#PRE即可。客户端在启动的时候,发现LMHOSTS文件中有带#PRE的纪录,就会直接把其加入到NETBIOS的缓存中。
2、实现LMHOSTS容错功能。如果客户端的这个文件被意外删除或者不明原因的损坏时,客户段就无法正常访问这个文件。此时该如何处理呢?为此网络管理员就会想到能否为这个文件提供一些容错的功能。当客户端上的这个文件损坏时,客户端操作系统能够很快的从另外一个文件中获取所需要的信息。在微软操作系统下的LMHOSTS文件,其实已经提供了类似的容错功能。如在这个文件中,可以加入#INCLUDE关键字,后面跟上路径已经文件名字,即可以为其提供容错功能。如果本机中的LMHOSTS文件无法访问或者找不到对应纪录的话,则客户端会去访问这个文件。其实这个关键字的作用是系统会自动去读取这个路径指定文件中的信息,并把这些信息加入到本机的LMHOSTS文件中。在使用这个容错措施的时候需要注意,#符号必须加上。一般来说#符号后面的内容表示注释,没有实际的意义。但是如果#符号后面加上了一些特殊的关键字,则对于操作系统来说就会有特殊的含义。如上面提到的#PRE,就是指示操作系统在启动的时候,需要将这一行纪录信息加入到NETBIOS缓存中。另外这个备用的LMHOSTS文件可以在本机上的其他位置,也可以在网络上的其它主机中。同时网络管理员还可以部署多个备用的LMHOSTS文件。不过话又说回来,LMHOSTS文件在于精而不在于多。出于容错的需要,一般指定一个备用的LMHOSTS文件即可。