IPv6アドレスをVPNでつないだ先のネットワークに gif tunnel で伸ばしているのだが、FreeBSD13になったらこれまでの設定で急に繋がらなくなった。 /etc/rc.conf での設定としてはこんな感じ(だった)。
network_interfaces="gif0" ifconfig_gif3="create tunnel srcIPv4 destIPv4" static_routes="ipv6" route_ipv6="-inet6 default -ifp gif0 ::1" ifconfig_em0_ipv6="IPv6アドレス"
これで gif0 にトンネルができ、
route add -inet6 default -ifp gif0 ::1
で外界と通信できた。がFreeBSD13にしたら来ない。ん?
ping6 -w -I gif0 ff02::1
ping6: illegal option -- w
えええ、なんでえ、man ping6 と。うっ、ないし。 よく見ると ping と統合されて -w オプションなくなっとる。 -y になった? じゃこうか。
ping -6 -y -I gif0 ff02::1
ping6: connect() ssend: Network is unreachable
うげー。分からん。ping(8) の man で ff02::1 検索して発見。 こうでした。
ping -6y ff02::1%gif0
ping: UDP connect: Can't assign requested address
てことで、色々調べた結果 gif にリンクローカルアドレスが ついてないことがわかり、対処としてrc.conf書き換えた。 古い変数がいかんかったのとgifデバイスへの static route は fe80::1%GIFデバイス と書かないとだめらしい。てことで:
cloned_interfaces="gif0" ifconfig_gif3="tunnel srcIPv4 destIPv4" static_routes="ipv6" route_ipv6="-inet6 default fe80::1%gif0"
はい来ました来ました。