vm-bhyve on a wifi only laptop with ipv4
========================================
Some notes on how to setup a vm-bhyve guest on a wifi only
laptop that can be accessed from the local network.
bhyve and vm-bhyve
------------------
Bhyve is the hypervisor/virtual machine manager for FreeBSD.
It has been available for several years. It is mature and solid.
vm-bhyve is a management system for FreeBSD bhyve virtual machines.
vm-bhyve eases the use of bhyve.
Wifi only laptop
----------------
The common way to run virtual machines is on a server with one or
more wired connections.
On a Wifi only laptop things become more a challenge. This is
because the network interface (wlan0 on FreeBSD) can only have
one ipv4 address.
My current setup
----------------
The notes below are about an Ubuntu guest.
Local network
............
The local network is the 192.168.2.0/24 network.
In this network are:
* the gateway to the internet
* the local nameserver
* the laptop
virtual network
..............
The vm's are in the 192.168.8.0/24 network.
rc.conf
......
Here are some lines from my /etc/rc.conf.
Maybe they are not all strictly necessary.
gateway_enable="YES"
pf_enable="YES"
vm_enable="YES"
cloned_interfaces="vm-public tun tap"
sysctl.conf
..........
Here are some lines from my /etc/sysctl.conf:
net.link.tap.up_on_open=1
pf.conf
......
Here are some lines from my /etc/pf.conf:
bhyve_net="192.168.8.0/24"
ext_if="wlan0"
nat on $ext_if from $bhyve_net to any -> ($ext_if)
pass in all
pass out all
vm-public
........
vm-public is the general virtual switch that is created
by vm-bhyve. On my X270 laptop, vm-public has a fixed address.
You set this in the system.conf file in the vm-bhyve .config directory:
The laptop uses the default local nameserver in the 192.168.2.0/24
network.
The Ubuntu guest can access the network and install packages.
To be sure the ssh server of the Ubuntu guest doesn't interfere
with the ssh server of the host, I did put it on port 2200.
I am not sure if this really is needed, but it doesn't hurt :)
Other hosts
..........
On another laptop I added a route for 192.168.8.0/24
with the ip-address of the bhyve host (laptop) as gateway.
It works!
---------
I could access with ssh the Ubuntu guest from my other laptop.
It works [tm]