さくらの VPS 上の DragonflyBSD で ipv6 ネットワーク設定をする

環境

  • さくら のVPS
  • DragonFly v5.0.2-RELEASE

準備

さくら VPS のコントロールパネルで IPv6 アドレスとゲートウェイを確認する。 自分の場合は特に申請してなくてもついていたのでデフォルトで付いている様子。(契約タイミングやデータセンターによるかもしれない) -この IPv6 アドレスは サフィックスIPv4 アドレスが付いているパターンのものらしい [1]. - 追記)と思ったけど よーく見るとコンパネの記載にあるのは ドットではなくコロンのため、単純に同じ数字を用いた ipv6 アドレスという可能性のほうが高そう。

設定

vtnet0 インタフェースを用いる場合

/etc/rc.conf

# IPv6
ipv6_enable="YES"
ipv6_network_interfaces="vtnet0" # あってもなくてもいい
ipv6_defaultrouter="fe80::1%vtnet0"
ipv6_ifconfig_vtnet0="inet6 (コントロールパネルに表示されるIPv6アドレス) prefixlen 64"

他の設定については /etc/defaults/rc.conf を確認。

簡単に各項目を説明。

key default description
ipv6_enable NO ipv6 を使う場合に YES ( FreeBSD 9 以降?では 使うべきではないらしい が DragonflyBSD では関係ない様子)
ipv6_network_interfaces auto auto の場合は ifconfig -l の結果が入る。自分の場合は 別の設定名で インタフェースが必要なのでそれを使うという意図で明示している。
ipv6_defaultrouter NO コンパネで確認する ゲートウェイを入れる。 そのままだとなぜか通じないのでインタフェース名を入れると動く。( netstat -f inet6 -rn などを見ると %lo などがついている場合があったので)
ipv6_ifconfig_vtnet0 - ifconfig で設定する内容 ipv6_ifconfig プレフィックス の設定はipv6_network_interfaces の値に入っている場合に使われる様子

設定後は ssh で繋いでる場合は 下記の様にするとおそらく良い [2]。 ipv6 設定を反映するためには /etc/rc.d/network_ipv6 を使ったほうが良さそうな気がしてとりあえず入れているがきちんと検証してない。

$ sudo /etc/rc.d/netif restart && sudo /etc/rc.d/routing restart && sudo /etc/rc.d/network_ipv6 restart

つながっているかどうかは 外から ping6 を実行するなどして確認 [3]。

発生した問題

ping6 や sshipv6 アドレスを直接指定して動かした場合に動作せず、サーバ側のコンソールで下記のようなエラーが出る現象があった。

nd6_storelladdr: sdl_alen == 0
nd6_storelladdr: sdl_alen == 0
nd6_storelladdr: sdl_alen == 0

このエラーが出ている部分はこのあたり。 impossible と書いてあるけど…

/usr/src/sys/netinet6/nd6.c

2091     if (sdl->sdl_alen == 0) {
2092         /* this should be impossible, but we bark here for debugging */
2093         kprintf("nd6_storelladdr: sdl_alen == 0\n");
2094         m_freem(m);
2095         return (0);
2096     }

自分の場合の原因は、ipv6 アドレスの設定部分だった様子。 記事によっては ifconfig_vtnet0_ipv6 のような ifconfig プレフィックスになっている場合があるが、 少なくとも自分の環境ではこれでは動作せず、上記のような謎エラーが表示される。

ipv6 を prefix とするような設定にするとたぶん大丈夫。 このあたりは /etc/network.subr 内 network6_interface_setup 関数で呼ばれている様子なので詳しい挙動を見たい場合はこのあたりを参考に。

参考文献