是否有人知道为什么不可能使用解析为相同 IP 地址的不同名称来访问同一台计算机内的本地 Windows 共享(例如 c$)。
例子:
Computer Name: COMP-1
IP Address: 192.168.1.2
Hosts File Entry: 192.168.1.2 COMP-2
我可以\\COMP-1\C$
从内部访问COMP-1
,但\\COMP-2\C$
即使它指向相同的 IP 地址(即它本身),我也无法访问。它总是要求输入凭据,但根本不起作用。
值得注意的是,如果COMP-1
和COMP-2
被添加到 DNS,那么其他系统可以使用任一名称访问共享,只是不能从本地机器访问。
答案1
引用\\COMP-2\C$
不起作用,因为 Windows 专门对其进行了测试并要求提供用户凭据。
这项检查是在 Windows Server 2003 Service Pack 1 中添加的,大概是出于某些不为人知的安全原因,可以在名称相当长的知识库文章中找到:
安装 Windows Server 2003 Service Pack 1 后,尝试使用服务器的 FQDN 或 CNAME 别名本地访问服务器时出现错误消息:“访问被拒绝”或“没有网络提供商接受给定的网络路径”
其效果是文件共享可以通过计算机名称(有或没有完整资格)或 IP 地址进行。但是,默认情况下,文件共享不能与任意 DNS 别名一起使用。要使文件共享和其他 Windows 服务能够与 DNS 别名一起使用,您必须按照下面所述进行注册表更改并重新启动计算机。
- 点击开始, 点击跑步,键入
regedit
,然后单击“确定”。- 找到并单击以下注册表子项:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0
- 右键单击
MSV1_0
,指向 新的,然后点击多字符串值。- 在里面姓名列中,键入
BackConnectionHostNames
,然后按 ENTER。- 右键单击
BackConnectionHostNames
,然后单击“修改”。在里面价值数据框中,键入用于计算机上的本地共享的 CNAME 或 DNS 别名,然后单击好的。
注意: 每个主机名各占一行。
注意:如果
BackConnectionHostNames
注册表项以 REG_DWORD 类型存在,则必须删除该BackConnectionHostNames
注册表项。退出注册表编辑器,然后重新启动计算机。
我已经测试了这篇 15 年前的知识库文章,它仍然有效,无需重新启动计算机。当BackConnectionHostNames
包含时COMP-2
,则不需要凭据。
令我惊讶的是,删除后BackConnectionHostNames
,仍然不需要凭据,因为它们可能是当时隐式生成的并且仍然被 Windows 记住。