如何从其他虚拟办公室访客访问流浪客人?

时间:2015-02-09 01:37:16

标签: vagrant virtualbox

场景是我的开发环境在我的笔记本电脑(主机)上的Vagrant盒子上,我想在vitualbox vm中进行浏览器测试,所以我需要从另一个看到一个vm。

流浪者盒的端口是:8080,它被转发到同一端口上的主机:8080。所以我可以在localhost:8080

上看到主机上的服务器

我应该使用哪个地址进行浏览器测试vm?

测试vm的默认网关? 流浪者vm的ip? 主机的虚拟网络ip?

我应该在测试vm的浏览器上使用NAT或仅主机适配器吗?

这使得很多组合,我相信我已经尝试过所有组合。我还需要了解其他什么?

5 个答案:

答案 0 :(得分:12)

在您的使用案例中,您应该使用桥接网络(Vagrant中的公共网络)。如果VM驻留在同一主机上,您甚至可以使用内部(Vagrant中的专用网络)。

如果使用公共网络,VM的第二个NIC将能够从您网络中的DHCP服务器(例如您的家庭路由器)获取IP地址。

只需在Vagrantfile中添加以下代码块,然后执行vagrant reload

即可
Vagrant.configure("2") do |config|
  config.vm.network "public_network"
end

您应该可以使用vagrant sshifconfig / ip addr show来获取IP地址。

答案 1 :(得分:2)

如果您不想像我一样使用public_network,那么您应该使用private_network执行以下操作:

  1. 从项目根目录中打开Vagrantfile
  2. 搜索config.vm.network
  3. 添加此行config.vm.network "private_network", ip: "192.168.33.10"。请记住,这不是您的基本机器的IP,它是一个虚拟盒IP地址,您的机器IP应该是不同的。您可以说它是假的IP地址,因此请将其更改为192.168.30.20之类的其他内容。
  4. 使用vagrant reload重新加载您的流浪者。
  5. 现在转到你的另一个虚拟客人,Windows Guest 2。我的基础是Linux Mint Vagrant框位于Ubuntu Guest 1。以管理员身份打开C:\Windows\System32\drivers\etc\hosts文件并在其中执行上述IP条目,例如192.168.33.10 local.youralias.com。然后保存文件,之后您现在可以在http://local.youralias.com/
  6. 浏览网站
  7. 如果您的访客2也是Linux,只需编辑此文件sudo vi /etc/hosts,并在其顶部添加此行192.168.33.10 local.youralias.com。现在保存并退出并浏览URL:)
  8. 享受!快乐的编码。

答案 2 :(得分:0)

添加到已接受的答案,您实际上可以设置IP并指定要使用的网络接口。

我在linux上通过wifi和静态IP设置: 您可以通过运行ifconfig命令找到您的wifi接口名称。

Vagrant.configure("2") do |config|
    config.vm.network "public_network", :bridge => 'wlp8s0', ip: "192.168.1.199"
end

答案 3 :(得分:0)

老问题,新答案:[免责声明:我不是流浪专家]

两种解决方案都可行,但解决方案采用流浪的思维方式。您的guest虚拟机中的某些组件(rinetd?)应该将对未知端口的任何请求转发给主机。然后,可以从主机将请求映射(通过vagrant端口转发)到另一个guest虚拟机中运行的服务。

所以,要恢复:

1.in guest-1我们做localhost:1234。 Guest-1将检测到此端口不可用并转发给主机 2.主持人将检查流浪汉端口转发并转发给guest-2 3.在guest-2中我们有一些很好的服务,听1234后 完成了。

答案 4 :(得分:0)

这可能有很多原因。就我而言,我使用的是无聊的浅顶软呢帽。 我尝试过:

  • 首先使用我连接到仅主机适配器的private_network并启动httpd服务以测试来宾与主机之间的连接

    config.vm.network "private_network", type: "dhcp", name: "vboxnet2"
    config.vm.network "forwarded_port", guest:80, host:7070
    

但是我无法从主机ping我的来宾计算机,并且无法通过telnet打开httpd服务

  • 第二次使用public_network并启动httpd服务以测试连接性

    config.vm.network "public_network", bridge: "en0: Wi-Fi (AirPort)", use_dhcp_assigned_default_route: true
    

我可以从主机ping我的客人,但是无法通过telnet httpd服务。

对于这两个用例,问题在于fedora来宾主机上的端口80被防火墙阻止了。这是解决此问题并使privat_network和public_ntwork都正常工作的原因:

   firewall-cmd --permanent --add-port 80/tcp  #open the port permanently
   firewall-cmd --zone=public --permanent --add-service=http 
   firewall-cmd --list-port  # list to check if the port was opened   
   systemctl stop firewalld   # stop and open the firewall service
   systemctl start firewalld