ipv6 的路由器廣告是廣告連結本地地址
我有以下情況:我將 FreeBSD 9.1 機器配置為
gif0
介面上心跳 SixXS 隧道的端點。到目前為止它工作正常,我可以通過 IPv6 ping6。我
lagg0
從連接到 LAN 的分配的 IPv6 子網中為另一個介面分配了一個靜態 IPv6,該介面是一個聚合介面。現在我想使用守護程序將此網路前綴廣告到我的 LANrtadvd
。這是它的
/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:: 範圍的預設路由,但它工作得很好。A
tcpdump
顯示客戶端從其全域 IPv6 地址發送到 fec0 地址。對於閱讀本文並希望執行 6to4 的任何人,上述“內部”地址適用於 192.168.0.1,它在 Internet 上不可路由。您需要根據您的外部 IPv4 地址計算您自己的內部 IPv6 地址。