win7 und win10 ipv6 multicast problem – neighbor table

Win10 als VM innerhalb KVM-Umgebung – Netzwerktyp ist macvtap¹.

Terminologie:
Virtuelle Maschine (VM) = GAST
Virtualisierungsumgebung = HOST

Gast bekommt problemlos IPv4 und IPv6 vom Router.
Ping zu externer Seite (google.de) geht mit v4 – geht nicht mit v6.

Geht nicht mit v6, weil die Adressenauflösung bei v6 nicht mehr mit ARP per Broadcast erfolgt, sondern per Multicast und dem NDP². Hierzu ist jeder Host in einer passenden Multicast-Gruppe und wartet auf Anfragen. In meinem Fall kommen die Anfragen am physikalischen Interface vom Host an. Im Gast sehe ich jedoch mit tcpdump keine Anfrage.

Anfrage meint: 14:12:37.188529 IP6 fe80::12fe:edff:fee6:cfa > ff02::1:ff4e:14eb: ICMP6, neighbor solicitation, who has 2a01:x:y:z, length 32

Dies funktioniert problemlos mit allen meinen Linux-Gästen.

Schalte ich im HOST den promiscious Mode für das macvtap0 Interface ein, klappts auch mit Win10. Warum ist das nötig?

UPDATE: 14.04.2015

Der KVM HOST ist selbst Teil der adressierten Multicast-Gruppe des primären!! IPV6-Adapters des GAST:

root@s1:/home/sb# netstat -g | grep macvtap0
macvtap0 1 all-systems.mcast.net
macvtap0 1 ff02::1:ff8e:b9eb
macvtap0 1 ip6-allnodes
macvtap0 1 ff01::1

Bei Windows ist jedoch die Privacy-Extension eingeschalten und somit hat jeder Adapter eine temporäre IPv6-Adresse. von dieser ausgehender Verkehr kann der KVM HOST natürlich nicht zuordnen.
Also entweder weiterhin Promiscious-Mode einschalten oder die Privacy-Extensions in Windows abschalten mit

netsh interface ipv6 set privacy state=disabled

Zusätzlich ist es noch nötig, die Default-Einstellung von Windows zu deaktivieren, dass das Netzwerk-Interface eine zufällig ausgewürfelte Adresse bekommt mit:

netsh interface ipv6 set global randomizeidentifiers=disabled

¹ http://virt.kernelnewbies.org/MacVTap
² http://de.wikipedia.org/wiki/Neighbor_Discovery_Protocol

Weitere Quelle:

http://www.heise.de/netze/artikel/IPv6-Privacy-Extensions-einschalten-1204783.html?artikelseite=2