LXD Networking Bridge - LTS 20.04 host, how to?

I’ve got a box I setup about 8 months ago, and starting to realize I never documented the full end-to-end steps to recreate (not good if I have an issue with the box)

sources :

I was trying at first to start with just a cleaner setup than my first post… but getting stuck. Once I setup the basic bridge.. and modify the yaml file my VM running kubuntu 20.04 loses all internet connectivity.. Should I have run the lxd init and THEN added a bridge for my containers?

my steps so far

sudo apt update
sudo apt upgrade -y
sudo snap install lxd
sudo apt install bridge-utils vim net-tools

lxc network create mybridge

sudo cp /etc/netplan/01-network-manager-all.yaml /etc/netplan/01-network-manager-all.yaml.bak

ifconfig
    enp0s2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.1.108  netmask 255.255.255.0  broadcast 192.168.1.255
            inet6 blah:::blah  prefixlen 64  scopeid 0x20<link>
            ether blah:::blah  txqueuelen 1000  (Ethernet)
            RX packets 12931  bytes 13508096 (13.5 MB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 6488  bytes 1401240 (1.4 MB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
            device memory 0xfa700000-fa71ffff
    mybridge: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
            inet6 blah:::blah  prefixlen 64  scopeid 0x20<link>
            ether blah:::blah  txqueuelen 1000  (Ethernet)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 4  bytes 304 (304.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

my netmanager looks like

network:
  version: 2
  renderer: NetworkManager
  
  ethernets:
    enp0s2:
      dhcp4: no
  bridges:
    mybridge:
     dhcp4: no
    interfaces:
      - enp0s2

I did lxd init and chose all the defaults except I chose to use mybridge instead of LXD’s default provided bridge… was this a mistake?

it feels like I need to re-add my ethernet to my desktop host… which I tried but still the internet is not reachable

Hi. Networking is not my thing, but I am wondering why you have no ip address (with dhcp set to ‘no’) and no gateway listed - it’s no wonder you can’t find the internet if there’s no gateway? I have these entries in my network file (but I use networkd not NetworkManager):

addresses: [insert-ip-here/24]
gateway4: 192.168.1.1

Good luck!

1 Like

thank you,

in my original attempt (which is still up and running) I never entered a gateway.. but you’ve rightly pointed out an error.. I’ve updated that file now to the following

vim /etc/netplan/01-network-manager-all.yaml

# Let NetworkManager manage all devices on this system
network:
version: 2
renderer: NetworkManager

ethernets:
    enp0s2:
        dhcp4: no
    bridges:
        br0:
            dhcp4: yes
            interfaces:
            - enp0s2

this trick was, after that.. run

sudo netplan apply
sudo nmcli conn add type ethernet slave-type bridge con-name bridge-br0 ifname enp0s2 master br0

The second line restores the internet to my host .. not sure why exactly but .. now trying to modify my default LXC profile to use that bridge instead..

devices:
  eth0:
    name: eth0
    nictype: bridged
    parent: br0
    type: nic
  root: 
 .... 

Hopefully I am almost there..! thanks for checking in

Hmmm unfortunately I’ve seemed to have created a bridge which still just grabs a private NAT address under 10.0.1.19/24 CIDR

not my expected 192.168.0.0…

but at least I can reach from the host of the LXD machine now .. and the internet works.. but might need to redo the configuration to get full DHCP working

from my mac hosting the VM

Edit 2: Even after adding some more to the manager.. not getting 192.168.x.x

beeng googling and fiddling… does it help to say I am hosting this linux host within a QEMU VM?? I’ve tried moving things around in the 01-network-manager-all.yaml

it seems I never can get a IP from my router … could my host OS (mac mini) be blocking something here?

Soyou likely need more help than I can give. Acouple of points: LXD will create abridge that uses a virtual lan it controls. There are several ways you can make yourcontainers accessible via your router and/or visible on your lan. A simple one is usign macvlan on lxd. It’s easy (google it), but it has a snag: containers will not be able to talk to the host via this method (it’s a feature I think - but sometimes an inconveneient one). Another way is to create your own bridge and assign that to containers as you need. Here’s mine, conveniently or confusingly called br0:

lxc profile show br0
config: {}
description: “”
devices:
eth0:
nictype: bridged
parent: br0
type: nic
root:
path: /
pool: default
type: disk
name: br0

That’s what I do. So I keep the default br0 bridge as some of my containers do not need lan access (so I keep them isolated by using the lxd bro), but those that do need easy access via the lan, I just assign my new br0 bridge to it using a single comnand:

lxc profile assign container-name br0

restart the container, and it will grab an ip from dhcp - my lan. And in this case, it can be accessed from the lan or even the host (unlike the macvlan method).

Keep going and good luck - you will get there. Lots of postings on here which google will find for you with some patience. :slight_smile:
Andrew

1 Like

I’ve infact created a bridge yes… and it seems to be okay some of the time, all except for the fact it’s not getting IPs from the router… and according to a link there’s a snag with macvlan when you’re hosted inside of a VM (which my linux LXD host is)

but I will try again… maybe I just need to get qemu/kvm host to allow promiscious mode and I will be through… thanks @Andrew_Wilson

can anyone confirm my guess?

I think I will try in the next few weeks to reinstall my base OS from scratch… and on bare metal re-attempt the macvlan bridge when outside of a VM… if it works I will be happy… if not well I at least can confirm that the issue is not my being in a vm …

I can confirm in fact the bare metal box I installed LXD on… never got IP’s from the DHCP router either… I was mistaken in my original assumption…

I am so very sorry for coming back ver late. I just noticed a type on your lxc profile above. You have this:

devices:
eth0:
name: eth0
nictype: bridged
parent: br0
type: nic
root:

(I lose all the indentation in my pasting, sorry, but you have that right so use it again). It should read this:

devices:
eth0:
nictype: bridged
parent: br0
type: nic
root:

So you had an extra line in there. If I am not too late, please try again. and GOOD LUCK!

Andrew

1 Like