我正在一台 Windows 机器上设置一个自动化流程,用于备份另一台机器上的数据。该流程将作为本地帐户运行,该帐户存在于两台机器上,并且与用户名和密码匹配。我正在使用 Windows 的功能,使用匹配帐户来提供无需登录的“身份验证”,我已经多次使用过,没有出现问题。但是,现在我遇到了问题。
涉及以下两台机器:
DEV03
- Windows Server 2008 R2 x64(恰好是 VMware VM,但这并不重要)
- IP:10.12.48.97,10.12.48.88
DEV04
- Windows Server 2003 x86
- IP:10.12.48.126
这两台机器都不在 Active Directory 域中,我也无法将它们放在其中。但它们都位于同一个工作组中。
两台计算机上都存在一个用户名administrator
和密码相同的帐户。该帐户位于Administrators
每台计算机上的本地组中。
我通过 RDP 连接到两台计算机并使用该帐户登录administrator
。然后,我通过以下两种方式之一从开始菜单启动常规命令提示符:
- 定期启动,以桌面会话的登录用户身份运行 (
administrator
)。以下结果中记录了这一点(logon)
- 从“以不同用户身份运行”(2008)或“以...身份运行”(2003)开始。我仍然使用
administrator
手动输入的帐户。(我意识到这看起来很奇怪,应该无关紧要,但我把它包括进去是为了确保我没有发疯,因为我确信我得到了不同的结果,但现在我重新测试并把它全部列出来,也许不是。)这在结果中被记录为帐户名称,administrator
进入命令提示符后,我dir
在另一台机器上的管理共享上发出一个简单的命令。
测试结果细分如下:
Test RDP ON Run As Dir of Result
=================================================================
1 DEV03 (logon) \\10.12.48.126\c$ Succeeds
2 DEV03 administrator \\10.12.48.126\c$ Succeeds
3 DEV03 (logon) \\DEV04\c$ 'Access is denied.'
4 DEV03 administrator \\DEV04\c$ 'Access is denied.'
-----------------------------------------------------------------
5 DEV04 (logon) \\10.12.48.88\c$ Succeeds
6 DEV04 administrator \\10.12.48.88\c$ Succeeds
7 DEV04 (logon) \\10.12.48.97\c$ 'Logon failure: unknown user name or bad password.'
8 DEV04 administrator \\10.12.48.97\c$ 'Logon failure: unknown user name or bad password.'
9 DEV04 (logon) \\DEV03\c$ Succeeds
10 DEV04 administrator \\DEV03\c$ Succeeds
从 DEV04 ping DEV03 返回 .88 IP。所以我开始认为这个问题与主机名有关。但是,尽管我的服务器有多个 IP 地址,但我以前从未遇到过这个问题,这让我有点怀疑 Windows Server 2008。
我已经重新启动了两台服务器,并且刷新了 DNS 以确保万无一失。
我最关心的是测试 5 到 8。为什么连接会根据入站 IP 地址而有所不同?我没有在服务器上的 IP 设置中看到任何表明身份验证行为存在差异的内容。当然这不是防火墙问题,因为它正在连接,只是身份验证失败。
用户帐户是否与 Windows 服务器主机名相关联?服务器是否可能将主机名与第一个 IP (.88) 相关联(尽管它是第二个添加的),但无法识别其他 IP?
答案1
最好的办法是使用嗅探器(例如,Wireshark) 并查看数据包。它们会告诉您那里到底发生了什么。Windows 在 SMB 登录过程中有很多特殊之处,特别是通过简单主机名、完整 DNS 名称和 IP 地址登录的算法都不同。
我的猜测:在某些情况下,你可能需要登录<target host name>\administrator
,你的 2-IP 服务器在两个地址之间的 SMB 配置可能存在一些差异,你可能有缓存登录对于一些测试用例。
另外,如果您的服务器的 2 个 IP 分配给同一个 NIC,我建议您删除其中一个,因为这会带来不必要的障碍:如果 NIC 有多个 IP,则 Windows 只会使用其中一个进行出站连接。