Routing

ipv6 的路由器廣告是廣告連結本地地址

  • February 9, 2013

我有以下情況:我將 FreeBSD 9.1 機器配置為gif0介面上心跳 SixXS 隧道的端點。到目前為止它工作正常,我可以通過 IPv6 ping6。

lagg0從連接到 LAN 的分配的 IPv6 子網中為另一個介面分配了一個靜態 IPv6,該介面是一個聚合介面。現在我想使用守護程序將此網路前綴廣告到我的 LAN rtadvd

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

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

xxxx:yyyy:zzzz:aaaa::/64網路前綴。當我現在將客戶端添加到網路時,它們會使用網路前綴並生成它們的 autoconf 和臨時地址。這很好用。

然而,他們缺少的是正確的 IPv6 預設路由。在路由表中,IPv6 的預設路由是fe80::路由器的本地鏈路地址。

現在沒有數據包被路由到網際網路。如果我手動將預設路由添加到主機,它就可以工作。

我的問題

我認為路由器廣告應該在客戶端上配置正確的預設路由。我在這裡錯過了什麼嗎?為什麼它宣傳它的本地連結地址而不是正確的?

連結本地地址應該可以正常工作,並且確實是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 地址。

引用自:https://serverfault.com/questions/477041