无法从主机连接到Vagrant专用网络

时间:2014-05-06 14:41:55

标签: networking virtual-machine virtualbox vagrant

我有一个流浪的虚拟盒子正在运行。到目前为止,我无法连接到Web服务器。这是启动:

[jesse@Athens VVV-1.1]$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
    default: Adapter 2: hostonly
==> default: Forwarding ports...
    default: 22 => 2222 (adapter 1)
==> default: Running 'pre-boot' VM customizations...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
    default: Warning: Connection timeout. Retrying...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
    default: The guest additions on this VM do not match the installed version of
    default: VirtualBox! In most cases this is fine, but in rare cases it can
    default: prevent things such as shared folders from working properly. If you see
    default: shared folder errors, please make sure the guest additions within the
    default: virtual machine match the version of VirtualBox you have installed on
    default: your host and reload your VM.
    default: 
    default: Guest Additions Version: 4.2.0
    default: VirtualBox Version: 4.3
==> default: Setting hostname...
==> default: Configuring and enabling network interfaces...
==> default: Mounting shared folders...
    default: /vagrant => /home/jesse/vagrant/vvvStable/VVV-1.1
    default: /srv/www => /home/jesse/vagrant/vvvStable/VVV-1.1/www
    default: /srv/config => /home/jesse/vagrant/vvvStable/VVV-1.1/config
    default: /srv/database => /home/jesse/vagrant/vvvStable/VVV-1.1/database
    default: /var/lib/mysql => /home/jesse/vagrant/vvvStable/VVV-1.1/database/data
==> default: VM already provisioned. Run `vagrant provision` or use `--provision` to force it
==> default: Checking for host entries

在我的主机控制台上,ip addr show yield:

4: vboxnet0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000                                       
    link/ether 0a:00:27:00:00:00 brd ff:ff:ff:ff:ff:ff                                                                         
5: vboxnet1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000                                      
    link/ether 0a:00:27:00:00:01 brd ff:ff:ff:ff:ff:ff

在客人身上产生:

vagrant@vvv:~$ ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:12:96:98 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0
    inet6 fe80::a00:27ff:fe12:9698/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:2c:d4:3e brd ff:ff:ff:ff:ff:ff
    inet 192.168.50.4/24 brd 192.168.50.255 scope global eth1

现在,我想做的就是访问虚拟机上的Web服务器,无论运行方式如何。我尝试过各种各样的东西,只是在黑暗中拍摄。我很乐意提供任何具体信息。任何帮助或建议将不胜感激

9 个答案:

答案 0 :(得分:42)

根据提供的输出,该框有2个网络接口,1个是默认NAT,另一个是私有 - 请问你说。

您无法通过专用接口访问VM中托管的网站的原因:可能是主机eth0wlan0 IP地址与该网络不在同一网络中私人界面 - &gt; 192.168.50.4/24并且没有路线。

要访问来宾中Web服务器托管的站点,您有以下选择:

1。 NAT端口转发

转发网络端口,例如80到主机8080(你不能使用80,因为它是* NIX上的特权端口)。添加以下

Vagrant.configure("2") do |config|
  config.vm.network "forwarded_port", guest: 80, host: 8080,
    auto_correct: true
end
  

注意:如果主机上的端口已在使用中,auto_correct将解决端口冲突。

做一个vagrant reload,您就可以通过http://localhost:8080/

访问该网站了

2。公共网络(VirtualBox桥接网络)

添加公共网络接口

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

启动并运行虚拟机的IP后,端口转发不适用于桥接网络。因此,您将使用http://IP_ADDR访问该网站,如果在VM中它绑定到80,否则请指定端口。

答案 1 :(得分:16)

仅供将来参考的另一种可能性。

通常,当您使用专用网络创建VM时,Vagrant(Virtualbox?不确定)会在主机的路由表中创建相应的条目。您可以使用

查看这些内容
netstat -rn

