私は次の状況にあります:FreeBSD9.1マシンをgif0
インターフェース上のハートビートSixXSトンネルのエンドポイントとして設定しました。これまでのところ機能しており、IPv6経由でping6を実行できます。
LANに接続されている割り当てられたIPv6サブネットから静的IPv6を集約したインターフェイスである別のインターフェイスlagg0
に割り当てました。ここで、rtadvd
デーモンを使用してこのネットワークプレフィックスをLANにアドバタイズしたいと思います。
これはその/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 :: rangeのデフォルトルートがありますが、完全に機能します。 tcpdump
は、グローバルIPv6アドレスからfec0アドレスに送信するクライアントを示します。
6to4を実行したいこれを読んでいる人にとって、上記の「内部」アドレスは192.168.0.1用であり、インターネット上でルーティングすることはできません。外部IPv4アドレスに基づいて独自の内部IPv6アドレスを計算する必要があります。