本地网络中的多个 IPv6 路由器

And*_*dre 3 routing ipv6 radvd

我正在设置一些将使用 IPv6 运行虚拟机的服务器。网络拓扑是这样的,其中br0接口是虚拟的:

             2001:db8:fedc:aaaa::/64
   ---+----------------------------------+---
      |                                  | 
      | eth0: 2001:db8:fedc:aaaa::1      | eth0: 2001:db8:fedc:aaaa::2
 +----+----+                        +----+----+
 | server1 |                        | server2 | 
 +----+----+                        +----+----+
      | br0: 2001:db8:fedc:abcd::1       | br0: 2001:db8:fedc:cdef::1
      |                                  | 
      | VM network 1:                    | VM network 2:
      | 2001:db8:fedc:abcd::/64          | 2001:db8:fedc:cdef::/64
 +----+----+                        +----+----+
 |    |    |                        |    |    | 
vm1  vm2  vm3                      vm4  vm5  vm6
Run Code Online (Sandbox Code Playgroud)

我试图避免使用网络的默认网关将数据包从服务器中的虚拟机路由到另一台服务器中的虚拟机,因为对于许多主机,它会成为瓶颈。

然后的想法是让每个服务器向其他服务器通告一条到其自己的 VM 网络的路由。所以在上面的例子中,server1 会通告一条到 2001:db8:fedc:abcd::/64 的路由,server2 会通告一条到 2001:db8:fedc:cdef::/64 的路由。

我在 server1 的 radvd.conf 中有这个:

interface eth0 {
  AdvSendAdvert on;
  prefix 2001:db8:fedc:abcd::/64 { };
  route  2001:db8:fedc:abcd::/64 { };
};
Run Code Online (Sandbox Code Playgroud)

这是 server2 的:

interface eth0 {
  AdvSendAdvert on;
  prefix 2001:db8:fedc:cdef::/64 { };
  route  2001:db8:fedc:cdef::/64 { };
};
Run Code Online (Sandbox Code Playgroud)

如果我在另一台服务器上运行“rdisc6 eth0”,我可以看到从其中一台服务器收到此信息,但由于某种原因,该路由没有添加到其路由表中。

我在这里缺少什么?

And*_*dre 5

此配置不适用于 radvd,我的尝试源于对路由器广告目的的误解。该协议用于主机自动配置,而不用于路由器之间的路由传播。

用 Quagga 和支持 IPv6 的路由协议替换 radvd 解决了这个问题。