Windows 主机文件 - 使用指向本地计算机的主机条目的 SMB 网络共享

Windows 主机文件 - 使用指向本地计算机的主机条目的 SMB 网络共享

我正在对我们的服务器做一些有创意的事情。我们正在构建服务器软件的预加载映像。有时我们的客户要求我们可以通过网络共享存储数据,而其他客户则不这样做。我想我们可以发挥创意,并保持安装后的简单性。

我的想法是,使用 Windows 主机文件指向 127.0.0.1,并拥有一个本地网络共享,所有数据都存储在其中。即使客户希望我们将其存储在他们的文件服务器上,我们只需将主机文件更新为远程服务器地址即可。

注意——我们有许多服务,因此我们尝试尽可能少地进行“重新配置”。主机文件是名称解析的根源,因此很有帮助。我们可以手动执行此操作,而不是这样做。我们只是想在这方面发挥创造力。

添加了 Server 2008 R2 文件服务器角色

Local ServerName: SERVERA  (10.0.0.10)
Remote ServerName:  SERVERB  (10.0.0.11)
Host entry name GENERICSERVER     
Folder Shared on local or remote server:   SomeFileShare

Test1:
Host file on SERVERA:    10.0.0.11  GENERICSERVER 
\\GENERICSERVER\SomeFileShare -- Passed

Test2:
Host file on SERVERA:    10.0.0.10  GENERICSERVER 
\\GENERICSERVER\SomeFileShare -- **Failed**
\\SERVERA\SomeFileShare -- Pass
\\127.0.0.1\SomeFileShare -- Pass

Test3: 
Host file on SERVERA:    127.0.0.1  GENERICSERVER 
\\GENERICSERVER\SomeFileShare -- **Failed**
\\127.0.0.1\SomeFileShare -- Pass

有人知道为什么将它设置为访问远程服务器时可以正常工作,但如果我将其指向本地计算机(127.0.0.1 或适配器地址),它却不行吗?它提示我输入用户/密码,甚至显示服务器的系统名称,但没有进行身份验证。

任何帮助都将受到赞赏。

答案1

这可能是由 Windows 中的安全功能引起的,该功能(默认情况下)阻止本地主机访问非主机名的名称(CNAME,或您的情况下的主机文件自定义名称)。您的结果与我所经历的一致。

您需要编辑注册表并添加通用服务器名称或禁用环回保护。以下是我收集的一些相关信息,主要针对 IIS,但也影响 SMB。

http://www.fishbrains.com/2009/07/31/sharepoint-sites-unavail-from-local-host/

答案2

依赖 hosts 文件通常是一个非常糟糕的想法,因为它会在以后网络发生变化时导致各种问题。我建议改用 DNS。为您的应用程序创建一个标准主机名(一个非常隐秘的名称,可以肯定它永远不会与“真实”主机冲突),并要求希望使用网络共享的客户端添加 CNAME 以指向目标主机。让您的应用程序在启动时执行 DNS 查找,测试目标主机是否存在,如果有效则使用该信息,如果无效则返回到本地主机。

相关内容