I had to do a snap restart lxd
a couple of times to get things back to what looked like a sane state. The first restart took a very long time (4-5 mins) and came back with lxdbr0
not having a inet6 fd42:c8f3:56ae:8db::1/64 scope global
assignment at all. Odd…
After the second snap restart:
anderson@anderson-ryzen9:~$ ip addr show lxdbr0
30: lxdbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 00:16:3e:dc:42:47 brd ff:ff:ff:ff:ff:ff
inet 10.11.12.1/24 scope global lxdbr0
valid_lft forever preferred_lft forever
inet6 fd42:c8f3:56ae:8db::1/64 scope global
valid_lft forever preferred_lft forever
inet6 fe80::216:3eff:fedc:4247/64 scope link
valid_lft forever preferred_lft forever
Looks ok, and then after the first RA was sent:
anderson@anderson-ryzen9:~$ ip addr show lxdbr0
30: lxdbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 00:16:3e:dc:42:47 brd ff:ff:ff:ff:ff:ff
inet 10.11.12.1/24 scope global lxdbr0
valid_lft forever preferred_lft forever
inet6 fd42:c8f3:56ae:8db:216:3eff:fedc:4247/64 scope global dynamic mngtmpaddr noprefixroute
valid_lft 3389sec preferred_lft 3389sec
inet6 fd42:c8f3:56ae:8db::1/64 scope global
valid_lft forever preferred_lft forever
inet6 fe80::216:3eff:fedc:4247/64 scope link
valid_lft forever preferred_lft forever
Back to having a dynamic assignment on lxdbr0
:
inet6 fd42:c8f3:56ae:8db:216:3eff:fedc:4247/64
The container did refresh its IPv6 address back to 3600sec on the first RA, but it did not on subsequent ones.
After the second RA didn’t do anything I reapplied:
lxc network set lxdbr0 raw.dnsmasq="ra-param=lxdbr0,10"
And everything fixed itself with all lifetimes on host and container immediately starting at 3600sec and being refreshed often.
Then I stopped build-armbian
which was the only container running and lxdbr0
lost both the IPv4 and IPv6 addresses:
anderson@anderson-ryzen9:~$ ip addr show lxdbr0
30: lxdbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether 00:16:3e:dc:42:47 brd ff:ff:ff:ff:ff:ff
inet6 fe80::216:3eff:fedc:4247/64 scope link
valid_lft forever preferred_lft forever
If I start build-armbian
again I see the following on the host and container:
anderson@anderson-ryzen9:~$ ip addr show lxdbr0
30: lxdbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 00:16:3e:dc:42:47 brd ff:ff:ff:ff:ff:ff
inet 10.11.12.1/24 brd 10.11.12.255 scope global lxdbr0
valid_lft forever preferred_lft forever
inet6 fe80::216:3eff:fedc:4247/64 scope link
valid_lft forever preferred_lft forever
anderson@build-armbian:~$ ip addr show eth0
37: eth0@if38: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 00:16:3e:fa:f9:5e brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 10.11.12.199/24 brd 10.11.12.255 scope global dynamic eth0
valid_lft 3560sec preferred_lft 3560sec
inet6 fd42:c8f3:56ae:8db:216:3eff:fefa:f95e/64 scope global deprecated dynamic mngtmpaddr noprefixroute
valid_lft 3189sec preferred_lft 0sec
inet6 fe80::216:3eff:fefa:f95e/64 scope link
valid_lft forever preferred_lft forever
Multiple start/stop cycles on build-armbian
doesn’t fix it once the interfaces get in the preferred_lft 0sec
/ deprecated
state, but they do continue to work due to, I presume, the valid_lft
being non-zero:
anderson@anderson-ryzen9:~$ ping6 fd42:c8f3:56ae:8db:216:3eff:fefa:f95e
PING fd42:c8f3:56ae:8db:216:3eff:fefa:f95e(fd42:c8f3:56ae:8db:216:3eff:fefa:f95e) 56 data bytes
64 bytes from fd42:c8f3:56ae:8db:216:3eff:fefa:f95e: icmp_seq=1 ttl=64 time=0.096 ms
64 bytes from fd42:c8f3:56ae:8db:216:3eff:fefa:f95e: icmp_seq=2 ttl=64 time=0.077 ms
So, another sudo snap restart lxd
to try to get things back to sane:
anderson@anderson-ryzen9:~$ lxc stop build-armbian
anderson@anderson-ryzen9:~$ sudo snap restart lxd
Restarted.
anderson@anderson-ryzen9:~$ ip addr show lxdbr0
41: lxdbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether 00:16:3e:dc:42:47 brd ff:ff:ff:ff:ff:ff
inet 10.11.12.1/24 scope global lxdbr0
valid_lft forever preferred_lft forever
inet6 fd42:c8f3:56ae:8db::1/64 scope global
valid_lft forever preferred_lft forever
anderson@anderson-ryzen9:~$ pgrep -fa dnsmasq
4277 dnsmasq --keep-in-foreground --strict-order --bind-interfaces --except-interface=lo --pid-file= --no-ping --interface=lxdbr0 --dhcp-rapid-commit --listen-address=10.11.12.1 --dhcp-no-override --dhcp-authoritative --dhcp-leasefile=/var/snap/lxd/common/lxd/networks/lxdbr0/dnsmasq.leases --dhcp-hostsfile=/var/snap/lxd/common/lxd/networks/lxdbr0/dnsmasq.hosts --dhcp-option-force=119,lxd,corp.terasci.com --dhcp-range 10.11.12.2,10.11.12.254,1h --listen-address=fd42:c8f3:56ae:8db::1 --enable-ra --dhcp-range ::,constructor:lxdbr0,ra-stateless,ra-names -s lxd --interface-name _gateway.lxd,lxdbr0 -S /lxd/ --conf-file=/var/snap/lxd/common/lxd/networks/lxdbr0/dnsmasq.raw -u lxd -g lxd
anderson@anderson-ryzen9:~$ cat /var/snap/lxd/common/lxd/networks/lxdbr0/dnsmasq.raw
ra-param=lxdbr0,60
anderson@anderson-ryzen9:~$ lxc start build-armbian
And back to not refreshing again:
anderson@build-armbian:~$ ip addr show eth0
42: eth0@if43: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 00:16:3e:fa:f9:5e brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 10.11.12.199/24 brd 10.11.12.255 scope global dynamic eth0
valid_lft 3153sec preferred_lft 3153sec
inet6 fd42:c8f3:56ae:8db:216:3eff:fefa:f95e/64 scope global dynamic mngtmpaddr noprefixroute
valid_lft 3156sec preferred_lft 3156sec
inet6 fe80::216:3eff:fefa:f95e/64 scope link
valid_lft forever preferred_lft forever
Applying a different raw.dnsmasq
value fixes it , but only for a single RA:
anderson@anderson-ryzen9:~$ lxc network set lxdbr0 raw.dnsmasq="ra-param=lxdbr0,30"
anderson@anderson-ryzen9:~$ cat /var/snap/lxd/common/lxd/networks/lxdbr0/dnsmasq.raw
ra-param=lxdbr0,30
anderson@build-armbian:~$ ip addr show eth0
42: eth0@if43: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 00:16:3e:fa:f9:5e brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 10.11.12.199/24 brd 10.11.12.255 scope global dynamic eth0
valid_lft 3082sec preferred_lft 3082sec
inet6 fd42:c8f3:56ae:8db:216:3eff:fefa:f95e/64 scope global dynamic mngtmpaddr noprefixroute
valid_lft 3587sec preferred_lft 3587sec
inet6 fe80::216:3eff:fefa:f95e/64 scope link
valid_lft forever preferred_lft forever
// wait a while...
anderson@build-armbian:~$ ip addr show eth0
42: eth0@if43: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 00:16:3e:fa:f9:5e brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 10.11.12.199/24 brd 10.11.12.255 scope global dynamic eth0
valid_lft 2482sec preferred_lft 2482sec
inet6 fd42:c8f3:56ae:8db:216:3eff:fefa:f95e/64 scope global dynamic mngtmpaddr noprefixroute
valid_lft 2987sec preferred_lft 2987sec
inet6 fe80::216:3eff:fefa:f95e/64 scope link
valid_lft forever preferred_lft forever
So, still trying to figure out what action in particular gets it to refresh correctly and consistently.