局域网共享故障的分析与排除
IPC、Server服务与共享故障
IPC(Internet Process Connection),IPC是NT以上的系统为了让进程间通信而开放的命名管道,可以通过验证用户名和密码获得相应的权限,在远程管理计算机和查看计算机的共享资源时使用,微软把它用于局域网功能的实现,如果它被关闭,计算机就会出现“无法访问网络邻居”的故障。
在Windows NT以后的系统里,IPC是依赖于Server服务运行的,一些习惯了单机环境的用户可能会关闭这个服务,这样的后果就是系统将无法提供与局域网有关的操作,用户无法查看别人的计算机,也无法为自己发布任何共享。
要确认IPC和Server服务是否正常,可以在命令提示符里输入命令net share,如果Server服务未开启,系统会提示“没有启动 Server 服务。是否可以启动? (Y/N) [Y]:”,回车即可以启动Server服务。如果Server服务已开启,系统会列出当前的所有共享资源列表,其中至少要有名为“IPC$”的共享,否则用户依然无法正常使用共享资源。
除了Server服务以外,还有两个服务会对共享造成影响,分别是“Computer Browser”和“TCP/IP NetBIOS Helper Service”,前者用于保存和交换局域网内计算机的NetBIOS名称和共享资源列表,当一个程序需要访问另一台计算机的共享资源时,它会从这个列表里查询目标计算机,一旦该服务被禁止,IPC就认定当前没有可供访问的共享资源,用户自然就没法访问其他计算机的共享资源了;后者主要用于在TCP/IP上传输的NetBIOS协议(NetBT)和NetBIOS名称解析工作,NetBT协议为跨网段实现NetBIOS命令传输提供了载体,正因如此,早期的黑客入侵教材里“关于139端口的远程入侵”才能实现,因为NetBIOS协议被TCP封装起来通过Internet传输到对方机器里处理了,同样对方也是用相同途径实现数据传输的,否则黑客们根本无法跨网段使用网络资源映射指令“net use”。虽然对于本地局域网来说,NetBT协议并非任何时候都会用到,但通常还是留着它比较好。
如果这两个服务异常终止,局域网内的共享可能就无法正常使用,这时候我们可以通过执行程序“services.msc”打开服务管理器,在里面查找“Computer Browser”和“TCP/IP NetBIOS Helper Service”服务并点击“启动”即可。
系统安全策略与共享故障
熟悉Windows系统的用户或多或少都会接触到“组策略”(gpedit.msc),这里实际上是提供了一个比手工修改注册表更直观的操作方法来设置系统的一些功能和用户权限,但是这里的设置失误也会影响到局域网共享资源的使用。
由于IPC本身就是用于身份验证的,因此它对计算机账户的配置特别敏感,而组策略里偏偏就有很多方面的设置是针对计算机账户的,其中影响最大的要数“计算机配置 – Windows配置 – 安全设置 – 本地策略 – 用户权利指派”里的“拒绝从网络访问这台计算机”,在Windows 2000系统里默认是不做任何限制的,可是自从XP出现后,这个部分就默认多了两个帐户,一个是用于远程协助(也就是被简化过的终端服务)身份登录的3389用户名,另一个则是我们局域网共享的基本成员guest!
许多使用XP系统的用户无法正常开启共享资源的访问权限,正是这个项目的限制,解决方法也很容易,只要从列表里移除“Guest”帐户就可以了。
除了与帐户相关的策略,这里还有几个与NetBIOS和IPC相关的组策略设置,它们是位于“计算机配置 – Windows配置 – 安全设置 – 本地策略 – 安全选项”里的“对匿名连接的额外限制”(默认为“无”),对于XP以上的系统,这里还有“不允许SAM账户和共享的匿名枚举”(默认为“已停用”)、“本地账户的共享和安全模式”(默认为“仅来宾”),其中“对匿名连接的额外限制”的设置是可以直接扼杀共享功能的,当它被设置为“不允许枚举”时,其他计算机就无法获取共享资源列表,如果它被设置为“没有显式匿名权限就无法访问”的话,这台计算机就与共享功能彻底告别了,所以有时候实在找不出故障,不妨检查一下该项目。
权限与共享的冲突
如今的局域网普遍建立在Windows 2000以上的系统架构上运行,而且IPC的作用本来就是为了提供身份验证,因而共享始终离不开权限的影子,何况如果系统不会把文件共享的访问身份设置为最小权限的来宾帐户的话,别有用心的访问者就能轻易夺取管理员级别了。但是也正因为这样,一些时候权限反而会成为阻挠共享顺利进行的罪魁祸首。
细心的用户如果点击了共享资源属性里的“权限”界面,可能会发现系统已经自动给这里添加了“Everyone”权限,这是个特殊权限,它的存在是为了让用户能访问被标记为“公有”的文件,这也是一些程序正常运行需要的访问权限,任何人都能正常访问被赋予“Everyone”权限的文件,包括来宾组成员。
但是有时候这个理论会因某种原因而产生混乱,进而导致来宾组成员丧失了访问权限,这时候,用户只能手工为它添加一个“guest”的访问权限了。在一些系统上,甚至要添加“Users”或“Administrators”权限才能实现文件共享,但是对于这种权限指派已经严重混乱的系统,小金建议还是重新安装一个算了。
对于Windows XP系统,它默认是仅仅给共享显示一个简单的界面而已,如果你要自定义更多东西,就必须进入“控制面板”的“文件夹选项”里,取消“使用简单文件共享”的勾,而且这里还涉及到NTFS分区“安全”页设置的显示。
随着Windows XP的逐步推进以及安全概念的推广,越来越多用户开始使用NTFS格式作为自己的硬盘分区,这样就在IPC的用户身份验证模式上又增加了一种权限限制:NTFS权限。
一些刚接触NTFS分区的用户经常会发现,自己机器的共享和来宾帐户都开了,但是别人无论怎么访问都提示“权限不足”,即使给共享权限里添加了来宾帐户甚至管理员帐户也无效,这是为什么?归根究底还是因为在NTFS这部分被拦截了,用户必须理清一个概念,那就是无论你对某个项目的权限做了什么改动,都是磁盘权限最大,因为它是实现文件访问的最后一层防卫,系统不允许任何继承权限超越它,如果一个文件夹的权限只有“SYSTEM”,那么即使你当前登录的身份为管理员,你一样无法打开这个文件夹。而用于共享身份识别的IPC更是只有Guest权限,更是无法突破NTFS限制的。因此要获得正常的访问权限,除了做好共享目录的权限设置工作以外,还在共享目录上单击右键---属性----安全,在里面添加Guest和Everyone权限并设置相应的访问规则(完全控制、可修改、可读取等),如果没有其他故障因素,你就会发现共享正常开启访问了。
防火墙与共享的矛盾
现在基本上已经没有一台计算机是不曾安装网络防火墙和病毒防火墙的了,可是用户在众多的墙里享受安全特性的时候,偶尔也会发现局域网共享莫名其妙的失败了,如果用户留意到防火墙正在闪烁的报警状态,也许会发现日志上记录着“计算机x.x.x.x 试图访问本机139 – NetBIOS端口,该操作已被拦截”,这是为什么?因为防火墙把NetBIOS的通讯给拦截掉了,别忘记NetBIOS可是局域网通讯的基础。防火墙此举是为了阻止前面提到的利用NetBT进行的“139入侵”模式攻击,虽然防火墙规则里可能写着“允许局域网资源共享”,但是可能这条规则没被选中,或者防火墙没能认出这是一个局域网。
知道了缘由,解决起来也就容易多了,对于有原配规则设置的防火墙,只要勾上“允许局域网资源共享”,就能让NetBIOS协议正常通讯了,如果没有,就自己建立一个规则:协议方向为“入”,协议选择“TCP”,端口范围134—139,标志位“SYN”,满足时的规则为“通行”即可。一些XP系统内置的Windows防火墙ICF往往会掐了自家共享的脖子,如果是这样,就把它关掉,因为ICF始终比不过专门的防火墙,更别指望靠它抵挡一切入侵了。
特殊的共享故障
在一小部分机器里,网络共享是艰难的,它们怎么做也看不到对方的计算机和资源列表,但是使用一些局域网管理工具如LANExplorer、LANetAdmin等却能看到一切,对于这种计算机,只能通过直接输入资源名称或把对方共享资源通过net use命令给映射过来作为虚拟盘符才能工作,对于这种机器,我们也束手无策,只能这么凑合着使用了。
把你的防火墙关上,或者他配置的不对
在控制面板中的管理器中设置。
可能是你的机子上设置了“不能使用匿名方式访问”造成的
你要把自己的文件设定为共享才行