场景是我的开发环境在我的笔记本电脑(主机)上的Vagrant盒子上,我想在vitualbox vm中进行浏览器测试,所以我需要从另一个看到一个vm。
流浪者盒的端口是:8080,它被转发到同一端口上的主机:8080。所以我可以在localhost:8080
上看到主机上的服务器我应该使用哪个地址进行浏览器测试vm?
测试vm的默认网关? 流浪者vm的ip? 主机的虚拟网络ip?
我应该在测试vm的浏览器上使用NAT或仅主机适配器吗?
这使得很多组合,我相信我已经尝试过所有组合。我还需要了解其他什么?
答案 0 :(得分:12)
在您的使用案例中,您应该使用桥接网络(Vagrant中的公共网络)。如果VM驻留在同一主机上,您甚至可以使用内部(Vagrant中的专用网络)。
如果使用公共网络,VM的第二个NIC将能够从您网络中的DHCP服务器(例如您的家庭路由器)获取IP地址。
只需在Vagrantfile
中添加以下代码块,然后执行vagrant reload
Vagrant.configure("2") do |config|
config.vm.network "public_network"
end
您应该可以使用vagrant ssh
和ifconfig
/ ip addr show
来获取IP地址。
答案 1 :(得分:2)
如果您不想像我一样使用public_network
,那么您应该使用private_network
执行以下操作:
Vagrantfile
config.vm.network
config.vm.network "private_network", ip: "192.168.33.10"
。请记住,这不是您的基本机器的IP,它是一个虚拟盒IP地址,您的机器IP应该是不同的。您可以说它是假的IP地址,因此请将其更改为192.168.30.20
之类的其他内容。vagrant reload
重新加载您的流浪者。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/。sudo vi /etc/hosts
,并在其顶部添加此行192.168.33.10 local.youralias.com
。现在保存并退出并浏览URL:)享受!快乐的编码。
答案 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