ipv6 的路由器广告正在广告链路本地地址

ipv6 的路由器广告正在广告链路本地地址

我有以下情况:我将一台 FreeBSD 9.1 机器配置为接口上心跳 SixXS 隧道的端点gif0。到目前为止,它运行正常,我可以通过 IPv6 ping6。

我为另一个接口lagg0(聚合接口)分配了静态 IPv6,该 IPv6 位于已分配的 IPv6 子网之外,并连接到 LAN。现在我想使用rtadvd守护进程将此网络前缀通告到我的 LAN。

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

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

xxxx:yyyy:zzzz:aaaa::/64网络前缀。当我现在将客户端添加到网络时,它们会采用网络前缀并生成其自动配置和临时地址。效果很好。

然而他们缺少的是正确的 IPv6 默认路由。在路由表中,IPv6 的默认路由是fe80::路由器的链路本地地址。

现在没有数据包被路由到互联网。如果我手动将默认路由添加到主机,它就可以正常工作。

我的问题

我认为路由器通告应该在客户端上配置正确的默认路由。我是不是漏掉了什么?为什么它会通告其链路本地地址而不是正确的地址?

答案1

链接本地地址应该可以正常工作,并且确实是使用的地址rtadvd

我使用的是 6to4,但配置基本相同。就我而言,我所做的就是:

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

这只是创建连接,您的隧道应该具有相同的用途。

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

此时可以ping6 ipv6.google.com通过我的路由器进行操作。

sysctl net.inet6.ip6.forwarding=1

现在,即使使用链接本地地址,路由也已启用,如果我手动配置客户端以使用路由器作为其 DG IPv6 的工作方式。但我们希望实现某种程度的自动配置...因此/etc/rtadvd.conf包含:

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

剩下唯一要做的事情就是将配置添加到我的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:: 范围的默认路由,但它工作正常。Atcpdump显示客户端从其全局 IPv6 地址发送到 fec0 地址。

对于任何想要进行 6to4 的读者来说,上述“内部”地址适用于 192.168.0.1,该地址在 Internet 上不可路由。您需要根据外部 IPv4 地址计算自己的内部 IPv6 地址。

相关内容