ルータ広告で楽しよう
IPv6には、ステートレスに自動設定を行える手段としてルータ広告を使った自動設定があります。
これは、IPv6のマルチキャストを用いて実装されていて、以下の手順で自動設定が行われます。
- すべてのルータ(ff02::2)にルータ要請メッセージを送信する
- 受け取ったルータは、すべてのノード(ff02::1)にルータ広告メッセージを送信する
- メッセージを受け取ったノードは、それを元に自動設定を行う(アドレスはプレフィックス+EUI-64を使うのが一般的)
(https://www.nic.ad.jp/ja/basics/terms/ra.html より)
ところが、ブリッジを経由すると動かない…
タイミングによっては、ブリッジ上の目的のルータがある側のインターフェース上のノードがルータ要請メッセージを送信している場合があるので、その際のすべてのノードに送られるルータ広告メッセージを使って設定されることもあります。
しかし、そういうことがなければ当然ルータ広告メッセージは送られてこないので、設定されなかったり妙に時間がかかってしまったりということがあります。
Linuxのブリッジは不要と思われるマルチキャストを捨ててしまう
Linuxでは、ブリッジ上の目的のルータがない側のインターフェースからルータ要請メッセージを送ったとしても、ブリッジする段階で捨てられてしまうようです。
これを回避するには、以下のコマンドでmulticast snoopingを無効にして無条件にマルチキャストをブリッジするようにするのが良いようです。
# echo 0 > /sys/devices/virtual/net/<インターフェース>/bridge/multicast_snooping
参考ページ
Linux, multicast, bridging and IPv6 troubles (i.e. why my IPv6 connectivity goes missing)