Unable to connect to Vagrant private network from host
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
laertiades
I'm pursuing jazz guitar, web development, and Greek literature.
Updated on October 10, 2020Comments
-
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 about 10 yearsThanks Terry, both of the options you mentioned worked.
-
eddiemoya over 9 yearsI've been struggling for a while on this. The auto_correct did the trick. Thanks!
-
Rick over 7 yearsI tried the first solution and it solved my problem. Thanks!
-
Elijah Lynn about 7 yearsThis needs more specific steps to be useful.
-
Daniel Rhodes about 7 yearsFor me on openSUSE Tumbleweed the package to install is net-tools-deprecated. This has solved the problem for me. Thanks!
-
John over 6 yearsThanks - 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 runningVagrant up
which took a while to resolve and wonder if this might have been a cause? -
Mat'arangéÇa over 6 yearsHard 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 over 6 yearsI 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 over 6 yearsthanks! 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 almost 6 yearssome clarification on where you made this change would help
-
efeder almost 5 yearsI 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 over 4 yearsyou save my life <3
-
TJ Zimmerman over 3 yearsThank 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/…