J'ai installé le serveur Ubuntu 14.04 il y a une semaine. Je l'utilise en tant qu'hôte de machine virtuelle (tasksel installé). ce qui signifie que je l’utilise avec kvm + libvirt.
J'ai mis en place le même pont que j'avais en 13.10.
auto p4p1
iface p4p1 inet manual
up ifconfig $IFACE up
down ifconfig $IFACE down
auto br0
iface br0 inet static
address 46.182.xxx.xxx
netmask 255.255.255.240
gateway 46.182.xxx.xxx
dns-nameservers 46.182.xxx.xxx 46.182.xxx.xxx
bridge_ports p4p1
bridge_stp off
bridge_maxwait 0
iface br0 inet6 auto
Contre br0 je connecte mes machines virtuelles avec <source bridge='br0'/>
défini dans libvirt.
Mes machines virtuelles reçoivent les messages Annonce de routeur sans problème. Toutes les machines virtuelles obtiennent des adresses IPv6.
Mon problème est que IPv6 ne fonctionne pas sur le pont. Mais ça marche quand j'active tcpdump contre br0 pour le dépannage. J'ai essayé de configurer l'interface manuellement en mode promiscous mais cela ne le fait pas fonctionner, ifconfig br0 promisc
.
Pourquoi j'ai les adresses IPv4 sur le pont? Je ne sais pas, vieille habitude, ne la remets jamais en question. IPv6 ne fonctionne pas sur l'hôte de la machine virtuelle, mais l'hôte obtient l'adresse IPv6 par l'autorité d'enregistrement, tout comme les machines virtuelles.
Chaque adresse IPv6, même les adresses locales des liaisons, s’abonne automatiquement à un groupe de multidiffusion basé sur ses 24 derniers bits. Si la surveillance multidiffusion est activée, le pont filtre (presque) tout le trafic multidiffusion par défaut. Lorsqu'une adresse IPv6 est affectée à une interface, le système doit informer le réseau que cette interface est intéressée par ce groupe de multidiffusion particulier et doit être exclue par le filtre. Voici une bonne vidéo d’introduction: https://www.youtube.com/watch?v=O1JMdjnn0ao
La surveillance de multidiffusion est là pour éviter de saturer le réseau de paquets de multidiffusion auxquels la plupart des systèmes ne s'intéressent pas. Vous pouvez désactiver la surveillance multidiffusion dans de petits déploiements sans remarquer de différence majeure. Mais cela peut avoir un impact significatif sur les performances des déploiements plus importants.
Vous pouvez désactiver l'espionnage avec:
echo -n 0 > /sys/class/net/<brif>/bridge/multicast_snooping
Si vous souhaitez protéger vos ordinateurs virtuels contre le trafic indésirable et le traitement de paquets inutile, vous pouvez laisser la surveillance activée, mais également activer un interrogateur de multidiffusion sur le réseau. Un interrogateur diffuse périodiquement des paquets de requête et met à jour les filtres de surveillance du trafic sur les commutateurs et les ponts. Il est possible d'activer un interrogateur sur votre système avec:
echo -n 1 > /sys/class/net/<brif>/bridge/multicast_querier
Si vous avez activé la surveillance, vous devez également avoir un interrogateur sur le réseau.
Il n'est pas nécessaire d'activer STP. Il est probablement plus prudent de l'éteindre, à moins que vous ne sachiez que vous reliez des segments créant des trajectoires circulaires. Cela n'a pas d'importance non plus si SLAAC est activé (c'est-à-dire autoconf=1
, accept_ra=1
). L'activation du mode PROMISC sur le pont désactive implicitement la surveillance.
Voici un bon résumé de la modernité défis de la découverte de voisins IPv6 (ND) et de la découverte d'auditeurs multidiffusion (MLD) .
avez-vous activé IPv6 sur l'interface? Si le périphérique de pont est br0, procédez comme suit:
sysctl net.ipv6.conf.br0.disable_ipv6=0
sysctl net.ipv6.conf.br0.autoconf=1
sysctl net.ipv6.conf.br0.accept_ra=1
sysctl net.ipv6.conf.br0.accept_ra_defrtr=1
Le seul problème évident que je vois avec votre configuration est le suivant:
bridge_stp off
Pour diverses raisons STP doit être activé sur les ponts libvirt.
Changez la configuration pour:
bridge_stp on
Vous pouvez également l'activer immédiatement sans redémarrer le réseau:
$ Sudo brctl stp br0 on