Thanks for the suggestions, although I was hoping to understand the underlying reason this breaks sometimes, rather than just work-around the issue.
So I did a bit more digging on this, and think i have uncovered a potential cause (and a possible idea on a proper solution).
What I noticed that accompanied this issue is on my router a kernel-messages such as:
Thu Sep 5 11:31:49 2024 kern.info kernel: [57500.710792] IPv6: br-lan.2220: IPv6 duplicate address 2xxx:yyyy:zzzz:2220:: used by 52:54:xx:yy:zz:c6 detected!
At this point, since the kernel message happens fairly regularly (every ~10 minutes), i thought i'll just wait and do a tcpdump to see what's happening at the network level:
11:31:49.668555 60:38:xx:yy:zz:10 > 33:33:ff:00:00:00, ethertype IPv6 (0x86dd), length 86: :: > ff02::1:ff00:0: ICMP6, neighbor solicitation, who has 2xxx:yyyy:zzzz:2220::, length 32
11:31:49.769601 52:54:xx:yy:zz:c6 > 33:33:00:00:00:01, ethertype IPv6 (0x86dd), length 86: fe80::a8b4:7a51:21a4:a9ba > ff02::1: ICMP6, neighbor advertisement, tgt is 2xxx:yyyy:zzzz:2220::, length 32
Thu Sep 5 11:31:49 2024 kern.info kernel: [57500.710792] IPv6: br-lan.2220: IPv6 duplicate address 2xxx:yyyy:zzzz:2220:: used by 52:54:xx:yy:zz:c6 detected!
The IPv6 address referenced is my vlan-interface on br-lan for vlan 2220.. It looks like my router is checking if it's in use by asking who has it, expecting no response, but instead for some reason, another system on the network is responding advertising itself strangely. The culprit mac address is from a kvm virtual-machine i have on my NAS on the same network. It happens to be this is the same VLAN that i am not getting an IPv6 assignment on, so I thought this is probably not just a coincidence and could be the cause?
This VM is for my homeassistant VM i recently set up (something i've been trying to play with but so far haven't gotten much done with it), so when I shut this VM off, IPv6 assignments start to work.
An IP conflict, I hear you say.. So of course before I shut it down, I logged into the VM and checked all address assignments. No such address appearing there, so i am not sure why this VM is attempting to use this address? Back on the router, I checked my /etc/config/dhcp
and the config host
section for this mac address, this host's entry has option hostid '00000011'
(and indeed its IPv6 address its getting is 2xxx:yyyy:zzzz:2220::11 (which is probably the last IPv6 addr assignement before the rest of the lan stops getting IPv6 because this issue manifests).
I did some researching, and came across this post on a somewhat obscure cause that i don't fully understand why things would be configued this way.
Virtualization proxmox on which the virtual machine with RouterOS has been enabled has IGMP Snnoping turned on by default, which cut these packages.
The solution to disable IGMP Snnoping on a specific bridge is:
echo 1 > /sys/devices/virtual/net/bridge/bridge/multicast_querier
echo 0 > /sys/devices/virtual/net/bridge/bridge/multicast_snooping
Where bridge is name of bridge is the name of the bridge that we use to communicate with the virtual machine.
I have no idea why my bridge would be configured with snooping, but as per this guidance, I tweaked my (CentOS, not Proxmox) hypervisor host (what runs the VM)'s bridge settings via sysctl, and rebooted the VM and it seems to be resolved now, no more conflict.
I'll post if this breaks again, but this may have been the cause of IPv6 assignments stopping.