最近遭遇的一个网络共享文件访问故障非常奇怪,以某一台固定的主机为例,不同时间访问另外一台主机的共享文件时,却出现时通时不通的现象。

  一、现象介绍

  具体表现为在主机上运行“\\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”选项,然后单击“确定”按钮保存设置就可以了。

  其实,解除问题的步骤是非常简单的。但是作为优秀的网络管理人员,在网络出现故障的时候,不仅要能够及时排除,而且能够知道引发故障的原因,对相关的原理能够有充分的了解,这样会提高网络素养,提高自己的综合能力将有极大的帮助

--------------

http://technet.microsoft.com/zh-cn/library/ms143696.aspx




更新日期: 2005 年 12 月 5 日

周边网络中的服务器应禁用所有不必要的协议,包括 NetBIOS。Web 服务器和域名系统 (DNS) 服务器不需要 NetBIOS。应该禁用此协议,以减少由用户枚举造成的风险。

  1. “开始”菜单,右键单击“我的电脑”,然后单击“管理”

  2. 展开“系统工具”,然后清除“设备管理器”复选框。

  3. 右键单击“设备管理器”,指向“查看”,再选择“显示隐藏设备”

  4. 展开“非即插即用驱动程序”

  5. 右键单击“TCP/IP 上的 NetBios”,然后单击“禁用”

    此操作禁用 TCP/445 和 UDP 445 上的 SMB 直接主机侦听器。

    ms143696.note(zh-cn,SQL.90).gif注意:
    此过程禁用 netbt.sys 驱动程序。“高级 TCP/IP 设置”对话框的 WINS 选项卡中包含“禁用 TCP/IP 上的 NetBIOS”选项。选择此选项只能禁用 NetBIOS 会话服务(该会话服务侦听 TCP 端口 139),而不能完全禁用 NetBIOS。