I’m working on a new project, and I am using Multipass on an Ubuntu machine to provision some virtual machines on my local machine using cloudinit files. All good so far!
I wanted to expose one of the services I’ve created to the bridged network (so I can run avahi-daemon
), and did this by running multipass launch -n vm01 --network enp3s0
when, what should I see but: launch failed: The bridging feature is not implemented on this backend.
OH NO!
By chance, I found a random Stack Overflow answer, which said:
Currently only the LXD driver supports the networks command on Linux.
So, let’s make multipass on Ubuntu use LXD! (Be prepared for entering your password a few times!)
Firstly, we need to install LXD. Dead simple:
snap install lxd
Next, we need to tell snap that it’s allowed to connect LXD to multipass:
snap connect multipass:lxd lxd
And lastly, we tell multipass to use lxd:
multipass set local.driver=lxd
Result?
user@host:~$ multipass networks
Name Type Description
enp3s0 ethernet Ethernet device
mpbr0 bridge Network bridge for Multipass
And when I brought my machine up with avahi-daemon installed and configured to broadcast it’s hostname?
user@host:~$ ip -4 addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
37: br-enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
inet 192.0.2.33/24 brd 192.0.2.255 scope global dynamic noprefixroute br-enp3s0
valid_lft 6455sec preferred_lft 6455sec
user@host:~$ multipass list
Name State IPv4 Image
vm01 Running 203.0.113.15 Ubuntu 22.04 LTS
192.0.2.101
user@host:~$ ping vm01.local
PING vm01.local (192.0.2.101) 56(84) bytes of data.
Tada!
Featured image is “Apoptosis Network (alternate)” by “Simon Cockell” on Flickr and is released under a CC-BY license.