在尝试了互联网上能找到的所有方法之后,我发现,让我的 Windows Server 2012 Hyper-V 环境中的两台虚拟机相互通信的唯一方法是在 Guest/Public 配置文件上启用文件和打印机共享以及网络发现。
问题是,这是在我的实时 Web VM 上(如果您想知道,我需要我的 CI VM 能够与其通信以进行部署)。基本上,此时,我只需要将文件从 CI 服务器传输到 Web 服务器。目前我正在使用默认共享(C$),但如果更有意义,我可以做其他事情。
我让 CI VM 可以很好地与 DevWeb VM 通信,而无需启用此功能,但它们都位于 2012 R2 上,而实时 Web VM 仅在 2012 上,因此不确定这是否是问题的一部分。
此外,它们都是通过物理 NIC 连接的,因为我无法解决虚拟 NIC/交换机的一些奇怪问题。
还有其他方法可以解决这个问题吗?如果没有,这样做会面临什么风险?
如果需要的话,我可以给你一份我尝试过的一些事情的清单,但这是一个相当详尽的清单,不幸的是,我可能不会记住所有的事情(我知道这是一个不好的迹象)。
更新
这肯定与防火墙有关,因为当我调整“允许应用或功能通过 Windows 防火墙”设置下的设置时,它会影响我从 CI 到 Web1(实时 Web VM)的连接。但奇怪的是,当我检查设置以使其正常工作时,我可以返回并取消选中它,它仍然有效。
我今晚要再玩一会儿,然后我会在缩小范围后发布设置的截图。
值得一提的是,这种奇怪的行为在 WebDev 上也很明显,我以前没有遇到过任何问题。目前,当前设置如下:
Web开发
Public Private
File and Printer Sharing No No
Network Discovery No No
Web1
Public Private
File and Printer Sharing No No
Network Discovery No No
但就像我说的,我之前也设置过,只要更改这些设置,其他什么都可以正常工作——然后我可以改回来,它仍然正常工作。所以不确定是否需要传播某些东西,或者更改这些设置是否会触发防火墙设置之外的其他东西。
更新 2
好的,确实有延迟,因为我刚刚再次检查(没有更改任何内容),发现它不再适用于任何服务器。因此,无论是什么原因导致了这种延迟,都使故障排除变得非常麻烦。
答案1
文件和打印机共享设置不会禁用任何内容。这只是一条“允许”它的防火墙规则。所以我怀疑您在“DevWeb VM”上禁用了防火墙。
我猜你只想“开放”文件共享,使其只能从 CI VM 到 Web VM,而不能到“外部世界”。你可以指定适当的防火墙规则来实现这一点,这些规则只允许 CI VM 的 IP 访问 Web VM。
另外,我真的希望您在(已发布的?)Web VM 前面有另一个防火墙,这样就不会与外界“共享”文件共享功能。