我正在尝试在一台虚拟机上运行服务器,在另一台虚拟机上运行客户端;两台虚拟机均以 ScientificLinux 6.4 作为操作系统,并在 VirtualBox 4.2.10 上运行。
客户端应该能够通过 MPI 与服务器通信,服务器将把信息导入 MySQL 数据库。客户端和服务器软件将在一台机器上通信并成功运行;但是,它无法在机器之间运行。
起初,我使用的是默认的 NAT 网络。然后,我尝试使用 GUI 在机器之间创建内部网络和桥接网络;但是,它们仍然无法通信。然后我尝试在机器之间使用 SSH;这没有用。我认为,如果我可以在机器之间使用 SSH,那么客户端和服务器应该能够成功地相互通信。
有人遇到过这个问题吗?
我应该怎么做才能解决这个问题?
编辑:我感到困惑的另一件事是虚拟机似乎没有唯一的 IP 地址;当我执行 ifconfig 时,我发现 lo(本地环回)部分下的 IP 地址都是 127.0.0.1。我在其他任何部分都找不到任何其他 IP 地址,所以这就是我所能做的。
答案1
您想设置内部网络或仅主机网络。两者之间的实际区别在于主机可以参与仅主机网络,但不能参与内部网络。
假设您想使用内部网络,基本流程如下:
在每个客户虚拟机上,将其网络适配器设置为“内部网络”或添加额外的网络适配器并将其设置为“内部网络”。确保每个客户虚拟机的网络名称相同。
为内部网络设置 DHCP 服务器,正如这里所述。
当您启动客户虚拟机时,它们将看到一个额外的网络适配器。大多数现代操作系统都会毫不费力地从 DHCP 服务器配置网络接口。
如果使用仅主机网络,则过程如下:
从 Virtualbox VM 管理器中,选择文件->首选项->网络并设置仅主机适配器。您可以从此处的 GUI 设置 DHCP 服务器。完成此过程后,您将看到主机上出现一个新的虚拟接口。这就是您在主机和客户机之间进行通信的方式。
在每个客户机上,更改其网络适配器以使用仅主机网络,或将新的网络适配器设置为仅主机网络。
启动每个客户机。它们应该从 DHCP 服务器获取 IP 地址。
答案2
我通常为所有虚拟机设置桥接网络,这样我就可以从网络上的任何地方访问我的虚拟机。
如果您希望虚拟机与虚拟机之间的通信更快,请使用仅主机网络。对于仅主机网络,您必须启用它并创建 DHCP 服务器(在 VirtualBox 选项内)或在虚拟机上使用静态 IP 地址。
我的路由器上有 DHCP,并且为 VirtualBox 配备了内部 DHCP 服务器。因此,如果我的虚拟机需要超过 1 个互联网/以太网,我会创建 1 个桥接网络和 1 个仅主机网络。
我还确保网卡下启用了“全部允许”。
答案3
如果您发出ifconfig
并发现仅列出了一个环回接口,则您没有任何接口可以与您的网络通信。
我没有使用 Scientific Linux,但似乎你可以使用以下命令配置你的网络接口,如下所示文章:
system-config-network-tui
如果不起作用,那么您可以按照上面提到的文章中所述手动编辑文件。
答案4
首先检查来宾的防火墙设置。
通常我从开始ping
,telnet
等等...除了防火墙或虚拟网络配置错误之外,我看不出它不应该工作的原因。