我的主机已经进入了这样一种状态:创建虚拟机并没有导致路由表中出现新路由,相应的无法连接。您再次可以使用上面的命令看到 not 出现的路线。

手动创建路由允许我访问VM。例如:

sudo route -nv add -net 10.0.4 -interface vboxnet

(替换相应的网络和界面。)但我不想这样做。

基于this question,我尝试重新启动主机,Vagrant又开始自动创建路由表条目。

不确定问题究竟是什么,但希望这有助于某人。

答案 2 :(得分:6)

您的界面已关闭

我有同样的问题。这是我的vboxnet0界面失败了。在ip addr列表中,您的界面为<BROADCAST,MULTICAST>,但它应为<BROADCAST,MULTICAST,UP,LOWER_UP>

这意味着你的界面已关闭。

您可以使用sudo ifconfig确认。界面将不会显示,但如果您添加-a,您会看到它:sudo ifconfig -a

如何提出

所以要提出来,你可以这样做:

sudo ifconfig vbox

OR

sudo ip link set vboxnet0 up

两者都有效。

答案 3 :(得分:3)

我最终通过在Virtual Box中删除专用网络来使其工作。当我再次使用vagrant重新创建它时,ip配置变为:

vboxnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000
    link/ether 0a:00:27:00:00:00 brd ff:ff:ff:ff:ff:ff
    inet 192.168.50.1/24 brd 192.168.50.255 scope global vboxnet0
       valid_lft forever preferred_lft forever

答案 4 :(得分:3)

或者,您可以通过SSH(SSH隧道)使用手动端口转发:

ssh -L 80:127.0.0.1:80 vagrant@127.0.0.1 -p 2222

通过SSH会话将主机端口80绑定到VM端口80。

答案 5 :(得分:2)

这可能不完全适用,但&#34;私人网络&#34;在标题中把我带到了这里,其他人可能会受益,试图在Mac OS X上运行多个客人框:

我使用&#34; private_network&#34; 并且不做任何端口转发。 I.e.我通过&#34; project1.local&#34;,&#34; project2.local&#34;等主机访问我的虚拟机。

所以,当我尝试启动第二个盒子(LAMP的scotch / box ubuntu)和它拒绝启动时出现错误(摘录)时,我感到很惊讶:

"...The forwarded port to 2222 is already in use on the host machine..."

错误消息的建议解决方案无效。即将此添加到您的Vagrantfile:

config.vm.network :forwarded_port, guest: 22, host: 1234
#Where 1234 would be a different port.

我不确定为什么会发生这种情况,因为我之前运行过多次(但不是scotch / box)。问题是,即使您使用private_network,Vagrant也会使用SSH端口转发。

解决方案是通过将此端口添加到您的Vagrant文​​件来设置特定于SSH的端口:

# Specify SSH config explicitly with unique host port for each box
config.vm.network :forwarded_port,
  guest: 22,
  host: 1234,
  id: "ssh",
  auto_correct: true

注意:auto_correct可能会使非唯一端口#工作,但我还没有测试过。

现在,您可以使用专用网络同时运行多个VM。

(感谢Aaron Aaron和他在这里的发帖:https://groups.google.com/forum/#!topic/vagrant-up/HwqFegoCXOc

答案 6 :(得分:1)

我的Mac上有类似的问题。 VirtualBox仅将主机用于专用网络。要用作内部网络,我必须将其添加到专用网络配置:

"virtualbox__intnet: true"

答案 7 :(得分:1)

与Arch(2017-01-01)有同样的问题。必须安装net-toolssudo pacman -S net-tools

Virtual Box 5.1.12r112440,Vagrant 1.9.1。

答案 8 :(得分:1)

您已为流浪汉机器设置了专用网络

如果该ip不可见,则ssh到您的流浪汉机器并触发此命令

sudo /etc/init.d/networking restart

检查以停止防火墙和iptables