1週間前にUbuntu 14.04サーバーをインストールしました。仮想マシンホスト(taskselがインストールされている)として使用します。つまり、kvm + libvirtで実行しています。
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
Br0に対して、libvirtで定義された<source bridge='br0'/>
で仮想マシンを接続します。
私の仮想マシンは、ルーターアドバタイズメントメッセージを問題なく受け取ります。すべての仮想マシンはIPv6アドレスを取得します。
私の問題は、IPv6がブリッジで機能しないことです。しかし、トラブルシューティングのためにbr0に対してtcpdumpをオンにすると機能します。インターフェイスを手動で無差別モードに設定しようとしましたが、機能しませんifconfig br0 promisc
。
ブリッジにIPv4アドレスがあるのはなぜですか?私は知らない、古い習慣、決してそれを疑わない。 IPv6は仮想マシンホストでは機能しませんが、ホストは仮想マシンと同様にRAによってIPv6アドレスを取得します。
すべてのIPv6アドレスは、リンクローカルのものも含め、最後の24ビットに基づいてマルチキャストグループに自動的にサブスクライブします。マルチキャストスヌーピングが有効になっている場合、ブリッジはデフォルトで(ほぼ)すべてのマルチキャストトラフィックを除外します。 IPv6アドレスがインターフェイスに割り当てられると、システムは、このインターフェイスがその特定のマルチキャストグループに関心があり、フィルタによって除外される必要があることをネットワークに通知する必要があります。以下は入門ビデオです: https://www.youtube.com/watch?v=O1JMdjnn0ao
マルチキャストスヌーピングは、ほとんどのシステムが関心のないマルチキャストパケットでネットワークをフラッディングするのを防ぐためにあります。大きな違いに気付くことなく、小規模な展開でマルチキャストスヌーピングを無効にできます。しかし、これは大規模な展開でパフォーマンスに大きな影響を与える可能性があります。
スヌーピングは次の方法で無効にできます。
echo -n 0 > /sys/class/net/<brif>/bridge/multicast_snooping
不要なトラフィックや不要なパケット処理からVMを保護する場合は、スヌーピングを有効にしたまま、ネットワークでマルチキャストクエリアを有効にすることもできます。クエリアはクエリパケットを定期的にブロードキャストし、スイッチとブリッジのスヌーピングフィルターを更新します。以下を使用して、システムでクエリアを有効にすることができます。
echo -n 1 > /sys/class/net/<brif>/bridge/multicast_querier
スヌーピングを有効にしている場合は、ネットワーク上にクエリアも必要です。
STPを有効にする必要はありません。循環パスにつながるセグメントをブリッジしていることがわかっている場合を除き、おそらくオフにする方が安全です。 SLAACが有効になっている場合も関係ありません(つまり、autoconf=1
、accept_ra=1
)。ブリッジでPROMISCモードを有効にすると、スヌーピングが暗黙的に無効になります。
ここに、最新の IPv6近隣探索(ND)およびマルチキャストリスナー探索(MLD)の課題 の素敵な要約があります。
インターフェイスでIPv6を有効にしましたか?ブリッジデバイスがbr0の場合、これを実行します。
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
あなたの構成で私が見る唯一の明白な問題は:
bridge_stp off
さまざまな理由で STPを有効にする必要があります libvirtブリッジで。
構成を次のように変更します。
bridge_stp on
ネットワークを再起動せずにすぐにアクティブ化することもできます。
$ Sudo brctl stp br0 on