我正在尝试学习一些基本的现实世界 .NET 部署知识(使用 Web Deploy、远程调试),方法是让一个 hello-world 应用程序在多个虚拟服务器上运行。我想要的是拥有一个虚拟机,vbox-web
在 VirtualBox 主机专用网络上调用,该虚拟机可以从主机和同一虚拟网络上使用该主机名的其他客户机访问。(稍后再添加另一个虚拟机,vbox-db
但这超出了这个问题的范围。)
我目前所做的:
- VirtualBox 主机专用网络适配器设置为自动配置,网络为 192.168.145.1/24,DHCP 在 .2 处启用,它提供的地址从 .101 开始
- VM 安装了 Windows Server 2016,启用了 DNS 和 IIS 角色,无需进一步配置。VM 中的主机专用网络适配器也设置为静态使用 192.168.145.100 作为 IP 地址和 DNS 服务器。(奇怪的是,如果该适配器通过 DHCP 获取地址,它不起作用 - 它只会获取自动链接本地地址。)计算机名称也设置为
vbox-web
。 - 主机网络适配器设置为通过 DHCP 获取地址,并按预期接收地址 192.168.145.1。我还将其设置为使用 192.168.145.100 作为 DNS 服务器。
这给我带来了什么:
- 在虚拟机中的浏览器中,我可以通过以下方式打开默认的 IIS 主页http://本地主机/, 也http://vbox-web/
- 在主机的浏览器中,我可以使用以下方式打开同一个主页http://192.168.145.1/, 但不是使用http://vbox-web/- 即我想在这里完成什么。
nslookup - localhost
在虚拟机中告诉我 DNS 请求超时;似乎 DNS 服务器甚至没有运行?
这意味着问题不在于能否连接到客户机;我遗漏了使 DNS 在此处正常工作的难题的一部分。
我不感兴趣的解决方法:
- 直接使用 IP - 我想要一个有点现实的设置,没有一个理智的人会将直接 IP 放入连接字符串中。
- 使用
/etc/hosts
- 参见上文,DNS 存在是有原因的。 - 使用桥接网络并让 wifi 路由器的 DNS 处理这个问题 - 这在工作场所网络中不起作用;而且,wifi 路由器固件可以做到这一点必须使用完整的操作系统即可实现。
- Docker 自动联网 - 我需要 VirtualBox 来处理其他工作内容,Windows 版 Docker 需要启用 HyperV 并因此淘汰其他虚拟机管理程序。