我有一台运行 Ubuntu 12.04 的硬件机器和一个通过公共 IP 连接到互联网的 Selenium 服务器集线器。在那台机器上,我运行着两个运行 Selenium 服务器节点和一个 Web 服务器的 VirtualBox VM。集线器和节点之间的通信需要是双向的,因此 VM 需要将网络连接设置为桥接。但这行不通,因为我只有一个公共 IP。
有没有办法在虚拟机和硬件机器之间建立虚拟局域网,以便我可以从硬件机器访问虚拟化的 Web 服务器和 Selenium 服务器?
答案1
答案2
您现在遇到的错误是,Guest 能够与 Host 通信,但注册了错误的回调 IP 地址。通过使用 localhost / 127.0.0.1,您可以告诉 Selenium 节点和网格实例依赖本地端口转发。
配置 Guest VM 以使用 NAT 网络,并为端口 5555 和端口 4444 添加端口转发,将两个 IP 地址留空或设置为 0.0.0.0 您可能还需要转发端口 80,以便您的主机可以看到 Guest Web 服务器。使用 NAT 时,在 Guest 计算机中,IP 地址 10.0.2.2 是与主机通信的 IP 地址。以下是命令:
主机作为集线器
java -jar selenium-server-standalone.jar -role hub -port 4444
客户机作为节点
java -jar selenium-server-standalone.jar -role node -host 127.0.0.1 -port 5555 -hub http://10.0.2.2:4444/grid/register
如果您希望多台虚拟机相互通信,请为每台虚拟机设置一个辅助网络连接,设置为“内部网络”,命名为“vboxnet0”或类似名称。然后为每台虚拟机指定一个静态 IP 地址,例如:192.168.1.10(机器 1)和 192.168.1.11(机器 2)。