Yes and no.
A bridge is just an L2 switch, with MAC address table.
An LXD bridge
network provides a virtual bridge interface (lxdbr0
) for the instances to connect to.
By default LXD creates bridges that are “private” because they only have the local instances connected to them, they are not connected (bridged) to the external network, and thus the instances are not reachable on the external network.
A LXD bridge
network also provides DHCP, IPv6 RA and DNS services to instances connected to the bridge. These services are also not available to the external network. These services are provided by a dnsmasq
process that LXD starts, and configures it to only listen on the managed bridge interface (so as to try and not conflict with any other services running on the LXD host and to not expose the service to the wider network).
It also sets up SNAT firewall rules to allow the instances to make outbound requests to the external network so that they all “hide” behind the LXD host’s IP on the external network. The random private addresses are never seen on the external network.
The L2 managed bridge allows for communication either by IP or MAC address. Each instance gets their own private IP and they generate their own MAC address on the bridge.
However you can create an unmanaged bridge (nothing to do with LXD), which you then fully control and can choose to connect that bridge to an external network. You can then choose to connect instances to that unmanaged bridge (and by extension the external network). In this scenario your instances would depend on any DHCP, IPv6 RA and DNS services provided by the external network.
In such setups the instances will still generate their own MAC address for use on the external network.