路由器广告为ipv6广告链路本地地址

我有以下情况:我在gif0接口上configuration了一台FreeBSD 9.1机器作为心跳SixXS隧道的端点。 到目前为止,我可以ping通IPv6。

我分配给另一个接口lagg0 ,这是一个聚合的接口静态IPv6从连接到LAN的分配的IPv6子网中。 现在我想使用rtadvd deamon将这个networking前缀广告给我的局域网。

这是它的/etc/rtadvd.conf文件:

 lagg0:\ :addr="xxxx:yyyy:zzzz:aaaa::":prefixlen#64:tc=ether: 

xxxx:yyyy:zzzz:aaaa::/64是networking前缀。 当我现在添加客户端到networking,他们采取networking前缀,并生成他们的autoconf和临时地址。 这很好。

但是他们缺less的是正确的IPv6默认路由。 在路由表中,IPv6的默认路由是路由器的fe80:: link-local地址。

现在没有数据包被路由到互联网。 如果我手动添加默认路由到它工作的主机。

我的问题

我以为路由器广告应该在客户端上configuration正确的默认路由。 我在这里错过了什么? 为什么它宣传它的链接本地地址,而不是正确的?

链接本地地址应该工作得很好,确实是rtadvd使用的地址。

我正在使用6to4,但它本质上是相同的configuration。 就我而言,我所做的只是:

 ifconfig stf0 create ifconfig stf0 inet6 2002:c0a8:1:ffff::1/16 ifconfig lan0 inet6 2002:c0a8:1::1/64 

这只是build立连接,你的隧道应该切断相同的目的。

 route add -inet6 default 2002:c058:6301:: 

在这一点上ping6 ipv6.google.com工作从我的路由器。

 sysctl net.inet6.ip6.forwarding=1 

现在,即使使用链路本地地址,也可以启用路由,如果手动configuration客户端使用路由器作为他们的DG IPv6工作。 但是我们想要一些自动configuration的级别…所以/etc/rtadvd.conf包含:

 lan0:\ :addr="2002:c0a8:1::":prefixlen=64:tc=ether: 

剩下的唯一的事情就是把configuration添加到我的rc.conf文件中:

 ipv6_gateway_enable="YES" # Route IPv6 Traffic rtadvd_enable="YES" # IPv6 Router Advertisement Daemon rtadvd_interfaces="lan0" cloned_interfaces="stf0" ifconfig_stf0_ipv6="inet6 2002:c0a8:1:ffff::1/16" ipv6_defaultrouter="2002:c058:6301::" # 6to4 Default Router 

客户端确实有一个fec0 :: range的默认路由,但是它完美的工作。 tcpdump显示从其全局IPv6地址发送到fec0地址的客户端。

对于读这个想做6to4的人来说,上面的“内部”地址是192.168.0.1,在Internet上是不可路由的。 您需要根据您的外部IPv4地址计算您自己的内部IPv6地址。