最近遭遇的一个网络共享文件访问故障非常奇怪,以某一台固定的主机为例,不同时间访问另外一台主机的共享文件时,却出现时通时不通的现象。
一、现象介绍
具体表现为在主机上运行“\IP地址”命令,来尝试连接另外一台主机,输入正确的用户名和密码之后却提示“当前没有可用的登录服务器来服务登录请求”,但是过一阵子再使用相同的操作又有可能正常访问。
在对希望互访的两台计算机进行检查,发现它们有一个共同的特点,那就是它们都配置了两个IP地址。当前内网使用的IP地址是192.168.0网段的,网关为192.168.0.1;但为了让几台服务器之间进行文件交换,不让其他客户端访问,因此在服务器上又添加了10.10.20网段的IP地址,由于只是内网访问,因此就没有配置10.10.20网段的网关。
二、共享协议介绍
碰到这样的问题只能求助于网络。在网络上经过一翻搜索之后,才发现是因为共享协议才引发这个故障的。要想彻底认识这个问题,必须先了解共享协议的工作原理。
在Windows系统中,文件共享是通过SMB协议来完成的。SMB协议有两种工作方式,分别为NetBios Over TCP/IP(简称NetBT)和Direct hosting。当采用NetBT方式通信时,会通过NetBIOS接口来进行连接,分占别用UDP137、138和TCP139端口,其中137端口用来进行名字解析,138端口传递数据包,139用于会话服务,进行文件传输,因此最重要的就是139端口了;而采用Direct hosting则更为简单,直接跳过NetBIOS直接口,不需要进行名称解析,直接使用TCP445端口传输。
在早期的Windows系统之中,主要使用NetBIOS进行通讯,但是到了Windows 2000后,又新增加了Direct hosting方式,但并没有取消NetBT。同时NetBT是随网卡绑定的,并且只能绑定在网卡的第一个IP地址上,在本例中,即192.168.0网段的IP地址;而Direct hosting却没有这样的限制。通过八哥网专家的介绍,我们知道在本例中,访问10.10.20网段的其它主机时,会优先使用自己绑定的同网段的IP地址进行连接,而不会采用192.168.0网段的地址进行连接。看到这里,大家或许已经明白了。问题的关键就在于主机不能自动识别采用正确的连接方式,而是采取的类似“随机抢答”的方式,既可能采用NetBT,也可能采用Direct hosting,当选择前者时就会出现不通的故障,使用后者时则完全正常。
三、故障解决
知道了其真实原因后,解决起来就方便多了,我们只需要取消NetBT方式,强制使用Direct hosting即可。打开本地连接的属性窗口,双击其中的“Internet协议(TCP/IP)”,在打开的窗口中单击“高级”按钮,再切换到“WINS”选项卡,将其中的“NetBIOS设置”设为“禁用TCP/IP上的NetBIOS”选项,然后单击“确定”按钮保存设置就可以了(图1)。