Unable to connect to Vagrant private network from host

77,473

Solution 1

Based on the output provided, the box has 2 network interfaces, 1 is the default NAT and the other private - ask you said.

The reason why you are not able to access the web site hosted within the VM thru the private interface: it could be that host eth0 or wlan0 IP address is not in the same network as the private interface -> 192.168.50.4/24 and there is no route.

To access the the site hosted by the web server within the guest, you have the following options:

1. NAT port forwarding

Forward the web port, e.g. 80 to host's 8080 (you can't use 80 because it is a privileged port on *NIX). Add the following

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

NOTE: auto_correct will resolve port conflicts if the port on host is already in use.

DO a vagrant reload and you'll be able to access the site via http://localhost:8080/

2. Public Network (VirtualBox Bridged networking)

Add a public network interface

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

Get the IP of VM after it is up and running, port forwarding does NOT apply to bridged networking. So you'll be accessing the site by using http://IP_ADDR, if within the VM it binds to 80, otherwise specify the port.

Solution 2

Your interface is down

I had the same issue. It was my vboxnet0 interface who was down. Within the listing of ip addr you have <BROADCAST,MULTICAST> for your interface but it should be <BROADCAST,MULTICAST,UP,LOWER_UP>.

That's mean you interface is down.

You can confirm with sudo ifconfig. The interface will not be shown but if you add -a you will see it : sudo ifconfig -a.

how to bring it up

So to bring it up you can do :

sudo ifconfig vbox

OR

sudo ip link set vboxnet0 up

Both works.

Solution 3

Alternatively, you could use manual port forwarding via SSH (SSH tunneling):

ssh -L 80:127.0.0.1:80 [email protected] -p 2222

That binds host port 80 to VM port 80 via your SSH session to the VM.

Solution 4

I had a similar issue on my Mac. VirtualBox uses host only for private networks. To use as an internal network I had to add this to the private network configuration:

"virtualbox__intnet: true"

Solution 5

I ended up getting the private network to work as well by deleting it within Virtual Box. When I recreated it again with vagrant up, the ip config became:

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
Share:
77,473
laertiades
Author by

laertiades

I'm pursuing jazz guitar, web development, and Greek literature.

Updated on October 10, 2020

Comments

  • laertiades
    laertiades over 3 years

    I have a vagrant virtual box up and running. So far I have been unable to connect to the web server. here is the start up:

    [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
    

    on my host console, ip addr show yields:

    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
    

    on the guest it yields:

    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
    

    For now, all I want to do is access the web server on the virtual machine, whatever way works. I have tried a variety of things, just shooting in the dark. I would be happy to provide any specific info. Any help or suggestions would be greatly appreciated

  • laertiades
    laertiades about 10 years
    Thanks Terry, both of the options you mentioned worked.
  • eddiemoya
    eddiemoya over 9 years
    I've been struggling for a while on this. The auto_correct did the trick. Thanks!
  • Rick
    Rick over 7 years
    I tried the first solution and it solved my problem. Thanks!
  • Elijah Lynn
    Elijah Lynn about 7 years
    This needs more specific steps to be useful.
  • Daniel Rhodes
    Daniel Rhodes about 7 years
    For me on openSUSE Tumbleweed the package to install is net-tools-deprecated. This has solved the problem for me. Thanks!
  • John
    John over 6 years
    Thanks - this was exactly the problem I was having installing vagrant on a new machine (Linux Mint 18.1). I got the interface up using sudo ip link set vboxnet0 up as above. I've never had this problem before and I'd like to know why it happened. I had trouble with some missing Gems when running Vagrant up which took a while to resolve and wonder if this might have been a cause?
  • Mat'arangéÇa
    Mat'arangéÇa over 6 years
    Hard to know. For my part i think i upgraded virtualbox from 5.0 to 5.1 but i noticed the bug many days after. It could be kernel upgrade too. I'm also on LM18.
  • John
    John over 6 years
    I think it was a bug in Virtual Box 5.1.24 - I upgraded to 5.1.26 and it appears to have fixed the issue (but I haven't restarted my laptop or vagrant since then so can't confirm) virtualbox.org/wiki/Changelog#v26 Linux hosts: properly bring up host-only network interfaces with iproute (5.1.24 regression; bug #16911)
  • Ricardo Zanini
    Ricardo Zanini over 6 years
    thanks! using libvirt here with CentOS 7. Worked for me. Every time I create a new machine I had to restart the network service. In CentOs just do sudo /etc/init.d/network restart
  • Sion
    Sion almost 6 years
    some clarification on where you made this change would help
  • efeder
    efeder almost 5 years
    I did the equivalent in parallels. Opened Parallels Desktop -> Preferences -> Network Tab, then deleted the vagrant-vnet0 entry. After doing a vagrant reload, the correct interface was added to the host's ipconfig.
  • Thai Nguyen Hung
    Thai Nguyen Hung over 4 years
    you save my life <3
  • TJ Zimmerman
    TJ Zimmerman over 3 years
    Thank you! This is finally the answer I've been looking for. Some clarification on how to use this is that you add an entry for a private network to your Vagrantfile. Such as: config.vm.network "private_network", virtualbox__intnet: true More info here: vagrantup.com/docs/providers/virtualbox/…