我正在设置一些将使用IPv6运行虚拟机的服务器。 networking拓扑是这样的, 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
我试图避免使用networking的默认网关将数据包从服务器中的虚拟机路由到另一台服务器中的数据包,因为有了许多主机,它将成为瓶颈。
然后这个想法是让每台服务器通告一条到自己的虚拟机networking的路由到其他服务器。 所以在上面的例子中,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 { }; };
这是server2的:
interface eth0 { AdvSendAdvert on; prefix 2001:db8:fedc:cdef::/64 { }; route 2001:db8:fedc:cdef::/64 { }; };
如果我在另一台服务器上运行“rdisc6 eth0”,但是由于某种原因,路由没有被添加到路由表中,我可以看到从一台服务器收到这个信息。
我在这里错过了什么?
这个configuration不能和radvd一起工作,而我的尝试来自于对路由器广告目的的误解。 这个协议是为了主机自动configuration,而不是路由器之间的路由传播。
用Quagga和启用了IPv6的路由协议替代radvd解决了这个问题。
在这种情况下,路由节不需要,因为通过广告前缀,系统应该自动configuration服务器的链接本地地址[1,2],因为它是提交路由通告的服务器。 有可能为同一个子网添加路由节与路由添加相冲突。