Reputation: 5335
The scenario is that my dev environment is on a Vagrant box on my laptop (host) and I would like to do browser testing in a vitualbox vm, so I need to see one vm from another.
The vagrant box's port is :8080 which is forwarded to the host on the same port :8080. So I can see the server from the host at localhost:8080
Which address should I be using for the browser testing vm?
The testing vm's default gateway? The vagrant vm's ip? The host's virtual network ip?
And should I be using a NAT or host only adapter on the browser testing vm?
That makes for a lot of combinations, all of which I believe I have tried. What else do I need to understand here?
Upvotes: 15
Views: 12255
Reputation: 2787
In case you don't want to go with public_network
just like me then you should do the steps below using private_network
:
Vagrantfile
from your project rootconfig.vm.network
config.vm.network "private_network", ip: "192.168.33.10"
. Remember this is not the IP of your base machine it's a virtual-box IP address and your machine IP should be different. You can say it's a fake IP address so change it to anything else like 192.168.30.20
.vagrant reload
.Windows Guest 2
. My base is Linux Mint
Vagrant box is on Ubuntu Guest 1
. Open C:\Windows\System32\drivers\etc\hosts
file as admin and do the above IP's entry in there like 192.168.33.10 local.youralias.com
. And save the file, after that you can now browse the site now at http://local.youralias.com/.sudo vi /etc/hosts
, and add this line at top of it 192.168.33.10 local.youralias.com
. Now save and exit and browse the URL :)Enjoy! Happy coding.
Upvotes: 4
Reputation: 4032
This may have many source cause. In my case, I use vagrant fedora boxe. I tried:
First using the private_network that I attached to a host only adapter and launched httpd service to test the connection between guest and host
config.vm.network "private_network", type: "dhcp", name: "vboxnet2"
config.vm.network "forwarded_port", guest:80, host:7070
but I was not able to ping my guest machine from the host and could no telnet the httpd service opened
Second using public_network and launched httpd service to test connectivity
config.vm.network "public_network", bridge: "en0: Wi-Fi (AirPort)", use_dhcp_assigned_default_route: true
I could ping my guest from my host but I could not telnet the httpd service.
For this two use case, the issue was that the port 80 on the fedora guest host was blocked by the firewall. Here is what fixed the issue and get all working for both privat_network and 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
Upvotes: 1
Reputation: 117
Old question, new answer: [disclaimer: i am not a vagrant expert]
both solutions might work but the solution in the "vagrant way of thinking" is that some component in your guest (rinetd?) should forward any requests to unknown ports to the host. From the host the request could then be mapped (via vagrant port forwarding) to a services that is running in the other guest.
So, to resume:
1.in guest-1 we do localhost:1234. Guest-1 will detect that this port is not available and forward to host 2. the host will check the vagrant port forwarding and forward to guest-2 3. in guest-2 we have some nice service listening to post 1234 4. done.
Upvotes: 0
Reputation: 51
Adding to accepted answer, you can actually set IP and specify which network interface to use.
My setup on linux box via wifi and static IP:
You can find your wifi interface name by running ifconfig
command.
Vagrant.configure("2") do |config|
config.vm.network "public_network", :bridge => 'wlp8s0', ip: "192.168.1.199"
end
Upvotes: 1
Reputation: 13920
In your use case, you should be using Bridged networking (Public Network in Vagrant). If the VMs reside on the same host, you can even use internal (Private Network in Vagrant).
If using Public Network, the VM's 2nd NIC will be able to obtain an IP address from the DHCP server in your network (e.g. your home router).
Simply add the following code block in your Vagrantfile
and do a vagrant reload
Vagrant.configure("2") do |config|
config.vm.network "public_network"
end
You should be able to get the IP address by using vagrant ssh
and ifconfig
/ ip addr show
.
Upvotes: 16