Please can you show ip -6 a
and ip -6 r
on the host?
I suspect that the ISP has assigned a /64 to the host’s external network, but it requires the host to respond to NDP solicitation requests for each address (like ARP with IPv4). This is why adding individual IPs works, but setting up a virtual bridge with all/part of the allocation doesn’t work.
You would likely have the same issues with IPv4, its just that ISPs rarely provide an entire subnet these days due to the shortages.
If that is the case then you have 2 options:
- Use a
routed
type NIC to pass specific IPv6 addresses into the container(s) statically. See How to get LXD containers get IP from the LAN with routed network - Use
bridge
network with the IPv6 allocation and then use ndppd to response to NDP solicitations for that subnet. See Getting universally routable IPv6 Addresses for your Linux Containers on Ubuntu 18.04 with LXD 4.0 on a VPS
Alternatively the “proper” solution is to get your ISP to actually route you an additional IPv6 subnet to an address in your current subnet, and that way you can then directly use that on your LXD bridge without needing to respond to NDP solicitations.