I have a bridge created using libvirt and two VMs. I can ping both VMs using ipv4. However, when pinging using ipv6 addresses, it does not work. I can see the neighbor solicitation leaving VM1 and reaching VM2. Then, I can see VM2 replying with a neighbor advertisement. However, the bridge "eats" that packet because I no longer see it in the VM1 link.
tcpdump on the link of VM1:
16:25:57.230617 IP6 2001:db8:42:2::2 > ff02::1:ff00:1: ICMP6, neighbor solicitation, who has 2001:db8:42:2::1, length 32
16:25:58.250591 IP6 2001:db8:42:2::2 > ff02::1:ff00:1: ICMP6, neighbor solicitation, who has 2001:db8:42:2::1, length 32
16:25:59.274597 IP6 2001:db8:42:2::2 > ff02::1:ff00:1: ICMP6, neighbor solicitation, who has 2001:db8:42:2::1, length 32
tcpdump on the link of VM2:
16:26:07.466659 IP6 2001:db8:42:2::2 > ff02::1:ff00:1: ICMP6, neighbor solicitation, who has 2001:db8:42:2::1, length 32
16:26:07.466859 IP6 2001:db8:42:2::1 > 2001:db8:42:2::2: ICMP6, neighbor advertisement, tgt is 2001:db8:42:2::1, length 32
16:26:08.490685 IP6 2001:db8:42:2::2 > ff02::1:ff00:1: ICMP6, neighbor solicitation, who has 2001:db8:42:2::1, length 32
16:26:08.490914 IP6 2001:db8:42:2::1 > 2001:db8:42:2::2: ICMP6, neighbor advertisement, tgt is 2001:db8:42:2::1, length 32
This is my bridge:
bridge name bridge id STP enabled interfaces
virbr0 8000.5254001323d4 no virbr0-nic
vnet0
vnet1
Note that I have followed this link https://askubuntu.com/a/491752 and configured:
sysctl net.ipv6.conf.virbr0.disable_ipv6=0
sysctl net.ipv6.conf.virbr0.autoconf=1
sysctl net.ipv6.conf.virbr0.accept_ra=1
sysctl net.ipv6.conf.virbr0.accept_ra_defrtr=1
But still, the bridge is not forwarding the neighbor advertisement, only the solicitation